Browse Source

1、优化企业找人逻辑

rayson 4 months ago
parent
commit
177ff2e11b

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

@@ -19,6 +19,7 @@ import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseTalen
 import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import com.citu.module.menduner.system.util.JoinHelper;
 import com.citu.module.menduner.system.util.RecruitAnalysisUtils;
 import org.apache.ibatis.annotations.Mapper;
@@ -140,7 +141,7 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
         // 连接用户表设置vip条件
         JoinHelper.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
         // 过滤屏蔽用户
-        if(null != enterpriseId) {
+        if (null != enterpriseId) {
             JoinHelper.filterBlockedUsersForEnterprise(query, PersonInfoDO::getUserId, enterpriseId);
         }
         if (null != reqVO.getAge()) {
@@ -233,28 +234,55 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
     /**
      * 查询推荐人
      *
-     * @param reqVO          检索条件
+     * @param reqVO        检索条件
      * @param enterpriseId 操作的企业
      **/
     default PageResult<PersonInfoRespVO> queryRecommendPerson(PersonRecommendQueryReqVO reqVO,
                                                               Long enterpriseId) {
+//        MPJLambdaWrapperX<PersonInfoDO> query = new MPJLambdaWrapperX<>();
+//        query.selectAsClass(PersonInfoDO.class, PersonInfoRespVO.class);
+//
+//        query.leftJoin(JobInterestedDO.class, JobInterestedDO::getUserId, PersonInfoDO::getUserId);
+//        query.inIfPresent(PersonInfoDO::getUserId, reqVO.getIds());
+//
+//        query.eqIfPresent(PersonInfoDO::getExpType, reqVO.getExpType());
+//        query.eqIfPresent(PersonInfoDO::getEduType, reqVO.getEduType());
+//
+//        query.eqIfPresent(PersonInfoDO::getJobType, reqVO.getType());
+//        query.in(CollUtil.isNotEmpty(reqVO.getPositionIds()),JobInterestedDO::getPositionId, reqVO.getPositionIds());
+//
+//        // 连接用户表设置vip条件
+//        JoinHelper.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
+//        // 过滤屏蔽用户
+//        JoinHelper.filterBlockedUsersForEnterprise(query, PersonInfoDO::getUserId, enterpriseId);
+//        query.orderByDesc(PersonInfoDO::getUpdateTime);
+//        return selectJoinPage(reqVO, PersonInfoRespVO.class, query);
         MPJLambdaWrapperX<PersonInfoDO> query = new MPJLambdaWrapperX<>();
         query.selectAsClass(PersonInfoDO.class, PersonInfoRespVO.class);
 
-        query.leftJoin(JobInterestedDO.class, JobInterestedDO::getUserId, PersonInfoDO::getUserId);
-        query.inIfPresent(PersonInfoDO::getUserId, reqVO.getIds());
+        // 连接 WorkExpDO 表,并关联子查询
+        query.leftJoin(WorkExpDO.class, "w",w->w
+                .eq(WorkExpDO::getUserId, PersonInfoDO::getUserId)
+                .apply(
+                        "w.id = (SELECT we.id FROM mde_work_exp we WHERE we.deleted = 0 and we.user_id = "+query.getAlias()+".user_id order by we.start_time desc limit 1)"));
+
+        // 查询条件:WorkExpDO 的 positionId 在 reqVO.getPositionIds() 中
+        query.in(CollUtil.isNotEmpty(reqVO.getPositionIds()), WorkExpDO::getPositionId, reqVO.getPositionIds());
 
+        // 其他查询条件
         query.eqIfPresent(PersonInfoDO::getExpType, reqVO.getExpType());
         query.eqIfPresent(PersonInfoDO::getEduType, reqVO.getEduType());
-
         query.eqIfPresent(PersonInfoDO::getJobType, reqVO.getType());
-        query.in(CollUtil.isNotEmpty(reqVO.getPositionIds()),JobInterestedDO::getPositionId, reqVO.getPositionIds());
 
-        // 连接用户表设置vip条件
+        // 连接用户表设置 VIP 条件
         JoinHelper.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
         // 过滤屏蔽用户
         JoinHelper.filterBlockedUsersForEnterprise(query, PersonInfoDO::getUserId, enterpriseId);
+
+        // 按更新时间降序排序
         query.orderByDesc(PersonInfoDO::getUpdateTime);
+
+        // 执行查询并返回分页结果
         return selectJoinPage(reqVO, PersonInfoRespVO.class, query);
     }
 

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

@@ -67,7 +67,7 @@ public interface StudentPracticeRecordMapper extends BaseMapperX<StudentPractice
         wrapper.betweenIfPresent(StudentPracticeRecordDO::getStartTime, reqVO.getStartTime());
         wrapper.betweenIfPresent(StudentPracticeRecordDO::getEndTime, reqVO.getEndTime());
         wrapper.eqIfPresent(StudentPracticeRecordDO::getStatus, reqVO.getStatus());
-
+        wrapper.orderByDesc(StudentPracticeRecordDO::getUpdateTime);
         return selectJoinPage(reqVO, StudentPracticeRecordDetailRespVO.class, wrapper);
     }
 

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

@@ -6,10 +6,15 @@ import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
+import com.citu.module.menduner.system.controller.base.major.MajorRespVO;
 import com.citu.module.menduner.system.controller.base.person.student.record.*;
+import com.citu.module.menduner.system.controller.base.school.SchoolOrganizationRespVO;
 import com.citu.module.menduner.system.dal.dataobject.person.StudentPracticeRecordDO;
+import com.citu.module.menduner.system.dal.dataobject.school.SchoolOrganizationDO;
 import com.citu.module.menduner.system.dal.mysql.person.StudentPracticeRecordMapper;
 import com.citu.module.menduner.system.enums.person.StudentPracticeStatusEnum;
+import com.citu.module.menduner.system.service.major.MajorService;
+import com.citu.module.menduner.system.service.school.SchoolOrganizationService;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -33,6 +38,12 @@ public class StudentPracticeRecordServiceImpl implements StudentPracticeRecordSe
     @Resource
     private StudentPracticeRecordMapper mapper;
 
+    @Resource
+    private SchoolOrganizationService schoolOrganizationService;
+
+    @Resource
+    private MajorService majorService;
+
     @Override
     public Long createStudentPracticeRecord(StudentPracticeRecordSaveReqVO createReqVO) {
         // 插入
@@ -97,7 +108,17 @@ public class StudentPracticeRecordServiceImpl implements StudentPracticeRecordSe
 
     @Override
     public PageResult<StudentPracticeRecordDetailRespVO> page(Long userId, StudentPracticeRecordPageReqVO reqVO) {
-        return mapper.page(userId,reqVO);
+        PageResult<StudentPracticeRecordDetailRespVO> result =  mapper.page(userId,reqVO);
+        if(null == userId) {
+            result.getList().forEach(resp -> {
+                SchoolOrganizationDO dept = schoolOrganizationService.getSchoolOrganization(resp.getStudent().getSchoolDeptId());
+                resp.getStudent().setSchoolDept(BeanUtils.toBean(dept, SchoolOrganizationRespVO.class));
+                SchoolOrganizationDO schoolClass = schoolOrganizationService.getSchoolOrganization(resp.getStudent().getSchoolClassId());
+                resp.getStudent().setSchoolClass(BeanUtils.toBean(schoolClass, SchoolOrganizationRespVO.class));
+                resp.getStudent().setMajor(BeanUtils.toBean(majorService.getMajor(resp.getStudent().getMajorId()), MajorRespVO.class));
+            });
+        }
+        return result;
     }
 
     @Override

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserServiceImpl.java

@@ -51,7 +51,7 @@ import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exce
 import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
 import static com.citu.framework.web.core.util.WebFrameworkUtils.getTerminal;
 import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
-import static com.citu.module.menduner.system.dal.redis.RedisKeyConstants.MDE_AUTH_USER_PWD_LOCK;
+import static com.citu.module.menduner.system.dal.redis.RedisKeyConstants.*;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 import static com.citu.module.menduner.system.enums.MdeLogRecordConstants.*;
 import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.packBarCount;
@@ -428,6 +428,8 @@ public class MdeUserServiceImpl implements MdeUserService {
         LogRecordContext.putVariable("user", user);
         LogRecordContext.putVariable("newPassword", updateObj.getPassword());
         redisTemplate.delete(String.format(MDE_AUTH_USER_PWD_LOCK, user.getPhone()));
+        redisTemplate.delete(String.format(MDE_AUTH_USER_PHONE_ENUM, user.getPhone()));
+        redisTemplate.delete(String.format(MDE_AUTH_USER_SMS_CODE_LOCK, user.getPhone()));
     }