package controllers import ( "encoding/json" "io" "strings" "server/models" beego "github.com/beego/beego/v2/server/web" ) type PlatformLoginVerifyController struct { beego.Controller } type loginVerifyPayload struct { OpenVerifyEnabled *int8 `json:"openVerify_enabled"` VerifyType string `json:"use_geetest"` Geetest3ID *string `json:"geetest3_id"` Geetest3Key *string `json:"geetest3_key"` Geetest4ID *string `json:"geetest4_id"` Geetest4Key *string `json:"geetest4_key"` } func normalizeVerifyType(v string) string { switch strings.TrimSpace(v) { case "sms", "geetest", "email", "captcha": return strings.TrimSpace(v) default: return "captcha" } } // GetLoginVerifyInfos 获取登录验证配置 // GET /platform/loginVerifyInfos func (c *PlatformLoginVerifyController) GetLoginVerifyInfos() { cfg, err := models.GetPlatformLoginVerify() if err != nil { c.Data["json"] = map[string]interface{}{"code": 500, "msg": "获取配置失败"} _ = c.ServeJSON() return } c.Data["json"] = map[string]interface{}{ "code": 200, "msg": "success", "data": map[string]interface{}{ "openVerify_enabled": cfg.OpenVerifyEnabled, "use_geetest": cfg.VerifyType, "geetest3_id": cfg.Geetest3ID, "geetest3_key": cfg.Geetest3Key, "geetest4_id": cfg.Geetest4ID, "geetest4_key": cfg.Geetest4Key, }, } _ = c.ServeJSON() } // SaveLoginVerifyInfos 保存登录验证配置 // POST /platform/saveloginVerifyInfos func (c *PlatformLoginVerifyController) SaveLoginVerifyInfos() { var p loginVerifyPayload raw, _ := io.ReadAll(c.Ctx.Request.Body) if err := json.Unmarshal(raw, &p); err != nil { c.Data["json"] = map[string]interface{}{"code": 400, "msg": "参数错误"} _ = c.ServeJSON() return } verifyType := normalizeVerifyType(p.VerifyType) openVerifyEnabled := int8(1) if p.OpenVerifyEnabled != nil { openVerifyEnabled = *p.OpenVerifyEnabled } if verifyType == "geetest" { if p.Geetest4ID == nil || strings.TrimSpace(*p.Geetest4ID) == "" { c.Data["json"] = map[string]interface{}{"code": 400, "msg": "geetest4_id 不能为空"} _ = c.ServeJSON() return } if p.Geetest4Key == nil || strings.TrimSpace(*p.Geetest4Key) == "" { c.Data["json"] = map[string]interface{}{"code": 400, "msg": "geetest4_key 不能为空"} _ = c.ServeJSON() return } } var existed models.PlatformLoginVerify err := models.Orm.QueryTable(new(models.PlatformLoginVerify)).OrderBy("-id").One(&existed) if err == nil { update := map[string]interface{}{ "open_verify_enabled": openVerifyEnabled, "verify_type": verifyType, "geetest3_id": p.Geetest3ID, "geetest3_key": p.Geetest3Key, "geetest4_id": p.Geetest4ID, "geetest4_key": p.Geetest4Key, } _, err = models.Orm.QueryTable(new(models.PlatformLoginVerify)).Filter("id", existed.ID).Update(update) if err != nil { c.Data["json"] = map[string]interface{}{"code": 500, "msg": "保存失败"} _ = c.ServeJSON() return } } else { row := &models.PlatformLoginVerify{ OpenVerifyEnabled: openVerifyEnabled, VerifyType: verifyType, Geetest3ID: p.Geetest3ID, Geetest3Key: p.Geetest3Key, Geetest4ID: p.Geetest4ID, Geetest4Key: p.Geetest4Key, } if _, err := models.Orm.Insert(row); err != nil { c.Data["json"] = map[string]interface{}{"code": 500, "msg": "保存失败"} _ = c.ServeJSON() return } } c.Data["json"] = map[string]interface{}{"code": 200, "msg": "保存成功"} _ = c.ServeJSON() }