uniugm/admin/apps/game/domain/account.go
2025-07-09 10:55:26 +08:00

68 lines
2.0 KiB
Go

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)
}