From d28ee263b8a6fb95c9fe2add2ec58b7561d3fee9 Mon Sep 17 00:00:00 2001
From: jialh <1972868360@qq.com>
Date: 星期一, 20 四月 2026 16:33:01 +0800
Subject: [PATCH] 水电话费

---
 service-api/src/main/java/com/java110/api/controller/app/file/UserDownloadFileController.java |   39 +++++++++++++++++++++++++++++++--------
 1 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/service-api/src/main/java/com/java110/api/controller/app/file/UserDownloadFileController.java b/service-api/src/main/java/com/java110/api/controller/app/file/UserDownloadFileController.java
index 9810711..c558194 100644
--- a/service-api/src/main/java/com/java110/api/controller/app/file/UserDownloadFileController.java
+++ b/service-api/src/main/java/com/java110/api/controller/app/file/UserDownloadFileController.java
@@ -2,9 +2,11 @@
 
 import com.java110.core.client.FileUploadTemplate;
 import com.java110.core.log.LoggerFactory;
-import com.java110.dto.userDownloadFile.UserDownloadFileDto;
+import com.java110.dto.user.UserDownloadFileDto;
 import com.java110.intf.job.IUserDownloadFileV1InnerServiceSMO;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.PayUtil;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -17,6 +19,9 @@
 import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 
 /**
@@ -33,22 +38,40 @@
     @Autowired
     private FileUploadTemplate fileUploadTemplate;
 
-
-    @RequestMapping(path = "/download/{downloadId}", method = RequestMethod.GET)
-    public void download(@PathVariable String downloadId, HttpServletRequest request, HttpServletResponse response) {
+    // /app/file/userfile/download/
+    @RequestMapping(path = "/download/{downloadId}/{token}", method = RequestMethod.GET)
+    public void download(@PathVariable String downloadId,
+                         @PathVariable String token,
+                         HttpServletRequest request, HttpServletResponse response) {
 
         logger.debug("鐢ㄦ埛寮�濮嬩笅杞芥枃浠�" + downloadId);
 
-        String userId = request.getHeader("user-id");
 
         UserDownloadFileDto userDownloadFileDto = new UserDownloadFileDto();
         userDownloadFileDto.setDownloadId(downloadId);
-        userDownloadFileDto.setDownloadUserId(userId);
+        //userDownloadFileDto.setDownloadUserId(userId);
         List<UserDownloadFileDto> userDownloadFileDtos = userDownloadFileV1InnerServiceSMOImpl.queryUserDownloadFiles(userDownloadFileDto);
         Assert.listOnlyOne(userDownloadFileDtos, "鏂囦欢涓嶅瓨鍦�");
-        String tempUrl = userDownloadFileDtos.get(0).getTempUrl();
-        String fileName = userDownloadFileDtos.get(0).getFileTypeName()+tempUrl.substring(tempUrl.lastIndexOf("/"));
 
+        String date = DateUtil.getFormatTimeStringB(DateUtil.getCurrentDate());
+        String newToken = PayUtil.md5(userDownloadFileDtos.get(0).getDownloadId() + date);
+
+        if (!newToken.equals(token)) {
+            throw new IllegalArgumentException("token 澶辨晥璇峰埛鏂伴〉闈㈤噸鏂颁笅杞�");
+        }
+
+        String tempUrl = userDownloadFileDtos.get(0).getTempUrl();
+        String originalFileName = userDownloadFileDtos.get(0).getFileTypeName() + tempUrl.substring(tempUrl.lastIndexOf("/"));
+        String fileName ;
+        try {
+            fileName = URLEncoder.encode(originalFileName, StandardCharsets.UTF_8.name());
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        }
+        int lastDotIndex = fileName.lastIndexOf(".");
+        if (lastDotIndex != -1) { // 纭繚瀛樺湪鐐�
+            fileName = fileName.substring(0, lastDotIndex);
+        }
         response.setHeader("content-type", "application/octet-stream");
         response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
         response.setContentType("application/octet-stream");

--
Gitblit v1.8.0