2025-04-26 13:50:26 +08:00

83 lines
2.1 KiB
Go

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)
if banInfo.ExpireAt <= 0 {
// 解封
params.Add("forbidtime", "0")
params.Add("desc", "待写原因")
params.Add("desc", "你被永久封禁了")
} else {
dura := banInfo.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
}