From d17024670efca145ff97bc26913bfd9b0fef2cd0 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 16 十月 2026 10:26:31 +0800
Subject: [PATCH] feat(crm): 开放客户跨模块访问权限以支持业务集成
---
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java | 42 +++++++++++++++++++++++++++++++++++-------
1 files changed, 35 insertions(+), 7 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
index 25de6e6..0467060 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
@@ -49,14 +49,20 @@
}
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.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 +74,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 鏌ヨ
@@ -85,6 +92,25 @@
throw new IllegalArgumentException("鏈煡鑱旂郴鐘舵�侊細" + pageReqVO.getContactStatus());
}
}
+ // 閲嶇偣瀹㈡埛锛圓/level=1锛夐粯璁ゆ帓鍦ㄥ墠闈�
+ query.orderByAsc(CrmCustomerDO::getLevel);
+ return selectJoinPage(pageReqVO, CrmCustomerDO.class, query);
+ }
+
+ /**
+ * 渚� MES銆丒RP銆佸敭鍚庣瓑涓氬姟妯″潡閫夋嫨鎴栧洖鏄惧鎴枫�傝鏌ヨ涓嶅鐢� CRM 璐熻矗浜烘潈闄愶紝
+ * 浠呮寜瀹㈡埛绛涢�夋潯浠跺垎椤碉紝閬垮厤涓氬姟鍗曟嵁鍥犲綋鍓嶇櫥褰曚汉涓嶆槸瀹㈡埛璐熻矗浜鸿�屾棤娉曟樉绀哄鎴枫��
+ */
+ default PageResult<CrmCustomerDO> selectBusinessPage(CrmCustomerPageReqVO pageReqVO) {
+ MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
+ query.selectAll(CrmCustomerDO.class)
+ .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName())
+ .eqIfPresent(CrmCustomerDO::getMobile, pageReqVO.getMobile())
+ .eqIfPresent(CrmCustomerDO::getIndustryId, pageReqVO.getIndustryId())
+ .eqIfPresent(CrmCustomerDO::getLevel, pageReqVO.getLevel())
+ .eqIfPresent(CrmCustomerDO::getSource, pageReqVO.getSource())
+ .eqIfPresent(CrmCustomerDO::getAutoPoolEnabled, pageReqVO.getAutoPoolEnabled())
+ .orderByAsc(CrmCustomerDO::getLevel);
return selectJoinPage(pageReqVO, CrmCustomerDO.class, query);
}
@@ -115,7 +141,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 +174,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 +231,7 @@
default Long selectPoolCount() {
return selectCount(new LambdaQueryWrapperX<CrmCustomerDO>()
- .isNull(CrmCustomerDO::getOwnerUserId));
+ .eq(!CrmPermissionUtils.isSuperAdmin(), CrmCustomerDO::getAutoPoolEnabled, true));
}
}
--
Gitblit v1.9.3