From c76f64a1f4d9a7f7283373be70b1dfd925286e4d Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 13 十月 2026 17:11:51 +0800
Subject: [PATCH] 上传命名规则调整
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java | 112 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 94 insertions(+), 18 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java
index 2197372..9c7bae0 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java
@@ -1,9 +1,12 @@
package com.ruoyi.web.controller.project;
+import java.io.File;
import java.util.Arrays;
import java.util.List;
+
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -21,30 +24,101 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.project.domain.ServiceDocumentfiles;
import com.ruoyi.project.service.IServiceDocumentfilesService;
+import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.framework.config.ServerConfig;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
/**
* 鎹愮尞闄勪欢Controller
- *
+ *
* @author ruoyi
* @date 2022-04-08
*/
+@Slf4j
@Api("鎹愮尞闄勪欢")
@RestController
@RequestMapping("/project/documentfiles")
-public class ServiceDocumentfilesController extends BaseController
-{
+public class ServiceDocumentfilesController extends BaseController {
@Autowired
private IServiceDocumentfilesService serviceDocumentfilesService;
+
+ @Autowired
+ private ServerConfig serverConfig;
+
+ /**
+ * 鏀跨瓥鏂囦欢涓婁紶锛�**涓嶉檺鏂囦欢绫诲瀷**锛夈��
+ *
+ * <p>2026-10-09 涓氬姟瑕佹眰锛氭斂绛栨枃浠舵ā鍧楀厑璁镐笂浼�/涓嬭浇浠绘剰鏂囦欢绫诲瀷銆�
+ *
+ * <p>涓轰粈涔堜笉鐩存帴鐢� {@code /common/upload}锛氶�氱敤涓婁紶璧�
+ * {@code FileUploadUtils.upload(baseDir, file)}锛屼細鎸� {@code MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION}
+ * 鐧藉悕鍗曟牎楠屾墿灞曞悕锛岄潪鐧藉悕鍗曠被鍨嬶紙濡� dwg銆�7z銆乷fd銆乪ml 绛夛級浼氳鎷掔粷銆�
+ * 杩欓噷鎶� allowedExtension 鏄惧紡浼� {@code null} 鈥斺�� {@code assertAllowed} 鐨勫垽鏂槸
+ * {@code allowedExtension != null && !isAllowedExtension(...)}锛屼紶 null 鍗宠烦杩囨墿灞曞悕鏍¢獙锛�
+ * 鍚屾椂**浠嶄繚鐣�** 500MB 澶у皬闄愬埗銆佹枃浠跺悕闀垮害闄愬埗涓庡瓨鍌ㄨ矾寰勫畨鍏ㄥ鐞嗐��
+ *
+ * <p>浠呮斂绛栨枃浠舵ā鍧椾娇鐢ㄦ湰鎺ュ彛锛泏@code /common/upload} 涓庡叾浠栨ā鍧楃殑鐧藉悕鍗曚繚鎸佷笉鍙樸��
+ *
+ * @param file 涓婁紶鏂囦欢
+ * @return 涓� {@code /common/upload} 涓�鑷寸殑杩斿洖浣擄紙code/msg/fileName/url锛�
+ */
+ @ApiOperation("鏀跨瓥鏂囦欢涓婁紶锛堜笉闄愭枃浠剁被鍨嬶級")
+ @PostMapping("/upload")
+ public AjaxResult uploadFile(MultipartFile file) {
+ String originalFilename = file == null ? null : file.getOriginalFilename();
+ try {
+ if (file == null || file.isEmpty()) {
+ return AjaxResult.error("涓婁紶鏂囦欢涓虹┖锛岃閲嶆柊閫夋嫨鏂囦欢");
+ }
+ // 涓婁紶鏂囦欢璺緞
+ String filePath = RuoYiConfig.getUploadPath();
+
+ // 鍚屽悕鏂囦欢澶勭悊锛氬姞鏃堕棿鎴抽噸鍛藉悕锛岄伩鍏嶈鐩栧凡涓婁紶鏂囦欢锛堜笌閫氱敤涓婁紶淇濇寔涓�鑷达級
+ String filename = originalFilename == null ? "" : originalFilename.trim();
+ String pathFileName = FileUploadUtils.extractFilename(file);
+ File target = new File(filePath + "/" + pathFileName);
+ if (target.exists()) {
+ int i = filename.lastIndexOf(".");
+ if (i > -1) {
+ String startStr = filename.substring(0, i);
+ String endStr = filename.substring(i);
+ String newFilename = startStr + System.currentTimeMillis() + endStr;
+ file = new MockMultipartFile(newFilename, newFilename, file.getContentType(), file.getBytes());
+ }
+ }
+
+ // allowedExtension 浼� null锛氫笉鍋氭墿灞曞悕鏍¢獙锛屽厑璁镐换鎰忔枃浠剁被鍨�
+ String relativePath = FileUploadUtils.upload(filePath, file, null);
+
+ // 涓庨�氱敤涓婁紶涓�鑷寸殑 url 澶勭悊锛堥儴鍒嗛儴缃蹭笅 8032 闇�瑕佸甫 /prod-api 鍓嶇紑锛�
+ String url = serverConfig.getUrl();
+ if (url != null && url.contains("8032")) {
+ url = url.replace("8032", "8032/prod-api");
+ }
+
+ log.info("鏀跨瓥鏂囦欢涓婁紶鎴愬姛锛氬師濮嬫枃浠跺悕={}锛屽瓨鍌ㄨ矾寰�={}", filename, relativePath);
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("fileName", relativePath);
+ ajax.put("url", url + relativePath);
+ return ajax;
+ } catch (Exception e) {
+ // 杩斿洖 AjaxResult锛圚TTP 200 + code=500锛夛紝鍓嶇 uploadSccess 鐨� else 鍒嗘敮浼氭妸鍘熷洜寮瑰嚭鏉�
+ log.error("鏀跨瓥鏂囦欢涓婁紶澶辫触锛氬師濮嬫枃浠跺悕={}", originalFilename, e);
+ return AjaxResult.error("涓婁紶澶辫触锛�" + e.getMessage());
+ }
+ }
/**
* 鏌ヨ鎹愮尞闄勪欢鍒楄〃
*/
@ApiOperation("鏌ヨ鎹愮尞闄勪欢鍒楄〃")
@GetMapping("/list")
- public TableDataInfo list(ServiceDocumentfiles serviceDocumentfiles)
- {
+ public TableDataInfo list(ServiceDocumentfiles serviceDocumentfiles) {
+ log.info("鏌ヨ鎹愮尞闄勪欢鍒楄〃锛歿}", serviceDocumentfiles);
startPage();
//List<ServiceDocumentfiles> list = serviceDocumentfilesService.queryList(serviceDocumentfiles);
List<ServiceDocumentfiles> list = serviceDocumentfilesService.selectList(serviceDocumentfiles);
@@ -57,8 +131,8 @@
@ApiOperation("瀵煎嚭鎹愮尞闄勪欢鍒楄〃")
@Log(title = "鎹愮尞闄勪欢", businessType = BusinessType.EXPORT)
@GetMapping("/export")
- public AjaxResult export(ServiceDocumentfiles serviceDocumentfiles)
- {
+ public AjaxResult export(ServiceDocumentfiles serviceDocumentfiles) {
+ log.info("瀵煎嚭鎹愮尞闄勪欢鍒楄〃锛歿}", serviceDocumentfiles);
List<ServiceDocumentfiles> list = serviceDocumentfilesService.queryList(serviceDocumentfiles);
ExcelUtil<ServiceDocumentfiles> util = new ExcelUtil<ServiceDocumentfiles>(ServiceDocumentfiles.class);
return util.exportExcel(list, "鎹愮尞闄勪欢鏁版嵁");
@@ -69,8 +143,8 @@
*/
@ApiOperation("鑾峰彇鎹愮尞闄勪欢璇︾粏淇℃伅")
@GetMapping(value = "/{id}")
- public AjaxResult getInfo(@PathVariable("id") Long id)
- {
+ public AjaxResult getInfo(@PathVariable("id") Long id) {
+ log.info("鑾峰彇鎹愮尞闄勪欢璇︾粏淇℃伅锛歿}", id);
return AjaxResult.success(serviceDocumentfilesService.getById(id));
}
@@ -79,11 +153,13 @@
*/
@ApiOperation("鏂板鎹愮尞闄勪欢")
@Log(title = "鎹愮尞闄勪欢", businessType = BusinessType.INSERT)
- @PostMapping
+ @PostMapping("/add")
@RepeatSubmit
- public AjaxResult add(@RequestBody ServiceDocumentfiles serviceDocumentfiles)
- {
- return toAjax(serviceDocumentfilesService.save(serviceDocumentfiles));
+ public AjaxResult add(@RequestBody ServiceDocumentfiles serviceDocumentfiles) {
+ log.info("鏂板鎹愮尞闄勪欢锛歿}", serviceDocumentfiles);
+ boolean save = serviceDocumentfilesService.save(serviceDocumentfiles);
+ log.info("鏂板鎹愮尞闄勪欢serviceDocumentfiles鐨刬d锛歿}", serviceDocumentfiles.getId());
+ return AjaxResult.success(serviceDocumentfiles);
}
/**
@@ -92,9 +168,9 @@
@ApiOperation("淇敼鎹愮尞闄勪欢")
@Log(title = "鎹愮尞闄勪欢", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
- @RepeatSubmit
- public AjaxResult edit(@RequestBody ServiceDocumentfiles serviceDocumentfiles)
- {
+ @RepeatSubmit
+ public AjaxResult edit(@RequestBody ServiceDocumentfiles serviceDocumentfiles) {
+ log.info("淇敼鎹愮尞闄勪欢锛歿}", serviceDocumentfiles);
return toAjax(serviceDocumentfilesService.updateById(serviceDocumentfiles));
}
@@ -104,8 +180,8 @@
@ApiOperation("鍒犻櫎鎹愮尞闄勪欢")
@Log(title = "鎹愮尞闄勪欢", businessType = BusinessType.DELETE)
@GetMapping("/remove/{ids}")
- public AjaxResult remove(@PathVariable Long[] ids)
- {
+ public AjaxResult remove(@PathVariable Long[] ids) {
+ log.info("鍒犻櫎鎹愮尞闄勪欢锛歿}", ids);
return toAjax(serviceDocumentfilesService.removeByIds(Arrays.asList(ids)));
}
}
--
Gitblit v1.9.3