123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package employee
- import (
- "context"
- "time"
- "wechat-api/ent"
- "wechat-api/internal/svc"
- "wechat-api/internal/types"
- "wechat-api/internal/utils/dberrorhandler"
- "github.com/suyuan32/simple-admin-common/msg/errormsg"
- "github.com/zeromicro/go-zero/core/logx"
- )
- type CreateEmployeeLogic struct {
- ctx context.Context
- svcCtx *svc.ServiceContext
- logx.Logger
- }
- func NewCreateEmployeeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateEmployeeLogic {
- return &CreateEmployeeLogic{
- ctx: ctx,
- svcCtx: svcCtx,
- Logger: logx.WithContext(ctx),
- }
- }
- func (l *CreateEmployeeLogic) CreateEmployee(req *types.EmployeeInfo) (*types.BaseMsgResp, error) {
- organizationId := l.ctx.Value("organizationId").(uint64)
- // 开始事务
- tx, err := l.svcCtx.DB.Tx(context.Background())
- employee, err := tx.Employee.Create().
- SetNotNilTitle(req.Title).
- SetNotNilAvatar(req.Avatar).
- SetNotNilTags(req.Tags).
- SetNotNilHireCount(req.HireCount).
- SetNotNilServiceCount(req.ServiceCount).
- SetNotNilAchievementCount(req.AchievementCount).
- SetNotNilIntro(req.Intro).
- SetNotNilEstimate(req.Estimate).
- SetNotNilSkill(req.Skill).
- SetNotNilAbilityType(req.AbilityType).
- SetNotNilScene(req.Scene).
- SetNotNilSwitchIn(req.SwitchIn).
- SetNotNilVideoURL(req.VideoUrl).
- SetNotNilOrganizationID(&organizationId).
- SetNotNilCategoryID(req.CategoryId).
- SetNotNilAPIBase(req.ApiBase).
- SetNotNilAPIKey(req.ApiKey).
- SetNotNilChatURL(req.ChatUrl).
- Save(l.ctx)
- if err != nil {
- _ = tx.Rollback()
- return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
- }
- // 批量插入工作经历
- if len(req.WorkExperience) > 0 {
- bulkCreateWork := make([]*ent.WorkExperienceCreate, 0, len(req.WorkExperience))
- for _, work := range req.WorkExperience {
- var startDate, endDate *time.Time
- startDateStr, _ := time.Parse("2006-01-02 15:04:05", *work.StartDateStr)
- startDate = &startDateStr
- if work.EndDateStr != nil && *work.EndDateStr != "" {
- endDateStr, _ := time.Parse("2006-01-02 15:04:05", *work.EndDateStr)
- endDate = &endDateStr
- }
- bulkCreateWork = append(bulkCreateWork, tx.WorkExperience.Create().
- SetNotNilEmployeeID(&employee.ID).
- SetNotNilStartDate(startDate).
- SetNotNilEndDate(endDate).
- SetNotNilCompany(work.Company).
- SetNotNilOrganizationID(&organizationId).
- SetNotNilExperience(work.Experience),
- )
- }
- if len(bulkCreateWork) > 0 {
- err = tx.WorkExperience.CreateBulk(bulkCreateWork...).Exec(l.ctx)
- if err != nil {
- _ = tx.Rollback()
- return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
- }
- }
- }
- // 批量插入使用教程
- if len(req.Tutorial) > 0 {
- bulkCreateTutorial := make([]*ent.TutorialCreate, 0, len(req.Tutorial))
- for _, work := range req.Tutorial {
- bulkCreateTutorial = append(bulkCreateTutorial, tx.Tutorial.Create().
- SetNotNilEmployeeID(&employee.ID).
- SetNotNilOrganizationID(&organizationId).
- SetNotNilIndex(work.Index).
- SetNotNilTitle(work.Title).
- SetNotNilContent(work.Content),
- )
- }
- if len(bulkCreateTutorial) > 0 {
- err = tx.Tutorial.CreateBulk(bulkCreateTutorial...).Exec(l.ctx)
- if err != nil {
- _ = tx.Rollback()
- return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
- }
- }
- }
- _ = tx.Commit()
- return &types.BaseMsgResp{Msg: errormsg.CreateSuccess}, nil
- }
|