get_employee_search_logic.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package employee
  2. import (
  3. "context"
  4. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  5. "github.com/suyuan32/simple-admin-common/utils/pointy"
  6. "wechat-api/ent/employee"
  7. "wechat-api/ent/employeeconfig"
  8. "wechat-api/ent/predicate"
  9. "wechat-api/internal/utils/dberrorhandler"
  10. "wechat-api/internal/svc"
  11. "wechat-api/internal/types"
  12. "github.com/zeromicro/go-zero/core/logx"
  13. )
  14. type GetEmployeeSearchLogic struct {
  15. logx.Logger
  16. ctx context.Context
  17. svcCtx *svc.ServiceContext
  18. }
  19. func NewGetEmployeeSearchLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetEmployeeSearchLogic {
  20. return &GetEmployeeSearchLogic{
  21. Logger: logx.WithContext(ctx),
  22. ctx: ctx,
  23. svcCtx: svcCtx}
  24. }
  25. func (l *GetEmployeeSearchLogic) GetEmployeeSearch(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 && *req.Title != "" {
  30. predicates = append(predicates, employee.TitleContains(*req.Title))
  31. }
  32. if req.CategoryId != nil && *req.CategoryId > 0 {
  33. predicates = append(predicates, employee.CategoryIDEQ(*req.CategoryId))
  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. //sceneList := getEmployeeConfig(l, v.Scene)
  75. //switchInList := getEmployeeConfig(l, v.SwitchIn)
  76. resp.Data.Data = append(resp.Data.Data,
  77. types.EmployeeInfo{
  78. BaseIDInfo: types.BaseIDInfo{
  79. Id: &v.ID,
  80. CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
  81. UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
  82. },
  83. Title: &v.Title,
  84. Avatar: &v.Avatar,
  85. Tags: &v.Tags,
  86. HireCount: &v.HireCount,
  87. ServiceCount: &v.ServiceCount,
  88. AchievementCount: &v.AchievementCount,
  89. Intro: &v.Intro,
  90. Estimate: &v.Estimate,
  91. Skill: &v.Skill,
  92. AbilityType: &v.AbilityType,
  93. Scene: &v.Scene,
  94. //SceneList: sceneList,
  95. SwitchIn: &v.SwitchIn,
  96. //SwitchInList: switchInList,
  97. //Tutorial: tutorial,
  98. VideoUrl: &v.VideoURL,
  99. //WorkExperience: workExperience,
  100. CategoryId: &v.CategoryID,
  101. })
  102. }
  103. return resp, nil
  104. }
  105. func getEmployeeConfig(l *GetEmployeeSearchLogic, ids string) []types.EmployeeConfigInfo {
  106. sceneList := make([]types.EmployeeConfigInfo, 0)
  107. sceneIds := FormatIds(ids)
  108. if len(sceneIds) == 0 {
  109. return sceneList
  110. }
  111. employeeConfigList, err := l.svcCtx.DB.EmployeeConfig.Query().Where(
  112. employeeconfig.IDIn(sceneIds...),
  113. ).All(l.ctx)
  114. if err == nil && len(employeeConfigList) > 0 {
  115. for _, val := range employeeConfigList {
  116. sceneList = append(sceneList, types.EmployeeConfigInfo{
  117. BaseIDInfo: types.BaseIDInfo{
  118. Id: &val.ID,
  119. CreatedAt: pointy.GetPointer(val.CreatedAt.UnixMilli()),
  120. UpdatedAt: pointy.GetPointer(val.UpdatedAt.UnixMilli()),
  121. },
  122. Stype: &val.Stype,
  123. Title: &val.Title,
  124. Photo: &val.Photo,
  125. })
  126. }
  127. }
  128. return sceneList
  129. }