package domain import ( "admin/apps/game/domain/projects" "admin/apps/game/domain/repo" "admin/internal/consts" "admin/internal/errcode" "admin/internal/model/dto" "gorm.io/gorm" ) type AccountService struct { projectRepo repo.IProjectRepo accountRepo repo.IAccountRepo } func NewAccountService(db *gorm.DB) *AccountService { return &AccountService{ projectRepo: repo.NewProjectRepo(db), accountRepo: repo.NewAccountRepo(db), } } func (svc *AccountService) GetAccountDetail(projectId int, account string) (*dto.GetAccountDetailRsp, error) { _, projectEt, find, err := svc.projectRepo.GetById(projectId) if err != nil { return nil, err } if !find { return nil, errcode.New(errcode.ServerError, "not found project %v db data", projectId) } hook, ok := projects.GetProjectResourceHook(projectEt, consts.ResourcesName_Account).(projects.IGetAccountDetailHook) if !ok { return nil, errcode.New(errcode.ServerError, "not found hook for project:%v", projectId) } result, err := hook.GetDetail(projectEt, account) return result, err } func (svc *AccountService) GetRoleDetail(projectId int, req *dto.GetRoleDetailReq) (*dto.GetRoleDetailRsp, error) { _, projectEt, find, err := svc.projectRepo.GetById(projectId) if err != nil { return nil, err } if !find { return nil, errcode.New(errcode.ServerError, "not found project %v db data", projectId) } hook, ok := projects.GetProjectResourceHook(projectEt, consts.ResourcesName_Role).(projects.IGetRoleDetailHook) if !ok { return nil, errcode.New(errcode.ServerError, "not found hook for project:%v", projectId) } result, err := hook.GetDetail(projectEt, req) return result, err } func (svc *AccountService) GetWhiteListAll(projectId int) ([]*dto.WhiteListInfo, error) { _, projectEt, find, err := svc.projectRepo.GetById(projectId) if err != nil { return nil, err } if !find { return nil, errcode.New(errcode.ServerError, "not found project %v db data", projectId) } return svc.accountRepo.GetWhiteListAll(projectEt) }