get_employee_list_logic.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package employee
  2. import (
  3. "context"
  4. "wechat-api/ent/employee"
  5. "wechat-api/ent/predicate"
  6. "wechat-api/internal/svc"
  7. "wechat-api/internal/types"
  8. "wechat-api/internal/utils/dberrorhandler"
  9. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  10. "github.com/suyuan32/simple-admin-common/utils/pointy"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. type GetEmployeeListLogic struct {
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. logx.Logger
  17. }
  18. func NewGetEmployeeListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetEmployeeListLogic {
  19. return &GetEmployeeListLogic{
  20. ctx: ctx,
  21. svcCtx: svcCtx,
  22. Logger: logx.WithContext(ctx),
  23. }
  24. }
  25. func (l *GetEmployeeListLogic) GetEmployeeList(req *types.EmployeeListReq) (*types.EmployeeListResp, error) {
  26. organizationId := l.ctx.Value("organizationId").(uint64)
  27. var predicates []predicate.Employee
  28. predicates = append(predicates, employee.OrganizationIDEQ(organizationId))
  29. if req.Title != nil {
  30. predicates = append(predicates, employee.TitleContains(*req.Title))
  31. }
  32. //if req.Tags != nil {
  33. // predicates = append(predicates, employee.TagsContains(*req.Tags))
  34. //}
  35. data, err := l.svcCtx.DB.Employee.Query().Where(predicates...).WithEmWorkExperiences().WithEmTutorial().Page(l.ctx, req.Page, req.PageSize)
  36. if err != nil {
  37. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  38. }
  39. resp := &types.EmployeeListResp{}
  40. resp.Msg = errormsg.Success
  41. resp.Data.Total = data.PageDetails.Total
  42. for _, v := range data.List {
  43. workExperience := make([]types.WorkExperienceInfo, 0, len(v.Edges.EmWorkExperiences))
  44. for _, work := range v.Edges.EmWorkExperiences {
  45. workExperience = append(workExperience, types.WorkExperienceInfo{
  46. BaseIDInfo: types.BaseIDInfo{
  47. Id: &work.ID,
  48. CreatedAt: pointy.GetPointer(work.CreatedAt.UnixMilli()),
  49. UpdatedAt: pointy.GetPointer(work.UpdatedAt.UnixMilli()),
  50. },
  51. EmployeeId: &work.EmployeeID,
  52. Company: &work.Company,
  53. StartDate: pointy.GetPointer(work.StartDate.UnixMilli()),
  54. StartDateStr: pointy.GetPointer(work.StartDate.Format("2006-01-02 15:04:05")),
  55. EndDate: pointy.GetPointer(work.EndDate.UnixMilli()),
  56. EndDateStr: pointy.GetPointer(work.EndDate.Format("2006-01-02 15:04:05")),
  57. Experience: &work.Experience,
  58. })
  59. }
  60. tutorial := make([]types.TutorialInfo, 0, len(v.Edges.EmTutorial))
  61. for _, tt := range v.Edges.EmTutorial {
  62. tutorial = append(tutorial, types.TutorialInfo{
  63. BaseIDInfo: types.BaseIDInfo{
  64. Id: &tt.ID,
  65. CreatedAt: pointy.GetPointer(tt.CreatedAt.UnixMilli()),
  66. UpdatedAt: pointy.GetPointer(tt.UpdatedAt.UnixMilli()),
  67. },
  68. EmployeeId: &tt.EmployeeID,
  69. Content: &tt.Content,
  70. Title: &tt.Title,
  71. Index: &tt.Index,
  72. })
  73. }
  74. resp.Data.Data = append(resp.Data.Data,
  75. types.EmployeeInfo{
  76. BaseIDInfo: types.BaseIDInfo{
  77. Id: &v.ID,
  78. CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
  79. UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
  80. },
  81. Title: &v.Title,
  82. Avatar: &v.Avatar,
  83. Tags: &v.Tags,
  84. HireCount: &v.HireCount,
  85. ServiceCount: &v.ServiceCount,
  86. AchievementCount: &v.AchievementCount,
  87. Intro: &v.Intro,
  88. Estimate: &v.Estimate,
  89. Skill: &v.Skill,
  90. AbilityType: &v.AbilityType,
  91. Scene: &v.Scene,
  92. SwitchIn: &v.SwitchIn,
  93. Tutorial: tutorial,
  94. VideoUrl: &v.VideoURL,
  95. WorkExperience: workExperience,
  96. })
  97. }
  98. return resp, nil
  99. }