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/common/api/MediaGraphqlApi.java |   66 +++++++++++++++++++++++---------
 1 files changed, 47 insertions(+), 19 deletions(-)

diff --git a/backend/src/main/java/com/rongyichuang/common/api/MediaGraphqlApi.java b/backend/src/main/java/com/rongyichuang/common/api/MediaGraphqlApi.java
index 15e3eba..4ad1c5a 100644
--- a/backend/src/main/java/com/rongyichuang/common/api/MediaGraphqlApi.java
+++ b/backend/src/main/java/com/rongyichuang/common/api/MediaGraphqlApi.java
@@ -27,7 +27,7 @@
     @Autowired
     private JdbcTemplate jdbcTemplate;
 
-    @Value("${app.media-url:${app.media.url:}}")
+    @Value("${app.media-url}")
     private String mediaBaseUrl;
 
     public MediaGraphqlApi(MediaRepository mediaRepository, MediaService mediaService) {
@@ -36,13 +36,13 @@
     }
 
     @QueryMapping
-    public List<MediaResponse> mediasByTarget(@Argument Integer targetType, @Argument String targetId) {
+    public List<MediaResponse> mediasByTarget(@Argument Integer targetType, @Argument Long targetId) {
         try {
             // 浣跨敤 JDBC 鐩存帴鏌ヨ锛岄伩鍏� Hibernate 绫诲瀷杞崲闂
             String sql = "SELECT id, name, path, file_size, file_ext, media_type, target_type, target_id, thumb_path, duration, description " +
-                        "FROM t_media WHERE target_type = ? AND target_id = ? AND target_id REGEXP '^[0-9]+$'";
+                        "FROM t_media WHERE target_type = ? AND target_id = ?";
             
-            List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, targetType, Long.parseLong(targetId));
+            List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, targetType, targetId);
             
             List<MediaResponse> responses = new ArrayList<>();
             for (Map<String, Object> row : rows) {
@@ -85,12 +85,24 @@
         r.setMediaType(m.getMediaType());
         r.setTargetType(m.getTargetType());
         r.setTargetId(m.getTargetId());
+        r.setThumbPath(m.getThumbPath());
+        r.setDuration(m.getDuration());
+        r.setDescription(m.getDescription());
+        
         // 杩藉姞 fullUrl锛堝墠绔篃鍙嚜琛屾嫾鎺ワ級
         if (mediaBaseUrl != null && !mediaBaseUrl.isEmpty() && m.getPath() != null) {
             String base = mediaBaseUrl.endsWith("/") ? mediaBaseUrl.substring(0, mediaBaseUrl.length() - 1) : mediaBaseUrl;
             String p = m.getPath().startsWith("/") ? m.getPath() : ("/" + m.getPath());
             r.setFullUrl(base + p);
         }
+        
+        // 杩藉姞 fullThumbUrl
+        if (mediaBaseUrl != null && !mediaBaseUrl.isEmpty() && m.getThumbPath() != null) {
+            String base = mediaBaseUrl.endsWith("/") ? mediaBaseUrl.substring(0, mediaBaseUrl.length() - 1) : mediaBaseUrl;
+            String p = m.getThumbPath().startsWith("/") ? m.getThumbPath() : ("/" + m.getThumbPath());
+            r.setFullThumbUrl(base + p);
+        }
+        
         return r;
     }
 
@@ -100,18 +112,37 @@
         System.out.println("杈撳叆鍙傛暟: " + input);
         System.out.println("targetType: " + input.getTargetType());
         System.out.println("targetId: " + input.getTargetId());
+        System.out.println("thumbPath: " + input.getThumbPath());
         
         try {
-            Media result = mediaService.saveMedia(
-                input.getName(),
-                input.getPath(),
-                input.getFileSize(),
-                input.getFileExt(),
-                input.getMediaType(),
-                input.getTargetType(),
-                input.getTargetId()
-            );
-            System.out.println("淇濆瓨鎴愬姛锛屽獟浣揑D: " + result.getId());
+            Media result;
+            
+            // 濡傛灉鏈夌缉鐣ュ浘璺緞锛屼娇鐢ㄦ敮鎸佺缉鐣ュ浘鐨勬柟娉�
+            if (input.getThumbPath() != null && !input.getThumbPath().trim().isEmpty()) {
+                result = mediaService.saveMedia(
+                    input.getName(),
+                    input.getPath(),
+                    input.getFileSize(),
+                    input.getFileExt(),
+                    input.getMediaType(),
+                    input.getTargetType(),
+                    input.getTargetId(),
+                    input.getThumbPath()
+                );
+                System.out.println("淇濆瓨鎴愬姛锛堝惈缂╃暐鍥撅級锛屽獟浣揑D: " + result.getId());
+            } else {
+                result = mediaService.saveMedia(
+                    input.getName(),
+                    input.getPath(),
+                    input.getFileSize(),
+                    input.getFileExt(),
+                    input.getMediaType(),
+                    input.getTargetType(),
+                    input.getTargetId()
+                );
+                System.out.println("淇濆瓨鎴愬姛锛屽獟浣揑D: " + result.getId());
+            }
+            
             return result;
         } catch (Exception e) {
             System.err.println("淇濆瓨濯掍綋澶辫触: " + e.getMessage());
@@ -121,15 +152,12 @@
     }
 
     @MutationMapping
-    public Boolean deleteMedia(@Argument String id) {
+    public Boolean deleteMedia(@Argument Long id) {
         System.out.println("=== deleteMedia GraphQL璋冪敤 ===");
         System.out.println("瑕佸垹闄ょ殑濯掍綋ID: " + id);
         
         try {
-            Long mediaId = Long.parseLong(id);
-            System.out.println("杞崲鍚庣殑濯掍綋ID: " + mediaId);
-            
-            Boolean result = mediaService.deleteMedia(mediaId);
+            Boolean result = mediaService.deleteMedia(id);
             System.out.println("鍒犻櫎缁撴灉: " + result);
             return result;
         } catch (Exception e) {

--
Gitblit v1.8.0