From 1d064a2e880c6c2e47db1ea34a62ad3704417538 Mon Sep 17 00:00:00 2001 From: liuzhifei <2679431923@qq.com> Date: Fri, 20 Sep 2024 18:09:40 +0800 Subject: [PATCH] ratio must gte 0 --- common/group-ratio.go | 17 ++++++++--------- controller/option.go | 9 +++++++++ .../Setting/Operation/SettingsMagnification.js | 5 +++++ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/common/group-ratio.go b/common/group-ratio.go index ef132624..e4d52fc7 100644 --- a/common/group-ratio.go +++ b/common/group-ratio.go @@ -20,14 +20,8 @@ func GroupRatio2JSONString() string { } func UpdateGroupRatioByJSONString(jsonStr string) error { - tempGroupRatio := make(map[string]float64) - err := json.Unmarshal([]byte(jsonStr), &tempGroupRatio) - err = checkGroupRatio(tempGroupRatio) - if err != nil { - return err - } - GroupRatio = tempGroupRatio - return err + GroupRatio = make(map[string]float64) + return json.Unmarshal([]byte(jsonStr), &GroupRatio) } func GetGroupRatio(name string) float64 { @@ -39,7 +33,12 @@ func GetGroupRatio(name string) float64 { return ratio } -func checkGroupRatio(checkGroupRatio map[string]float64) error { +func CheckGroupRatio(jsonStr string) error { + checkGroupRatio := make(map[string]float64) + err := json.Unmarshal([]byte(jsonStr), &GroupRatio) + if err != nil { + return err + } for name, ratio := range checkGroupRatio { if ratio < 0 { return errors.New("group ratio must be greater than 0: " + name) diff --git a/controller/option.go b/controller/option.go index 7c4db41c..15fdb8c9 100644 --- a/controller/option.go +++ b/controller/option.go @@ -74,6 +74,15 @@ func UpdateOption(c *gin.Context) { }) return } + case "GroupRatio": + err = common.CheckGroupRatio(option.Value) + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": err.Error(), + }) + return + } } err = model.UpdateOption(option.Key, option.Value) if err != nil { diff --git a/web/src/pages/Setting/Operation/SettingsMagnification.js b/web/src/pages/Setting/Operation/SettingsMagnification.js index ef9a1c21..4a70f11f 100644 --- a/web/src/pages/Setting/Operation/SettingsMagnification.js +++ b/web/src/pages/Setting/Operation/SettingsMagnification.js @@ -50,6 +50,11 @@ export default function SettingsMagnification(props) { if (res.includes(undefined)) return showError('部分保存失败,请重试'); } + for (let i = 0; i < res.length; i++) { + if (!res[i].success) { + return showError(res[i].message) + } + } showSuccess('保存成功'); props.refresh(); })