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/judge/service/JudgeService.java |   58 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 47 insertions(+), 11 deletions(-)

diff --git a/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java b/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java
index 6f8fd7c..a0f5dc2 100644
--- a/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java
+++ b/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java
@@ -13,6 +13,8 @@
 import com.rongyichuang.common.exception.BusinessException;
 import com.rongyichuang.common.enums.MediaTargetType;
 import com.rongyichuang.tag.repository.TagRepository;
+import com.rongyichuang.user.service.UserService;
+import com.rongyichuang.user.entity.User;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.data.domain.Sort;
@@ -36,16 +38,19 @@
     private final TagRepository tagRepository;
     private final MediaRepository mediaRepository;
     private final MediaService mediaService;
+    private final UserService userService;
     
-    @Value("${app.media-url:${app.media.url:}}")
+    @Value("${app.media-url}")
     private String mediaBaseUrl;
 
     public JudgeService(JudgeRepository judgeRepository, TagRepository tagRepository, 
-                       MediaRepository mediaRepository, MediaService mediaService) {
+                       MediaRepository mediaRepository, MediaService mediaService,
+                       UserService userService) {
         this.judgeRepository = judgeRepository;
         this.tagRepository = tagRepository;
         this.mediaRepository = mediaRepository;
         this.mediaService = mediaService;
+        this.userService = userService;
     }
 
     public List<JudgeResponse> findAll() {
@@ -69,6 +74,17 @@
     @Transactional
     public JudgeResponse save(JudgeInput input) {
         Judge judge;
+        User user;
+        
+        // 澶勭悊User琛ㄩ�昏緫
+        if (input.getPassword() != null && !input.getPassword().trim().isEmpty() && !"鈥⑩�⑩�⑩�⑩�⑩�⑩�⑩��".equals(input.getPassword())) {
+            // 鏈夊瘑鐮佷笖涓嶆槸鍗犱綅绗︽椂锛屽垱寤烘垨鏇存柊鐢ㄦ埛锛堝寘鍚瘑鐮侊級
+            user = userService.findOrCreateUserByPhone(input.getPhone(), input.getName(), input.getPassword());
+        } else {
+            // 鏃犲瘑鐮佹垨鏄崰浣嶇鏃讹紝鍙洿鏂扮敤鎴峰熀鏈俊鎭紙涓嶆洿鏂板瘑鐮侊級
+            user = userService.findOrCreateUserByPhone(input.getPhone(), input.getName(), null);
+        }
+
         if (input.getId() != null) {
             judge = judgeRepository.findById(input.getId())
                     .orElseThrow(() -> new BusinessException("璇勫涓嶅瓨鍦�"));
@@ -87,6 +103,7 @@
         judge.setTitle(input.getTitle());
         judge.setCompany(input.getCompany());
         judge.setIntroduction(input.getIntroduction());
+        judge.setUserId(user.getId()); // 璁剧疆鍏宠仈鐨勭敤鎴稩D
         // 澶村儚淇℃伅閫氳繃t_media琛ㄧ殑target_type鍜宼arget_id鍏宠仈
 
         // 璁剧疆涓撲笟鏍囩
@@ -184,15 +201,31 @@
      * 淇濆瓨濯掍綋淇℃伅
      */
     public MediaResponse saveMediaInfo(MediaInput input) {
-        Media media = mediaService.saveMedia(
-            input.getName(),
-            input.getPath(),
-            input.getFileSize(),
-            input.getFileExt(),
-            input.getMediaType(),
-            input.getTargetType(),
-            input.getTargetId()
-        );
+        Media media;
+        
+        // 濡傛灉鏈夌缉鐣ュ浘璺緞锛屼娇鐢ㄦ敮鎸佺缉鐣ュ浘鐨勬柟娉�
+        if (input.getThumbPath() != null && !input.getThumbPath().trim().isEmpty()) {
+            media = mediaService.saveMedia(
+                input.getName(),
+                input.getPath(),
+                input.getFileSize(),
+                input.getFileExt(),
+                input.getMediaType(),
+                input.getTargetType(),
+                input.getTargetId(),
+                input.getThumbPath()
+            );
+        } else {
+            media = mediaService.saveMedia(
+                input.getName(),
+                input.getPath(),
+                input.getFileSize(),
+                input.getFileExt(),
+                input.getMediaType(),
+                input.getTargetType(),
+                input.getTargetId()
+            );
+        }
         
         MediaResponse response = new MediaResponse();
         response.setId(media.getId());
@@ -203,6 +236,9 @@
         response.setMediaType(media.getMediaType());
         response.setTargetType(media.getTargetType());
         response.setTargetId(media.getTargetId());
+        response.setThumbPath(media.getThumbPath());
+        response.setDuration(media.getDuration());
+        response.setDescription(media.getDescription());
         
         return response;
     }

--
Gitblit v1.8.0