Browse Source

fix:add employee/search/test API

jimmyyem 6 months ago
parent
commit
0245bf2291

+ 4 - 0
desc/wechat/employee.api

@@ -106,6 +106,10 @@ service Wechat {
 	@handler getEmployeeSearch
 	post /employee/search (EmployeeListReq) returns (EmployeeListResp)
 
+	// Get employee list | 获取Employee列表
+	@handler getEmployeeSearchTest
+	post /employee/search/test (EmployeeListReq) returns (EmployeeListResp)
+
 	// Get employee by ID | 通过ID获取Employee
 	@handler getEmployeeDetail
 	post /employee/detail (IDReq) returns (EmployeeInfoResp)

+ 44 - 0
internal/handler/employee/get_employee_search_test_handler.go

@@ -0,0 +1,44 @@
+package employee
+
+import (
+	"net/http"
+
+	"github.com/zeromicro/go-zero/rest/httpx"
+
+	"wechat-api/internal/logic/employee"
+	"wechat-api/internal/svc"
+	"wechat-api/internal/types"
+)
+
+// swagger:route post /employee/search/test employee GetEmployeeSearchTest
+//
+// Get employee list | 获取Employee列表
+//
+// Get employee list | 获取Employee列表
+//
+// Parameters:
+//  + name: body
+//    require: true
+//    in: body
+//    type: EmployeeListReq
+//
+// Responses:
+//  200: EmployeeListResp
+
+func GetEmployeeSearchTestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.EmployeeListReq
+		if err := httpx.Parse(r, &req, true); err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+			return
+		}
+
+		l := employee.NewGetEmployeeSearchTestLogic(r.Context(), svcCtx)
+		resp, err := l.GetEmployeeSearchTest(&req)
+		if err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+		} else {
+			httpx.OkJsonCtx(r.Context(), w, resp)
+		}
+	}
+}

+ 5 - 0
internal/handler/routes.go

@@ -703,6 +703,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 			},
 			{
 				Method:  http.MethodPost,
+				Path:    "/employee/search/test",
+				Handler: employee.GetEmployeeSearchTestHandler(serverCtx),
+			},
+			{
+				Method:  http.MethodPost,
 				Path:    "/employee/detail",
 				Handler: employee.GetEmployeeDetailHandler(serverCtx),
 			},

+ 150 - 0
internal/logic/employee/get_employee_search_test_logic.go

@@ -0,0 +1,150 @@
+package employee
+
+import (
+	"context"
+	"github.com/suyuan32/simple-admin-common/msg/errormsg"
+	"github.com/suyuan32/simple-admin-common/utils/pointy"
+	"wechat-api/ent/employee"
+	"wechat-api/ent/employeeconfig"
+	"wechat-api/ent/predicate"
+	"wechat-api/internal/utils/dberrorhandler"
+
+	"wechat-api/internal/svc"
+	"wechat-api/internal/types"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type GetEmployeeSearchTestLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewGetEmployeeSearchTestLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetEmployeeSearchTestLogic {
+	return &GetEmployeeSearchTestLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx}
+}
+
+func (l *GetEmployeeSearchTestLogic) GetEmployeeSearchTest(req *types.EmployeeListReq) (*types.EmployeeListResp, error) {
+	//organizationId := l.ctx.Value("organizationId").(uint64)
+
+	var predicates []predicate.Employee
+	//predicates = append(predicates, employee.OrganizationIDEQ(organizationId))
+
+	if req.Title != nil && *req.Title != "" {
+		predicates = append(predicates, employee.TitleContains(*req.Title))
+	}
+	if req.CategoryId != nil && *req.CategoryId > 0 {
+		predicates = append(predicates, employee.CategoryIDEQ(*req.CategoryId))
+	}
+	data, err := l.svcCtx.DB.Employee.Query().Where(predicates...).WithEmWorkExperiences().WithEmTutorial().Page(l.ctx, req.Page, req.PageSize)
+
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
+
+	resp := &types.EmployeeListResp{}
+	resp.Msg = errormsg.Success
+	resp.Data.Total = data.PageDetails.Total
+
+	for _, v := range data.List {
+		workExperience := make([]types.WorkExperienceInfo, 0, len(v.Edges.EmWorkExperiences))
+		for _, work := range v.Edges.EmWorkExperiences {
+			workExperience = append(workExperience, types.WorkExperienceInfo{
+				BaseIDInfo: types.BaseIDInfo{
+					Id:        &work.ID,
+					CreatedAt: pointy.GetPointer(work.CreatedAt.UnixMilli()),
+					UpdatedAt: pointy.GetPointer(work.UpdatedAt.UnixMilli()),
+				},
+				EmployeeId:   &work.EmployeeID,
+				Company:      &work.Company,
+				StartDate:    pointy.GetPointer(work.StartDate.UnixMilli()),
+				StartDateStr: pointy.GetPointer(work.StartDate.Format("2006-01-02 15:04:05")),
+				EndDate:      pointy.GetPointer(work.EndDate.UnixMilli()),
+				EndDateStr:   pointy.GetPointer(work.EndDate.Format("2006-01-02 15:04:05")),
+				Experience:   &work.Experience,
+			})
+		}
+
+		tutorial := make([]types.TutorialInfo, 0, len(v.Edges.EmTutorial))
+		for _, tt := range v.Edges.EmTutorial {
+			tutorial = append(tutorial, types.TutorialInfo{
+				BaseIDInfo: types.BaseIDInfo{
+					Id:        &tt.ID,
+					CreatedAt: pointy.GetPointer(tt.CreatedAt.UnixMilli()),
+					UpdatedAt: pointy.GetPointer(tt.UpdatedAt.UnixMilli()),
+				},
+				EmployeeId: &tt.EmployeeID,
+				Content:    &tt.Content,
+				Title:      &tt.Title,
+				Index:      &tt.Index,
+			})
+		}
+
+		sceneList := getEmployeeConfig2(l, v.Scene)
+		switchInList := getEmployeeConfig2(l, v.SwitchIn)
+
+		resp.Data.Data = append(resp.Data.Data,
+			types.EmployeeInfo{
+				BaseIDInfo: types.BaseIDInfo{
+					Id:        &v.ID,
+					CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
+					UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
+				},
+				Title:            &v.Title,
+				Avatar:           &v.Avatar,
+				Tags:             &v.Tags,
+				HireCount:        &v.HireCount,
+				ServiceCount:     &v.ServiceCount,
+				AchievementCount: &v.AchievementCount,
+				Intro:            &v.Intro,
+				Estimate:         &v.Estimate,
+				Skill:            &v.Skill,
+				AbilityType:      &v.AbilityType,
+				Scene:            &v.Scene,
+				SceneList:        sceneList,
+				SwitchIn:         &v.SwitchIn,
+				SwitchInList:     switchInList,
+				Tutorial:         tutorial,
+				VideoUrl:         &v.VideoURL,
+				WorkExperience:   workExperience,
+				CategoryId:       &v.CategoryID,
+			})
+	}
+
+	return resp, nil
+}
+
+func getEmployeeConfig2(l *GetEmployeeSearchTestLogic, ids string) []types.EmployeeConfigInfo {
+	sceneList := make([]types.EmployeeConfigInfo, 0)
+
+	sceneIds := FormatIds(ids)
+
+	if len(sceneIds) == 0 {
+		return sceneList
+	}
+
+	employeeConfigList, err := l.svcCtx.DB.EmployeeConfig.Query().Where(
+		employeeconfig.IDIn(sceneIds...),
+	).All(l.ctx)
+
+	if err == nil && len(employeeConfigList) > 0 {
+		for _, val := range employeeConfigList {
+			sceneList = append(sceneList, types.EmployeeConfigInfo{
+				BaseIDInfo: types.BaseIDInfo{
+					Id:        &val.ID,
+					CreatedAt: pointy.GetPointer(val.CreatedAt.UnixMilli()),
+					UpdatedAt: pointy.GetPointer(val.UpdatedAt.UnixMilli()),
+				},
+				Stype: &val.Stype,
+				Title: &val.Title,
+				Photo: &val.Photo,
+			})
+		}
+	}
+
+	return sceneList
+}