From 9f8395fab13ca4b230a0f7d62636e209745c91d4 Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期日, 28 九月 2025 14:16:18 +0800
Subject: [PATCH] feat: 完善注册流程的文件上传功能

---
 backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java b/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java
index 16a8e91..3c429e7 100644
--- a/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java
+++ b/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java
@@ -4,6 +4,8 @@
 import com.rongyichuang.employee.dto.response.EmployeeResponse;
 import com.rongyichuang.employee.entity.Employee;
 import com.rongyichuang.employee.repository.EmployeeRepository;
+import com.rongyichuang.user.service.UserService;
+import com.rongyichuang.user.entity.User;
 import com.rongyichuang.common.exception.BusinessException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,6 +33,9 @@
 
     @Autowired
     private EmployeeRepository employeeRepository;
+
+    @Autowired
+    private UserService userService;
 
     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 
@@ -87,6 +92,16 @@
         // 楠岃瘉杈撳叆
         validateEmployeeInput(input);
 
+        // 澶勭悊User琛ㄩ�昏緫
+        User user;
+        if (input.getPassword() != null && !input.getPassword().trim().isEmpty()) {
+            // 鏈夊瘑鐮佹椂锛屽垱寤烘垨鏇存柊鐢ㄦ埛锛堝寘鍚瘑鐮侊級
+            user = userService.findOrCreateUserByPhone(input.getPhone(), input.getName(), input.getPassword());
+        } else {
+            // 鏃犲瘑鐮佹椂锛屽彧鏇存柊鐢ㄦ埛鍩烘湰淇℃伅锛堜笉鏇存柊瀵嗙爜锛�
+            user = userService.findOrCreateUserByPhone(input.getPhone(), input.getName(), null);
+        }
+
         Employee employee;
         if (input.getId() != null) {
             // 鏇存柊鍛樺伐
@@ -103,7 +118,6 @@
                 throw new BusinessException("PHONE_ALREADY_EXISTS", "鎵嬫満鍙峰凡瀛樺湪");
             }
             employee = new Employee();
-            employee.setUserId(1L); // 涓存椂璁剧疆锛屽疄闄呭簲璇ヤ粠褰撳墠鐧诲綍鐢ㄦ埛鑾峰彇
         }
 
         // 璁剧疆鍩烘湰淇℃伅
@@ -111,11 +125,7 @@
         employee.setPhone(input.getPhone());
         employee.setRoleId(input.getRoleId());
         employee.setDescription(input.getDescription());
-
-        // 澶勭悊瀵嗙爜
-        if (input.getPassword() != null && !input.getPassword().trim().isEmpty()) {
-            employee.setPassword(passwordEncoder.encode(input.getPassword()));
-        }
+        employee.setUserId(user.getId()); // 璁剧疆鍏宠仈鐨勭敤鎴稩D
 
         Employee savedEmployee = employeeRepository.save(employee);
         logger.info("鍛樺伐淇濆瓨鎴愬姛: {}", savedEmployee.getName());
@@ -154,13 +164,14 @@
             throw new BusinessException("ROLE_REQUIRED", "瑙掕壊涓嶈兘涓虹┖");
         }
 
-        // 鏂板鍛樺伐鏃跺瘑鐮佸繀濉�
+        // 瀵嗙爜楠岃瘉锛氭柊澧炴椂蹇呭~锛岀紪杈戞椂鍙��
         if (input.getId() == null) {
+            // 鏂板鍛樺伐鏃跺瘑鐮佸繀濉�
             if (input.getPassword() == null || input.getPassword().trim().isEmpty()) {
                 throw new BusinessException("PASSWORD_REQUIRED", "瀵嗙爜涓嶈兘涓虹┖");
             }
         }
-
+        
         // 濡傛灉鎻愪緵浜嗗瘑鐮侊紝楠岃瘉瀵嗙爜鏍煎紡
         if (input.getPassword() != null && !input.getPassword().trim().isEmpty()) {
             if (!PASSWORD_PATTERN.matcher(input.getPassword()).matches()) {

--
Gitblit v1.8.0