Browse Source

1、优化老师端接口
2、增加推荐职位逻辑

rayson 4 months ago
parent
commit
debf5c0307
14 changed files with 230 additions and 22 deletions
  1. 15 1
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/CommonConstants.java
  2. 9 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/PayTypeEnum.java
  3. 15 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/teacher/TeacherController.java
  4. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoRespVO.java
  5. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/student/record/StudentPracticeRecordSchoolRespVO.java
  6. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobInterestedMapper.java
  7. 7 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/StudentPracticeRecordMapper.java
  8. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  9. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/handler/JobOperateHandler.java
  10. 61 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/handler/JobRecommendOperateHandler.java
  11. 15 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/PersonIntegrationServiceImpl.java
  12. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/student/StudentPracticeRecordServiceImpl.java
  13. 45 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/teacher/TeacherServiceImpl.java
  14. 27 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/MessageUtils.java

+ 15 - 1
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/CommonConstants.java

@@ -153,7 +153,11 @@ public class CommonConstants {
     /**
      * ========== 短信模版 ==========
      **/
+    /** 系统通知信息 **/
     public static final String SMS_SYS_NOTIFY_TEMPLATE = "menduner-sys-notify";
+    /** 审核结果通知 **/
+    public static final String SMS_SYS_EXAMINE_REDEEM = "menduner-examine-result";
+
 
     /**
      * ========== 站内信模版 ==========
@@ -166,6 +170,7 @@ public class CommonConstants {
         put(NOTIFY_SYS_INVOICE, "开具发票");
         put(NOTIFY_SYS_ENTERPRISE_REGISTER, "企业申请注册");
         put(NOTIFY_SYS_HUNTER_SERVICE, "猎头服务");
+        put(NOTIFY_SYS_SCHOOL_TEACHER_REGISTER, "学校老师申请审核");
     }};
     /**
      * 获取平台系统消息内容
@@ -202,6 +207,10 @@ public class CommonConstants {
      * 系统提示-猎头服务 1-{企业}
      **/
     public static final String NOTIFY_SYS_HUNTER_SERVICE = "menduner_sys_hunter_service";
+    /**
+     * 系统提示-学校老师审核 1-{学校},2-{老师名称}
+     **/
+    public static final String NOTIFY_SYS_SCHOOL_TEACHER_REGISTER = "menduner_sys_school_teacher_register";
 
     /** ========== im 消息模版 ========== **/
     /**
@@ -244,6 +253,7 @@ public class CommonConstants {
     public static final Map<String, String> WX_SUBSCRIBE_TEMPLATE_PAGE = new HashMap<>() {{
         put(WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE, WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE_PAGE);
         put(WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE, WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE_PAGE);
+        put(WX_SUBSCRIBE_RECOMMEND_JOB_TEMPLATE, WX_SUBSCRIBE_RECOMMEND_JOB_TEMPLATE_PAGE);
     }};
     public static final String WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE = "简历投递反馈通知";
     public static final String WX_SUBSCRIBE_CV_FEEDBACK_TEMPLATE_PAGE = "pages/index/my";
@@ -252,6 +262,10 @@ public class CommonConstants {
      **/
     public static final String WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE = "线下面试提醒";
     public static final String WX_SUBSCRIBE_INTERVIEW_REMIND_TEMPLATE_PAGE = "pages/index/my";
-
+    /**
+     * 推荐职位,发送给投递者
+     **/
+    public static final String WX_SUBSCRIBE_RECOMMEND_JOB_TEMPLATE = "职位推荐通知";
+    public static final String WX_SUBSCRIBE_RECOMMEND_JOB_TEMPLATE_PAGE = "pages/index/position";
 
 }

+ 9 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/PayTypeEnum.java

@@ -21,4 +21,13 @@ public enum PayTypeEnum {
     private final String type;
 
     private final String name;
+
+    public static PayTypeEnum getEnumByType(String type) {
+        for (PayTypeEnum payTypeEnum : PayTypeEnum.values()) {
+            if (payTypeEnum.getType().equals(type)) {
+                return payTypeEnum;
+            }
+        }
+        return MONTH_WAGE;
+    }
 }

+ 15 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/teacher/TeacherController.java

@@ -10,9 +10,11 @@ import com.citu.framework.excel.core.util.ExcelUtils;
 import com.citu.module.menduner.system.controller.base.person.teacher.TeacherAuthReqVO;
 import com.citu.module.menduner.system.controller.base.person.teacher.TeacherPageReqVO;
 import com.citu.module.menduner.system.controller.base.person.teacher.TeacherRespVO;
+import com.citu.module.menduner.system.controller.base.school.SchoolInfoRespVO;
 import com.citu.module.menduner.system.controller.base.school.SchoolRespVO;
 import com.citu.module.menduner.system.dal.dataobject.person.TeacherDO;
 import com.citu.module.menduner.system.dal.dataobject.school.SchoolDO;
+import com.citu.module.menduner.system.enums.person.TeacherAuthStatusEnum;
 import com.citu.module.menduner.system.service.person.teacher.TeacherService;
 import com.citu.module.menduner.system.service.school.SchoolInfoService;
 import com.citu.module.menduner.system.service.school.SchoolService;
@@ -45,6 +47,9 @@ public class TeacherController {
     @Resource
     private SchoolInfoService schoolInfoService;
 
+    @Resource
+    private SchoolService schoolService;
+
     @DeleteMapping("/delete")
     @Operation(summary = "删除老师信息")
     @Parameter(name = "id", description = "编号", required = true)
@@ -70,7 +75,16 @@ public class TeacherController {
         PageResult<TeacherDO> pageResult = teacherService.getTeacherPage(pageReqVO);
         PageResult<TeacherRespVO> resp = BeanUtils.toBean(pageResult, TeacherRespVO.class);
         for (TeacherRespVO vo : resp.getList()) {
-            vo.setSchool(schoolInfoService.getBySchoolId(vo.getSchoolId()));
+            if(TeacherAuthStatusEnum.PASSED.getStatus().equals(vo.getAuthStatus())) {
+                vo.setSchool(schoolInfoService.getBySchoolId(vo.getSchoolId()));
+            }else {
+                // 未通过 ,拒绝
+                SchoolInfoRespVO schoolRespVO= new SchoolInfoRespVO();
+                SchoolDO schoolDO = schoolService.getSchool(vo.getSchoolId());
+                schoolRespVO.setName(schoolDO.getName());
+                schoolRespVO.setSchoolId(schoolDO.getCode());
+                vo.setSchool(schoolRespVO);
+            }
         }
         return success(resp);
     }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoRespVO.java

@@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.citu.module.menduner.system.controller.base.area.AreaWebRespVO;
 import com.citu.module.menduner.system.controller.base.position.PositionWebRespVO;
+import com.citu.module.menduner.system.controller.base.workexp.WorkExpRespVO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -114,4 +116,7 @@ public class PersonInfoRespVO {
 
     @Schema(description = "感兴趣职位信息")
     private PositionWebRespVO position;
+
+    @Schema(description = "最近工作经历")
+    private WorkExpRespVO lastWorkExp;
 }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/student/record/StudentPracticeRecordSchoolRespVO.java

@@ -2,6 +2,8 @@ package com.citu.module.menduner.system.controller.base.person.student.record;
 
 
 import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseBaseSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.school.SchoolInfoRespVO;
+import com.citu.module.menduner.system.service.school.SchoolInfoService;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -17,4 +19,7 @@ public class StudentPracticeRecordSchoolRespVO extends EnterpriseBaseSimpleRespV
 
     @Schema(description = "已结束")
     private Long endNum;
+
+    @Schema(description = "学校信息")
+    private SchoolInfoRespVO schoolInfo;
 }

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobInterestedMapper.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.dal.mysql.job;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -52,4 +53,11 @@ public interface JobInterestedMapper extends BaseMapperX<JobInterestedDO> {
         return selectList(new LambdaQueryWrapperX<JobInterestedDO>()
                 .inIfPresent(JobInterestedDO::getUserId, userIds));
     }
+
+    default List<JobInterestedDO> selectByPositionId(Long positionId) {
+        LambdaQueryWrapper<JobInterestedDO> wrapper =  new LambdaQueryWrapper<JobInterestedDO>()
+                .eq(JobInterestedDO::getPositionId, positionId)
+                .groupBy(JobInterestedDO::getUserId, JobInterestedDO::getPositionId);
+        return selectList(wrapper);
+    }
 }

+ 7 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/StudentPracticeRecordMapper.java

@@ -16,6 +16,7 @@ import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.person.StudentDO;
 import com.citu.module.menduner.system.dal.dataobject.person.StudentPracticeRecordDO;
+import com.citu.module.menduner.system.dal.dataobject.school.SchoolInfoDO;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.time.LocalDateTime;
@@ -143,8 +144,10 @@ public interface StudentPracticeRecordMapper extends BaseMapperX<StudentPractice
         MPJLambdaWrapperX<StudentPracticeRecordDO> wrapper =
                 new MPJLambdaWrapperX<>();
         wrapper.selectAsClass(EnterpriseDO.class, StudentPracticeRecordSchoolRespVO.class);
+        wrapper.selectAssociation(SchoolInfoDO.class, StudentPracticeRecordSchoolRespVO::getSchoolInfo);
         wrapper.innerJoin(PersonInfoDO.class, PersonInfoDO::getId, StudentPracticeRecordDO::getPersonId);
         wrapper.innerJoin(StudentDO.class, StudentDO::getId, StudentPracticeRecordDO::getStudentId);
+        wrapper.innerJoin(SchoolInfoDO.class, SchoolInfoDO::getSchoolId, StudentDO::getSchoolId);
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, StudentPracticeRecordDO::getEnterpriseId);
         wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, StudentPracticeRecordDO::getJobId);
         wrapper.eq(StudentDO::getSchoolId, reqVO.getSchoolId());
@@ -156,15 +159,16 @@ public interface StudentPracticeRecordMapper extends BaseMapperX<StudentPractice
     }
 
 
-    default Long getNumByEnterpriseIdAndStatus(Long enterpriseId, String status) {
+    default Long getNumByEnterpriseIdAndStatus(Long schoolId,Long enterpriseId, String status) {
         MPJLambdaWrapperX<StudentPracticeRecordDO> wrapper =
                 new MPJLambdaWrapperX<>();
         wrapper.innerJoin(PersonInfoDO.class, PersonInfoDO::getId, StudentPracticeRecordDO::getPersonId);
         wrapper.innerJoin(StudentDO.class, StudentDO::getId, StudentPracticeRecordDO::getStudentId);
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, StudentPracticeRecordDO::getEnterpriseId);
         wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, StudentPracticeRecordDO::getJobId);
-        wrapper.eqIfExists(StudentPracticeRecordDO::getEnterpriseId, enterpriseId);
-        wrapper.eqIfExists(StudentPracticeRecordDO::getStatus, status);
+        wrapper.eq(StudentDO::getSchoolId, schoolId);
+        wrapper.eq(StudentPracticeRecordDO::getEnterpriseId, enterpriseId);
+        wrapper.eq(StudentPracticeRecordDO::getStatus, status);
         return selectJoinCount(wrapper);
     }
 

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -353,6 +353,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
             jobOperateHandlers.forEach(handler -> handler.afterCreate(job));
             // 数据同步逻辑
             jobOperateHandlers.forEach(handler -> handler.dataSync(job, OperateTypeEnum.ADD));
+            // 推荐职位
+            jobOperateHandlers.forEach(handler -> handler.recommend(job, enterpriseService.getEnterprise(job.getEnterpriseId())));
         } else {
             JobAdvertisedDO oldJob = get(job.getId());
             // 职位修改前的逻辑
@@ -399,6 +401,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         mapper.updateById(job);
         // 数据同步逻辑
         jobOperateHandlers.forEach(handler -> handler.dataSync(job, OperateTypeEnum.UPDATE));
+        // 推荐职位
+        jobOperateHandlers.forEach(handler -> handler.recommend(job, enterpriseService.getEnterprise(job.getEnterpriseId())));
     }
 
     @Override
@@ -416,6 +420,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         mapper.updateById(job);
         // 数据同步逻辑
         jobOperateHandlers.forEach(handler -> handler.dataSync(job, OperateTypeEnum.UPDATE));
+        // 推荐职位
+        jobOperateHandlers.forEach(handler -> handler.recommend(job, enterpriseService.getEnterprise(job.getEnterpriseId())));
     }
 
     @Override

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/handler/JobOperateHandler.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.service.job.handler;
 
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.enums.sync.OperateTypeEnum;
 
@@ -55,4 +56,12 @@ public interface JobOperateHandler {
      * @param operate 操作类型
      */
     default void dataSync(JobAdvertisedDO job, OperateTypeEnum operate) {}
+
+    /**
+     * 职位推荐
+     *
+     * @param job 招聘职位信息
+     * @param enterprise 企业信息
+     */
+    default void recommend(JobAdvertisedDO job, EnterpriseDO enterprise){}
 }

+ 61 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/handler/JobRecommendOperateHandler.java

@@ -0,0 +1,61 @@
+package com.citu.module.menduner.system.service.job.handler;
+
+import com.citu.framework.common.enums.UserTypeEnum;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
+import com.citu.module.menduner.system.enums.job.PayTypeEnum;
+import com.citu.module.menduner.system.util.MessageUtils;
+import com.citu.module.system.api.social.dto.SocialWxaSubscribeMessageSendReqDTO;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.format.DateTimeFormatter;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY3;
+import static com.citu.module.menduner.common.CommonConstants.WX_SUBSCRIBE_RECOMMEND_JOB_TEMPLATE;
+import static com.citu.module.menduner.common.CommonConstants.WX_SUBSCRIBE_TEMPLATE_PAGE;
+
+
+/**
+ * 招聘职位 推荐 逻辑处理 {@link JobOperateHandler} 实现类
+ *
+ * @author Rayson
+ */
+@Component
+public class JobRecommendOperateHandler implements JobOperateHandler {
+
+    @Resource
+    private MessageUtils messageUtils;
+
+    @Resource
+    private JobInterestedMapper jobInterestedMapper;
+
+
+    @Override
+    public void recommend(JobAdvertisedDO job, EnterpriseDO enterprise) {
+        SocialWxaSubscribeMessageSendReqDTO reqDTO = new SocialWxaSubscribeMessageSendReqDTO()
+                .setUserId(null)
+                .setUserType(UserTypeEnum.MEMBER.getValue())
+                .setTemplateTitle(WX_SUBSCRIBE_RECOMMEND_JOB_TEMPLATE)
+                .setPage(WX_SUBSCRIBE_TEMPLATE_PAGE.get(WX_SUBSCRIBE_RECOMMEND_JOB_TEMPLATE));
+        String money = "面议";
+        if (null != job.getPayFrom() && null != job.getPayTo()) {
+            money = job.getPayFrom().stripTrailingZeros().toPlainString()
+                    + "-" + job.getPayTo().stripTrailingZeros().toPlainString()
+                    + "/" + PayTypeEnum.getEnumByType(job.getPayUnit()).getName();
+        }
+        reqDTO = messageUtils.buildWxSubscribeMessageByJobRecommend(reqDTO,
+                job.getName(),
+                enterprise.getName(),
+                money,
+                job.getCreateTime().format(DateTimeFormatter.ofPattern(FORMAT_YEAR_MONTH_DAY3)));
+
+        SocialWxaSubscribeMessageSendReqDTO finalReqDTO = reqDTO;
+        jobInterestedMapper.selectByPositionId(job.getPositionId()).forEach(item -> {
+            finalReqDTO.setUserId(item.getUserId());
+            messageUtils.sendWxSubscribeMessage(finalReqDTO);
+        });
+
+    }
+}

+ 15 - 9
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/PersonIntegrationServiceImpl.java

@@ -37,7 +37,6 @@ import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseTalentPool
 import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
 import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
 import com.citu.module.menduner.system.dal.mysql.person.PersonSkillMapper;
-import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
 import com.citu.module.menduner.system.dal.mysql.projectexp.ProjectExpMapper;
 import com.citu.module.menduner.system.dal.mysql.trainexp.TrainExpMapper;
 import com.citu.module.menduner.system.dal.mysql.user.MdeUserMapper;
@@ -355,8 +354,8 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
         PageResult<PersonInfoRespVO> result = personInfoMapper.queryPage(reqVO, LoginUserContext.getEnterpriseId());
         fillPosition(result);
         result = fillArea(result);
-        PageResult<AppRecruitPersonInfoRespVO>  recruitResult =
-                BeanUtils.toBean(result, AppRecruitPersonInfoRespVO.class) ;
+        PageResult<AppRecruitPersonInfoRespVO> recruitResult =
+                BeanUtils.toBean(result, AppRecruitPersonInfoRespVO.class);
         recruitResult.getList().forEach(item -> {
             item.setInterestedList(
                     JobInterestedConvert.INSTANCE.convertList2(jobInterestedMapper.selectByUserIdList(item.getUserId()))
@@ -426,7 +425,6 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
     }
 
 
-
     @Override
     public PageResult<PersonInfoRespVO> queryRecommendPerson(PersonRecommendQueryReqVO reqVO) {
         Long[] ids = null;
@@ -440,19 +438,19 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
 //            } catch (Exception e) {
 //                e.printStackTrace();
 //            }
-            JobAdvertisedDO job =  jobAdvertisedService.getJobAdvertised(reqVO.getJobId());
+            JobAdvertisedDO job = jobAdvertisedService.getJobAdvertised(reqVO.getJobId());
             if (null != job) {
                 // 填入职位相关的条件
-                if(StringUtils.hasText(job.getEduType())) {
+                if (StringUtils.hasText(job.getEduType())) {
                     reqVO.setEduType(job.getEduType());
                 }
-                if(StringUtils.hasText(job.getExpType())) {
+                if (StringUtils.hasText(job.getExpType())) {
                     reqVO.setExpType(job.getExpType());
                 }
-                if(StringUtils.hasText(job.getType())) {
+                if (StringUtils.hasText(job.getType())) {
                     reqVO.setType(job.getType());
                 }
-                if(null != job.getPositionId()) {
+                if (null != job.getPositionId()) {
                     reqVO.setPositionIds(Collections.singletonList(job.getPositionId()));
                 }
             }
@@ -461,6 +459,14 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
         PageResult<PersonInfoRespVO> result = personInfoMapper.queryRecommendPerson(reqVO,
                 LoginUserContext.getEnterpriseId());
         fillPosition(result);
+        // 填充工作经历
+        result.getList().forEach(item -> {
+            WorkExpDO lastWorkExp = workExpMapper.selectLastOne(item.getUserId());
+            if (null != lastWorkExp) {
+                item.setLastWorkExp(WorkExpConvert.INSTANCE.convert(lastWorkExp));
+            }
+
+        });
         return fillArea(result);
     }
 

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/student/StudentPracticeRecordServiceImpl.java

@@ -170,11 +170,11 @@ public class StudentPracticeRecordServiceImpl implements StudentPracticeRecordSe
         PageResult<StudentPracticeRecordSchoolRespVO> result = mapper.selectCount(reqVO);
         result.getList().forEach(resp -> {
             resp.setWaitingNum(mapper
-                    .getNumByEnterpriseIdAndStatus(resp.getId(), StudentPracticeStatusEnum.WAITING.getStatus()));
+                    .getNumByEnterpriseIdAndStatus(resp.getSchoolInfo().getSchoolId(),resp.getId(), StudentPracticeStatusEnum.WAITING.getStatus()));
             resp.setInProgressNum(mapper
-                    .getNumByEnterpriseIdAndStatus(resp.getId(), StudentPracticeStatusEnum.IN_PROGRESS.getStatus()));
+                    .getNumByEnterpriseIdAndStatus(resp.getSchoolInfo().getSchoolId(),resp.getId(), StudentPracticeStatusEnum.IN_PROGRESS.getStatus()));
             resp.setEndNum(mapper
-                    .getNumByEnterpriseIdAndStatus(resp.getId(), StudentPracticeStatusEnum.END.getStatus()));
+                    .getNumByEnterpriseIdAndStatus(resp.getSchoolInfo().getSchoolId(),resp.getId(), StudentPracticeStatusEnum.END.getStatus()));
         });
         return result;
     }

+ 45 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/teacher/TeacherServiceImpl.java

@@ -1,9 +1,11 @@
 package com.citu.module.menduner.system.service.person.teacher;
 
 
+import cn.hutool.core.map.MapUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.common.CommonConstants;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.base.person.teacher.TeacherAuthReqVO;
 import com.citu.module.menduner.system.controller.base.person.teacher.TeacherPageReqVO;
@@ -14,6 +16,10 @@ import com.citu.module.menduner.system.dal.mysql.person.TeacherMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.enums.person.TeacherAuthStatusEnum;
 import com.citu.module.menduner.system.service.school.SchoolInfoService;
+import com.citu.module.menduner.system.service.school.SchoolService;
+import com.citu.module.menduner.system.util.MessageUtils;
+import com.citu.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
+import com.citu.module.system.api.sms.dto.send.SmsSendSingleToUserReqDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -21,6 +27,8 @@ import javax.annotation.Resource;
 import java.time.LocalDateTime;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.common.CommonConstants.NOTIFY_SYS_SCHOOL_TEACHER_REGISTER;
+import static com.citu.module.menduner.common.CommonConstants.getPlatformSystemMessageContent;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.TEACHER_NOT_EXISTS;
 
 /**
@@ -35,9 +43,15 @@ public class TeacherServiceImpl implements TeacherService {
     @Resource
     private TeacherMapper teacherMapper;
 
+    @Resource
+    private SchoolService schoolService;
+
     @Resource
     private SchoolInfoService schoolInfoService;
 
+    @Resource
+    private MessageUtils messageUtils;
+
 
     @Override
     public void deleteTeacher(Long id) {
@@ -75,7 +89,17 @@ public class TeacherServiceImpl implements TeacherService {
         } else {
             teacherMapper.updateById(teacher);
         }
-        // TODO 通知管理员审核
+        // 通知管理员审核
+        messageUtils.sendPlatformSystemNotifyAndSmsAndEmailMessage(new NotifySendSingleToUserReqDTO()
+                .setTemplateCode(NOTIFY_SYS_SCHOOL_TEACHER_REGISTER)
+                .setTemplateParams(
+                        // 假设MapUtil.builder()的API允许链式调用,并且返回的是Map.Builder类型
+                        // 如果不是,你需要根据实际的API进行调整
+                        MapUtil.<String, Object>builder()
+                                .put("1", schoolService.getSchool(teacher.getSchoolId()).getName())
+                                .put("2", teacher.getName())
+                                .build()
+                ));
     }
 
     @Override
@@ -95,7 +119,16 @@ public class TeacherServiceImpl implements TeacherService {
 
         // 保存学校 and 院系信息
         schoolInfoService.save(teacher);
-        // TODO 短信通知
+        // 短信通知
+        SmsSendSingleToUserReqDTO smsReqDTO = new SmsSendSingleToUserReqDTO();
+        smsReqDTO.setUserId(teacher.getUserId());
+        smsReqDTO.setMobile(teacher.getPhone());
+        smsReqDTO.setTemplateCode(CommonConstants.SMS_SYS_EXAMINE_REDEEM);
+        smsReqDTO.setTemplateParams(MapUtil.<String, Object>builder()
+                .put("1", teacher.getName())
+                .put("2","老师注册申请")
+                .build());
+        messageUtils.getSendApi().sendSingleSmsToMember(smsReqDTO);
     }
 
     @Override
@@ -106,7 +139,16 @@ public class TeacherServiceImpl implements TeacherService {
         teacher.setAuthMessage(reqVO.getAuthMessage());
         teacher.setAuthTime(LocalDateTime.now());
         teacherMapper.updateById(teacher);
-        // TODO 短信通知
+        // 短信通知
+        SmsSendSingleToUserReqDTO smsReqDTO = new SmsSendSingleToUserReqDTO();
+        smsReqDTO.setUserId(teacher.getUserId());
+        smsReqDTO.setMobile(teacher.getPhone());
+        smsReqDTO.setTemplateCode(CommonConstants.SMS_SYS_EXAMINE_REDEEM);
+        smsReqDTO.setTemplateParams(MapUtil.<String, Object>builder()
+                .put("1", teacher.getName())
+                .put("2","老师注册申请")
+                .build());
+        messageUtils.getSendApi().sendSingleSmsToMember(smsReqDTO);
     }
 
     @Override

+ 27 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/MessageUtils.java

@@ -51,13 +51,17 @@ public class MessageUtils {
     private AdminUserApi adminUserApi;
 
     public static String replace(String str) {
-        if(null == str) {
+        if (null == str) {
             return null;
         }
         return str.replaceAll("&amp;", "&");
     }
 
 
+    public SmsSendApi getSendApi() {
+        return smsSendApi;
+    }
+
     /**
      * 发送后台管理系统消息通知
      *
@@ -100,7 +104,7 @@ public class MessageUtils {
 
                     // 发送邮件
                     mailSendApi.sendSingleMailToAdmin(
-                            packSysNotifyTemplate(data.getEmail(),getPlatformSystemMessageContent(reqDTO.getTemplateCode(),reqDTO.getTemplateParams()))
+                            packSysNotifyTemplate(data.getEmail(), getPlatformSystemMessageContent(reqDTO.getTemplateCode(), reqDTO.getTemplateParams()))
                     );
                 }
             }
@@ -223,6 +227,27 @@ public class MessageUtils {
         return reqDTO;
     }
 
+    /**
+     * 构建微信订阅消息-职位推荐
+     *
+     * @param jobName        职位名称
+     * @param enterpriseName 公司名称
+     * @param money          薪酬
+     * @param time           时间
+     */
+    public SocialWxaSubscribeMessageSendReqDTO buildWxSubscribeMessageByJobRecommend(SocialWxaSubscribeMessageSendReqDTO reqDTO,
+                                                                                     String jobName,
+                                                                                     String enterpriseName,
+                                                                                     String money,
+                                                                                     String time) {
+        reqDTO.addMessage("thing3", jobName);
+        reqDTO.addMessage("thing8", enterpriseName);
+        reqDTO.addMessage("thing4", money);
+        reqDTO.addMessage("time6", time);
+        reqDTO.addMessage("thing1", "已有适合您的感兴趣的职位发布");
+        return reqDTO;
+    }
+
     /**
      * 发送邮件
      *