From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-file/jnpf-file-yozo/jnpf-file-yozo-controller/src/main/java/jnpf/controller/YozoFileController.java | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 267 insertions(+), 0 deletions(-)
diff --git a/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-controller/src/main/java/jnpf/controller/YozoFileController.java b/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-controller/src/main/java/jnpf/controller/YozoFileController.java
new file mode 100644
index 0000000..0141d6d
--- /dev/null
+++ b/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-controller/src/main/java/jnpf/controller/YozoFileController.java
@@ -0,0 +1,267 @@
+package jnpf.controller;
+
+import com.alibaba.fastjson.JSON;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jnpf.base.ActionResult;
+import jnpf.base.vo.PageListVO;
+import jnpf.base.vo.PaginationVO;
+import jnpf.config.ConfigValueUtil;
+import jnpf.constant.FileTypeConstant;
+import jnpf.constant.MsgCode;
+import jnpf.entity.FileEntity;
+import jnpf.file.FileApi;
+import jnpf.model.UploaderVO;
+import jnpf.model.YozoFileParams;
+import jnpf.model.YozoParams;
+import jnpf.service.YozoService;
+import jnpf.util.FileUtil;
+import jnpf.util.JsonUtil;
+import jnpf.util.XSSEscape;
+import jnpf.util.YozoUtils;
+import jnpf.util.wxutil.HttpUtil;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.io.FileUtils;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author JNPF
+ */
+@RestController
+@RequestMapping
+@Tag(name = "姘镐腑鏂囦欢棰勮缂栬緫")
+@RequiredArgsConstructor
+public class YozoFileController {
+
+
+ private final YozoService yozoService;
+ private final YozoUtils yozoUtil;
+ private final ConfigValueUtil configValueUtil;
+ private final FileApi fileApi;
+ private final YozoParams yozoParams;
+
+ public static final String APPID = "&appId=";
+ public static final String FILE_VERSION_ID = "fileVersionId";
+
+
+ @PostMapping("/getUrl")
+ @Operation(summary = "鍦ㄧ嚎棰勮")
+ @Parameter(name = "params", description = "姘镐腑妯″瀷", required = true)
+ public ActionResult<Object> getUrl(@RequestBody YozoFileParams params) {
+ String previewUrl = yozoService.getPreviewUrl(params);
+ return ActionResult.success("success", previewUrl);
+ }
+
+ @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+ @Operation(summary = "涓婁紶鏈湴鏂囦欢")
+ public ActionResult<Object> upload(@RequestPart("multipartFile") MultipartFile file) throws IOException {
+ String result = yozoUtil.uploadFileInPreview(file.getInputStream(), file.getOriginalFilename());
+ String fileName = file.getOriginalFilename();
+ UploaderVO vo = UploaderVO.builder().name(fileName).build();
+ Map<String, Object> map = JsonUtil.stringToMap(result);
+ if ("鎿嶄綔鎴愬姛".equals(map.get("message"))) {
+ Map<String, Object> dataMap = JsonUtil.stringToMap(String.valueOf(map.get("data")));
+ String verId = String.valueOf(dataMap.get(FILE_VERSION_ID));
+ vo.setFileVersionId(verId);
+ return ActionResult.success("Success", vo);
+ }
+
+ return ActionResult.fail(MsgCode.FA033.get());
+ }
+
+ @GetMapping("/newCreate")
+ @Operation(summary = "鏂板缓鏂囦欢")
+ @Parameter(name = "fileName", description = "鍚嶇О")
+ @Parameter(name = "templateType", description = "绫诲瀷")
+ public ActionResult<Object> newCreate(@RequestParam("fileName") String fileName, @RequestParam("templateType") String templateType) {
+ String fileNa = yozoUtil.getFileName(fileName, templateType);
+ if (fileNa == null) {
+ return ActionResult.fail(MsgCode.FA042.get());
+ }
+ //鍒ゆ柇鏂囦欢鏄惁鍒涘缓杩�
+ FileEntity fileEntity = yozoService.selectByName(fileNa);
+ if (fileEntity != null) {
+ return ActionResult.fail(MsgCode.FA043.get());
+ }
+ Map<String, String[]> params = new HashMap<>();
+ params.put("templateType", new String[]{templateType});
+ params.put("fileName", new String[]{fileName});
+ String sign = yozoUtil.generateSign(yozoParams.getAppId(), yozoParams.getAppKey(), params).getData();
+ String url = yozoParams.getCloudDomain() + "/api/file/template?templateType=" + templateType +
+ "&fileName=" + fileName +
+ APPID + yozoParams.getAppId() +
+ FILE_VERSION_ID + sign;
+ String s = HttpUtil.sendHttpPost(url);
+ Map<String, Object> maps = JSON.parseObject(s, Map.class);
+ Map<String, String> fileMap = (Map<String, String>) maps.get("data");
+ String fileVersionId = fileMap.get(FILE_VERSION_ID);
+ String fileId = fileMap.get("fileId");
+ ActionResult<Object> back = yozoService.saveFileId(fileVersionId, fileId, fileNa);
+ //鍦ㄦ湰鍦版柊寤烘枃浠�
+ FileUtil.createFile(configValueUtil.getDocumentPreviewPath(), fileNa);
+ return back;
+ }
+
+ @GetMapping("/uploadByHttp")
+ @Operation(summary = "http涓婁紶鏂囦欢")
+ @Parameter(name = "fileUrl", description = "璺緞")
+ public ActionResult<Object> uploadByHttp(@RequestParam("fileUrl") String fileUrl) {
+ //鑾峰彇绛惧悕
+ Map<String, String[]> params = new HashMap<>();
+ params.put("fileUrl", new String[]{fileUrl});
+ String sign = yozoUtil.generateSign(yozoParams.getAppId(), yozoParams.getAppKey(), params).getData();
+ String url = yozoParams.getCloudDomain() + "/api/file/http?fileUrl=" + fileUrl +
+ APPID + yozoParams.getAppId() +
+ FILE_VERSION_ID + sign;
+ String s = HttpUtil.sendHttpPost(url);
+ Map<String, Object> maps = JSON.parseObject(s, Map.class);
+ Map<String, String> fileMap = (Map<String, String>) maps.get("data");
+ String fileVersionId = fileMap.get(FILE_VERSION_ID);
+ String fileId = fileMap.get("fileId");
+ return yozoService.saveFileIdByHttp(fileVersionId, fileId, fileUrl);
+ }
+
+ @GetMapping("/downloadFile")
+ @Operation(summary = "姘镐腑涓嬭浇鏂囦欢")
+ @Parameter(name = FILE_VERSION_ID, description = "涓婚敭")
+ public String downloadFile(@RequestParam("fileVersionId") String fileVersionId) {
+ String newFileVersionId = XSSEscape.escape(fileVersionId);
+ FileEntity fileEntity = yozoService.selectByVersionId(newFileVersionId);
+ if (fileEntity == null) {
+ return MsgCode.FA044.get();
+ }
+ //鑾峰彇绛惧悕
+ Map<String, String[]> params = new HashMap<>();
+ params.put(FILE_VERSION_ID, new String[]{newFileVersionId});
+ String sign = yozoUtil.generateSign(yozoParams.getAppId(), yozoParams.getAppKey(), params).getData();
+ return yozoParams.getCloudDomain() + "/api/file/download?fileVersionId=" + newFileVersionId +
+ APPID + yozoParams.getAppId() +
+ FILE_VERSION_ID + sign;
+ }
+
+
+ @GetMapping("/deleteVersionFile")
+ @Operation(summary = "鍒犻櫎鏂囦欢鐗堟湰")
+ @Parameter(name = "fileVersionId", description = "涓婚敭")
+ public ActionResult<Object> deleteVersion(@RequestParam("fileVersionId") String fileVersionId) {
+ //鑾峰彇绛惧悕
+ Map<String, String[]> params = new HashMap<>();
+ params.put(FILE_VERSION_ID, new String[]{fileVersionId});
+ String sign = yozoUtil.generateSign(yozoParams.getAppId(), yozoParams.getAppKey(), params).getData();
+ String url = yozoParams.getCloudDomain() + "/api/file/delete/version?fileVersionId=" + fileVersionId +
+ APPID + yozoParams.getAppId() +
+ FILE_VERSION_ID + sign;
+ String s = HttpUtil.sendHttpGet(url);
+ Map<String, Object> maps = JSON.parseObject(s, Map.class);
+ String fileName = yozoService.selectByVersionId(fileVersionId).getFileName();
+ String path = fileApi.getPath(FileTypeConstant.DOCUMENTPREVIEW) + fileName;
+ if (FileUtil.fileIsFile(path)) {
+ File file = new File(jnpf.util.XSSEscape.escapePath(path));
+ FileUtils.deleteQuietly(file);
+ }
+ String versionId = (String) maps.get("data");
+ return yozoService.deleteFileByVersionId(versionId);
+ }
+
+ @GetMapping("/batchDelete")
+ @Operation(summary = "鎵归噺鍒犻櫎鏂囦欢鐗堟湰")
+ @Parameter(name = "fileVersionIds", description = "涓婚敭")
+ public ActionResult<Object> batchDelete(@RequestParam("fileVersionIds") String[] fileVersionIds) {
+ //鑾峰彇绛惧悕
+ Map<String, String[]> params = new HashMap<>();
+ params.put("fileVersionIds", fileVersionIds);
+
+
+ for (String s : fileVersionIds) {
+ String fileName = yozoService.selectByVersionId(s).getFileName();
+ String path = fileApi.getPath(FileTypeConstant.DOCUMENTPREVIEW) + fileName;
+ File file = new File(jnpf.util.XSSEscape.escapePath(path));
+ FileUtils.deleteQuietly(file);
+ }
+
+
+ return yozoService.deleteBatch(fileVersionIds);
+ }
+
+ @GetMapping("/editFile")
+ @Operation(summary = "鍦ㄧ嚎缂栬緫")
+ @Parameter(name = "fileVersionId", description = "涓婚敭")
+ public ActionResult<Object> editFile(@RequestParam("fileVersionId") String fileVersionId) {
+ String newFileVersionId = XSSEscape.escape(fileVersionId);
+ //鑾峰彇绛惧悕
+ Map<String, String[]> params = new HashMap<>();
+ params.put(FILE_VERSION_ID, new String[]{fileVersionId});
+ String sign = yozoUtil.generateSign(yozoParams.getAppId(), yozoParams.getAppKey(), params).getData();
+ String url = yozoParams.getEditDomain() + "/api/edit/file?fileVersionId=" + newFileVersionId +
+ APPID + yozoParams.getAppId() +
+ FILE_VERSION_ID + sign;
+ return ActionResult.success("success", url);
+ }
+
+ /**
+ * 姘镐腑鍥炶皟
+ *
+ * @param oldFileId
+ * @param newFileId
+ * @param message
+ * @param errorCode
+ * @return
+ */
+ @PostMapping("/3rd/edit/callBack")
+ @Parameter(name = "oldFileId", description = "涓婚敭")
+ @Parameter(name = "newFileId", description = "涓婚敭")
+ @Parameter(name = "message", description = "娑堟伅")
+ @Parameter(name = "errorCode", description = "缂栫爜")
+ public Map<String, Object> editCallBack(@RequestParam("oldFileId") String oldFileId, @RequestParam("newFileId") String newFileId, @RequestParam("message") String message, @RequestParam("errorCode") Integer errorCode) {
+
+ yozoService.editFileVersion(oldFileId, newFileId);
+
+ Map<String, Object> result = new HashMap<>();
+ result.put("oldFileId", oldFileId);
+ result.put("newFileId", newFileId);
+ result.put("message", message);
+ result.put("errorCode", errorCode);
+ result = XSSEscape.escapeObj(result);
+ return result;
+ }
+
+ @PostMapping("/documentList")
+ @Operation(summary = "鏂囨。鍒楄〃")
+ @Parameter(name = "pageModel", description = "鍒嗛〉妯″瀷", required = true)
+ public ActionResult<PageListVO<FileEntity>> documentList(@RequestBody PaginationVO pageModel) {
+ List<FileEntity> list = yozoService.getAllList(pageModel);
+ return ActionResult.page(list, pageModel);
+ }
+
+ /**
+ * 浼犲叆鏂扮殑fileVersionId鍚屾
+ *
+ * @param fileVersionId
+ * @return
+ * @throws Exception
+ */
+ @GetMapping("/updateFile")
+ @Operation(summary = "/鍚屾鏂囦欢鐗堟湰鍒版湰鍦�")
+ @Parameter(name = "fileVersionId", description = "涓婚敭")
+ public ActionResult<Object> updateFile(@RequestParam("fileVersionId") String fileVersionId) throws Exception {
+ FileEntity fileEntity = yozoService.selectByVersionId(fileVersionId);
+ String fileName = fileEntity.getFileName();
+ String path = fileApi.getPath(FileTypeConstant.DOCUMENTPREVIEW) + fileName;
+ if (FileUtil.fileIsFile(path)) {
+ File file = new File(jnpf.util.XSSEscape.escapePath(path));
+ FileUtils.deleteQuietly(file);
+ }
+ String fileUrl = this.downloadFile(fileVersionId);
+ yozoUtil.downloadFile(fileUrl, path);
+ return ActionResult.success(MsgCode.SU004.get());
+ }
+}
--
Gitblit v1.8.0