userListLogic.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package user
  2. import (
  3. "context"
  4. "perms-system-server/internal/svc"
  5. "perms-system-server/internal/types"
  6. "perms-system-server/internal/util"
  7. "github.com/zeromicro/go-zero/core/logx"
  8. )
  9. type UserListLogic struct {
  10. logx.Logger
  11. ctx context.Context
  12. svcCtx *svc.ServiceContext
  13. }
  14. func NewUserListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserListLogic {
  15. return &UserListLogic{
  16. Logger: logx.WithContext(ctx),
  17. ctx: ctx,
  18. svcCtx: svcCtx,
  19. }
  20. }
  21. func (l *UserListLogic) UserList(req *types.UserListReq) (resp *types.PageResp, err error) {
  22. page, pageSize := util.NormalizePage(req.Page, req.PageSize)
  23. list, total, err := l.svcCtx.SysUserModel.FindListByPage(l.ctx, page, pageSize)
  24. if err != nil {
  25. return nil, err
  26. }
  27. var memberMap map[int64]string
  28. if req.ProductCode != "" {
  29. userIds := make([]int64, 0, len(list))
  30. for _, u := range list {
  31. userIds = append(userIds, u.Id)
  32. }
  33. pmMap, err := l.svcCtx.SysProductMemberModel.FindMapByProductCodeUserIds(l.ctx, req.ProductCode, userIds)
  34. if err != nil {
  35. return nil, err
  36. }
  37. memberMap = make(map[int64]string, len(pmMap))
  38. for uid, pm := range pmMap {
  39. memberMap[uid] = pm.MemberType
  40. }
  41. }
  42. items := make([]types.UserItem, 0, len(list))
  43. for _, u := range list {
  44. avatar := ""
  45. if u.Avatar.Valid {
  46. avatar = u.Avatar.String
  47. }
  48. var memberType string
  49. if memberMap != nil {
  50. memberType = memberMap[u.Id]
  51. }
  52. items = append(items, types.UserItem{
  53. Id: u.Id,
  54. Username: u.Username,
  55. Nickname: u.Nickname,
  56. Avatar: avatar,
  57. Email: u.Email,
  58. Phone: u.Phone,
  59. Remark: u.Remark,
  60. DeptId: u.DeptId,
  61. Status: u.Status,
  62. MemberType: memberType,
  63. CreateTime: u.CreateTime,
  64. })
  65. }
  66. return &types.PageResp{
  67. Total: total,
  68. List: items,
  69. }, nil
  70. }