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