get_employee_list_logic.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package employee
  2. import (
  3. "context"
  4. "wechat-api/ent/employeeconfig"
  5. "wechat-api/ent/employee"
  6. "wechat-api/ent/predicate"
  7. "wechat-api/internal/svc"
  8. "wechat-api/internal/types"
  9. "wechat-api/internal/utils/dberrorhandler"
  10. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  11. "github.com/suyuan32/simple-admin-common/utils/pointy"
  12. "github.com/zeromicro/go-zero/core/logx"
  13. )
  14. type GetEmployeeListLogic struct {
  15. ctx context.Context
  16. svcCtx *svc.ServiceContext
  17. logx.Logger
  18. }
  19. func NewGetEmployeeListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetEmployeeListLogic {
  20. return &GetEmployeeListLogic{
  21. ctx: ctx,
  22. svcCtx: svcCtx,
  23. Logger: logx.WithContext(ctx),
  24. }
  25. }
  26. func (l *GetEmployeeListLogic) GetEmployeeList(req *types.EmployeeListReq) (*types.EmployeeListResp, error) {
  27. organizationId := l.ctx.Value("organizationId").(uint64)
  28. var predicates []predicate.Employee
  29. predicates = append(predicates, employee.OrganizationIDEQ(organizationId))
  30. if req.Title != nil && *req.Title != "" {
  31. predicates = append(predicates, employee.TitleContains(*req.Title))
  32. }
  33. if req.CategoryId != nil && *req.CategoryId > 0 {
  34. predicates = append(predicates, employee.CategoryIDEQ(*req.CategoryId))
  35. }
  36. data, err := l.svcCtx.DB.Employee.Query().Where(predicates...).WithEmWorkExperiences().WithEmTutorial().Page(l.ctx, req.Page, req.PageSize)
  37. if err != nil {
  38. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  39. }
  40. resp := &types.EmployeeListResp{}
  41. resp.Msg = errormsg.Success
  42. resp.Data.Total = data.PageDetails.Total
  43. for _, v := range data.List {
  44. workExperience := make([]types.WorkExperienceInfo, 0, len(v.Edges.EmWorkExperiences))
  45. for _, work := range v.Edges.EmWorkExperiences {
  46. workExperience = append(workExperience, types.WorkExperienceInfo{
  47. BaseIDInfo: types.BaseIDInfo{
  48. Id: &work.ID,
  49. CreatedAt: pointy.GetPointer(work.CreatedAt.UnixMilli()),
  50. UpdatedAt: pointy.GetPointer(work.UpdatedAt.UnixMilli()),
  51. },
  52. EmployeeId: &work.EmployeeID,
  53. Company: &work.Company,
  54. StartDate: pointy.GetPointer(work.StartDate.UnixMilli()),
  55. StartDateStr: pointy.GetPointer(work.StartDate.Format("2006-01-02 15:04:05")),
  56. EndDate: pointy.GetPointer(work.EndDate.UnixMilli()),
  57. EndDateStr: pointy.GetPointer(work.EndDate.Format("2006-01-02 15:04:05")),
  58. Experience: &work.Experience,
  59. })
  60. }
  61. tutorial := make([]types.TutorialInfo, 0, len(v.Edges.EmTutorial))
  62. for _, tt := range v.Edges.EmTutorial {
  63. tutorial = append(tutorial, types.TutorialInfo{
  64. BaseIDInfo: types.BaseIDInfo{
  65. Id: &tt.ID,
  66. CreatedAt: pointy.GetPointer(tt.CreatedAt.UnixMilli()),
  67. UpdatedAt: pointy.GetPointer(tt.UpdatedAt.UnixMilli()),
  68. },
  69. EmployeeId: &tt.EmployeeID,
  70. Content: &tt.Content,
  71. Title: &tt.Title,
  72. Index: &tt.Index,
  73. })
  74. }
  75. sceneList := getEmployeeConfigListByIds(l, v.Scene)
  76. switchInList := getEmployeeConfigListByIds(l, v.SwitchIn)
  77. resp.Data.Data = append(resp.Data.Data,
  78. types.EmployeeInfo{
  79. BaseIDInfo: types.BaseIDInfo{
  80. Id: &v.ID,
  81. CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
  82. UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
  83. },
  84. Title: &v.Title,
  85. Avatar: &v.Avatar,
  86. Tags: &v.Tags,
  87. HireCount: &v.HireCount,
  88. ServiceCount: &v.ServiceCount,
  89. AchievementCount: &v.AchievementCount,
  90. Intro: &v.Intro,
  91. Estimate: &v.Estimate,
  92. Skill: &v.Skill,
  93. AbilityType: &v.AbilityType,
  94. Scene: &v.Scene,
  95. SceneList: sceneList,
  96. SwitchIn: &v.SwitchIn,
  97. SwitchInList: switchInList,
  98. Tutorial: tutorial,
  99. VideoUrl: &v.VideoURL,
  100. WorkExperience: workExperience,
  101. CategoryId: &v.CategoryID,
  102. ApiBase: &v.APIBase,
  103. ApiKey: &v.APIKey,
  104. ChatUrl: &v.ChatURL,
  105. })
  106. }
  107. return resp, nil
  108. }
  109. func getEmployeeConfigListByIds(l *GetEmployeeListLogic, ids string) []types.EmployeeConfigInfo {
  110. sceneList := make([]types.EmployeeConfigInfo, 0)
  111. sceneIds := FormatIds(ids)
  112. if len(sceneIds) == 0 {
  113. return sceneList
  114. }
  115. employeeConfigList, err := l.svcCtx.DB.EmployeeConfig.Query().Where(
  116. employeeconfig.IDIn(sceneIds...),
  117. ).All(l.ctx)
  118. if err == nil && len(employeeConfigList) > 0 {
  119. for _, val := range employeeConfigList {
  120. sceneList = append(sceneList, types.EmployeeConfigInfo{
  121. BaseIDInfo: types.BaseIDInfo{
  122. Id: &val.ID,
  123. CreatedAt: pointy.GetPointer(val.CreatedAt.UnixMilli()),
  124. UpdatedAt: pointy.GetPointer(val.UpdatedAt.UnixMilli()),
  125. },
  126. Stype: &val.Stype,
  127. Title: &val.Title,
  128. Photo: &val.Photo,
  129. })
  130. }
  131. }
  132. return sceneList
  133. }