Commit 945d379625f9fb432100026cd0a1c896db7a6a14

Authored by YunaiV
1 parent db3dbf08

【代码优化】CRM:数据权限拼接时,把 pool 条件拿回到 customer 里,只有它有公海逻辑

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/clue/vo/CrmCluePageReqVO.java
@@ -30,9 +30,6 @@ public class CrmCluePageReqVO extends PageParam { @@ -30,9 +30,6 @@ public class CrmCluePageReqVO extends PageParam {
30 @InEnum(CrmSceneTypeEnum.class) 30 @InEnum(CrmSceneTypeEnum.class)
31 private Integer sceneType; // 场景类型,为 null 时则表示全部 31 private Integer sceneType; // 场景类型,为 null 时则表示全部
32 32
33 - @Schema(description = "是否为公海数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")  
34 - private Boolean pool; // null 则表示为不是公海数据  
35 -  
36 @Schema(description = "所属行业", example = "1") 33 @Schema(description = "所属行业", example = "1")
37 private Integer industryId; 34 private Integer industryId;
38 35
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java
@@ -47,7 +47,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { @@ -47,7 +47,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> {
47 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); 47 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>();
48 // 拼接数据权限的查询条件 48 // 拼接数据权限的查询条件
49 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), 49 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(),
50 - CrmBusinessDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 50 + CrmBusinessDO::getId, userId, pageReqVO.getSceneType());
51 // 拼接自身的查询条件 51 // 拼接自身的查询条件
52 query.selectAll(CrmBusinessDO.class) 52 query.selectAll(CrmBusinessDO.class)
53 .likeIfPresent(CrmBusinessDO::getName, pageReqVO.getName()) 53 .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
@@ -25,7 +25,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; { @@ -25,7 +25,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; {
25 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); 25 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
26 // 拼接数据权限的查询条件 26 // 拼接数据权限的查询条件
27 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), 27 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(),
28 - CrmClueDO::getId, userId, pageReqVO.getSceneType(), pageReqVO.getPool()); 28 + CrmClueDO::getId, userId, pageReqVO.getSceneType());
29 // 拼接自身的查询条件 29 // 拼接自身的查询条件
30 query.selectAll(CrmClueDO.class) 30 query.selectAll(CrmClueDO.class)
31 .likeIfPresent(CrmClueDO::getName, pageReqVO.getName()) 31 .likeIfPresent(CrmClueDO::getName, pageReqVO.getName())
@@ -53,7 +53,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; { @@ -53,7 +53,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; {
53 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); 53 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
54 // 我负责的 + 非公海 54 // 我负责的 + 非公海
55 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), 55 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(),
56 - CrmClueDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 56 + CrmClueDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
57 // 未跟进 + 未转化 57 // 未跟进 + 未转化
58 query.eq(CrmClueDO::getFollowUpStatus, false) 58 query.eq(CrmClueDO::getFollowUpStatus, false)
59 .eq(CrmClueDO::getTransformStatus, false); 59 .eq(CrmClueDO::getTransformStatus, false);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contact/CrmContactMapper.java
@@ -56,7 +56,7 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; { @@ -56,7 +56,7 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; {
56 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); 56 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>();
57 // 拼接数据权限的查询条件 57 // 拼接数据权限的查询条件
58 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), 58 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(),
59 - CrmContactDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 59 + CrmContactDO::getId, userId, pageReqVO.getSceneType());
60 // 拼接自身的查询条件 60 // 拼接自身的查询条件
61 query.selectAll(CrmContactDO.class) 61 query.selectAll(CrmContactDO.class)
62 .likeIfPresent(CrmContactDO::getName, pageReqVO.getName()) 62 .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
@@ -54,7 +54,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; { @@ -54,7 +54,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; {
54 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); 54 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
55 // 拼接数据权限的查询条件 55 // 拼接数据权限的查询条件
56 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), 56 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
57 - CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 57 + CrmContractDO::getId, userId, pageReqVO.getSceneType());
58 // 拼接自身的查询条件 58 // 拼接自身的查询条件
59 query.selectAll(CrmContractDO.class) 59 query.selectAll(CrmContractDO.class)
60 .likeIfPresent(CrmContractDO::getNo, pageReqVO.getNo()) 60 .likeIfPresent(CrmContractDO::getNo, pageReqVO.getNo())
@@ -98,7 +98,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; { @@ -98,7 +98,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; {
98 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); 98 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
99 // 我负责的 + 非公海 99 // 我负责的 + 非公海
100 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), 100 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
101 - CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 101 + CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
102 // 未审核 102 // 未审核
103 query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus()); 103 query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
104 return selectCount(query); 104 return selectCount(query);
@@ -108,7 +108,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; { @@ -108,7 +108,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; {
108 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); 108 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
109 // 我负责的 + 非公海 109 // 我负责的 + 非公海
110 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), 110 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
111 - CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 111 + CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
112 // 即将到期 112 // 即将到期
113 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); 113 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
114 LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now()); 114 LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
@@ -52,8 +52,12 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -52,8 +52,12 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
52 default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId) { 52 default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId) {
53 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 53 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
54 // 拼接数据权限的查询条件 54 // 拼接数据权限的查询条件
55 - CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),  
56 - CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), pageReqVO.getPool()); 55 + if (Boolean.TRUE.equals(pageReqVO.getPool())) {
  56 + query.isNull(CrmCustomerDO::getOwnerUserId);
  57 + } else {
  58 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
  59 + CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType());
  60 + }
57 // 拼接自身的查询条件 61 // 拼接自身的查询条件
58 query.selectAll(CrmCustomerDO.class) 62 query.selectAll(CrmCustomerDO.class)
59 .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName()) 63 .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName())
@@ -102,9 +106,9 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -102,9 +106,9 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
102 } 106 }
103 107
104 default Long selectPutPoolRemindCustomerCount(CrmCustomerPageReqVO pageReqVO, 108 default Long selectPutPoolRemindCustomerCount(CrmCustomerPageReqVO pageReqVO,
105 - CrmCustomerPoolConfigDO poolConfigDO, 109 + CrmCustomerPoolConfigDO poolConfig,
106 Long userId) { 110 Long userId) {
107 - final MPJLambdaWrapperX<CrmCustomerDO> query = buildPutPoolRemindCustomerQuery(pageReqVO, poolConfigDO, userId); 111 + final MPJLambdaWrapperX<CrmCustomerDO> query = buildPutPoolRemindCustomerQuery(pageReqVO, poolConfig, userId);
108 return selectCount(query); 112 return selectCount(query);
109 } 113 }
110 114
@@ -114,7 +118,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -114,7 +118,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
114 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 118 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
115 // 拼接数据权限的查询条件 119 // 拼接数据权限的查询条件
116 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), 120 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
117 - CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), null); 121 + CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType());
118 122
119 // 未锁定 + 未成交 123 // 未锁定 + 未成交
120 query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false); 124 query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false);
@@ -168,7 +172,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -168,7 +172,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
168 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 172 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
169 // 我负责的 + 非公海 173 // 我负责的 + 非公海
170 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), 174 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
171 - CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 175 + CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType());
172 // 今天需联系 176 // 今天需联系
173 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); 177 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
174 LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now()); 178 LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
@@ -180,7 +184,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -180,7 +184,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
180 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 184 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
181 // 我负责的 + 非公海 185 // 我负责的 + 非公海
182 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), 186 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
183 - CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 187 + CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType());
184 // 未跟进 188 // 未跟进
185 query.eq(CrmClueDO::getFollowUpStatus, false); 189 query.eq(CrmClueDO::getFollowUpStatus, false);
186 return selectCount(query); 190 return selectCount(query);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
@@ -48,7 +48,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; { @@ -48,7 +48,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; {
48 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); 48 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
49 // 拼接数据权限的查询条件 49 // 拼接数据权限的查询条件
50 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), 50 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
51 - CrmReceivableDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 51 + CrmReceivableDO::getId, userId, pageReqVO.getSceneType());
52 // 拼接自身的查询条件 52 // 拼接自身的查询条件
53 query.selectAll(CrmReceivableDO.class) 53 query.selectAll(CrmReceivableDO.class)
54 .eqIfPresent(CrmReceivableDO::getNo, pageReqVO.getNo()) 54 .eqIfPresent(CrmReceivableDO::getNo, pageReqVO.getNo())
@@ -72,7 +72,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; { @@ -72,7 +72,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; {
72 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); 72 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
73 // 我负责的 + 非公海 73 // 我负责的 + 非公海
74 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), 74 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
75 - CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 75 + CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
76 // 未审核 76 // 未审核
77 query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus()); 77 query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
78 return selectCount(query); 78 return selectCount(query);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java
@@ -48,7 +48,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO @@ -48,7 +48,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
48 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); 48 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
49 // 拼接数据权限的查询条件 49 // 拼接数据权限的查询条件
50 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), 50 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
51 - CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 51 + CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType());
52 // 拼接自身的查询条件 52 // 拼接自身的查询条件
53 query.selectAll(CrmReceivablePlanDO.class) 53 query.selectAll(CrmReceivablePlanDO.class)
54 .eqIfPresent(CrmReceivablePlanDO::getCustomerId, pageReqVO.getCustomerId()) 54 .eqIfPresent(CrmReceivablePlanDO::getCustomerId, pageReqVO.getCustomerId())
@@ -87,7 +87,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO @@ -87,7 +87,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
87 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); 87 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
88 // 我负责的 + 非公海 88 // 我负责的 + 非公海
89 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), 89 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
90 - CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 90 + CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
91 // 未回款 + 已逾期 + 今天开始提醒 91 // 未回款 + 已逾期 + 今天开始提醒
92 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); 92 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
93 query.isNull(CrmReceivablePlanDO::getReceivableId) // 未回款 93 query.isNull(CrmReceivablePlanDO::getReceivableId) // 未回款
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmPermissionUtils.java
1 package cn.iocoder.yudao.module.crm.util; 1 package cn.iocoder.yudao.module.crm.util;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 -import cn.hutool.core.util.ObjUtil;  
5 import cn.hutool.extra.spring.SpringUtil; 4 import cn.hutool.extra.spring.SpringUtil;
6 import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; 5 import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
7 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 6 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
@@ -39,21 +38,20 @@ public class CrmPermissionUtils { @@ -39,21 +38,20 @@ public class CrmPermissionUtils {
39 } 38 }
40 39
41 /** 40 /**
42 - * 构造 CRM 数据类型数据分页查询条件 41 + * 构造 CRM 数据类型数据【分页】查询条件
43 * 42 *
44 * @param query 连表查询对象 43 * @param query 连表查询对象
45 * @param bizType 数据类型 {@link CrmBizTypeEnum} 44 * @param bizType 数据类型 {@link CrmBizTypeEnum}
46 * @param bizId 数据编号 45 * @param bizId 数据编号
47 * @param userId 用户编号 46 * @param userId 用户编号
48 * @param sceneType 场景类型 47 * @param sceneType 场景类型
49 - * @param pool 公海  
50 */ 48 */
51 public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId, 49 public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId,
52 - Long userId, Integer sceneType, Boolean pool) { 50 + Long userId, Integer sceneType) {
53 MybatisPlusJoinProperties mybatisPlusJoinProperties = SpringUtil.getBean(MybatisPlusJoinProperties.class); 51 MybatisPlusJoinProperties mybatisPlusJoinProperties = SpringUtil.getBean(MybatisPlusJoinProperties.class);
54 final String ownerUserIdField = mybatisPlusJoinProperties.getTableAlias() + ".owner_user_id"; 52 final String ownerUserIdField = mybatisPlusJoinProperties.getTableAlias() + ".owner_user_id";
55 // 1. 构建数据权限连表条件 53 // 1. 构建数据权限连表条件
56 - if (!CrmPermissionUtils.isCrmAdmin() && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限 54 + if (!CrmPermissionUtils.isCrmAdmin()) { // 管理员,公海不需要数据权限
57 query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType) 55 query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
58 .eq(CrmPermissionDO::getBizId, bizId) // 只能使用 SFunction 如果传 id 解析出来的 sql 不对 56 .eq(CrmPermissionDO::getBizId, bizId) // 只能使用 SFunction 如果传 id 解析出来的 sql 不对
59 .eq(CrmPermissionDO::getUserId, userId)); 57 .eq(CrmPermissionDO::getUserId, userId));
@@ -62,14 +60,14 @@ public class CrmPermissionUtils { @@ -62,14 +60,14 @@ public class CrmPermissionUtils {
62 if (CrmSceneTypeEnum.isOwner(sceneType)) { 60 if (CrmSceneTypeEnum.isOwner(sceneType)) {
63 query.eq(ownerUserIdField, userId); 61 query.eq(ownerUserIdField, userId);
64 } 62 }
65 - // 2.2 场景二:我参与的数据 63 + // 2.2 场景二:我参与的数据(我有读或写权限,并且不是负责人)
66 if (CrmSceneTypeEnum.isInvolved(sceneType)) { 64 if (CrmSceneTypeEnum.isInvolved(sceneType)) {
67 query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType) 65 query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
68 .eq(CrmPermissionDO::getBizId, bizId) 66 .eq(CrmPermissionDO::getBizId, bizId)
69 .in(CrmPermissionDO::getLevel, CrmPermissionLevelEnum.READ.getLevel(), CrmPermissionLevelEnum.WRITE.getLevel())); 67 .in(CrmPermissionDO::getLevel, CrmPermissionLevelEnum.READ.getLevel(), CrmPermissionLevelEnum.WRITE.getLevel()));
70 query.ne(ownerUserIdField, userId); 68 query.ne(ownerUserIdField, userId);
71 } 69 }
72 - // 2.3 场景三:下属负责的数据 70 + // 2.3 场景三:下属负责的数据(下属是负责人)
73 if (CrmSceneTypeEnum.isSubordinate(sceneType)) { 71 if (CrmSceneTypeEnum.isSubordinate(sceneType)) {
74 AdminUserApi adminUserApi = SpringUtil.getBean(AdminUserApi.class); 72 AdminUserApi adminUserApi = SpringUtil.getBean(AdminUserApi.class);
75 List<AdminUserRespDTO> subordinateUsers = adminUserApi.getUserListBySubordinate(userId); 73 List<AdminUserRespDTO> subordinateUsers = adminUserApi.getUserListBySubordinate(userId);
@@ -79,24 +77,18 @@ public class CrmPermissionUtils { @@ -79,24 +77,18 @@ public class CrmPermissionUtils {
79 query.in(ownerUserIdField, convertSet(subordinateUsers, AdminUserRespDTO::getId)); 77 query.in(ownerUserIdField, convertSet(subordinateUsers, AdminUserRespDTO::getId));
80 } 78 }
81 } 79 }
82 -  
83 - // 3. 拼接公海的查询条件  
84 - if (ObjUtil.equal(pool, Boolean.TRUE)) { // 情况一:公海  
85 - query.isNull(ownerUserIdField);  
86 - } else { // 情况二:不是公海  
87 - query.isNotNull(ownerUserIdField);  
88 - }  
89 } 80 }
90 81
91 /** 82 /**
92 - * 构造 CRM 数据类型批量数据查询条件 83 + * 构造 CRM 数据类型【批量】数据查询条件
93 * 84 *
94 * @param query 连表查询对象 85 * @param query 连表查询对象
95 * @param bizType 数据类型 {@link CrmBizTypeEnum} 86 * @param bizType 数据类型 {@link CrmBizTypeEnum}
96 * @param bizIds 数据编号 87 * @param bizIds 数据编号
97 * @param userId 用户编号 88 * @param userId 用户编号
98 */ 89 */
99 - public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query, Integer bizType, Collection<Long> bizIds, Long userId) { 90 + public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query,
  91 + Integer bizType, Collection<Long> bizIds, Long userId) {
100 if (isCrmAdmin()) {// 管理员不需要数据权限 92 if (isCrmAdmin()) {// 管理员不需要数据权限
101 return; 93 return;
102 } 94 }