yunzerwebsiteallinone/go/models/platform_login_verify.go
2026-06-17 23:49:19 +08:00

133 lines
4.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}