101 lines
2.8 KiB
Go
101 lines
2.8 KiB
Go
package smdl
|
|
|
|
import (
|
|
"admin/apps/game/domain/entity"
|
|
"admin/apps/game/model"
|
|
"admin/internal/errcode"
|
|
"admin/internal/model/dto"
|
|
"admin/lib/httpclient"
|
|
"admin/lib/xlog"
|
|
"net/url"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
type GenAccountHook struct {
|
|
}
|
|
|
|
func (hook *GenAccountHook) Create(projectInfo *entity.Project, resource string, dtoObj dto.CommonDtoValues) error {
|
|
alisrvAddr := projectInfo.GetApiAddr()
|
|
if alisrvAddr == "" {
|
|
return errcode.New(errcode.ServerError, "项目%v没有配置api服务器地址", projectInfo.Po.Name)
|
|
}
|
|
|
|
et := (&entity.CommonResource{}).FromPo(&model.GenAccount{}).FromDto(dtoObj)
|
|
info := et.ToPo().(*model.GenAccount)
|
|
|
|
// 扶持账号借用白名单表存储,懒得建表了
|
|
params := &url.Values{}
|
|
params.Add("cmd_data", "OpWhitelist")
|
|
params.Add("type", "generate")
|
|
params.Add("op", "add")
|
|
params.Add("server", info.ServerConfID)
|
|
|
|
accountList := strings.Split(info.AccountList, ",")
|
|
notifyFun := func() {
|
|
for _, account := range accountList {
|
|
params.Set("value", account)
|
|
rsp := make(map[string]any)
|
|
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
|
if err != nil {
|
|
err = errcode.New(errcode.ServerError, "发送登录白名单(生成账号)添加请求:%+v错误:%v", account, err)
|
|
xlog.Warnf("%v", err)
|
|
} else {
|
|
xlog.Infof("发送登录白名单(生成账号)添加请求:%+v成功", account)
|
|
}
|
|
}
|
|
}
|
|
|
|
if len(accountList) >= 30 {
|
|
// 账号多就异步,不然卡死前端
|
|
go notifyFun()
|
|
} else {
|
|
notifyFun()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (hook *GenAccountHook) Delete(projectInfo *entity.Project, resource string, dtoObj dto.CommonDtoValues) error {
|
|
alisrvAddr := projectInfo.GetApiAddr()
|
|
if alisrvAddr == "" {
|
|
return errcode.New(errcode.ServerError, "项目%v没有配置api服务器地址", projectInfo.Po.Name)
|
|
}
|
|
|
|
et := (&entity.CommonResource{}).FromPo(&model.GenAccount{}).FromDto(dtoObj)
|
|
info := et.ToPo().(*model.GenAccount)
|
|
|
|
params := &url.Values{}
|
|
params.Add("cmd_data", "OpWhitelist")
|
|
params.Add("type", "generate")
|
|
params.Add("op", "remove")
|
|
params.Add("server", info.ServerConfID)
|
|
|
|
accountList := strings.Split(info.AccountList, ",")
|
|
notifyFun := func() {
|
|
for _, account := range accountList {
|
|
params.Set("value", account)
|
|
rsp := make(map[string]any)
|
|
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
|
if err != nil {
|
|
err = errcode.New(errcode.ServerError, "发送登录白名单(生成账号)删除请求:%+v错误:%v", account, err)
|
|
xlog.Warnf("%v", err)
|
|
} else {
|
|
xlog.Infof("发送登录白名单(生成账号)删除请求:%+v成功", account)
|
|
}
|
|
}
|
|
}
|
|
|
|
if len(accountList) >= 30 {
|
|
// 账号多就异步,不然卡死前端
|
|
go func() {
|
|
notifyFun()
|
|
}()
|
|
time.Sleep(time.Second * 5)
|
|
} else {
|
|
notifyFun()
|
|
}
|
|
|
|
return nil
|
|
}
|