Commit 3f8fa6b1bcdb45fff1a25d82d6ecb56a5017b399

Authored by YunaiV
1 parent a8f6a3d3

✨ CRM:简化 CRM 数据权限的实现

Showing 14 changed files with 56 additions and 134 deletions
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/permission/CrmPermissionLevelEnum.java
@@ -10,6 +10,8 @@ import java.util.Arrays; @@ -10,6 +10,8 @@ import java.util.Arrays;
10 /** 10 /**
11 * CRM 数据权限级别枚举 11 * CRM 数据权限级别枚举
12 * 12 *
  13 + * OWNER > WRITE > READ
  14 + *
13 * @author HUIHUI 15 * @author HUIHUI
14 */ 16 */
15 @Getter 17 @Getter
@@ -17,8 +19,8 @@ import java.util.Arrays; @@ -17,8 +19,8 @@ import java.util.Arrays;
17 public enum CrmPermissionLevelEnum implements IntArrayValuable { 19 public enum CrmPermissionLevelEnum implements IntArrayValuable {
18 20
19 OWNER(1, "负责人"), 21 OWNER(1, "负责人"),
20 - READ(2, "读"),  
21 - WRITE(3, "写"); 22 + READ(2, "只读"),
  23 + WRITE(3, "读写");
22 24
23 public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CrmPermissionLevelEnum::getLevel).toArray(); 25 public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CrmPermissionLevelEnum::getLevel).toArray();
24 26
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/permission/CrmPermissionRoleCodeEnum.java deleted
1 -package cn.iocoder.yudao.module.crm.enums.permission;  
2 -  
3 -import lombok.AllArgsConstructor;  
4 -import lombok.Getter;  
5 -  
6 -/**  
7 - * Crm 数据权限角色枚举  
8 - *  
9 - * @author HUIHUI  
10 - */  
11 -@Getter  
12 -@AllArgsConstructor  
13 -public enum CrmPermissionRoleCodeEnum {  
14 -  
15 - CRM_ADMIN("crm_admin", "CRM 管理员");  
16 -  
17 - /**  
18 - * 角色标识  
19 - */  
20 - private String code;  
21 - /**  
22 - * 角色名称  
23 - */  
24 - private String name;  
25 -  
26 -}  
27 -  
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
7 import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessPageReqVO; 7 import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessPageReqVO;
8 import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; 8 import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO;
9 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 9 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
10 -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; 10 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
11 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 11 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
12 import org.apache.ibatis.annotations.Mapper; 12 import org.apache.ibatis.annotations.Mapper;
13 13
@@ -45,7 +45,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { @@ -45,7 +45,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> {
45 default PageResult<CrmBusinessDO> selectPage(CrmBusinessPageReqVO pageReqVO, Long userId) { 45 default PageResult<CrmBusinessDO> selectPage(CrmBusinessPageReqVO pageReqVO, Long userId) {
46 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); 46 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>();
47 // 拼接数据权限的查询条件 47 // 拼接数据权限的查询条件
48 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), 48 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(),
49 CrmBusinessDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 49 CrmBusinessDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
50 // 拼接自身的查询条件 50 // 拼接自身的查询条件
51 query.selectAll(CrmBusinessDO.class) 51 query.selectAll(CrmBusinessDO.class)
@@ -57,7 +57,7 @@ public interface CrmBusinessMapper extends BaseMapperX&lt;CrmBusinessDO&gt; { @@ -57,7 +57,7 @@ public interface CrmBusinessMapper extends BaseMapperX&lt;CrmBusinessDO&gt; {
57 default List<CrmBusinessDO> selectBatchIds(Collection<Long> ids, Long userId) { 57 default List<CrmBusinessDO> selectBatchIds(Collection<Long> ids, Long userId) {
58 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); 58 MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>();
59 // 拼接数据权限的查询条件 59 // 拼接数据权限的查询条件
60 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), ids, userId); 60 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), ids, userId);
61 // 拼接自身的查询条件 61 // 拼接自身的查询条件
62 query.selectAll(CrmBusinessDO.class).in(CrmBusinessDO::getId, ids).orderByDesc(CrmBusinessDO::getId); 62 query.selectAll(CrmBusinessDO.class).in(CrmBusinessDO::getId, ids).orderByDesc(CrmBusinessDO::getId);
63 return selectJoinList(CrmBusinessDO.class, query); 63 return selectJoinList(CrmBusinessDO.class, query);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/clue/CrmClueMapper.java
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmCluePageReqVO; @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmCluePageReqVO;
7 import cn.iocoder.yudao.module.crm.dal.dataobject.clue.CrmClueDO; 7 import cn.iocoder.yudao.module.crm.dal.dataobject.clue.CrmClueDO;
8 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 8 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
9 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; 9 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
10 -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; 10 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
11 import org.apache.ibatis.annotations.Mapper; 11 import org.apache.ibatis.annotations.Mapper;
12 12
13 import java.util.Collection; 13 import java.util.Collection;
@@ -24,7 +24,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; { @@ -24,7 +24,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; {
24 default PageResult<CrmClueDO> selectPage(CrmCluePageReqVO pageReqVO, Long userId) { 24 default PageResult<CrmClueDO> selectPage(CrmCluePageReqVO pageReqVO, Long userId) {
25 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); 25 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
26 // 拼接数据权限的查询条件 26 // 拼接数据权限的查询条件
27 - CrmQueryWrapperUtils.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(), pageReqVO.getPool());
29 // 拼接自身的查询条件 29 // 拼接自身的查询条件
30 query.selectAll(CrmClueDO.class) 30 query.selectAll(CrmClueDO.class)
@@ -43,7 +43,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; { @@ -43,7 +43,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; {
43 default List<CrmClueDO> selectBatchIds(Collection<Long> ids, Long userId) { 43 default List<CrmClueDO> selectBatchIds(Collection<Long> ids, Long userId) {
44 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); 44 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
45 // 拼接数据权限的查询条件 45 // 拼接数据权限的查询条件
46 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), ids, userId); 46 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), ids, userId);
47 query.selectAll(CrmClueDO.class).in(CrmClueDO::getId, ids).orderByDesc(CrmClueDO::getId); 47 query.selectAll(CrmClueDO.class).in(CrmClueDO::getId, ids).orderByDesc(CrmClueDO::getId);
48 // 拼接自身的查询条件 48 // 拼接自身的查询条件
49 return selectJoinList(CrmClueDO.class, query); 49 return selectJoinList(CrmClueDO.class, query);
@@ -52,7 +52,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; { @@ -52,7 +52,7 @@ public interface CrmClueMapper extends BaseMapperX&lt;CrmClueDO&gt; {
52 default Long selectCountByFollow(Long userId) { 52 default Long selectCountByFollow(Long userId) {
53 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); 53 MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
54 // 我负责的 + 非公海 54 // 我负责的 + 非公海
55 - CrmQueryWrapperUtils.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(), Boolean.FALSE);
57 // 未跟进 + 未转化 57 // 未跟进 + 未转化
58 query.eq(CrmClueDO::getFollowUpStatus, false) 58 query.eq(CrmClueDO::getFollowUpStatus, false)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contact/CrmContactMapper.java
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
7 import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.CrmContactPageReqVO; 7 import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.CrmContactPageReqVO;
8 import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; 8 import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO;
9 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 9 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
10 -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; 10 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
11 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 11 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
12 import org.apache.ibatis.annotations.Mapper; 12 import org.apache.ibatis.annotations.Mapper;
13 13
@@ -55,7 +55,7 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; { @@ -55,7 +55,7 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; {
55 default PageResult<CrmContactDO> selectPage(CrmContactPageReqVO pageReqVO, Long userId) { 55 default PageResult<CrmContactDO> selectPage(CrmContactPageReqVO pageReqVO, Long userId) {
56 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); 56 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>();
57 // 拼接数据权限的查询条件 57 // 拼接数据权限的查询条件
58 - CrmQueryWrapperUtils.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(), Boolean.FALSE);
60 // 拼接自身的查询条件 60 // 拼接自身的查询条件
61 query.selectAll(CrmContactDO.class) 61 query.selectAll(CrmContactDO.class)
@@ -72,7 +72,7 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; { @@ -72,7 +72,7 @@ public interface CrmContactMapper extends BaseMapperX&lt;CrmContactDO&gt; {
72 default List<CrmContactDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) { 72 default List<CrmContactDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) {
73 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); 73 MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>();
74 // 拼接数据权限的查询条件 74 // 拼接数据权限的查询条件
75 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), ids, ownerUserId); 75 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), ids, ownerUserId);
76 query.selectAll(CrmContactDO.class).in(CrmContactDO::getId, ids).orderByDesc(CrmContactDO::getId); 76 query.selectAll(CrmContactDO.class).in(CrmContactDO::getId, ids).orderByDesc(CrmContactDO::getId);
77 return selectJoinList(CrmContactDO.class, query); 77 return selectJoinList(CrmContactDO.class, query);
78 } 78 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java
@@ -10,7 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; @@ -10,7 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
10 import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; 10 import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum;
11 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 11 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
12 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; 12 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
13 -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; 13 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
14 import org.apache.ibatis.annotations.Mapper; 14 import org.apache.ibatis.annotations.Mapper;
15 15
16 import java.time.LocalDateTime; 16 import java.time.LocalDateTime;
@@ -42,7 +42,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; { @@ -42,7 +42,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; {
42 default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) { 42 default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) {
43 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); 43 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
44 // 拼接数据权限的查询条件 44 // 拼接数据权限的查询条件
45 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), 45 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
46 CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 46 CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
47 // 拼接自身的查询条件 47 // 拼接自身的查询条件
48 query.selectAll(CrmContractDO.class) 48 query.selectAll(CrmContractDO.class)
@@ -71,7 +71,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; { @@ -71,7 +71,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; {
71 default List<CrmContractDO> selectBatchIds(Collection<Long> ids, Long userId) { 71 default List<CrmContractDO> selectBatchIds(Collection<Long> ids, Long userId) {
72 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); 72 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
73 // 构建数据权限连表条件 73 // 构建数据权限连表条件
74 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), ids, userId); 74 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), ids, userId);
75 // 拼接自身的查询条件 75 // 拼接自身的查询条件
76 query.selectAll(CrmContractDO.class).in(CrmContractDO::getId, ids).orderByDesc(CrmContractDO::getId); 76 query.selectAll(CrmContractDO.class).in(CrmContractDO::getId, ids).orderByDesc(CrmContractDO::getId);
77 return selectJoinList(CrmContractDO.class, query); 77 return selectJoinList(CrmContractDO.class, query);
@@ -88,7 +88,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; { @@ -88,7 +88,7 @@ public interface CrmContractMapper extends BaseMapperX&lt;CrmContractDO&gt; {
88 default Long selectCheckContractCount(Long userId) { 88 default Long selectCheckContractCount(Long userId) {
89 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); 89 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
90 // 我负责的 + 非公海 90 // 我负责的 + 非公海
91 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), 91 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
92 CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 92 CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
93 // 未提交 or 审核不通过 93 // 未提交 or 审核不通过
94 query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); 94 query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus());
@@ -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 default Long selectEndContractCount(Long userId) { 98 default Long selectEndContractCount(Long userId) {
99 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); 99 MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
100 // 我负责的 + 非公海 100 // 我负责的 + 非公海
101 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), 101 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
102 CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 102 CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
103 // 即将到期 103 // 即将到期
104 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); 104 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
@@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; @@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
12 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; 12 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO;
13 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 13 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
14 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; 14 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
15 -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; 15 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
16 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 16 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
17 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 17 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
18 import org.apache.ibatis.annotations.Mapper; 18 import org.apache.ibatis.annotations.Mapper;
@@ -52,7 +52,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -52,7 +52,7 @@ 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 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), 55 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
56 CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), pageReqVO.getPool()); 56 CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), pageReqVO.getPool());
57 // 拼接自身的查询条件 57 // 拼接自身的查询条件
58 query.selectAll(CrmCustomerDO.class) 58 query.selectAll(CrmCustomerDO.class)
@@ -84,7 +84,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -84,7 +84,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
84 default List<CrmCustomerDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) { 84 default List<CrmCustomerDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) {
85 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 85 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
86 // 拼接数据权限的查询条件 86 // 拼接数据权限的查询条件
87 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), ids, ownerUserId); 87 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), ids, ownerUserId);
88 // 拼接自身的查询条件 88 // 拼接自身的查询条件
89 query.selectAll(CrmCustomerDO.class).in(CrmCustomerDO::getId, ids).orderByDesc(CrmCustomerDO::getId); 89 query.selectAll(CrmCustomerDO.class).in(CrmCustomerDO::getId, ids).orderByDesc(CrmCustomerDO::getId);
90 return selectJoinList(CrmCustomerDO.class, query); 90 return selectJoinList(CrmCustomerDO.class, query);
@@ -113,7 +113,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -113,7 +113,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
113 Long ownerUserId) { 113 Long ownerUserId) {
114 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 114 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
115 // 拼接数据权限的查询条件 115 // 拼接数据权限的查询条件
116 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), 116 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
117 CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), null); 117 CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), null);
118 118
119 // 未锁定 + 未成交 119 // 未锁定 + 未成交
@@ -167,7 +167,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -167,7 +167,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
167 default Long selectCountByTodayContact(Long ownerUserId) { 167 default Long selectCountByTodayContact(Long ownerUserId) {
168 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 168 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
169 // 我负责的 + 非公海 169 // 我负责的 + 非公海
170 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), 170 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
171 CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 171 CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
172 // 今天需联系 172 // 今天需联系
173 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); 173 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
@@ -179,7 +179,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; { @@ -179,7 +179,7 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
179 default Long selectCountByFollow(Long ownerUserId) { 179 default Long selectCountByFollow(Long ownerUserId) {
180 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); 180 MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
181 // 我负责的 + 非公海 181 // 我负责的 + 非公海
182 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), 182 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
183 CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 183 CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
184 // 未跟进 184 // 未跟进
185 query.eq(CrmClueDO::getFollowUpStatus, false); 185 query.eq(CrmClueDO::getFollowUpStatus, false);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
@@ -10,8 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; @@ -10,8 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO;
10 import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; 10 import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum;
11 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 11 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
12 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; 12 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
13 -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils;  
14 -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 13 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
15 import org.apache.ibatis.annotations.Mapper; 14 import org.apache.ibatis.annotations.Mapper;
16 15
17 import java.util.Collection; 16 import java.util.Collection;
@@ -25,12 +24,6 @@ import java.util.List; @@ -25,12 +24,6 @@ import java.util.List;
25 @Mapper 24 @Mapper
26 public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { 25 public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> {
27 26
28 - default int updateOwnerUserIdById(Long id, Long ownerUserId) {  
29 - return update(new LambdaUpdateWrapper<CrmReceivableDO>()  
30 - .eq(CrmReceivableDO::getId, id)  
31 - .set(CrmReceivableDO::getOwnerUserId, ownerUserId));  
32 - }  
33 -  
34 default PageResult<CrmReceivableDO> selectPageByCustomerId(CrmReceivablePageReqVO reqVO) { 27 default PageResult<CrmReceivableDO> selectPageByCustomerId(CrmReceivablePageReqVO reqVO) {
35 return selectPage(reqVO, new LambdaQueryWrapperX<CrmReceivableDO>() 28 return selectPage(reqVO, new LambdaQueryWrapperX<CrmReceivableDO>()
36 .eq(CrmReceivableDO::getCustomerId, reqVO.getCustomerId()) // 必须传递 29 .eq(CrmReceivableDO::getCustomerId, reqVO.getCustomerId()) // 必须传递
@@ -42,7 +35,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; { @@ -42,7 +35,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; {
42 default PageResult<CrmReceivableDO> selectPage(CrmReceivablePageReqVO pageReqVO, Long userId) { 35 default PageResult<CrmReceivableDO> selectPage(CrmReceivablePageReqVO pageReqVO, Long userId) {
43 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); 36 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
44 // 拼接数据权限的查询条件 37 // 拼接数据权限的查询条件
45 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), 38 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
46 CrmReceivableDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 39 CrmReceivableDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
47 // 拼接自身的查询条件 40 // 拼接自身的查询条件
48 query.selectAll(CrmReceivableDO.class) 41 query.selectAll(CrmReceivableDO.class)
@@ -56,7 +49,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; { @@ -56,7 +49,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; {
56 default List<CrmReceivableDO> selectBatchIds(Collection<Long> ids, Long userId) { 49 default List<CrmReceivableDO> selectBatchIds(Collection<Long> ids, Long userId) {
57 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); 50 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
58 // 拼接数据权限的查询条件 51 // 拼接数据权限的查询条件
59 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), ids, userId); 52 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), ids, userId);
60 // 拼接自身的查询条件 53 // 拼接自身的查询条件
61 query.selectAll(CrmReceivableDO.class).in(CrmReceivableDO::getId, ids).orderByDesc(CrmReceivableDO::getId); 54 query.selectAll(CrmReceivableDO.class).in(CrmReceivableDO::getId, ids).orderByDesc(CrmReceivableDO::getId);
62 return selectJoinList(CrmReceivableDO.class, query); 55 return selectJoinList(CrmReceivableDO.class, query);
@@ -65,7 +58,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; { @@ -65,7 +58,7 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; {
65 default Long selectCheckReceivablesCount(Long userId) { 58 default Long selectCheckReceivablesCount(Long userId) {
66 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); 59 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
67 // 我负责的 + 非公海 60 // 我负责的 + 非公海
68 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), 61 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
69 CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 62 CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
70 // 未提交 or 审核不通过 63 // 未提交 or 审核不通过
71 query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); 64 query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus());
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceiv @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceiv
9 import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; 9 import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO;
10 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 10 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
11 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; 11 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
12 -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; 12 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
13 import org.apache.ibatis.annotations.Mapper; 13 import org.apache.ibatis.annotations.Mapper;
14 14
15 import java.time.LocalDateTime; 15 import java.time.LocalDateTime;
@@ -34,7 +34,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO @@ -34,7 +34,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
34 default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO pageReqVO, Long userId) { 34 default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO pageReqVO, Long userId) {
35 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); 35 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
36 // 拼接数据权限的查询条件 36 // 拼接数据权限的查询条件
37 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), 37 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
38 CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); 38 CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
39 // 拼接自身的查询条件 39 // 拼接自身的查询条件
40 query.selectAll(CrmReceivablePlanDO.class) 40 query.selectAll(CrmReceivablePlanDO.class)
@@ -64,7 +64,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO @@ -64,7 +64,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
64 default List<CrmReceivablePlanDO> selectBatchIds(Collection<Long> ids, Long userId) { 64 default List<CrmReceivablePlanDO> selectBatchIds(Collection<Long> ids, Long userId) {
65 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); 65 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
66 // 拼接数据权限的查询条件 66 // 拼接数据权限的查询条件
67 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), ids, userId); 67 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), ids, userId);
68 // 拼接自身的查询条件 68 // 拼接自身的查询条件
69 query.selectAll(CrmReceivablePlanDO.class).in(CrmReceivablePlanDO::getId, ids).orderByDesc(CrmReceivablePlanDO::getId); 69 query.selectAll(CrmReceivablePlanDO.class).in(CrmReceivablePlanDO::getId, ids).orderByDesc(CrmReceivablePlanDO::getId);
70 return selectJoinList(CrmReceivablePlanDO.class, query); 70 return selectJoinList(CrmReceivablePlanDO.class, query);
@@ -73,7 +73,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO @@ -73,7 +73,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
73 default Long selectRemindReceivablePlanCount(Long userId) { 73 default Long selectRemindReceivablePlanCount(Long userId) {
74 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); 74 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
75 // 我负责的 + 非公海 75 // 我负责的 + 非公海
76 - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), 76 + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
77 CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); 77 CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
78 // TODO: @dhb52 需要配置 提前提醒天数 78 // TODO: @dhb52 需要配置 提前提醒天数
79 int REMIND_DAYS = 20; 79 int REMIND_DAYS = 20;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/aop/CrmPermissionAspect.java
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
9 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 9 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
10 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; 10 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
11 import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; 11 import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission;
12 -import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils; 12 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
13 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; 13 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
14 import jakarta.annotation.Resource; 14 import jakarta.annotation.Resource;
15 import lombok.extern.slf4j.Slf4j; 15 import lombok.extern.slf4j.Slf4j;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/util/CrmPermissionUtils.java deleted
1 -package cn.iocoder.yudao.module.crm.framework.permission.core.util;  
2 -  
3 -import cn.hutool.extra.spring.SpringUtil;  
4 -import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionRoleCodeEnum;  
5 -import cn.iocoder.yudao.module.system.api.permission.PermissionApi;  
6 -  
7 -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;  
8 -  
9 -/**  
10 - * 数据权限工具类  
11 - *  
12 - * @author HUIHUI  
13 - */  
14 -public class CrmPermissionUtils {  
15 -  
16 - /**  
17 - * 校验用户是否是 CRM 管理员  
18 - *  
19 - * @return 是/否  
20 - */  
21 - public static boolean isCrmAdmin() {  
22 - return SingletonManager.getPermissionApi().hasAnyRoles(getLoginUserId(), CrmPermissionRoleCodeEnum.CRM_ADMIN.getCode());  
23 - }  
24 -  
25 - /**  
26 - * 静态内部类实现单例获取  
27 - *  
28 - * @author HUIHUI  
29 - */  
30 - private static class SingletonManager {  
31 -  
32 - private static final PermissionApi PERMISSION_API = SpringUtil.getBean(PermissionApi.class);  
33 -  
34 - public static PermissionApi getPermissionApi() {  
35 - return PERMISSION_API;  
36 - }  
37 -  
38 - }  
39 -  
40 -}  
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
9 import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper; 9 import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper;
10 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 10 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
11 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; 11 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
12 -import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils; 12 +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
13 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; 13 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
14 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; 14 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
15 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 15 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmQueryWrapperUtils.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmPermissionUtils.java
@@ -7,9 +7,10 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; @@ -7,9 +7,10 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
7 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 7 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
8 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; 8 import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
9 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; 9 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
10 -import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils; 10 +import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
11 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 11 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
12 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; 12 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
  13 +import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
13 import com.baomidou.mybatisplus.core.toolkit.support.SFunction; 14 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
14 import com.github.yulichang.autoconfigure.MybatisPlusJoinProperties; 15 import com.github.yulichang.autoconfigure.MybatisPlusJoinProperties;
15 import com.github.yulichang.wrapper.MPJLambdaWrapper; 16 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -18,13 +19,24 @@ import java.util.Collection; @@ -18,13 +19,24 @@ import java.util.Collection;
18 import java.util.List; 19 import java.util.List;
19 20
20 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 21 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  22 +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
21 23
22 /** 24 /**
23 - * CRM 查询工具类 25 + * 数据权限工具类
24 * 26 *
25 * @author HUIHUI 27 * @author HUIHUI
26 */ 28 */
27 -public class CrmQueryWrapperUtils { 29 +public class CrmPermissionUtils {
  30 +
  31 + /**
  32 + * 校验用户是否是 CRM 管理员
  33 + *
  34 + * @return 是/否
  35 + */
  36 + public static boolean isCrmAdmin() {
  37 + PermissionApi permissionApi = SpringUtil.getBean(PermissionApi.class);
  38 + return permissionApi.hasAnyRoles(getLoginUserId(), RoleCodeEnum.CRM_ADMIN.getCode());
  39 + }
28 40
29 /** 41 /**
30 * 构造 CRM 数据类型数据分页查询条件 42 * 构造 CRM 数据类型数据分页查询条件
@@ -38,7 +50,8 @@ public class CrmQueryWrapperUtils { @@ -38,7 +50,8 @@ public class CrmQueryWrapperUtils {
38 */ 50 */
39 public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId, 51 public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId,
40 Long userId, Integer sceneType, Boolean pool) { 52 Long userId, Integer sceneType, Boolean pool) {
41 - final String ownerUserIdField = SingletonManager.getMybatisPlusJoinProperties().getTableAlias() + ".owner_user_id"; 53 + MybatisPlusJoinProperties mybatisPlusJoinProperties = SpringUtil.getBean(MybatisPlusJoinProperties.class);
  54 + final String ownerUserIdField = mybatisPlusJoinProperties.getTableAlias() + ".owner_user_id";
42 // 1. 构建数据权限连表条件 55 // 1. 构建数据权限连表条件
43 if (!CrmPermissionUtils.isCrmAdmin() && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限 56 if (!CrmPermissionUtils.isCrmAdmin() && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限
44 query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType) 57 query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
@@ -56,7 +69,8 @@ public class CrmQueryWrapperUtils { @@ -56,7 +69,8 @@ public class CrmQueryWrapperUtils {
56 } 69 }
57 // 2.3 场景三:下属负责的数据 70 // 2.3 场景三:下属负责的数据
58 if (CrmSceneTypeEnum.isSubordinate(sceneType)) { 71 if (CrmSceneTypeEnum.isSubordinate(sceneType)) {
59 - List<AdminUserRespDTO> subordinateUsers = SingletonManager.getAdminUserApi().getUserListBySubordinate(userId); 72 + AdminUserApi adminUserApi = SpringUtil.getBean(AdminUserApi.class);
  73 + List<AdminUserRespDTO> subordinateUsers = adminUserApi.getUserListBySubordinate(userId);
60 if (CollUtil.isEmpty(subordinateUsers)) { 74 if (CollUtil.isEmpty(subordinateUsers)) {
61 query.eq(ownerUserIdField, -1); // 不返回任何结果 75 query.eq(ownerUserIdField, -1); // 不返回任何结果
62 } else { 76 } else {
@@ -81,7 +95,7 @@ public class CrmQueryWrapperUtils { @@ -81,7 +95,7 @@ public class CrmQueryWrapperUtils {
81 * @param userId 用户编号 95 * @param userId 用户编号
82 */ 96 */
83 public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query, Integer bizType, Collection<Long> bizIds, Long userId) { 97 public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query, Integer bizType, Collection<Long> bizIds, Long userId) {
84 - if (CrmPermissionUtils.isCrmAdmin()) {// 管理员不需要数据权限 98 + if (isCrmAdmin()) {// 管理员不需要数据权限
85 return; 99 return;
86 } 100 }
87 query.innerJoin(CrmPermissionDO.class, on -> 101 query.innerJoin(CrmPermissionDO.class, on ->
@@ -89,25 +103,4 @@ public class CrmQueryWrapperUtils { @@ -89,25 +103,4 @@ public class CrmQueryWrapperUtils {
89 .eq(CollUtil.isNotEmpty(bizIds), CrmPermissionDO::getUserId, userId)); 103 .eq(CollUtil.isNotEmpty(bizIds), CrmPermissionDO::getUserId, userId));
90 } 104 }
91 105
92 - /**  
93 - * 静态内部类实现单例获取  
94 - *  
95 - * @author HUIHUI  
96 - */  
97 - private static class SingletonManager {  
98 -  
99 - private static final AdminUserApi ADMIN_USER_API = SpringUtil.getBean(AdminUserApi.class);  
100 -  
101 - private static final MybatisPlusJoinProperties MYBATIS_PLUS_JOIN_PROPERTIES = SpringUtil.getBean(MybatisPlusJoinProperties.class);  
102 -  
103 - public static AdminUserApi getAdminUserApi() {  
104 - return ADMIN_USER_API;  
105 - }  
106 -  
107 - public static MybatisPlusJoinProperties getMybatisPlusJoinProperties() {  
108 - return MYBATIS_PLUS_JOIN_PROPERTIES;  
109 - }  
110 -  
111 - }  
112 -  
113 } 106 }
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java
@@ -13,6 +13,7 @@ public enum RoleCodeEnum { @@ -13,6 +13,7 @@ public enum RoleCodeEnum {
13 13
14 SUPER_ADMIN("super_admin", "超级管理员"), 14 SUPER_ADMIN("super_admin", "超级管理员"),
15 TENANT_ADMIN("tenant_admin", "租户管理员"), 15 TENANT_ADMIN("tenant_admin", "租户管理员"),
  16 + CRM_ADMIN("crm_admin", "CRM 管理员"); // CRM 系统专用
16 ; 17 ;
17 18
18 /** 19 /**