云
22 小时以前 a87fcc60346dfc799bd3c2cddc7acfffb105cb61
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
@@ -49,14 +49,21 @@
    }
    default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId) {
        return selectPage(pageReqVO, ownerUserId,
                Boolean.TRUE.equals(pageReqVO.getPool()) && CrmPermissionUtils.isSuperAdmin());
    }
    default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId,
                                               boolean superAdmin) {
        MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
        // 拼接数据权限的查询条件
        if (CrmSceneTypeEnum.isAll(pageReqVO.getSceneType())) {
        // 公海查询必须优先过滤,不能被“全部数据”场景绕过。
        if (Boolean.TRUE.equals(pageReqVO.getPool())) {
            query.isNull(CrmCustomerDO::getOwnerUserId)
                    .eq(!superAdmin, CrmCustomerDO::getAutoPoolEnabled, true);
        } else if (CrmSceneTypeEnum.isAll(pageReqVO.getSceneType())) {
            // 场景四:全部数据,不区分公海/非公海,由 appendPermissionCondition 统一处理
            CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
                    CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType());
        } else if (Boolean.TRUE.equals(pageReqVO.getPool())) {
            query.isNull(CrmCustomerDO::getOwnerUserId);
        } else {
            CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
                    CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType());
@@ -68,6 +75,7 @@
                .eqIfPresent(CrmCustomerDO::getIndustryId, pageReqVO.getIndustryId())
                .eqIfPresent(CrmCustomerDO::getLevel, pageReqVO.getLevel())
                .eqIfPresent(CrmCustomerDO::getSource, pageReqVO.getSource())
                .eqIfPresent(CrmCustomerDO::getAutoPoolEnabled, pageReqVO.getAutoPoolEnabled())
                .eqIfPresent(CrmCustomerDO::getFollowUpStatus, pageReqVO.getFollowUpStatus());
        // backlog 查询
@@ -115,7 +123,8 @@
                CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType());
        // 未锁定 + 未成交
        query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false);
        query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false)
                .eq(CrmCustomerDO::getAutoPoolEnabled, true);
        // 情况一:未成交提醒日期区间
        Integer dealExpireDays = poolConfig.getDealExpireDays();
@@ -147,7 +156,8 @@
        LambdaQueryWrapper<CrmCustomerDO> query = new LambdaQueryWrapper<>();
        query.gt(CrmCustomerDO::getOwnerUserId, 0);
        // 未锁定 + 未成交
        query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false);
        query.eq(CrmCustomerDO::getLockStatus, false).eq(CrmCustomerDO::getDealStatus, false)
                .eq(CrmCustomerDO::getAutoPoolEnabled, true);
        // 已经超时
        LocalDateTime dealExpireTime = LocalDateTime.now().minusDays(poolConfig.getDealExpireDays());
        LocalDateTime contactExpireTime = LocalDateTime.now().minusDays(poolConfig.getContactExpireDays());
@@ -203,7 +213,8 @@
    default Long selectPoolCount() {
        return selectCount(new LambdaQueryWrapperX<CrmCustomerDO>()
                .isNull(CrmCustomerDO::getOwnerUserId));
                .isNull(CrmCustomerDO::getOwnerUserId)
                .eq(!CrmPermissionUtils.isSuperAdmin(), CrmCustomerDO::getAutoPoolEnabled, true));
    }
}