package projects import ( "admin/apps/game/domain/entity" "admin/apps/game/domain/projects/smdl" "admin/internal/consts" "admin/internal/model/dto" ) var debugDisableAllHook = false // 调试用,关闭所有项目钩子调用,可以在没有远程游戏api服务器时,调一些gm后台本地的增删改查等逻辑 // 注册各个项目所有gm资源操作后的回调,例如后台添加了白名单,可以在回调里加上通知项目内的服务 var projectsResourceHookMgr = map[string]map[string]any{ // 神魔大陆项目注册的资源钩子回调 consts.RegisteredProjectId_shenmodalu: { 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直接获取 consts.ResourcesName_WhiteList: &smdl.WhitelistHook{}, // 所有角色走神魔大陆api直接获取 }, } // 注册各个项目所有增删改字段可选项的钩子 var projectsValueChoicesGetHook = map[string]IGetAllValueChoicesHook{ consts.RegisteredProjectId_shenmodalu: &smdl.Items{}, } func GetProjectResourceHook(project *entity.Project, resource string) any { if debugDisableAllHook { return nil } projectResourceHooks, find := projectsResourceHookMgr[project.Po.ProjectType] if !find { return nil } return projectResourceHooks[resource] } func GetProjectValueChoicesGetHook(projectId string) IGetAllValueChoicesHook { if debugDisableAllHook { return &debugItemsHook{} } return projectsValueChoicesGetHook[projectId] } 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 }