package smdl import ( "admin/apps/game/domain/entity" "admin/apps/game/model" "admin/apps/game/model/dto" "admin/internal/errcode" "admin/lib/httpclient" "fmt" "net/url" "strconv" "time" ) type BanHook struct { } func (hook *BanHook) Create(projectInfo *entity.Project, resource string, dtoObj dto.CommonDtoValues) error { alisrvAddr := projectInfo.GetApiAddr() if alisrvAddr == "" { return errcode.New(errcode.ServerError, "项目%v没有配置api服务器地址", projectInfo.ProjectPo.Name) } et := (&entity.CommonResource{}).FromPo(&model.Ban{}).FromDto(dtoObj) banInfo := et.ToPo().(*model.Ban) roleId := banInfo.Value params := &url.Values{} params.Add("server", banInfo.ServerConfID) params.Add("roleid", roleId) expireAt := banInfo.ExpireAt.Unix() if expireAt <= 0 { // 解封 params.Add("forbidtime", "0") params.Add("desc", "待写原因") params.Add("desc", "你被永久封禁了") } else { dura := expireAt - time.Now().Unix() if dura <= 0 { // 解封 params.Add("forbidtime", "0") } else { params.Add("forbidtime", strconv.FormatInt(dura, 10)) params.Add("desc", "待写原因") params.Add("desc", fmt.Sprintf("你被封禁了,封禁到期时间:%v", banInfo.ExpireAt)) } } rsp := make(map[string]any) err := httpclient.Request(alisrvAddr+"/banrole", "get", params, &rsp) if err != nil { return err } return nil } func (hook *BanHook) Delete(projectInfo *entity.Project, resource string, dtoObj dto.CommonDtoValues) error { alisrvAddr := projectInfo.GetApiAddr() if alisrvAddr == "" { return errcode.New(errcode.ServerError, "项目%v没有配置api服务器地址", projectInfo.ProjectPo.Name) } et := (&entity.CommonResource{}).FromPo(&model.Ban{}).FromDto(dtoObj) banInfo := et.ToPo().(*model.Ban) roleId := banInfo.Value params := &url.Values{} params.Add("server", banInfo.ServerConfID) params.Add("roleid", roleId) // 解封 params.Add("forbidtime", "0") params.Add("desc", "") params.Add("notifytouser", "") rsp := make(map[string]any) err := httpclient.Request(alisrvAddr+"/banrole", "get", params, &rsp) if err != nil { return err } return nil }