From a87fcc60346dfc799bd3c2cddc7acfffb105cb61 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 13 十月 2026 14:34:00 +0800
Subject: [PATCH] feat(crm): 客户公海可见度控制功能实现

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java |   38 ++++++++++++++++++++------------------
 1 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
index 11ac107..52fedcb 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
@@ -9,6 +9,7 @@
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.operatelog.core.util.OperateLogUtils;
 import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessTransferReqVO;
 import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.CrmContactTransferReqVO;
 import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractTransferReqVO;
@@ -117,8 +118,12 @@
      * @return 瀹㈡埛淇℃伅 DO
      */
     private static CrmCustomerDO initCustomer(Object customer, Long ownerUserId) {
-        return BeanUtils.toBean(customer, CrmCustomerDO.class).setOwnerUserId(ownerUserId)
+        CrmCustomerDO result = BeanUtils.toBean(customer, CrmCustomerDO.class).setOwnerUserId(ownerUserId)
                 .setOwnerTime(LocalDateTime.now());
+        if (result.getAutoPoolEnabled() == null) {
+            result.setAutoPoolEnabled(true);
+        }
+        return result;
     }
 
     @Override
@@ -291,6 +296,8 @@
     }
 
     @Override
+    @LogRecord(type = CRM_CUSTOMER_TYPE, subType = CRM_CUSTOMER_IMPORT_SUB_TYPE, bizNo = "0",
+            success = CRM_CUSTOMER_IMPORT_SUCCESS)
     public CrmCustomerImportRespVO importCustomerList(List<CrmCustomerImportExcelVO> importCustomers,
                                                       CrmCustomerImportReqVO importReqVO) {
         // 鏍¢獙闈炵┖
@@ -322,8 +329,6 @@
                     permissionService.createPermission(new CrmPermissionCreateReqBO().setBizType(CrmBizTypeEnum.CRM_CUSTOMER.getType())
                             .setBizId(customer.getId()).setUserId(importReqVO.getOwnerUserId()).setLevel(CrmPermissionLevelEnum.OWNER.getLevel()));
                 }
-                // 1.3 璁板綍鎿嶄綔鏃ュ織
-                getSelf().importCustomerLog(customer, false);
                 return;
             }
 
@@ -338,23 +343,11 @@
                     .setId(existCustomer.getId());
             customerMapper.updateById(updateCustomer);
             respVO.getUpdateCustomerNames().add(importCustomer.getName());
-            // 2.2 璁板綍鎿嶄綔鏃ュ織
-            getSelf().importCustomerLog(updateCustomer, true);
         });
+        // 璁板綍瀵煎叆缁撴灉姹囨�伙紝渚� @LogRecord 鐨� success 鏂囨寮曠敤
+        OperateLogUtils.putImportSummary(respVO.getCreateCustomerNames(), respVO.getUpdateCustomerNames(),
+                respVO.getFailureCustomerNames());
         return respVO;
-    }
-
-    /**
-     * 璁板綍瀵煎叆瀹㈡埛鏃剁殑鎿嶄綔鏃ュ織
-     *
-     * @param customer 瀹㈡埛淇℃伅
-     * @param isUpdate 鏄惁鏇存柊锛泃rue - 鏇存柊锛宖alse - 鏂板
-     */
-    @LogRecord(type = CRM_CUSTOMER_TYPE, subType = CRM_CUSTOMER_IMPORT_SUB_TYPE, bizNo = "{{#customer.id}}",
-            success = CRM_CUSTOMER_IMPORT_SUCCESS)
-    public void importCustomerLog(CrmCustomerDO customer, boolean isUpdate) {
-        LogRecordContext.putVariable("customer", customer);
-        LogRecordContext.putVariable("isUpdate", isUpdate);
     }
 
     // ==================== 鍏捣鐩稿叧鎿嶄綔 ====================
@@ -394,6 +387,10 @@
         adminUserApi.validateUserList(singletonList(ownerUserId));
         // 1.3 鏍¢獙鐘舵��
         customers.forEach(customer -> {
+            // 鍏抽棴鍏捣鍙搴︾殑瀹㈡埛涓嶈兘閫氳繃缂栧彿鐩存帴棰嗗彇鎴栧垎閰嶃��
+            if (Boolean.FALSE.equals(customer.getAutoPoolEnabled())) {
+                throw exception(CRM_PERMISSION_DENIED, CrmBizTypeEnum.CRM_CUSTOMER.getName());
+            }
             // 鏍¢獙鏄惁宸叉湁璐熻矗浜�
             validateCustomerOwnerExists(customer, false);
             // 鏍¢獙鏄惁閿佸畾
@@ -494,6 +491,11 @@
     }
 
     @Override
+    public List<CrmCustomerDO> getCustomerList() {
+        return customerMapper.selectList();
+    }
+
+    @Override
     public PageResult<CrmCustomerDO> getCustomerPage(CrmCustomerPageReqVO pageReqVO, Long userId) {
         return customerMapper.selectPage(pageReqVO, userId);
     }

--
Gitblit v1.9.3