package models import "time" // PlatformLoginVerify 平台登录验证配置(单行配置) type PlatformLoginVerify struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` OpenVerifyEnabled int8 `orm:"column(open_verify_enabled);default(1)" json:"openVerify_enabled"` // 0关闭 1开启 VerifyType string `orm:"column(verify_type);size(20);default(captcha)" json:"verify_type"` // captcha/sms/geetest/email Geetest3ID *string `orm:"column(geetest3_id);size(128);null" json:"geetest3_id"` Geetest3Key *string `orm:"column(geetest3_key);size(255);null" json:"geetest3_key"` Geetest4ID *string `orm:"column(geetest4_id);size(128);null" json:"geetest4_id"` Geetest4Key *string `orm:"column(geetest4_key);size(255);null" json:"geetest4_key"` CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"` UpdateTime *time.Time `orm:"column(update_time);type(datetime);auto_now;null" json:"update_time"` } func GetPlatformLoginVerify() (*PlatformLoginVerify, error) { // 从 yz_platform_normal_setting 表中按 code 获取各个配置 enabledStr := GetPlatformSettingValue("login_verify_enabled", "1") verifyType := GetPlatformSettingValue("login_verify_type", "captcha") geetest3ID := GetPlatformSettingValue("login_verify_geetest3_id", "") geetest3Key := GetPlatformSettingValue("login_verify_geetest3_key", "") geetest4ID := GetPlatformSettingValue("login_verify_geetest4_id", "") geetest4Key := GetPlatformSettingValue("login_verify_geetest4_key", "") openVerifyEnabled := int8(1) if enabledStr == "0" { openVerifyEnabled = 0 } cfg := &PlatformLoginVerify{ OpenVerifyEnabled: openVerifyEnabled, VerifyType: verifyType, } if geetest3ID != "" { cfg.Geetest3ID = &geetest3ID } if geetest3Key != "" { cfg.Geetest3Key = &geetest3Key } if geetest4ID != "" { cfg.Geetest4ID = &geetest4ID } if geetest4Key != "" { cfg.Geetest4Key = &geetest4Key } return cfg, nil } func GetPlatformSettingValue(code string, defaultVal string) string { var setting PlatformNormalSetting err := Orm.QueryTable(new(PlatformNormalSetting)). Filter("code", code). Filter("delete_time__isnull", true). One(&setting) if err != nil { return defaultVal } return setting.Value } func SavePlatformLoginVerify(cfg *PlatformLoginVerify) error { openVerifyEnabledStr := "1" if cfg.OpenVerifyEnabled == 0 { openVerifyEnabledStr = "0" } geetest3ID := "" if cfg.Geetest3ID != nil { geetest3ID = *cfg.Geetest3ID } geetest3Key := "" if cfg.Geetest3Key != nil { geetest3Key = *cfg.Geetest3Key } geetest4ID := "" if cfg.Geetest4ID != nil { geetest4ID = *cfg.Geetest4ID } geetest4Key := "" if cfg.Geetest4Key != nil { geetest4Key = *cfg.Geetest4Key } settings := []struct { code string name string value string remark string }{ {"login_verify_enabled", "登录验证开启状态", openVerifyEnabledStr, "0为关闭,1为开启"}, {"login_verify_type", "登录验证类型", cfg.VerifyType, "支持 captcha/sms/geetest/email"}, {"login_verify_geetest3_id", "极验3 ID", geetest3ID, ""}, {"login_verify_geetest3_key", "极验3 Key", geetest3Key, ""}, {"login_verify_geetest4_id", "极验4 ID", geetest4ID, ""}, {"login_verify_geetest4_key", "极验4 Key", geetest4Key, ""}, } for _, item := range settings { var setting PlatformNormalSetting err := Orm.QueryTable(new(PlatformNormalSetting)). Filter("code", item.code). Filter("delete_time__isnull", true). One(&setting) if err == nil { setting.Value = item.value setting.Name = item.name setting.Remark = item.remark now := time.Now() setting.UpdateTime = &now _, err = Orm.Update(&setting, "Value", "Name", "Remark", "UpdateTime") if err != nil { return err } } else { newSetting := PlatformNormalSetting{ Name: item.name, Code: item.code, Value: item.value, Remark: item.remark, CreateTime: time.Now(), } _, err = Orm.Insert(&newSetting) if err != nil { return err } } } return nil }