Преглед изворни кода

feat(realname): 收货人保存后回填用户真实姓名

Sisyphus Agent пре 3 дана
родитељ
комит
0e7f5ff7bc

+ 6 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/ConsigneeService.java

@@ -21,6 +21,9 @@ public class ConsigneeService {
     @Resource
     private UserMapper userMapper;
 
+    @Resource
+    private RealNameBackfillService realNameBackfillService;
+
     public Result<List<Consignee>> list(Long userId) {
         List<Consignee> list = consigneeMapper.selectList(
                 new LambdaQueryWrapper<Consignee>()
@@ -59,6 +62,8 @@ public class ConsigneeService {
             consigneeMapper.updateById(consignee);
             // 若联系人与当前用户姓名/手机号一致,同步地区信息到用户
             syncUserRegion(existing.getUserId(), consignee);
+            // 回填写在 syncUserRegion 之后:保持既有同步逻辑看到回填前的 realName,行为不变
+            realNameBackfillService.backfill(existing.getUserId(), consignee.getName());
             return Result.success(consignee.getId());
         } else {
             // create
@@ -71,6 +76,7 @@ public class ConsigneeService {
             consigneeMapper.insert(consignee);
             // 若联系人与当前用户姓名/手机号一致,同步地区信息到用户
             syncUserRegion(consignee.getUserId(), consignee);
+            realNameBackfillService.backfill(consignee.getUserId(), consignee.getName());
             return Result.success(consignee.getId());
         }
     }

+ 59 - 0
cfc-backend/src/test/java/com/etotem/cfc/service/ConsigneeServiceBackfillTest.java

@@ -0,0 +1,59 @@
+package com.etotem.cfc.service;
+
+import com.etotem.cfc.entity.Consignee;
+import com.etotem.cfc.mapper.ConsigneeMapper;
+import com.etotem.cfc.mapper.UserMapper;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.mockito.Mockito.*;
+
+@ExtendWith(MockitoExtension.class)
+class ConsigneeServiceBackfillTest {
+
+    @Mock
+    private ConsigneeMapper consigneeMapper;
+
+    @Mock
+    private UserMapper userMapper;
+
+    @Mock
+    private RealNameBackfillService realNameBackfillService;
+
+    @InjectMocks
+    private ConsigneeService consigneeService;
+
+    @Test
+    void save_新增分支保存成功后以联系人姓名回填真实姓名() {
+        Consignee consignee = new Consignee();
+        consignee.setUserId(1L);
+        consignee.setName("张三");
+        consignee.setIsDefault(0);
+
+        consigneeService.save(consignee);
+
+        verify(consigneeMapper).insert(consignee);
+        verify(realNameBackfillService).backfill(1L, "张三");
+    }
+
+    @Test
+    void save_编辑分支保存成功后以联系人姓名回填真实姓名() {
+        Consignee existing = new Consignee();
+        existing.setId(10L);
+        existing.setUserId(1L);
+        when(consigneeMapper.selectById(10L)).thenReturn(existing);
+
+        Consignee consignee = new Consignee();
+        consignee.setId(10L);
+        consignee.setName("李四");
+        consignee.setIsDefault(0);
+
+        consigneeService.save(consignee);
+
+        verify(consigneeMapper).updateById(consignee);
+        verify(realNameBackfillService).backfill(1L, "李四");
+    }
+}