Commit c234f5b5f8f41c11b42f4e09357d77b902a82f84

Authored by puhui999
1 parent 63431082

CRM: 完善数据权限

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java
@@ -38,8 +38,11 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { @@ -38,8 +38,11 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> {
38 default PageResult<CrmBusinessDO> selectPage(CrmBusinessPageReqVO pageReqVO, Long userId) { 38 default PageResult<CrmBusinessDO> selectPage(CrmBusinessPageReqVO pageReqVO, Long userId) {
39 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); 39 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>();
40 // 拼接数据权限的查询条件 40 // 拼接数据权限的查询条件
41 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), CrmBusinessDO::getId,  
42 - userId, pageReqVO.getSceneType(), Boolean.FALSE); 41 + boolean condition = CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(),
  42 + CrmBusinessDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
  43 + if (!condition) {
  44 + return PageResult.empty();
  45 + }
43 // 拼接自身的查询条件 46 // 拼接自身的查询条件
44 query.selectAll(CrmBusinessDO.class) 47 query.selectAll(CrmBusinessDO.class)
45 .likeIfPresent(CrmBusinessDO::getName, pageReqVO.getName()) 48 .likeIfPresent(CrmBusinessDO::getName, pageReqVO.getName())
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/clue/CrmClueMapper.java
@@ -30,8 +30,11 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; { @@ -30,8 +30,11 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; {
30 default PageResult<CrmClueDO> selectPage(CrmCluePageReqVO pageReqVO, Long userId) { 30 default PageResult<CrmClueDO> selectPage(CrmCluePageReqVO pageReqVO, Long userId) {
31 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); 31 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
32 // 拼接数据权限的查询条件 32 // 拼接数据权限的查询条件
33 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_LEADS.getType(), CrmClueDO::getId,  
34 - userId, pageReqVO.getSceneType(), pageReqVO.getPool()); 33 + boolean condition = CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_LEADS.getType(),
  34 + CrmClueDO::getId, userId, pageReqVO.getSceneType(), pageReqVO.getPool());
  35 + if (!condition) {
  36 + return PageResult.empty();
  37 + }
35 // 拼接自身的查询条件 38 // 拼接自身的查询条件
36 query.selectAll(CrmClueDO.class) 39 query.selectAll(CrmClueDO.class)
37 .likeIfPresent(CrmClueDO::getName, pageReqVO.getName()) 40 .likeIfPresent(CrmClueDO::getName, pageReqVO.getName())
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contact/CrmContactMapper.java
@@ -43,8 +43,11 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; { @@ -43,8 +43,11 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; {
43 default PageResult<CrmContactDO> selectPage(CrmContactPageReqVO pageReqVO, Long userId) { 43 default PageResult<CrmContactDO> selectPage(CrmContactPageReqVO pageReqVO, Long userId) {
44 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); 44 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>();
45 // 拼接数据权限的查询条件 45 // 拼接数据权限的查询条件
46 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), CrmContactDO::getId,  
47 - userId, pageReqVO.getSceneType(), Boolean.FALSE); 46 + boolean condition = CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(),
  47 + CrmContactDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
  48 + if (!condition) {
  49 + return PageResult.empty();
  50 + }
48 // 拼接自身的查询条件 51 // 拼接自身的查询条件
49 query.selectAll(CrmContactDO.class) 52 query.selectAll(CrmContactDO.class)
50 .likeIfPresent(CrmContactDO::getName, pageReqVO.getName()) 53 .likeIfPresent(CrmContactDO::getName, pageReqVO.getName())
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java
@@ -40,9 +40,13 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; { @@ -40,9 +40,13 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; {
40 40
41 default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) { 41 default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) {
42 MPJLambdaWrapperX<CrmContractDO> mpjLambdaWrapperX = new MPJLambdaWrapperX<>(); 42 MPJLambdaWrapperX<CrmContractDO> mpjLambdaWrapperX = new MPJLambdaWrapperX<>();
43 - // 构建数据权限连表条件  
44 - CrmQueryWrapperUtils.appendPermissionCondition(mpjLambdaWrapperX, CrmBizTypeEnum.CRM_CONTACT.getType(), CrmContractDO::getId,  
45 - userId, pageReqVO.getSceneType(), Boolean.FALSE); 43 + // 拼接数据权限的查询条件
  44 + boolean condition = CrmQueryWrapperUtils.appendPermissionCondition(mpjLambdaWrapperX, CrmBizTypeEnum.CRM_CONTACT.getType(),
  45 + CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
  46 + if (!condition) {
  47 + return PageResult.empty();
  48 + }
  49 + // 拼接自身的查询条件
46 mpjLambdaWrapperX.selectAll(CrmContractDO.class) 50 mpjLambdaWrapperX.selectAll(CrmContractDO.class)
47 .likeIfPresent(CrmContractDO::getNo, pageReqVO.getNo()) 51 .likeIfPresent(CrmContractDO::getNo, pageReqVO.getNo())
48 .likeIfPresent(CrmContractDO::getName, pageReqVO.getName()) 52 .likeIfPresent(CrmContractDO::getName, pageReqVO.getName())
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
@@ -30,8 +30,11 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -30,8 +30,11 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
30 default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long userId) { 30 default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long userId) {
31 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 31 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
32 // 拼接数据权限的查询条件 32 // 拼接数据权限的查询条件
33 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), CrmCustomerDO::getId,  
34 - userId, pageReqVO.getSceneType(), pageReqVO.getPool()); 33 + boolean condition = CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
  34 + CrmCustomerDO::getId, userId, pageReqVO.getSceneType(), pageReqVO.getPool());
  35 + if (!condition) {
  36 + return PageResult.empty();
  37 + }
35 // 拼接自身的查询条件 38 // 拼接自身的查询条件
36 query.selectAll(CrmCustomerDO.class) 39 query.selectAll(CrmCustomerDO.class)
37 .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName()) 40 .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName())
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
@@ -39,8 +39,11 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; { @@ -39,8 +39,11 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; {
39 default PageResult<CrmReceivableDO> selectPage(CrmReceivablePageReqVO pageReqVO, Long userId) { 39 default PageResult<CrmReceivableDO> selectPage(CrmReceivablePageReqVO pageReqVO, Long userId) {
40 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); 40 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
41 // 拼接数据权限的查询条件 41 // 拼接数据权限的查询条件
42 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), CrmReceivableDO::getId,  
43 - userId, pageReqVO.getSceneType(), Boolean.FALSE); 42 + boolean condition = CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
  43 + CrmReceivableDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
  44 + if (!condition) {
  45 + return PageResult.empty();
  46 + }
44 // 拼接自身的查询条件 47 // 拼接自身的查询条件
45 query.selectAll(CrmReceivableDO.class) 48 query.selectAll(CrmReceivableDO.class)
46 .eqIfPresent(CrmReceivableDO::getNo, pageReqVO.getNo()) 49 .eqIfPresent(CrmReceivableDO::getNo, pageReqVO.getNo())
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java
@@ -38,8 +38,11 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO @@ -38,8 +38,11 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
38 default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO pageReqVO, Long userId) { 38 default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO pageReqVO, Long userId) {
39 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); 39 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
40 // 拼接数据权限的查询条件 40 // 拼接数据权限的查询条件
41 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), CrmReceivablePlanDO::getId,  
42 - userId, pageReqVO.getSceneType(), Boolean.FALSE); 41 + boolean condition = CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
  42 + CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
  43 + if (!condition) {
  44 + return PageResult.empty();
  45 + }
43 // 拼接自身的查询条件 46 // 拼接自身的查询条件
44 query.selectAll(CrmReceivablePlanDO.class) 47 query.selectAll(CrmReceivablePlanDO.class)
45 .eqIfPresent(CrmReceivablePlanDO::getCustomerId, pageReqVO.getCustomerId()) 48 .eqIfPresent(CrmReceivablePlanDO::getCustomerId, pageReqVO.getCustomerId())
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmQueryWrapperUtils.java
@@ -33,10 +33,11 @@ public class CrmQueryWrapperUtils { @@ -33,10 +33,11 @@ public class CrmQueryWrapperUtils {
33 * @param userId 用户编号 33 * @param userId 用户编号
34 * @param sceneType 场景类型 34 * @param sceneType 场景类型
35 * @param pool 公海 35 * @param pool 公海
  36 + * @return 是否 (是:需要执行查询,否:不需要查询调用方法直接返回空)
36 */ 37 */
37 // TODO @puhui999:bizId 直接传递会不会简单点 回复:还是需要 SFunction 因为分页连表时不知道 bizId 是多少 38 // TODO @puhui999:bizId 直接传递会不会简单点 回复:还是需要 SFunction 因为分页连表时不知道 bizId 是多少
38 - public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId,  
39 - Long userId, Integer sceneType, Boolean pool) { 39 + public static <T extends MPJLambdaWrapper<?>, S> boolean appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId,
  40 + Long userId, Integer sceneType, Boolean pool) {
40 // 1. 构建数据权限连表条件 41 // 1. 构建数据权限连表条件
41 if (ObjUtil.notEqual(validateAdminUser(userId), Boolean.TRUE)) { // 管理员不需要数据权限 42 if (ObjUtil.notEqual(validateAdminUser(userId), Boolean.TRUE)) { // 管理员不需要数据权限
42 query.innerJoin(CrmPermissionDO.class, on -> 43 query.innerJoin(CrmPermissionDO.class, on ->
@@ -59,10 +60,10 @@ public class CrmQueryWrapperUtils { @@ -59,10 +60,10 @@ public class CrmQueryWrapperUtils {
59 // 2.3 场景三:下属负责的数据 60 // 2.3 场景三:下属负责的数据
60 if (CrmSceneTypeEnum.isSubordinate(sceneType)) { 61 if (CrmSceneTypeEnum.isSubordinate(sceneType)) {
61 List<AdminUserRespDTO> subordinateUsers = getAdminUserApi().getUserListBySubordinate(userId); 62 List<AdminUserRespDTO> subordinateUsers = getAdminUserApi().getUserListBySubordinate(userId);
62 - // TODO @puhui999:如果为空,不拼接,就是查询了所有数据呀?  
63 - if (CollUtil.isNotEmpty(subordinateUsers)) {  
64 - query.in("owner_user_id", convertSet(subordinateUsers, AdminUserRespDTO::getId)); 63 + if (CollUtil.isEmpty(subordinateUsers)) {
  64 + return false;
65 } 65 }
  66 + query.in("owner_user_id", convertSet(subordinateUsers, AdminUserRespDTO::getId));
66 } 67 }
67 68
68 // 3. 拼接公海的查询条件 69 // 3. 拼接公海的查询条件
@@ -71,6 +72,8 @@ public class CrmQueryWrapperUtils { @@ -71,6 +72,8 @@ public class CrmQueryWrapperUtils {
71 } else { // 情况二:不是公海 72 } else { // 情况二:不是公海
72 query.isNotNull("owner_user_id"); 73 query.isNotNull("owner_user_id");
73 } 74 }
  75 +
  76 + return true;
74 } 77 }
75 78
76 /** 79 /**
@@ -95,8 +98,6 @@ public class CrmQueryWrapperUtils { @@ -95,8 +98,6 @@ public class CrmQueryWrapperUtils {
95 return AdminUserApiHolder.ADMIN_USER_API; 98 return AdminUserApiHolder.ADMIN_USER_API;
96 } 99 }
97 100
98 - // TODO @puhui999:需要实现;  
99 -  
100 /** 101 /**
101 * 校验用户是否是管理员 102 * 校验用户是否是管理员
102 * 103 *
@@ -104,6 +105,15 @@ public class CrmQueryWrapperUtils { @@ -104,6 +105,15 @@ public class CrmQueryWrapperUtils {
104 * @return 是/否 105 * @return 是/否
105 */ 106 */
106 private static boolean validateAdminUser(Long userId) { 107 private static boolean validateAdminUser(Long userId) {
  108 + // TODO 查询权限配置表用户的角色信息
  109 + //CrmPermissionConfig permissionConfig = crmPermissionConfigService.getPermissionConfigByUserId(userId);
  110 + //if (permissionConfig == null) {
  111 + // return false;
  112 + //}
  113 + //// 校验是否为管理员
  114 + //if (permissionConfig.getIsAdmin()){
  115 + // return true;
  116 + //}
107 return false; 117 return false;
108 } 118 }
109 119