2025-04-24 20:39:31 +08:00
|
|
|
|
package projects
|
|
|
|
|
|
|
|
|
|
import (
|
2025-04-30 15:46:14 +08:00
|
|
|
|
"admin/apps/game/domain/entity"
|
2025-04-24 20:39:31 +08:00
|
|
|
|
"admin/apps/game/domain/projects/smdl"
|
|
|
|
|
"admin/internal/consts"
|
2025-05-16 17:29:05 +08:00
|
|
|
|
"admin/internal/model/dto"
|
2025-04-24 20:39:31 +08:00
|
|
|
|
)
|
|
|
|
|
|
2025-05-16 15:51:22 +08:00
|
|
|
|
var debugDisableAllHook = false // 调试用,关闭所有项目钩子调用,可以在没有远程游戏api服务器时,调一些gm后台本地的增删改查等逻辑
|
|
|
|
|
|
2025-04-24 20:39:31 +08:00
|
|
|
|
// 注册各个项目所有gm资源操作后的回调,例如后台添加了白名单,可以在回调里加上通知项目内的服务
|
|
|
|
|
var projectsResourceHookMgr = map[string]map[string]any{
|
2025-04-26 13:50:26 +08:00
|
|
|
|
// 神魔大陆项目注册的资源钩子回调
|
|
|
|
|
consts.RegisteredProjectId_shenmodalu: {
|
2025-04-28 15:56:04 +08:00
|
|
|
|
consts.ResourcesName_Server: &smdl.ServerHook{}, // 查看了数据库所有数据之后,还要连alisrv获取所有进程运行情况
|
|
|
|
|
consts.ResourcesName_Role: &smdl.RoleHook{}, // 所有角色走神魔大陆api直接获取
|
|
|
|
|
consts.ResourcesName_Account: &smdl.AccountHook{}, // 所有角色走神魔大陆api直接获取
|
|
|
|
|
consts.ResourcesName_Ban: &smdl.BanHook{}, // 所有角色走神魔大陆api直接获取
|
|
|
|
|
consts.ResourcesName_MailGlobal: &smdl.MailGlobalHook{}, // 所有角色走神魔大陆api直接获取
|
|
|
|
|
consts.ResourcesName_MailRole: &smdl.MailRoleHook{}, // 所有角色走神魔大陆api直接获取
|
2025-05-07 15:03:19 +08:00
|
|
|
|
consts.ResourcesName_WhiteList: &smdl.WhitelistHook{}, // 所有角色走神魔大陆api直接获取
|
2025-04-24 20:39:31 +08:00
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 注册各个项目所有增删改字段可选项的钩子
|
|
|
|
|
var projectsValueChoicesGetHook = map[string]IGetAllValueChoicesHook{
|
|
|
|
|
consts.RegisteredProjectId_shenmodalu: &smdl.Items{},
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-30 15:46:14 +08:00
|
|
|
|
func GetProjectResourceHook(project *entity.Project, resource string) any {
|
2025-05-16 15:51:22 +08:00
|
|
|
|
if debugDisableAllHook {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2025-04-30 15:46:14 +08:00
|
|
|
|
projectResourceHooks, find := projectsResourceHookMgr[project.Po.ProjectType]
|
2025-04-24 20:39:31 +08:00
|
|
|
|
if !find {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2025-04-30 15:46:14 +08:00
|
|
|
|
return projectResourceHooks[resource]
|
2025-04-24 20:39:31 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetProjectValueChoicesGetHook(projectId string) IGetAllValueChoicesHook {
|
2025-05-16 15:51:22 +08:00
|
|
|
|
if debugDisableAllHook {
|
2025-05-16 17:29:05 +08:00
|
|
|
|
return &debugItemsHook{}
|
2025-05-16 15:51:22 +08:00
|
|
|
|
}
|
2025-04-24 20:39:31 +08:00
|
|
|
|
return projectsValueChoicesGetHook[projectId]
|
|
|
|
|
}
|
2025-05-16 17:29:05 +08:00
|
|
|
|
|
|
|
|
|
type debugItemsHook struct {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (items *debugItemsHook) GetItems(projectInfo *entity.Project) ([]*dto.CommonDtoFieldChoice, error) {
|
|
|
|
|
return []*dto.CommonDtoFieldChoice{
|
|
|
|
|
{Desc: "大刀", Value: 123},
|
|
|
|
|
{Desc: "小刀", Value: 234},
|
|
|
|
|
{Desc: "长剑", Value: 345},
|
|
|
|
|
{Desc: "法杖", Value: 3456456},
|
|
|
|
|
}, nil
|
|
|
|
|
}
|