From 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期二, 30 九月 2025 17:38:04 +0800
Subject: [PATCH] feat: 完善比赛晋级功能并清理测试文件

---
 backend/src/main/java/com/rongyichuang/media/service/MediaV2Service.java |   58 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 43 insertions(+), 15 deletions(-)

diff --git a/backend/src/main/java/com/rongyichuang/media/service/MediaV2Service.java b/backend/src/main/java/com/rongyichuang/media/service/MediaV2Service.java
index b1329cf..7c6cf58 100644
--- a/backend/src/main/java/com/rongyichuang/media/service/MediaV2Service.java
+++ b/backend/src/main/java/com/rongyichuang/media/service/MediaV2Service.java
@@ -9,6 +9,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 濯掍綋鏈嶅姟绫�
  */
@@ -37,32 +39,58 @@
             if (input.getTargetId() == null) {
                 return MediaSaveResponse.error("鐩爣ID涓嶈兘涓虹┖");
             }
-            if (input.getUrl() == null || input.getUrl().trim().isEmpty()) {
-                return MediaSaveResponse.error("鏂囦欢URL涓嶈兘涓虹┖");
+            if (input.getPath() == null || input.getPath().trim().isEmpty()) {
+                return MediaSaveResponse.error("鏂囦欢璺緞涓嶈兘涓虹┖");
             }
             if (input.getMediaType() == null) {
                 return MediaSaveResponse.error("濯掍綋绫诲瀷涓嶈兘涓虹┖");
             }
             
-            // 鍒涘缓Media瀹炰綋
-            Media media = new Media();
-            
             // 灏唗argetType瀛楃涓茶浆鎹负鏁存暟
             Integer targetTypeInt = convertTargetTypeToInt(input.getTargetType());
-            media.setTargetType(targetTypeInt);
-            media.setTargetId(input.getTargetId());
-            media.setPath(input.getUrl());
-            media.setThumbPath(input.getThumbUrl());
+            
+            Media media;
+            boolean isUpdate = false;
+            
+            // 鏍规嵁鐩爣绫诲瀷鍐冲畾澶勭悊绛栫暐
+            if (targetTypeInt == 7) { // USER_AVATAR - 澶村儚锛岄渶瑕佹洿鏂扮幇鏈夎褰�
+                List<Media> existingMedias = mediaRepository.findByTargetTypeAndTargetIdAndState(
+                    targetTypeInt, input.getTargetId(), 1);
+                
+                if (!existingMedias.isEmpty()) {
+                    // 瀛樺湪澶村儚璁板綍锛屾洿鏂扮涓�涓褰�
+                    media = existingMedias.get(0);
+                    isUpdate = true;
+                    log.info("鎵惧埌鐜版湁澶村儚璁板綍锛屽皢杩涜鏇存柊锛孖D: {}", media.getId());
+                } else {
+                    // 涓嶅瓨鍦ㄥご鍍忚褰曪紝鍒涘缓鏂拌褰�
+                    media = new Media();
+                    media.setTargetType(targetTypeInt);
+                    media.setTargetId(input.getTargetId());
+                    media.setState(1);
+                    log.info("鏈壘鍒扮幇鏈夊ご鍍忚褰曪紝灏嗗垱寤烘柊鐨勫ご鍍忚褰�");
+                }
+            } else {
+                // 鍏朵粬绫诲瀷锛堝闄勪欢锛夛紝鎬绘槸鍒涘缓鏂拌褰�
+                media = new Media();
+                media.setTargetType(targetTypeInt);
+                media.setTargetId(input.getTargetId());
+                media.setState(1); // 1琛ㄧず鏈夋晥鐘舵��
+                log.info("鍒涘缓鏂扮殑濯掍綋璁板綍锛岀被鍨�: {}", input.getTargetType());
+            }
+            
+            // 鏇存柊鎴栬缃獟浣撲俊鎭�
+            media.setPath(input.getPath());
+            media.setThumbPath(input.getThumbPath());
             media.setName(input.getFileName());
             media.setFileExt(input.getFileExt());
             media.setFileSize(input.getFileSize() != null ? input.getFileSize().intValue() : null);
-        media.setDuration(input.getDuration());
-        media.setMediaType(input.getMediaType());
-        media.setState(1); // 1琛ㄧず鏈夋晥鐘舵��
+            media.setDuration(input.getDuration());
+            media.setMediaType(input.getMediaType());
             
             // 淇濆瓨鍒版暟鎹簱
             Media savedMedia = mediaRepository.save(media);
-            log.info("濯掍綋鏂囦欢淇濆瓨鎴愬姛锛孖D: {}", savedMedia.getId());
+            log.info("濯掍綋鏂囦欢{}鎴愬姛锛孖D: {}", isUpdate ? "鏇存柊" : "淇濆瓨", savedMedia.getId());
             
             return MediaSaveResponse.success("濯掍綋鏂囦欢淇濆瓨鎴愬姛", savedMedia.getId());
             
@@ -82,9 +110,9 @@
     private Integer convertTargetTypeToInt(String targetType) {
         switch (targetType) {
             case "player":
-                return 1;
+                return 7; // USER_AVATAR - 鐢ㄦ埛澶村儚
             case "activity_player":
-                return 2;
+                return 5; // ACTIVITY_PLAYER_SUBMISSION - 鍙傝禌鎶ュ悕璧勬枡
             default:
                 throw new IllegalArgumentException("涓嶆敮鎸佺殑鐩爣绫诲瀷: " + targetType);
         }

--
Gitblit v1.8.0