Files
yunzerwebsiteallinone/go/models/platform_login_verify.go
T
2026-06-24 10:04:03 +08:00

133 lines
4.1 KiB
Go

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
}