From cacf09c99495983029c2c160f3103e4e9f2f4396 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期五, 23 十月 2026 12:09:02 +0800
Subject: [PATCH] feat(aftersales): 退货申请支持客户名称文本输入(不强制关联客户档案)

---
 yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java   |    5 ++++-
 yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/dal/dataobject/returnobj/AfterSaleReturnDO.java             |    4 ++++
 sql/mysql/aftersales_return_add_customer_name.sql                                                                                    |   27 +++++++++++++++++++++++++++
 yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/vo/AfterSaleReturnSaveReqVO.java |    6 ++++--
 4 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/sql/mysql/aftersales_return_add_customer_name.sql b/sql/mysql/aftersales_return_add_customer_name.sql
new file mode 100644
index 0000000..a192caa
--- /dev/null
+++ b/sql/mysql/aftersales_return_add_customer_name.sql
@@ -0,0 +1,27 @@
+-- =============================================
+-- 鍞悗閫�璐х敵璇凤細鏀寔瀹㈡埛鍚嶇О鏂囨湰杈撳叆锛堜笉鍏宠仈瀹㈡埛妗f锛�
+--
+-- 鍙樻洿锛歛fter_sale_return 澧炲姞 customer_name 鍒�
+--   customer_id 淇濇寔鍙�夛紙鏈叧鑱斿鎴锋。妗堟椂涓� NULL锛�
+-- 鑴氭湰鍙噸澶嶆墽琛岋紙骞傜瓑锛�
+-- =============================================
+SET NAMES utf8mb4;
+
+SET @sch := DATABASE();
+
+SET @exists := (SELECT COUNT(*) FROM information_schema.COLUMNS
+    WHERE TABLE_SCHEMA = @sch AND TABLE_NAME = 'after_sale_return' AND COLUMN_NAME = 'customer_name');
+SET @sql := IF(@exists = 0,
+    'ALTER TABLE `after_sale_return` ADD COLUMN `customer_name` varchar(200) DEFAULT NULL COMMENT ''瀹㈡埛鍚嶇О锛堟枃鏈級'' AFTER `customer_id`',
+    'SELECT ''customer_name 宸插瓨鍦紝璺宠繃'' AS msg');
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
+
+-- 瀹㈡埛缂栧彿鏀逛负鍙┖锛堟敮鎸佸彧濉鎴峰悕绉般�佷笉鍏宠仈瀹㈡埛妗f锛�
+ALTER TABLE `after_sale_return` MODIFY COLUMN `customer_id` bigint DEFAULT NULL COMMENT '瀹㈡埛缂栧彿锛堝彲绌猴級';
+
+-- 鏍稿
+SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_COMMENT
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = @sch AND TABLE_NAME = 'after_sale_return' AND COLUMN_NAME = 'customer_name';
+
+SELECT '閫�璐х敵璇峰鎴峰悕绉板瓧娈靛垵濮嬪寲瀹屾垚' AS result;
diff --git a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java
index 4f593cf..a5e3741 100644
--- a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java
+++ b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/AfterSaleReturnController.java
@@ -85,8 +85,11 @@
         // 鎵归噺鍔犺浇瀹㈡埛鍚嶇О
         Set<Long> customerIds = convertSet(returnList, AfterSaleReturnDO::getCustomerId);
         Map<Long, CrmCustomerRespDTO> customerMap = customerApi.getCustomerMap(customerIds);
-        // 鎷艰鍚嶇О瀛楁
+        // 鎷艰鍚嶇О瀛楁锛堜紭鍏堜娇鐢ㄥ崟鎹笂宸插~鍐欑殑鏂囨湰瀹㈡埛鍚嶏紝鏈~鏃舵墠鎸夊鎴锋。妗堝洖濉級
         return BeanUtils.toBean(returnList, AfterSaleReturnRespVO.class, vo -> {
+            if (vo.getCustomerName() != null && !vo.getCustomerName().isEmpty()) {
+                return;
+            }
             CrmCustomerRespDTO customer = customerMap.get(vo.getCustomerId());
             if (customer != null) vo.setCustomerName(customer.getName());
         });
diff --git a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/vo/AfterSaleReturnSaveReqVO.java b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/vo/AfterSaleReturnSaveReqVO.java
index 6ff52ca..88115ad 100644
--- a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/vo/AfterSaleReturnSaveReqVO.java
+++ b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/controller/admin/returnobj/vo/AfterSaleReturnSaveReqVO.java
@@ -22,10 +22,12 @@
     @NotNull(message = "鍏宠仈宸ュ崟涓嶈兘涓虹┖")
     private Long ticketId;
 
-    @Schema(description = "瀹㈡埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "瀹㈡埛涓嶈兘涓虹┖")
+    @Schema(description = "瀹㈡埛缂栧彿锛堝彲閫夛紝鏈叧鑱斿鎴锋。妗堟椂涓虹┖锛�", example = "1")
     private Long customerId;
 
+    @Schema(description = "瀹㈡埛鍚嶇О锛堟枃鏈緭鍏ワ紝涓嶅叧鑱斿鎴锋。妗堬級", example = "鏌愭煇鍏徃")
+    private String customerName;
+
     @Schema(description = "鍏宠仈閿�鍞鍗曠紪鍙�", example = "1")
     private Long saleOrderId;
 
diff --git a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/dal/dataobject/returnobj/AfterSaleReturnDO.java b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/dal/dataobject/returnobj/AfterSaleReturnDO.java
index 776db7f..0791e22 100644
--- a/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/dal/dataobject/returnobj/AfterSaleReturnDO.java
+++ b/yudao-module-aftersales/src/main/java/cn/iocoder/yudao/module/aftersales/dal/dataobject/returnobj/AfterSaleReturnDO.java
@@ -43,6 +43,10 @@
      */
     private Long customerId;
     /**
+     * 瀹㈡埛鍚嶇О锛堟枃鏈紝鏈叧鑱斿鎴锋。妗堟椂浣跨敤锛�
+     */
+    private String customerName;
+    /**
      * 鍏宠仈閿�鍞鍗曠紪鍙�
      */
     private Long saleOrderId;

--
Gitblit v1.9.3