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 }