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

78 lines
2.2 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 smdl
import (
"admin/apps/game/domain/entity"
"admin/apps/game/model"
"admin/apps/game/model/dto"
"admin/internal/errcode"
"admin/lib/httpclient"
"net/url"
"strconv"
"strings"
)
type MailRoleHook struct {
}
func (hook *MailRoleHook) 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.RoleMail{}).FromDto(dtoObj)
mailInfo := et.ToPo().(*model.RoleMail)
itemIdStr := ""
itemNumStr := ""
if len(mailInfo.Attach) == 1 {
itemIdStr = strconv.FormatInt(int64(mailInfo.Attach[0].ID), 10)
itemNumStr = strconv.FormatInt(mailInfo.Attach[0].Num, 10)
} else if len(mailInfo.Attach) > 1 {
// 多个道具附件itemid格式就是id@num@id@num@id@num...
itemWordList := make([]string, 0, len(mailInfo.Attach)*2)
for _, v := range mailInfo.Attach {
itemWordList = append(itemWordList, strconv.FormatInt(int64(v.ID), 10), strconv.FormatInt(v.Num, 10))
}
itemIdStr = strings.Join(itemWordList, "@")
itemNumStr = "-1"
} else {
itemIdStr = "0"
}
params := &url.Values{}
params.Add("itemid", itemIdStr)
params.Add("itemnum", itemNumStr)
params.Add("mailtitle", mailInfo.Title)
params.Add("mailcontent", mailInfo.Content)
params.Add("server", mailInfo.ServerID)
// 通知对应服务器
for _, roleId := range mailInfo.RoleIDs {
rsp := make(map[string]any)
err := httpclient.Request(alisrvAddr+"/mail_role", "get", params, &rsp)
if err != nil {
return errcode.New(errcode.ServerError, "发送全服邮件通知服务器角色%v发生错误:%v", roleId, err)
}
}
return nil
}
func (hook *MailRoleHook) 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.RoleMail{}).FromDto(dtoObj)
mailInfo := et.ToPo().(*model.RoleMail)
if mailInfo != nil {
}
// todo 撤回邮件
return nil
}