ソースを参照

调整企业套餐和前端页面检索品牌功能,优化查询效率

DESKTOP-VAEGFGM\zqc 4 週間 前
コミット
6a5ba46912
18 ファイル変更181 行追加29 行削除
  1. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/fair/AppRecruitFairController.java
  2. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/PersonQueryReqVO.java
  3. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoRespVO.java
  4. 1 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobInterestedConvert.java
  5. 1 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/WorkExpConvert.java
  6. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseEntitlementMapper.java
  7. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  8. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobInterestedMapper.java
  9. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonEnterpriseBlockMapper.java
  10. 42 13
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonInfoMapper.java
  11. 16 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/user/MdeUserMapper.java
  12. 11 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/workexp/WorkExpMapper.java
  13. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementService.java
  14. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementServiceImpl.java
  15. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterprisePackageServiceImpl.java
  16. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  17. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  18. 47 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/PersonIntegrationServiceImpl.java

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/fair/AppRecruitFairController.java

@@ -114,7 +114,7 @@ public class AppRecruitFairController {
         if (ObjectUtil.isEmpty(jobIdList)) {
             return success(null);
         }
-        List<AppRecruitJobRespVO> list = jobAdvertisedService.getByIdsList(jobIdList);
+        List<AppRecruitJobRespVO> list = jobAdvertisedService.getByIdsList(jobIdList,"0");
         list.forEach(item -> {
             if (null != item.getAreaId()) {
                 item.setArea(areaService.getById(item.getAreaId()));

+ 7 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/PersonQueryReqVO.java

@@ -35,5 +35,12 @@ public class PersonQueryReqVO extends PageParam {
     @Schema(description = "酒店品牌")
     private String brand;
 
+    @Schema(description = "检索用户Id")
+    private List<Long> userIds;
+
+
+    @Schema(description = "黑名单用户Id")
+    private List<Long> blockUserIds;
+
 
 }

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

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.controller.base.person.info;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.module.menduner.system.controller.app.recruit.person.workexp.AppRecruitWorkExpRespVO;
 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;
@@ -119,4 +120,8 @@ public class PersonInfoRespVO {
 
     @Schema(description = "最近工作经历")
     private WorkExpRespVO lastWorkExp;
+
+    List<AppRecruitWorkExpRespVO> workExpList;
+
+
 }

+ 1 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobInterestedConvert.java

@@ -18,6 +18,7 @@ public interface JobInterestedConvert  {
     List<AppJobInterestedRespVO> convertList(List<JobInterestedDO> list);
 
     AppJobAdvertisedDetailRespVO convert(JobInterestedDO bean);
+    AppRecruitJobInterestedRespVO convert2(JobInterestedDO list);
 
     List<AppRecruitJobInterestedRespVO> convertList2(List<JobInterestedDO> list);
 

+ 1 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/WorkExpConvert.java

@@ -21,4 +21,5 @@ public interface WorkExpConvert {
     List<WorkExpRespVO> convertList3(List<WorkExpDO> list);
 
     WorkExpRespVO convert(WorkExpDO workExpDO);
+    AppRecruitWorkExpRespVO convert2(WorkExpDO workExpDO);
 }

+ 13 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseEntitlementMapper.java

@@ -46,4 +46,17 @@ public interface EnterpriseEntitlementMapper extends BaseMapperX<EnterpriseEntit
 
     @Update("update mde_enterprise_entitlement set publish_job_count = publish_job_count + #{publishJobCount},tmp_publish_job_count=tmp_publish_job_count+#{publishJobCount} where enterprise_id = #{enterpriseId}")
     void addPublishJobCount(@Param("enterpriseId") Long enterpriseId,@Param("publishJobCount") int publishJobCount);
+
+    /**
+     * 修改非会员的企业 默认权益
+     * @param publishJobCount
+     * @param searchCount
+     * @param lookCvCount
+     */
+    @Update("update mde_enterprise_entitlement set  " +
+            " publish_job_count = if(publish_job_count +#{publishJobCount}<=0,0,publish_job_count +#{publishJobCount} )," +
+            " search_count = if(search_count +#{searchCount}<=0,0,search_count +#{searchCount} )," +
+            " look_cv_count = if(look_cv_count +#{lookCvCount}<=0,0,look_cv_count +#{lookCvCount} )" +
+            "where  enterprise_id in ( select id  from mde_enterprise where  vip_expire_date is null )")
+    void updateDefaultEnterprise(@Param("publishJobCount")Integer publishJobCount, @Param("searchCount")Integer searchCount, @Param("lookCvCount")Integer lookCvCount);
 }

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

@@ -313,6 +313,9 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
 
 
         if(Long.valueOf(0L).equals(reqVO.getJobFairId())){
+
+
+
             query.isNull(FairDetailDO::getJobId);
         }else{
             query.selectAs(FairDO::getTitle, AppRecruitJobRespVO::getJobFairName);

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

@@ -8,6 +8,7 @@ import com.citu.module.menduner.system.controller.base.job.interested.JobInteres
 import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -49,7 +50,7 @@ public interface JobInterestedMapper extends BaseMapperX<JobInterestedDO> {
                 .eqIfPresent(JobInterestedDO::getUserId, userId));
     }
 
-    default List<JobInterestedDO> selectByUserIdsList(List<Long> userIds) {
+    default List<JobInterestedDO> selectByUserIdsList(Collection<Long> userIds) {
         return selectList(new LambdaQueryWrapperX<JobInterestedDO>()
                 .inIfPresent(JobInterestedDO::getUserId, userIds));
     }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonEnterpriseBlockMapper.java

@@ -10,6 +10,9 @@ import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseBlockDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * 人才屏蔽企业关系 Mapper
@@ -42,4 +45,7 @@ public interface PersonEnterpriseBlockMapper extends BaseMapperX<PersonEnterpris
         query.orderByDesc(PersonEnterpriseSubscribeDO::getUpdateTime);
         return selectJoinPage(param, EnterpriseBaseSimpleRespVO.class, query);
     }
+
+    @Select("SELECT user_id FROM mde_person_enterprise_block WHERE enterprise_id = #{enterpriseId}")
+    List<Long> getEnterpriseBlockUserIds(Long enterpriseId);
 }

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

@@ -29,6 +29,8 @@ import org.apache.ibatis.annotations.Mapper;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 
 /**
@@ -188,15 +190,24 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
      **/
     default PageResult<PersonInfoRespVO> queryPage(PersonQueryReqVO reqVO, Long enterpriseId) {
         MPJLambdaWrapperX<PersonInfoDO> query = new MPJLambdaWrapperX<>();
-        query.distinct();
+//        query.distinct();
         query.selectAsClass(PersonInfoDO.class, PersonInfoRespVO.class);
 
         // 连接用户表设置vip条件
         JoinHelper.joinAndFilterVipUser(query, PersonInfoDO::getUserId);
-        // 过滤屏蔽用户
-        JoinHelper.filterBlockedUsersForEnterprise(query, PersonInfoDO::getUserId, enterpriseId);
-        // 求职意向
-        query.leftJoin(JobInterestedDO.class, JobInterestedDO::getUserId, PersonInfoDO::getUserId);
+        // 过滤屏蔽用户  优化SQL
+//        JoinHelper.filterBlockedUsersForEnterprise(query, PersonInfoDO::getUserId, enterpriseId);
+        if(null!=reqVO.getUserIds() &&!reqVO.getUserIds().isEmpty() ){
+            HashSet<Long> userIds = new HashSet<>(reqVO.getUserIds());
+            if(null!=reqVO.getBlockUserIds()) {
+                userIds.removeAll(reqVO.getBlockUserIds());
+            }
+            query.in(PersonInfoDO::getUserId, userIds);
+        }else{
+            query.notIn(PersonInfoDO::getUserId, reqVO.getBlockUserIds());
+        }
+
+
 //        query.leftJoin(WorkExpDO.class, WorkExpDO::getUserId, PersonInfoDO::getUserId);
 //        query.leftJoin(EnterpriseBrandDO.class, on->
 //            on.eq(EnterpriseBrandDO::getEnterpriseCnName,WorkExpDO::getEnterpriseName)
@@ -211,12 +222,30 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
         query.eqIfPresent(PersonInfoDO::getEduType, reqVO.getEduType());
         query.eqIfPresent(PersonInfoDO::getExpType, reqVO.getExpType());
         query.eqIfPresent(PersonInfoDO::getType, reqVO.getType());
-        query.and(StringUtils.isNotBlank(reqVO.getBrand()),
-                qw->qw.
-                        apply("enterprise_name in (  select   enterprise_name  from mde_enterprise_brand ,mde_work_exp " +
-                                " where " +
-                                " (mde_work_exp.enterprise_name =  mde_enterprise_brand.enterprise_en_name  or  mde_work_exp.enterprise_name =  mde_enterprise_brand.enterprise_cn_name) and " +
-                                "mde_enterprise_brand.brand = {0}",reqVO.getBrand()) );
+//        if(StringUtils.isNotBlank(reqVO.getBrand())){
+//            query.innerJoin(WorkExpDO.class, on-> on.eq(WorkExpDO::getUserId, PersonInfoDO::getUserId).like(WorkExpDO::getEnterpriseName, reqVO.getBrand()));
+//        }
+
+//        query.and(StringUtils.isNotBlank(reqVO.getBrand()),
+//                qw->qw.
+//                        apply("t.user_id in ( " +
+//                                "    select   ifnull(tab2.user_id,0)   from   mde_work_exp tab2 " +
+//                                " where " +
+//                                "  tab2.enterprise_name like  concat('%',{0},'%')   " +
+//                                ")",reqVO.getBrand(),reqVO.getBrand()) );
+//        query.and(StringUtils.isNotBlank(reqVO.getBrand()),
+//                qw->qw.
+//                        apply("t.user_id in ( " +
+//                                "    select   ifnull(tab2.user_id,0)   from mde_enterprise_brand tab1 inner join mde_work_exp tab2 " +
+//                                "   on       (tab2.enterprise_name =  tab1.enterprise_en_name  or  tab2.enterprise_name =  tab1.enterprise_cn_name)" +
+//                                     " where " +
+//                                          "  (tab1.brand_en_name  like concat('%',{0},'%')  or tab1.brand_cn_name  like  concat('%',{1},'%')  )  " +
+//                                ")",reqVO.getBrand(),reqVO.getBrand()) );
+
+        if(CollUtil.isNotEmpty(reqVO.getAreaIds())||CollUtil.isNotEmpty(reqVO.getPositionIds()) || CollUtil.isNotEmpty(reqVO.getAreaIds()) || (null!=reqVO.getWorkAreaIds()&& !reqVO.getWorkAreaIds().isEmpty()) ) {
+            // 求职意向
+            query.leftJoin(JobInterestedDO.class, JobInterestedDO::getUserId, PersonInfoDO::getUserId);
+        }
 
         query.and(CollUtil.isNotEmpty(reqVO.getPositionIds()) || CollUtil.isNotEmpty(reqVO.getAreaIds()) ,qw->qw.in(CollUtil.isNotEmpty(reqVO.getPositionIds()), JobInterestedDO::getPositionId, reqVO.getPositionIds())
                 .or(CollUtil.isNotEmpty(reqVO.getPositionIds()))
@@ -248,7 +277,7 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
 //                        .or()
 //                        .like(EnterpriseBrandDO::getBrandEnName,reqVO.getContent())
 //                        .or()
-                        .like(WorkExpDO::getEnterpriseName,reqVO.getContent())
+//                        .like(WorkExpDO::getEnterpriseName,reqVO.getContent())
                         .or()
                         .like(PersonInfoDO::getTagList, reqVO.getContent())
                         .or()
@@ -265,7 +294,7 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
 //                .or()
 //                .likeIfExists(PersonInfoDO::getForeignName, reqVO.getContent());
 
-
+        query.groupBy(PersonInfoDO::getId);
         query.orderByDesc(PersonInfoDO::getUpdateTime);
 
         return selectJoinPage(reqVO, PersonInfoRespVO.class, query);

+ 16 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/user/MdeUserMapper.java

@@ -21,6 +21,7 @@ import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
 import com.citu.module.menduner.system.dal.dataobject.logger.LoginLogDO;
 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.RecruitAnalysisUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Mapper;
@@ -95,12 +96,19 @@ public interface MdeUserMapper extends BaseMapperX<MdeUserDO> {
 
         ;
 
-        query.and(StringUtils.isNotBlank(reqVO.getBrand()),
-                qw->qw.
-                        apply("enterprise_name in (  select   enterprise_name  from mde_enterprise_brand ,mde_work_exp " +
-                                " where " +
-                                " (mde_work_exp.enterprise_name =  mde_enterprise_brand.enterprise_en_name  or  mde_work_exp.enterprise_name =  mde_enterprise_brand.enterprise_cn_name) and " +
-                                "mde_enterprise_brand.brand = {0}",reqVO.getBrand()) );
+        if(StringUtils.isNotBlank(reqVO.getBrand())){
+            query.innerJoin(WorkExpDO.class, WorkExpDO::getUserId, PersonInfoDO::getUserId);
+            query.like(WorkExpDO::getEnterpriseName, reqVO.getBrand());
+        }
+
+//        query.and(StringUtils.isNotBlank(reqVO.getBrand()),
+//                qw->qw.
+//                        apply("t.user_id in ( " +
+//                                "    select   ifnull(tab2.user_id,0)   from   mde_work_exp tab2 " +
+//                                " where " +
+//                                "  tab2.enterprise_name like  concat('%',{0},'%')   " +
+//                                ")",reqVO.getBrand(),reqVO.getBrand()) );
+
 
         query.in(null!=reqVO.getWorkAreaIds()&& !reqVO.getWorkAreaIds().isEmpty(),JobInterestedDO::getWorkAreaId, reqVO.getWorkAreaIds());
 
@@ -223,4 +231,6 @@ public interface MdeUserMapper extends BaseMapperX<MdeUserDO> {
         query.orderByDesc(LoginLogDO::getCreateTime);
         return selectJoinPage(reqVO, UserPersonRespVO.class, query);
     }
+
+    void selectByEnterpriseName(String brand);
 }

+ 11 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/workexp/WorkExpMapper.java

@@ -7,8 +7,11 @@ import com.citu.module.menduner.system.controller.base.workexp.WorkExpPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
 import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 
+import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 工作经历 Mapper
@@ -40,6 +43,12 @@ public interface WorkExpMapper extends BaseMapperX<WorkExpDO> {
         );
     }
 
+     default    List<WorkExpDO> selectByUserIdsList(Collection<Long> userIds){
+         return selectList(new LambdaQueryWrapperX<WorkExpDO>()
+                 .inIfPresent(WorkExpDO::getUserId, userIds)
+                 .orderByDesc(WorkExpDO::getStartTime));
+     }
+
 
     default WorkExpDO selectByIdAndUserId(Long id, Long userId) {
         return selectOne(new LambdaQueryWrapperX<WorkExpDO>()
@@ -61,5 +70,6 @@ public interface WorkExpMapper extends BaseMapperX<WorkExpDO> {
                 .last("limit 1"));
     }
 
-
+    @Select("select user_id  from mde_work_exp where enterprise_name LIKE concat('%',#{brand},'%') AND deleted = 0  and tenant_id = 155  ")
+    List<Long> selectByEnterpriseName(String brand);
 }

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementService.java

@@ -106,4 +106,6 @@ public interface EnterpriseEntitlementService {
      boolean checkPermissionRetBol(String type);
 
     void addPublishJobCount(Long enterpriseId, int publishJobCount);
+
+    void updateDefaultEnterprise(Integer publishJobCount, Integer searchCount, Integer lookCvCount);
 }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterpriseEntitlementServiceImpl.java

@@ -345,4 +345,9 @@ public class EnterpriseEntitlementServiceImpl implements EnterpriseEntitlementSe
     public void addPublishJobCount(Long enterpriseId, int publishJobCount) {
         mapper.addPublishJobCount(enterpriseId, publishJobCount);
     }
+
+    @Override
+    public void updateDefaultEnterprise(Integer publishJobCount, Integer searchCount, Integer lookCvCount) {
+        mapper.updateDefaultEnterprise(publishJobCount,searchCount,lookCvCount);
+    }
 }

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/vip/EnterprisePackageServiceImpl.java

@@ -7,6 +7,7 @@ import com.citu.module.menduner.system.controller.base.enterprise.vip.Enterprise
 import com.citu.module.menduner.system.controller.base.enterprise.vip.EnterprisePackageSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePackageDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterprisePackageMapper;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -33,6 +34,10 @@ public class EnterprisePackageServiceImpl implements EnterprisePackageService {
     @Resource
     private EnterprisePackageMapper mapper;
 
+    @Resource
+    @Lazy
+    EnterpriseEntitlementService enterpriseEntitlementService;
+
     @Override
     public Long createEnterprisePackage(EnterprisePackageSaveReqVO createReqVO) {
         // 插入
@@ -48,6 +53,17 @@ public class EnterprisePackageServiceImpl implements EnterprisePackageService {
         validateEnterprisePackageExists(updateReqVO.getId());
         // 更新
         EnterprisePackageDO updateObj = BeanUtils.toBean(updateReqVO, EnterprisePackageDO.class);
+        EnterprisePackageDO enterprisePackageDO = mapper.selectById(updateObj.getId());
+        // 默认租户套餐额外进行处理
+        if(enterprisePackageDO.getDefaultPackage()){
+            // 发布职位数量
+            Integer publishJobCount =  updateObj.getPublishJobCount() -  enterprisePackageDO.getPublishJobCount();
+            Integer searchCount =  updateObj.getSearchCount() -  enterprisePackageDO.getSearchCount();
+            Integer lookCvCount =  updateObj.getLookCvCount() -  enterprisePackageDO.getLookCvCount();
+            enterpriseEntitlementService.updateDefaultEnterprise(publishJobCount,searchCount,lookCvCount);
+
+
+        }
         mapper.updateById(updateObj);
     }
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java

@@ -206,7 +206,7 @@ public interface JobAdvertisedService {
      *
      * @return 简易职位信息的集合
      **/
-    List<AppRecruitJobRespVO> getByIdsList(List<Long> ids);
+    List<AppRecruitJobRespVO> getByIdsList(List<Long> ids,  String status);
 
     /**
      * 置顶职位

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

@@ -514,11 +514,11 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     }
 
     @Override
-    public List<AppRecruitJobRespVO> getByIdsList(List<Long> ids) {
+    public List<AppRecruitJobRespVO> getByIdsList(List<Long> ids,String status) {
         return mapper.list(
                 LoginUserContext.getEnterpriseId(),
                 LoginUserContext.getUserId(),
-                ids, null
+                ids, status
         );
     }
 

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

@@ -9,8 +9,11 @@ import com.citu.module.menduner.system.api.python.GraphApi;
 import com.citu.module.menduner.system.api.python.GraphQueryDTO;
 import com.citu.module.menduner.system.api.python.GraphQueryPageDTO;
 import com.citu.module.menduner.system.api.python.GraphSendDTO;
+import com.citu.module.menduner.system.controller.app.recruit.person.job.AppRecruitJobInterestedRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonDetailRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.vo.AppRecruitPersonInfoRespVO;
+import com.citu.module.menduner.system.controller.app.recruit.person.workexp.AppRecruitWorkExpRespVO;
+import com.citu.module.menduner.system.controller.base.area.AreaWebRespVO;
 import com.citu.module.menduner.system.controller.base.person.PersonMapQueryReqVO;
 import com.citu.module.menduner.system.controller.base.person.PersonQueryReqVO;
 import com.citu.module.menduner.system.controller.base.person.PersonRecommendQueryReqVO;
@@ -26,6 +29,7 @@ import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseTalentPoolDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseBlockDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonSkillDO;
 import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
@@ -35,6 +39,7 @@ import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import com.citu.module.menduner.system.dal.mysql.eduexp.EduExpMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseTalentPoolMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
+import com.citu.module.menduner.system.dal.mysql.person.PersonEnterpriseBlockMapper;
 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.projectexp.ProjectExpMapper;
@@ -48,6 +53,7 @@ import com.citu.module.menduner.system.service.job.JobAdvertisedService;
 import com.citu.module.menduner.system.service.position.PositionService;
 import com.citu.module.menduner.system.util.RedisUtils;
 import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
@@ -106,6 +112,11 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
 
     @Resource
     private RedisUtils redisUtils;
+    @Autowired
+    private MdeUserMapper mdeUserMapper;
+
+    @Resource
+    PersonEnterpriseBlockMapper personEnterpriseBlockMapper;
 
     @Override
     public PageResult<UserPersonRespVO> page(UserPersonPageReqVO pageReqVO) {
@@ -351,24 +362,56 @@ public class PersonIntegrationServiceImpl implements PersonIntegrationService {
                 reqVO.setAreaIds(areaIdList);
             }
         }
+        List<Long> blockUserIds = personEnterpriseBlockMapper.getEnterpriseBlockUserIds(LoginUserContext.getEnterpriseId());
+        reqVO.setUserIds(blockUserIds);
+
+        if(org.apache.commons.lang3.StringUtils.isNotBlank(reqVO.getBrand())){
+          List<Long> userIds =   workExpMapper.selectByEnterpriseName(reqVO.getBrand());
+          if(userIds.size() > 5000){
+              // TODO 考虑提示用户输入更精确的检索
+          }
+          reqVO.setUserIds(userIds);
+
+        }
+
+
+
         PageResult<PersonInfoRespVO> result = personInfoMapper.queryPage(reqVO, LoginUserContext.getEnterpriseId());
+
         fillPosition(result);
         result = fillArea(result);
         PageResult<AppRecruitPersonInfoRespVO> recruitResult =
                 BeanUtils.toBean(result, AppRecruitPersonInfoRespVO.class);
+        Map<Long,List<AppRecruitJobInterestedRespVO>> appRecruitJobInterestedRespVOCache =new HashMap<>();
+        Map<Long,List<AppRecruitWorkExpRespVO>> workExpRespVOCache =new HashMap<>();
+
         recruitResult.getList().forEach(item -> {
-            item.setInterestedList(
-                    JobInterestedConvert.INSTANCE.convertList2(jobInterestedMapper.selectByUserIdList(item.getUserId()))
+            List<AppRecruitJobInterestedRespVO> appRecruitJobInterestedRespVOS = appRecruitJobInterestedRespVOCache.computeIfAbsent(item.getUserId(), k -> new ArrayList<>());
+            List<AppRecruitWorkExpRespVO> workExpRespVO= workExpRespVOCache.computeIfAbsent(item.getUserId(), k -> new ArrayList<>());
+
+            item.setInterestedList(appRecruitJobInterestedRespVOS
+//                    JobInterestedConvert.INSTANCE.convertList2(jobInterestedMapper.selectByUserIdList(item.getUserId()))
             );
-            item.setWorkList(
-                    WorkExpConvert.INSTANCE.convertList2(workExpMapper.selectByUserIdList(item.getUserId()))
+            item.setWorkList(workExpRespVO
+//                    WorkExpConvert.INSTANCE.convertList2(workExpMapper.selectByUserIdList(item.getUserId()))
             );
         });
+        if(!appRecruitJobInterestedRespVOCache.isEmpty()) {
+            List<JobInterestedDO> jobInterestedDOS = jobInterestedMapper.selectByUserIdsList(appRecruitJobInterestedRespVOCache.keySet());
+            jobInterestedDOS.forEach(item -> appRecruitJobInterestedRespVOCache.getOrDefault(item.getUserId(), new ArrayList<>()).add(JobInterestedConvert.INSTANCE.convert2(item)));
+        }
+        if(!workExpRespVOCache.isEmpty()) {
+            List<WorkExpDO> workExpDOS =  workExpMapper.selectByUserIdsList(workExpRespVOCache.keySet());
+            workExpDOS.forEach(item->workExpRespVOCache.getOrDefault(item.getUserId(),new ArrayList<>()).add(  WorkExpConvert.INSTANCE.convert2(item)));
+        }
+
         return recruitResult;
     }
 
     @NotNull
     private PageResult<PersonInfoRespVO> fillArea(PageResult<PersonInfoRespVO> result) {
+
+
         result.getList().forEach(item -> {
             if (null != item.getAreaId()) {
                 item.setArea(areaService.getById(item.getAreaId()));