uniugm/admin/apps/game/domain/account.go
2025-07-23 18:06:16 +08:00

81 lines
2.3 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)
}
list, err := svc.accountRepo.GetWhiteListAll(projectEt)
if err != nil {
return nil, err
}
banList, err := svc.accountRepo.GetBanListAll(projectEt)
for _, ban := range banList {
if ban.BanType == consts.BanType_AccountTrade || ban.BanType == consts.BanType_RoleTrade {
list = append(list, &dto.WhiteListInfo{
WType: ban.BanType,
Value: ban.Value,
})
}
}
return list, nil
}