package smdl import ( "admin/apps/game/domain/entity" "admin/apps/game/model" "admin/apps/game/model/dto" "admin/internal/errcode" "admin/lib/httpclient" "admin/lib/utils" "math" "strconv" ) type AccountHook struct { } func (hook *AccountHook) List(projectInfo *entity.Project, resource string, pageNo, pageLen int, fields []*dto.CommonDtoFieldDesc, rows []dto.CommonDtoValues, extraQuery string, args ...any) ( []*dto.CommonDtoFieldDesc, []dto.CommonDtoValues, error) { alisrvAddr := projectInfo.GetApiAddr() if alisrvAddr == "" { return nil, nil, errcode.New(errcode.ServerError, "项目%v没有配置api服务器地址", projectInfo.ProjectPo.Name) } type RspData struct { Code int `json:"code"` Msg string `json:"msg"` Data struct { Data []struct { Account string `json:"account"` ServerId int `json:"serverId"` RoleList []*Role `json:"roleList"` } `json:"data"` } `json:"data"` } rsp := &RspData{} err := httpclient.Request(alisrvAddr+"/userlist", "get", nil, rsp) if err != nil { return nil, nil, err } for _, user := range rsp.Data.Data { userPo := &model.Account{ Account: user.Account, ServerConfId: strconv.Itoa(user.ServerId), } latestLoginTime := int64(0) earliestCreateTime := int64(math.MaxInt64) for _, v := range user.RoleList { userPo.RoleIds = append(userPo.RoleIds, v.RoleId) if latestLoginTime < v.LatestLoginTime { latestLoginTime = v.LatestLoginTime } if earliestCreateTime > v.CreateTime { earliestCreateTime = v.CreateTime } } userPo.LatestLoginTime = utils.ParseUnixTimestamp2LocalTime(latestLoginTime) userPo.CreateTime = utils.ParseUnixTimestamp2LocalTime(earliestCreateTime) et := (&entity.CommonResource{}).FromPo(userPo) rows = append(rows, et.ToCommonDto()) } return fields, rows, nil }