Selaa lähdekoodia

1、修改权限逻辑
2、增加职位置顶接口

rayson 1 vuosi sitten
vanhempi
commit
cd31fc0a6f
16 muutettua tiedostoa jossa 140 lisäystä ja 71 poistoa
  1. 1 0
      citu-framework/citu-spring-boot-starter-mybatis/src/main/java/com/citu/framework/mybatis/core/query/MPJLambdaWrapperX.java
  2. 6 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApi.java
  3. 3 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApiImpl.java
  4. 13 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/CustomDataPermissionRule.java
  5. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/AppAdminJobAdvertisedController.java
  6. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  7. 39 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  8. 7 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonInfoMapper.java
  9. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/ESConsumer.java
  10. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  11. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java
  12. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  13. 27 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  14. 0 24
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java
  15. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionService.java
  16. 11 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java

+ 1 - 0
citu-framework/citu-spring-boot-starter-mybatis/src/main/java/com/citu/framework/mybatis/core/query/MPJLambdaWrapperX.java

@@ -61,6 +61,7 @@ public class MPJLambdaWrapperX<T> extends MPJLambdaWrapper<T> {
         return this;
     }
 
+
     public MPJLambdaWrapperX<T> neIfPresent(SFunction<T, ?> column, Object val) {
         if (ObjectUtil.isNotEmpty(val)) {
             return (MPJLambdaWrapperX<T>) super.ne(column, val);

+ 6 - 3
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApi.java

@@ -3,7 +3,6 @@ package com.citu.module.menduner.system.api.permission;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.system.enums.ApiConstants;
 import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
-
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameters;
@@ -44,9 +43,13 @@ public interface MendunerPermissionApi {
     CommonResult<Boolean> hasAnyRoles(@RequestParam("userId") Long userId,
                                       @RequestParam("roles") String... roles);
 
+
     @GetMapping(PREFIX + "/get-data-permission")
     @Operation(summary = "获得登陆用户的数据权限")
-    @Parameter(name = "userId", description = "用户编号", example = "2", required = true)
-    CommonResult<DataPermissionRespDTO> getDataPermission(@RequestParam("userId") Long userId);
+    @Parameters({
+            @Parameter(name = "userId", description = "用户编号", example = "2", required = true),
+            @Parameter(name = "enterpriseId", description = "企业编号", example = "2", required = true),
+    })
+    CommonResult<DataPermissionRespDTO> getDataPermission(@RequestParam("userId") Long userId, @RequestParam("enterpriseId") Long enterpriseId);
 
 }

+ 3 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/permission/MendunerPermissionApiImpl.java

@@ -34,8 +34,9 @@ public class MendunerPermissionApiImpl implements MendunerPermissionApi {
         return success(service.hasAnyRoles(userId, roles));
     }
 
+
     @Override
-    public CommonResult<DataPermissionRespDTO> getDataPermission(Long userId) {
-        return success(service.getDataPermission(userId));
+    public CommonResult<DataPermissionRespDTO> getDataPermission(Long userId, Long enterpriseId) {
+        return success(service.getDataPermission(userId,enterpriseId));
     }
 }

+ 13 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/CustomDataPermissionRule.java

@@ -18,7 +18,7 @@ import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.sf.jsqlparser.expression.*;
-import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
+import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
 import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
 import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
 import net.sf.jsqlparser.expression.operators.relational.InExpression;
@@ -83,11 +83,18 @@ public class CustomDataPermissionRule implements DataPermissionRule {
         if (ObjectUtil.notEqual(loginUser.getUserType(), UserTypeEnum.MEMBER_ADMIN.getValue())) {
             return null;
         }
+
+        if (CollUtil.isEmpty(loginUser.getInfo())
+                || !loginUser.getInfo().containsKey(LoginUser.INFO_KEY_DATA_ID)) {
+            // 没有企业id
+            return null;
+        }
         // 获得数据权限
         DataPermissionRespDTO dataPermission = loginUser.getContext(CONTEXT_KEY, DataPermissionRespDTO.class);
         // 从上下文中拿不到,则调用逻辑进行获取
         if (dataPermission == null) {
-            dataPermission = permissionApi.getDataPermission(loginUser.getId()).getCheckedData();
+            Long enterpriseId = Long.valueOf(loginUser.getInfo().get(LoginUser.INFO_KEY_DATA_ID));
+            dataPermission = permissionApi.getDataPermission(loginUser.getId(), enterpriseId).getCheckedData();
             if (dataPermission == null) {
                 log.error("[getExpression][LoginUser({}) 获取数据权限为 null]", JsonUtils.toJsonString(loginUser));
                 throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 未返回数据权限",
@@ -124,8 +131,10 @@ public class CustomDataPermissionRule implements DataPermissionRule {
         if (userExpression == null) {
             return dataExpression;
         }
-        // 目前,如果有指定数据 + 可查看自己,采用 OR 条件。即,WHERE (xx_id IN ? OR user_id = ?)
-        return new Parenthesis(new OrExpression(dataExpression, userExpression));
+        // // 目前,如果有指定数据 + 可查看自己,采用 OR 条件。即,WHERE (xx_id IN ? OR user_id = ?)
+        // return new Parenthesis(new OrExpression(dataExpression, userExpression));
+        // 改为 AND 条件。即,WHERE (xx_id IN ? and user_id = ?)
+        return new Parenthesis(new AndExpression(dataExpression, userExpression));
     }
 
     private Expression buildDeptExpression(String tableName, Alias tableAlias, Set<Long> dataIds) {

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/AppAdminJobAdvertisedController.java

@@ -87,5 +87,13 @@ public class AppAdminJobAdvertisedController {
         return success(true);
     }
 
+    @PreAuthenticated
+    @PostMapping("/top")
+    @Operation(summary = "职位置顶")
+    public CommonResult<Boolean> top(@RequestParam("ids") String ids) {
+        jobAdvertisedService.top(StrUtils.splitToLong(ids));
+        return success(true);
+    }
+
 
 }

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

@@ -65,6 +65,15 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         query.selectAll(EnterpriseDO.class);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
         query.eq(JobAdvertisedDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
+
+        query.and(wrapper -> wrapper
+                .ge(JobAdvertisedDO::getExpireTime, LocalDateTime.now())
+                .or()
+                .isNull(JobAdvertisedDO::getExpireTime)
+        );
+
+        query.orderByDesc(JobAdvertisedDO::getTop, JobAdvertisedDO::getUpdateTime);
+
         return selectJoinPage(pageParam, AppJobAdvertisedHomeRespVO.class, query);
     }
 

+ 39 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java

@@ -6,9 +6,13 @@ import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
 import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelRespVO;
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobCvRelPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -35,25 +39,54 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
     }
 
     default PageResult<AppAdminJobCvRelRespVO> selectPage(AppAdminJobCvRelPageReqVO reqVO) {
-        MPJLambdaWrapperX<JobCvRelDO> wrapper =  new MPJLambdaWrapperX<>();
+        // 职位投递userId inner 招聘职位userId and 职位投递userId inner 人才信息userId
+        // 人才信息userId inner 工作经验userId and 人才信息userId inner 教育经历userId
+        MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAsClass(JobCvRelDO.class, AppAdminJobCvRelRespVO.class);
-        wrapper.selectAssociation(JobAdvertisedDO.class,AppAdminJobCvRelRespVO::getJob);
-        wrapper.innerJoin(JobAdvertisedDO.class,JobAdvertisedDO::getId,JobCvRelDO::getJobId);
-        wrapper.eqIfPresent(JobCvRelDO::getJobId, reqVO.getJobId());
+        wrapper.selectAssociation(JobAdvertisedDO.class, AppAdminJobCvRelRespVO::getJob);
+
+        wrapper.selectAssociation(PersonInfoDO.class, AppAdminJobCvRelRespVO::getPerson, p ->
+                p.collection(WorkExpDO.class, AppAdminPersonSimpleRespVO::getWorkExpList)
+                        .collection(EduExpDO.class, AppAdminPersonSimpleRespVO::getEduExpList)
+        );
+//        wrapper.selectCollection(WorkExpDO.class,AppAdminPersonSimpleRespVO::getWorkExpList);
+//        wrapper.selectCollection(EduExpDO.class,AppAdminPersonSimpleRespVO::getEduExpList);
+
+
+        // 投递的职位 inner 招聘职位
+        wrapper.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, JobCvRelDO::getJobId);
+        // 招聘职位的条件
+        wrapper.eqIfExists(JobCvRelDO::getJobId, reqVO.getJobId());
         wrapper.eqIfPresent(JobCvRelDO::getStatus, reqVO.getStatus());
+
+        // 投递的职位 inner 人才信息
+        wrapper.innerJoin(PersonInfoDO.class, PersonInfoDO::getUserId, JobCvRelDO::getUserId);
+        // 人才相关的条件
+        wrapper.eqIfExists(PersonInfoDO::getJobStatus, reqVO.getJobStatus());
+        wrapper.eqIfExists(PersonInfoDO::getEduType, reqVO.getEduType());
+        wrapper.eqIfExists(PersonInfoDO::getExpType, reqVO.getExpType());
+        wrapper.likeIfExists(PersonInfoDO::getName, reqVO.getName());
+        wrapper.likeIfExists(PersonInfoDO::getUserId, reqVO.getUserId());
+
+        // 项目经验、教育经历的连接
+        wrapper.leftJoin(WorkExpDO.class, WorkExpDO::getUserId, PersonInfoDO::getUserId);
+        wrapper.leftJoin(EduExpDO.class, EduExpDO::getUserId, PersonInfoDO::getUserId);
+
+
         wrapper.orderByDesc(JobCvRelDO::getUpdateTime);
         return selectJoinPage(reqVO, AppAdminJobCvRelRespVO.class, wrapper);
     }
 
+
     // 根据用户ID和职位id判断15天内是否有数据,如果有返回true
-    default Boolean checkDataWithin15Day(Long userId, Long jobId){
+    default Boolean checkDataWithin15Day(Long userId, Long jobId) {
         return selectCount(new LambdaQueryWrapperX<JobCvRelDO>()
                 .eq(JobCvRelDO::getUserId, userId)
                 .eq(JobCvRelDO::getJobId, jobId)
                 .ge(JobCvRelDO::getCreateTime, LocalDateTime.now().minusDays(15))) > 0;
     }
 
-    default List<JobCvRelDO> selectByJobIdList(List<Long> jobIdList){
+    default List<JobCvRelDO> selectByJobIdList(List<Long> jobIdList) {
         return selectList(new LambdaQueryWrapperX<JobCvRelDO>()
                 .in(JobCvRelDO::getJobId, jobIdList)
                 .eq(JobCvRelDO::getStatus, MendunerStatusEnum.ENABLE.getStatus())
@@ -61,5 +94,4 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
     }
 
 
-
 }

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

@@ -1,14 +1,14 @@
 package com.citu.module.menduner.system.dal.mysql.person;
 
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
 import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonPageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.person.info.PersonInfoPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
-import com.citu.module.menduner.system.controller.base.person.info.PersonInfoPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -40,12 +40,12 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
 
 
     default PageResult<AppAdminPersonSimpleRespVO> selectSimplePersonPage(AppAdminPersonPageReqVO reqVO) {
-        MPJLambdaWrapperX<PersonInfoDO> wrapper =  new MPJLambdaWrapperX<>();
+        MPJLambdaWrapperX<PersonInfoDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAsClass(PersonInfoDO.class, AppAdminPersonSimpleRespVO.class);
-        wrapper.selectCollection(WorkExpDO.class,AppAdminPersonSimpleRespVO::getWorkExpList);
-        wrapper.selectCollection(EduExpDO.class,AppAdminPersonSimpleRespVO::getEduExpList);
-        wrapper.leftJoin(WorkExpDO.class,WorkExpDO::getUserId,PersonInfoDO::getUserId);
-        wrapper.leftJoin(EduExpDO.class,EduExpDO::getUserId,PersonInfoDO::getUserId);
+        wrapper.selectCollection(WorkExpDO.class, AppAdminPersonSimpleRespVO::getWorkExpList);
+        wrapper.selectCollection(EduExpDO.class, AppAdminPersonSimpleRespVO::getEduExpList);
+        wrapper.leftJoin(WorkExpDO.class, WorkExpDO::getUserId, PersonInfoDO::getUserId);
+        wrapper.leftJoin(EduExpDO.class, EduExpDO::getUserId, PersonInfoDO::getUserId);
         wrapper.eqIfPresent(PersonInfoDO::getJobStatus, reqVO.getJobStatus());
         wrapper.eqIfPresent(PersonInfoDO::getEduType, reqVO.getEduType());
         wrapper.eqIfPresent(PersonInfoDO::getExpType, reqVO.getExpType());

+ 2 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/ESConsumer.java

@@ -55,6 +55,7 @@ public class ESConsumer implements RocketMQListener<ESJobAdvertisedMergeSendMess
 
     @Override
     public void onMessage(ESJobAdvertisedMergeSendMessage message) {
+        log.info("接收到队列消息[{}]", message);
         switch (message.getOperate()) {
             case SYNC_ALL:
                 sync();
@@ -80,7 +81,7 @@ public class ESConsumer implements RocketMQListener<ESJobAdvertisedMergeSendMess
             default:
                 break;
         }
-
+        log.info("消息处理完备[{}]", message);
 
     }
 

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java

@@ -143,7 +143,6 @@ public class EnterpriseServiceImpl implements EnterpriseService {
     public AppEnterpriseDetailRespVO getEnterpriseDetail(Long id) {
 
         AppEnterpriseDetailRespVO respVO = new AppEnterpriseDetailRespVO();
-
         EnterpriseDO enterprise = enterpriseMapper.selectById(id);
         respVO.setEnterprise(EnterpriseConvert.INSTANCE.convert3(enterprise));
 

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java

@@ -67,7 +67,6 @@ public interface EnterpriseUserBindService {
     EnterpriseUserBindDO getEnterpriseUserBindById(Long userId);
 
 
-
     /**
      * 更新用户的最后登陆信息
      *

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

@@ -155,4 +155,9 @@ public interface JobAdvertisedService {
      * @return 简易职位信息的集合
      **/
     List<AppAdminJobSimpleRespVO> getList();
+
+    /**
+     * 置顶职位
+     **/
+    void top(List<Long> ids);
 }

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

@@ -1,7 +1,6 @@
 package com.citu.module.menduner.system.service.job;
 
 
-
 import cn.hutool.core.collection.ListUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageParam;
@@ -407,9 +406,9 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
             job.setEnterpriseId(enterpriseId);
             job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
-
+            job.setTop(false);
             jobAdvertisedMapper.insert(job);
-            esProducer.send(ESOperateEnum.ADD,job.getId());
+            esProducer.send(ESOperateEnum.ADD, job.getId());
 
         } else {
             // 修改
@@ -421,8 +420,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
                 throw exception(FORBIDDEN);
             }
             job.setId(entity.getId());
-            jobAdvertisedMapper.updateById(job);
-            esProducer.send(ESOperateEnum.UPDATE,job.getId());
+            jobOperate(job);
         }
         return true;
     }
@@ -445,8 +443,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
                 return true;
             }
             job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
-            jobAdvertisedMapper.updateById(job);
-            esProducer.send(ESOperateEnum.UPDATE,job.getId());
+            jobOperate(job);
         }
         return true;
     }
@@ -461,8 +458,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
                 return true;
             }
             job.setStatus(MendunerStatusEnum.DISABLE.getStatus());
-            jobAdvertisedMapper.updateById(job);
-            esProducer.send(ESOperateEnum.UPDATE,job.getId());
+            jobOperate(job);
         }
         return true;
     }
@@ -473,8 +469,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         for (Long id : ids) {
             JobAdvertisedDO job = get(id);
             job.setUpdateTime(LocalDateTime.now());
-            jobAdvertisedMapper.updateById(job);
-            esProducer.send(ESOperateEnum.UPDATE,job.getId());
+            jobOperate(job);
         }
     }
 
@@ -482,4 +477,25 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     public List<AppAdminJobSimpleRespVO> getList() {
         return jobAdvertisedMapper.list();
     }
+
+    @Override
+    @DSTransactional
+    public void top(List<Long> ids) {
+        for (Long id : ids) {
+            JobAdvertisedDO job = get(id);
+            if (null != job.getTop() && job.getTop()) {
+                // 已经是置顶状态
+                return;
+            }
+            job.setUpdateTime(LocalDateTime.now());
+            job.setTop(true);
+            jobOperate(job);
+        }
+    }
+
+    public void jobOperate(JobAdvertisedDO job) {
+        jobAdvertisedMapper.updateById(job);
+        esProducer.send(ESOperateEnum.UPDATE, job.getId());
+    }
+
 }

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

@@ -282,30 +282,6 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         if (CollUtil.isEmpty(pageResult.getList())) {
             return PageResult.empty();
         }
-        // 取得用户id集合
-        List<Long> userIdList = pageResult.getList()
-                .stream().map(AppAdminJobCvRelRespVO::getUserId).collect(Collectors.toList());
-        reqVO.setUserId(userIdList);
-        // 基于用户id 查询用户相关信息
-        PageResult<AppAdminPersonSimpleRespVO> personSimpleResult
-                = personInfoMapper.selectSimplePersonPage(reqVO);
-
-        List<AppAdminJobCvRelRespVO> list = new ArrayList<>();
-
-        // 拼接对象
-        for (AppAdminJobCvRelRespVO cvRel : pageResult.getList()) {
-            AppAdminPersonSimpleRespVO respVO = personSimpleResult.getList().stream()
-                    .filter(personSimple -> personSimple.getUserId().equals(cvRel.getUserId()))
-                    .findFirst().orElse(null);
-
-            if (null != respVO) {
-               cvRel.setPerson(respVO);
-            }
-            list.add(cvRel);
-        }
-        // 以二次查询的personSimpleResult 为准
-        pageResult.setList(list);
-        pageResult.setTotal(personSimpleResult.getTotal());
         return pageResult;
 
     }

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionService.java

@@ -105,5 +105,14 @@ public interface MdePermissionService {
      */
     DataPermissionRespDTO getDataPermission(Long userId);
 
+    /**
+     * 获得登陆用户的部门数据权限
+     *
+     * @param userId 用户编号
+     * @param enterpriseId 企业id
+     * @return 部门数据权限
+     */
+    DataPermissionRespDTO getDataPermission(Long userId, Long enterpriseId);
+
 }
 

+ 11 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java

@@ -5,15 +5,15 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
-import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.framework.common.util.collection.CollectionUtils;
 import com.citu.framework.datapermission.core.annotation.DataPermission;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeRoleDO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeUserRoleDO;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.dal.mysql.permission.MdeUserRoleMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.enums.enterprise.EnterpriseUserTypeEnum;
 import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
@@ -22,7 +22,6 @@ import com.citu.module.menduner.system.service.user.MdeUserService;
 import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
 import com.citu.module.system.enums.permission.DataScopeEnum;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Suppliers;
 import com.google.common.collect.Sets;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cache.annotation.CacheEvict;
@@ -35,7 +34,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
-import java.util.function.Supplier;
 
 import static com.citu.framework.common.util.collection.CollectionUtils.convertSet;
 import static com.citu.framework.common.util.json.JsonUtils.toJsonString;
@@ -153,7 +151,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
 
     @Override
     @DSTransactional // 单机+多数据源方案,使用 @DSTransactional 保证本地事务,以及数据源的切换
-    public void assignUserRoleByDefault(Long userId,MdeDefaultRoleEnum roleEnum) {
+    public void assignUserRoleByDefault(Long userId, MdeDefaultRoleEnum roleEnum) {
         // 获得默认角色信息
         MdeRoleDO role = mdeRoleService.getRoleByDefault(roleEnum);
         MdeUserRoleDO entity = new MdeUserRoleDO();
@@ -204,7 +202,12 @@ public class MdePermissionServiceImpl implements MdePermissionService {
     @Override
     @DataPermission(enable = false) // 关闭数据权限,不然就会出现递归获取数据权限的问题
     public DataPermissionRespDTO getDataPermission(Long userId) {
+        return getDataPermission(userId, null);
+    }
 
+    @Override
+    @DataPermission(enable = false) // 关闭数据权限,不然就会出现递归获取数据权限的问题
+    public DataPermissionRespDTO getDataPermission(Long userId, Long enterpriseId) {
         DataPermissionRespDTO result = new DataPermissionRespDTO();
         MdeUserDO user = userService.getMdeUser(userId);
         // 用户信息不存在,则没有任何数据权限
@@ -214,7 +217,6 @@ public class MdePermissionServiceImpl implements MdePermissionService {
 
         // 获得用户的角色
         List<MdeRoleDO> roles = getEnableUserRoleListByUserIdFromCache(userId);
-
         // 如果角色为空,则只能查看自己
         if (CollUtil.isEmpty(roles)) {
             result.setSelf(true);
@@ -222,7 +224,8 @@ public class MdePermissionServiceImpl implements MdePermissionService {
         }
 
         // 获得用户的部门编号的缓存,通过 Guava 的 Suppliers 惰性求值,即有且仅有第一次发起 DB 的查询
-        EnterpriseUserBindDO enterpriseUserBind =   enterpriseUserBindService.getEnterpriseUserBindById(userId);
+        EnterpriseUserBindDO enterpriseUserBind = enterpriseUserBindService
+                .selectByEnterpriseIdAndUserId(enterpriseId,userId);
         if (enterpriseUserBind == null) {
             // 找不到企业用户 or 禁用了
             return result;
@@ -262,7 +265,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
             }
             // 情况五,SELF
             if (Objects.equals(role.getDataScope(), DataScopeEnum.SELF.getScope())) {
-                if(!EnterpriseUserTypeEnum.ADMIN.getType()
+                if (!EnterpriseUserTypeEnum.ADMIN.getType()
                         .equals(enterpriseUserBind.getUserType())) {
                     // 管理员 包含所有权限, 所以不加入自己的id权限
                     result.setSelf(true);
@@ -274,6 +277,4 @@ public class MdePermissionServiceImpl implements MdePermissionService {
         }
         return result;
     }
-
-
 }