Commit 3f8fa6b1bcdb45fff1a25d82d6ecb56a5017b399
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<CrmBusinessDO> { | @@ -57,7 +57,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { | ||
| 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<CrmClueDO> { | @@ -24,7 +24,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | ||
| 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<CrmClueDO> { | @@ -43,7 +43,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | ||
| 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<CrmClueDO> { | @@ -52,7 +52,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | ||
| 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<CrmContactDO> { | @@ -55,7 +55,7 @@ public interface CrmContactMapper extends BaseMapperX<CrmContactDO> { | ||
| 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<CrmContactDO> { | @@ -72,7 +72,7 @@ public interface CrmContactMapper extends BaseMapperX<CrmContactDO> { | ||
| 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<CrmContractDO> { | @@ -42,7 +42,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 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<CrmContractDO> { | @@ -71,7 +71,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 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<CrmContractDO> { | @@ -88,7 +88,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 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<CrmContractDO> { | @@ -98,7 +98,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 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<CrmCustomerDO> { | @@ -52,7 +52,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 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<CrmCustomerDO> { | @@ -84,7 +84,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 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<CrmCustomerDO> { | @@ -113,7 +113,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 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<CrmCustomerDO> { | @@ -167,7 +167,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 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<CrmCustomerDO> { | @@ -179,7 +179,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 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<CrmReceivableDO> { | @@ -42,7 +35,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | ||
| 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<CrmReceivableDO> { | @@ -56,7 +49,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | ||
| 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<CrmReceivableDO> { | @@ -65,7 +58,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | ||
| 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<CrmReceivablePlanDO | @@ -34,7 +34,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<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<CrmReceivablePlanDO | @@ -64,7 +64,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<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<CrmReceivablePlanDO | @@ -73,7 +73,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<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 | /** |