mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +08:00 
			
		
		
		
	【代码优化】CRM:数据权限拼接时,把 pool 条件拿回到 customer 里,只有它有公海逻辑
This commit is contained in:
		@@ -30,9 +30,6 @@ public class CrmCluePageReqVO extends PageParam {
 | 
				
			|||||||
    @InEnum(CrmSceneTypeEnum.class)
 | 
					    @InEnum(CrmSceneTypeEnum.class)
 | 
				
			||||||
    private Integer sceneType; // 场景类型,为 null 时则表示全部
 | 
					    private Integer sceneType; // 场景类型,为 null 时则表示全部
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Schema(description = "是否为公海数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")
 | 
					 | 
				
			||||||
    private Boolean pool; // null 则表示为不是公海数据
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Schema(description = "所属行业", example = "1")
 | 
					    @Schema(description = "所属行业", example = "1")
 | 
				
			||||||
    private Integer industryId;
 | 
					    private Integer industryId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,7 +47,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(),
 | 
				
			||||||
                CrmBusinessDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
 | 
					                CrmBusinessDO::getId, userId, pageReqVO.getSceneType());
 | 
				
			||||||
        // 拼接自身的查询条件
 | 
					        // 拼接自身的查询条件
 | 
				
			||||||
        query.selectAll(CrmBusinessDO.class)
 | 
					        query.selectAll(CrmBusinessDO.class)
 | 
				
			||||||
                .likeIfPresent(CrmBusinessDO::getName, pageReqVO.getName())
 | 
					                .likeIfPresent(CrmBusinessDO::getName, pageReqVO.getName())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(),
 | 
				
			||||||
                CrmClueDO::getId, userId, pageReqVO.getSceneType(), pageReqVO.getPool());
 | 
					                CrmClueDO::getId, userId, pageReqVO.getSceneType());
 | 
				
			||||||
        // 拼接自身的查询条件
 | 
					        // 拼接自身的查询条件
 | 
				
			||||||
        query.selectAll(CrmClueDO.class)
 | 
					        query.selectAll(CrmClueDO.class)
 | 
				
			||||||
                .likeIfPresent(CrmClueDO::getName, pageReqVO.getName())
 | 
					                .likeIfPresent(CrmClueDO::getName, pageReqVO.getName())
 | 
				
			||||||
@@ -53,7 +53,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 我负责的 + 非公海
 | 
					        // 我负责的 + 非公海
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(),
 | 
				
			||||||
                CrmClueDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
 | 
					                CrmClueDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
 | 
				
			||||||
        // 未跟进 + 未转化
 | 
					        // 未跟进 + 未转化
 | 
				
			||||||
        query.eq(CrmClueDO::getFollowUpStatus, false)
 | 
					        query.eq(CrmClueDO::getFollowUpStatus, false)
 | 
				
			||||||
                .eq(CrmClueDO::getTransformStatus, false);
 | 
					                .eq(CrmClueDO::getTransformStatus, false);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,7 +56,7 @@ public interface CrmContactMapper extends BaseMapperX<CrmContactDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(),
 | 
				
			||||||
                CrmContactDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
 | 
					                CrmContactDO::getId, userId, pageReqVO.getSceneType());
 | 
				
			||||||
        // 拼接自身的查询条件
 | 
					        // 拼接自身的查询条件
 | 
				
			||||||
        query.selectAll(CrmContactDO.class)
 | 
					        query.selectAll(CrmContactDO.class)
 | 
				
			||||||
                .likeIfPresent(CrmContactDO::getName, pageReqVO.getName())
 | 
					                .likeIfPresent(CrmContactDO::getName, pageReqVO.getName())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,7 +54,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
 | 
				
			||||||
                CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
 | 
					                CrmContractDO::getId, userId, pageReqVO.getSceneType());
 | 
				
			||||||
        // 拼接自身的查询条件
 | 
					        // 拼接自身的查询条件
 | 
				
			||||||
        query.selectAll(CrmContractDO.class)
 | 
					        query.selectAll(CrmContractDO.class)
 | 
				
			||||||
                .likeIfPresent(CrmContractDO::getNo, pageReqVO.getNo())
 | 
					                .likeIfPresent(CrmContractDO::getNo, pageReqVO.getNo())
 | 
				
			||||||
@@ -98,7 +98,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 我负责的 + 非公海
 | 
					        // 我负责的 + 非公海
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
 | 
				
			||||||
                CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
 | 
					                CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
 | 
				
			||||||
        // 未审核
 | 
					        // 未审核
 | 
				
			||||||
        query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
 | 
					        query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
 | 
				
			||||||
        return selectCount(query);
 | 
					        return selectCount(query);
 | 
				
			||||||
@@ -108,7 +108,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 我负责的 + 非公海
 | 
					        // 我负责的 + 非公海
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
 | 
				
			||||||
                CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
 | 
					                CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
 | 
				
			||||||
        // 即将到期
 | 
					        // 即将到期
 | 
				
			||||||
        LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
 | 
					        LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
 | 
				
			||||||
        LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
 | 
					        LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,8 +52,12 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
 | 
				
			|||||||
    default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId) {
 | 
					    default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId) {
 | 
				
			||||||
        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
					        if (Boolean.TRUE.equals(pageReqVO.getPool())) {
 | 
				
			||||||
                CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), pageReqVO.getPool());
 | 
					            query.isNull(CrmCustomerDO::getOwnerUserId);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
				
			||||||
 | 
					                    CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        // 拼接自身的查询条件
 | 
					        // 拼接自身的查询条件
 | 
				
			||||||
        query.selectAll(CrmCustomerDO.class)
 | 
					        query.selectAll(CrmCustomerDO.class)
 | 
				
			||||||
                .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName())
 | 
					                .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName())
 | 
				
			||||||
@@ -102,9 +106,9 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    default Long selectPutPoolRemindCustomerCount(CrmCustomerPageReqVO pageReqVO,
 | 
					    default Long selectPutPoolRemindCustomerCount(CrmCustomerPageReqVO pageReqVO,
 | 
				
			||||||
                                                  CrmCustomerPoolConfigDO poolConfigDO,
 | 
					                                                  CrmCustomerPoolConfigDO poolConfig,
 | 
				
			||||||
                                                  Long userId) {
 | 
					                                                  Long userId) {
 | 
				
			||||||
        final MPJLambdaWrapperX<CrmCustomerDO> query = buildPutPoolRemindCustomerQuery(pageReqVO, poolConfigDO, userId);
 | 
					        final MPJLambdaWrapperX<CrmCustomerDO> query = buildPutPoolRemindCustomerQuery(pageReqVO, poolConfig, userId);
 | 
				
			||||||
        return selectCount(query);
 | 
					        return selectCount(query);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -114,7 +118,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
				
			||||||
                CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), null);
 | 
					                CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 未锁定 + 未成交
 | 
					        // 未锁定 + 未成交
 | 
				
			||||||
        query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false);
 | 
					        query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false);
 | 
				
			||||||
@@ -168,7 +172,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 我负责的 + 非公海
 | 
					        // 我负责的 + 非公海
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
				
			||||||
                CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
 | 
					                CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType());
 | 
				
			||||||
        // 今天需联系
 | 
					        // 今天需联系
 | 
				
			||||||
        LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
 | 
					        LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
 | 
				
			||||||
        LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
 | 
					        LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
 | 
				
			||||||
@@ -180,7 +184,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 我负责的 + 非公海
 | 
					        // 我负责的 + 非公海
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
 | 
				
			||||||
                CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
 | 
					                CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType());
 | 
				
			||||||
        // 未跟进
 | 
					        // 未跟进
 | 
				
			||||||
        query.eq(CrmClueDO::getFollowUpStatus, false);
 | 
					        query.eq(CrmClueDO::getFollowUpStatus, false);
 | 
				
			||||||
        return selectCount(query);
 | 
					        return selectCount(query);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
 | 
				
			||||||
                CrmReceivableDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
 | 
					                CrmReceivableDO::getId, userId, pageReqVO.getSceneType());
 | 
				
			||||||
        // 拼接自身的查询条件
 | 
					        // 拼接自身的查询条件
 | 
				
			||||||
        query.selectAll(CrmReceivableDO.class)
 | 
					        query.selectAll(CrmReceivableDO.class)
 | 
				
			||||||
                .eqIfPresent(CrmReceivableDO::getNo, pageReqVO.getNo())
 | 
					                .eqIfPresent(CrmReceivableDO::getNo, pageReqVO.getNo())
 | 
				
			||||||
@@ -72,7 +72,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> {
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 我负责的 + 非公海
 | 
					        // 我负责的 + 非公海
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
 | 
				
			||||||
                CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
 | 
					                CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
 | 
				
			||||||
        // 未审核
 | 
					        // 未审核
 | 
				
			||||||
        query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
 | 
					        query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
 | 
				
			||||||
        return selectCount(query);
 | 
					        return selectCount(query);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 拼接数据权限的查询条件
 | 
					        // 拼接数据权限的查询条件
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
 | 
				
			||||||
                CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
 | 
					                CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType());
 | 
				
			||||||
        // 拼接自身的查询条件
 | 
					        // 拼接自身的查询条件
 | 
				
			||||||
        query.selectAll(CrmReceivablePlanDO.class)
 | 
					        query.selectAll(CrmReceivablePlanDO.class)
 | 
				
			||||||
                .eqIfPresent(CrmReceivablePlanDO::getCustomerId, pageReqVO.getCustomerId())
 | 
					                .eqIfPresent(CrmReceivablePlanDO::getCustomerId, pageReqVO.getCustomerId())
 | 
				
			||||||
@@ -87,7 +87,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO
 | 
				
			|||||||
        MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
 | 
					        MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
 | 
				
			||||||
        // 我负责的 + 非公海
 | 
					        // 我负责的 + 非公海
 | 
				
			||||||
        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
 | 
					        CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
 | 
				
			||||||
                CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
 | 
					                CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType());
 | 
				
			||||||
        // 未回款 + 已逾期 + 今天开始提醒
 | 
					        // 未回款 + 已逾期 + 今天开始提醒
 | 
				
			||||||
        LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
 | 
					        LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
 | 
				
			||||||
        query.isNull(CrmReceivablePlanDO::getReceivableId) // 未回款
 | 
					        query.isNull(CrmReceivablePlanDO::getReceivableId) // 未回款
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
package cn.iocoder.yudao.module.crm.util;
 | 
					package cn.iocoder.yudao.module.crm.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.hutool.core.collection.CollUtil;
 | 
					import cn.hutool.core.collection.CollUtil;
 | 
				
			||||||
import cn.hutool.core.util.ObjUtil;
 | 
					 | 
				
			||||||
import cn.hutool.extra.spring.SpringUtil;
 | 
					import cn.hutool.extra.spring.SpringUtil;
 | 
				
			||||||
import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
 | 
					import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
 | 
					import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
 | 
				
			||||||
@@ -39,21 +38,20 @@ public class CrmPermissionUtils {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 构造 CRM 数据类型数据分页查询条件
 | 
					     * 构造 CRM 数据类型数据【分页】查询条件
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param query     连表查询对象
 | 
					     * @param query     连表查询对象
 | 
				
			||||||
     * @param bizType   数据类型 {@link CrmBizTypeEnum}
 | 
					     * @param bizType   数据类型 {@link CrmBizTypeEnum}
 | 
				
			||||||
     * @param bizId     数据编号
 | 
					     * @param bizId     数据编号
 | 
				
			||||||
     * @param userId    用户编号
 | 
					     * @param userId    用户编号
 | 
				
			||||||
     * @param sceneType 场景类型
 | 
					     * @param sceneType 场景类型
 | 
				
			||||||
     * @param pool      公海
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId,
 | 
					    public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId,
 | 
				
			||||||
                                                                                    Long userId, Integer sceneType, Boolean pool) {
 | 
					                                                                                    Long userId, Integer sceneType) {
 | 
				
			||||||
        MybatisPlusJoinProperties mybatisPlusJoinProperties = SpringUtil.getBean(MybatisPlusJoinProperties.class);
 | 
					        MybatisPlusJoinProperties mybatisPlusJoinProperties = SpringUtil.getBean(MybatisPlusJoinProperties.class);
 | 
				
			||||||
        final String ownerUserIdField = mybatisPlusJoinProperties.getTableAlias() + ".owner_user_id";
 | 
					        final String ownerUserIdField = mybatisPlusJoinProperties.getTableAlias() + ".owner_user_id";
 | 
				
			||||||
        // 1. 构建数据权限连表条件
 | 
					        // 1. 构建数据权限连表条件
 | 
				
			||||||
        if (!CrmPermissionUtils.isCrmAdmin() && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限
 | 
					        if (!CrmPermissionUtils.isCrmAdmin()) { // 管理员,公海不需要数据权限
 | 
				
			||||||
            query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
 | 
					            query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
 | 
				
			||||||
                    .eq(CrmPermissionDO::getBizId, bizId) // 只能使用 SFunction 如果传 id 解析出来的 sql 不对
 | 
					                    .eq(CrmPermissionDO::getBizId, bizId) // 只能使用 SFunction 如果传 id 解析出来的 sql 不对
 | 
				
			||||||
                    .eq(CrmPermissionDO::getUserId, userId));
 | 
					                    .eq(CrmPermissionDO::getUserId, userId));
 | 
				
			||||||
@@ -62,14 +60,14 @@ public class CrmPermissionUtils {
 | 
				
			|||||||
        if (CrmSceneTypeEnum.isOwner(sceneType)) {
 | 
					        if (CrmSceneTypeEnum.isOwner(sceneType)) {
 | 
				
			||||||
            query.eq(ownerUserIdField, userId);
 | 
					            query.eq(ownerUserIdField, userId);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // 2.2 场景二:我参与的数据
 | 
					        // 2.2 场景二:我参与的数据(我有读或写权限,并且不是负责人)
 | 
				
			||||||
        if (CrmSceneTypeEnum.isInvolved(sceneType)) {
 | 
					        if (CrmSceneTypeEnum.isInvolved(sceneType)) {
 | 
				
			||||||
            query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
 | 
					            query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
 | 
				
			||||||
                    .eq(CrmPermissionDO::getBizId, bizId)
 | 
					                    .eq(CrmPermissionDO::getBizId, bizId)
 | 
				
			||||||
                    .in(CrmPermissionDO::getLevel, CrmPermissionLevelEnum.READ.getLevel(), CrmPermissionLevelEnum.WRITE.getLevel()));
 | 
					                    .in(CrmPermissionDO::getLevel, CrmPermissionLevelEnum.READ.getLevel(), CrmPermissionLevelEnum.WRITE.getLevel()));
 | 
				
			||||||
            query.ne(ownerUserIdField, userId);
 | 
					            query.ne(ownerUserIdField, userId);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // 2.3 场景三:下属负责的数据
 | 
					        // 2.3 场景三:下属负责的数据(下属是负责人)
 | 
				
			||||||
        if (CrmSceneTypeEnum.isSubordinate(sceneType)) {
 | 
					        if (CrmSceneTypeEnum.isSubordinate(sceneType)) {
 | 
				
			||||||
            AdminUserApi adminUserApi = SpringUtil.getBean(AdminUserApi.class);
 | 
					            AdminUserApi adminUserApi = SpringUtil.getBean(AdminUserApi.class);
 | 
				
			||||||
            List<AdminUserRespDTO> subordinateUsers = adminUserApi.getUserListBySubordinate(userId);
 | 
					            List<AdminUserRespDTO> subordinateUsers = adminUserApi.getUserListBySubordinate(userId);
 | 
				
			||||||
@@ -79,24 +77,18 @@ public class CrmPermissionUtils {
 | 
				
			|||||||
                query.in(ownerUserIdField, convertSet(subordinateUsers, AdminUserRespDTO::getId));
 | 
					                query.in(ownerUserIdField, convertSet(subordinateUsers, AdminUserRespDTO::getId));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 3. 拼接公海的查询条件
 | 
					 | 
				
			||||||
        if (ObjUtil.equal(pool, Boolean.TRUE)) { // 情况一:公海
 | 
					 | 
				
			||||||
            query.isNull(ownerUserIdField);
 | 
					 | 
				
			||||||
        } else { // 情况二:不是公海
 | 
					 | 
				
			||||||
            query.isNotNull(ownerUserIdField);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 构造 CRM 数据类型批量数据查询条件
 | 
					     * 构造 CRM 数据类型【批量】数据查询条件
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param query   连表查询对象
 | 
					     * @param query   连表查询对象
 | 
				
			||||||
     * @param bizType 数据类型 {@link CrmBizTypeEnum}
 | 
					     * @param bizType 数据类型 {@link CrmBizTypeEnum}
 | 
				
			||||||
     * @param bizIds  数据编号
 | 
					     * @param bizIds  数据编号
 | 
				
			||||||
     * @param userId  用户编号
 | 
					     * @param userId  用户编号
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query, Integer bizType, Collection<Long> bizIds, Long userId) {
 | 
					    public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query,
 | 
				
			||||||
 | 
					                                                                                 Integer bizType, Collection<Long> bizIds, Long userId) {
 | 
				
			||||||
        if (isCrmAdmin()) {// 管理员不需要数据权限
 | 
					        if (isCrmAdmin()) {// 管理员不需要数据权限
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user