Browse Source

功能:向前兼容文件服务,实现部分接口:/common/images_list

lijie 3 years ago
parent
commit
6d7d78fc51

+ 0 - 2
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/config/FileWebConfigurer.java

@@ -50,8 +50,6 @@ public class FileWebConfigurer implements WebMvcConfigurer {
                 "/range/file_delete",
                 "/common/files_delete",
                 "/common/images_delete",
-                "/common/files_list",
-                "/common/images_list",
                 "/common/image_key_change",
                 "/common/image_upload"};
         registry.addInterceptor(oldFileAuthHandler())

+ 26 - 12
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/controller/CompatibleOldFileController.java

@@ -6,8 +6,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.persagy.dmp.common.utils.ResourceUtil;
 import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.file.service.CompatibleOldFileService;
+import com.persagy.dmp.file.utils.FileStorageHelper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.core.io.Resource;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -15,6 +17,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.core.MediaType;
 import java.io.IOException;
 import java.nio.charset.Charset;
+import java.util.List;
 
 /***
  * Description: 兼容旧的文件服务接口
@@ -22,7 +25,7 @@ import java.nio.charset.Charset;
  * @date :2021/11/18 10:06
  * Update By lijie 2021/11/18 10:06
  */
-@RestController
+@Controller
 @RequiredArgsConstructor
 public class CompatibleOldFileController {
 
@@ -67,9 +70,10 @@ public class CompatibleOldFileController {
      * @date :2021/11/19 9:58
      * Update By lijie 2021/11/19 9:58
      */
-    @PostMapping(value = "/common/file_upload",produces = {MediaType.APPLICATION_JSON})
-    public void fileUpload(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        response.getWriter().write(compatibleOldFileService.uploadFile(request.getInputStream(),response));
+    @PostMapping(value = "/common/file_upload")
+    @ResponseBody
+    public String fileUpload(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        return compatibleOldFileService.uploadFile(request.getInputStream(),response);
     }
     /***
      * Description: 图片上传
@@ -78,9 +82,10 @@ public class CompatibleOldFileController {
      * @date :2021/11/19 9:58
      * Update By lijie 2021/11/19 9:58
      */
-    @PostMapping(value = "/common/image_upload",produces = {MediaType.APPLICATION_JSON},consumes = {"image/jpg"})
-    public void imageUpload(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        response.getWriter().write(compatibleOldFileService.uploadFile(request.getInputStream(),response));
+    @PostMapping(value = "/common/image_upload",consumes = {"image/jpg"})
+    @ResponseBody
+    public String imageUpload(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        return compatibleOldFileService.uploadFile(request.getInputStream(),response);
     }
     /***
      * Description: 图片下载
@@ -89,9 +94,10 @@ public class CompatibleOldFileController {
      * @date :2021/11/19 9:58
      * Update By lijie 2021/11/19 9:58
      */
-    @GetMapping(value = "/common/image_get",produces = {"image/jpg"})
+    @GetMapping(value = "/common/image_get")
     public void imageGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
         compatibleOldFileService.getFile(request,response);
+        response.setContentType("image/jpg");
     }
     /***
      * Description: 图片下载
@@ -100,9 +106,10 @@ public class CompatibleOldFileController {
      * @date :2021/11/19 9:58
      * Update By lijie 2021/11/19 9:58
      */
-    @GetMapping(value = "/common/svg_get",produces = {"image/svg+xml"})
+    @GetMapping(value = "/common/svg_get")
     public void imageSvgGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
         compatibleOldFileService.getFile(request,response);
+        response.setContentType("image/svg+xml");
     }
     /***
      * Description: 图片下载
@@ -111,9 +118,16 @@ public class CompatibleOldFileController {
      * @date :2021/11/19 9:58
      * Update By lijie 2021/11/19 9:58
      */
-    @GetMapping(value = "/common/images_list",produces = {MediaType.APPLICATION_JSON})
-    public void imagesList(@RequestBody(required = false) JSONObject param, HttpServletResponse response) throws IOException {
-        compatibleOldFileService.listFiles(param,response);
+    @PostMapping(value = "/common/images_list")
+    @ResponseBody
+    public JSONObject imagesList(@RequestBody(required = false) JSONObject param) throws IOException {
+        List<String> fileIds = compatibleOldFileService.listFiles(param);
+        JSONObject result = new JSONObject();
+        result.put("result", "success");
+        result.put("Count", (long)fileIds.size());
+        result.put("Content", fileIds);
+        result.put("ResultMsg", "");
+        return result;
     }
 
 

+ 23 - 0
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/dao/FileMapper.java

@@ -1,10 +1,13 @@
 package com.persagy.dmp.file.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.persagy.dmp.file.model.FileInfo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 文件Dao
  * @author Charlie Yu
@@ -21,4 +24,24 @@ public interface FileMapper extends BaseMapper<FileInfo> {
      * Update By lijie 2021/10/23 13:20
      */
     FileInfo getFileInfoById(@Param("fileId") String fileId);
+    /***
+     * Description: 获取当前查询页数
+     * @param prefix : 筛选条件
+     * @param from : 筛选key
+     * @param size : 分页数
+     * @return : java.lang.Integer
+     * @author : lijie
+     * @date :2021/12/8 20:48
+     * Update By lijie 2021/12/8 20:48
+     */
+    Integer getPageSizeByPrefixAndFrom(@Param("prefix") String prefix,@Param("from") String from,@Param("bucket") String bucket,@Param("size") int size);
+    /***
+     * Description: 获取当前查询列表
+     * @param prefix : 筛选条件
+     * @return : java.lang.Integer
+     * @author : lijie
+     * @date :2021/12/8 20:48
+     * Update By lijie 2021/12/8 20:48
+     */
+    List<FileInfo> queryListByPrefixAndFrom(Page<FileInfo> page, @Param("prefix") String prefix, @Param("bucket") String bucket);
 }

+ 1 - 2
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/service/CompatibleOldFileService.java

@@ -37,11 +37,10 @@ public interface CompatibleOldFileService {
     /***
      * Description: 列出文件key
      * @param param : 请求参数
-     * @param response : 响应体
      * @return : void
      * @author : lijie
      * @date :2021/12/8 18:22
      * Update By lijie 2021/12/8 18:22
      */
-    List<String> listFiles(JSONObject param, HttpServletResponse response);
+    List<String> listFiles(JSONObject param);
 }

+ 30 - 12
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/service/impl/CompatibleOldFileServiceImpl.java

@@ -2,25 +2,21 @@ package com.persagy.dmp.file.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.persagy.dmp.common.constant.CommonConstant;
-import com.persagy.dmp.common.constant.ResponseCode;
-import com.persagy.dmp.common.context.AppContext;
-import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.common.helper.SpringHelper;
 import com.persagy.dmp.common.lang.PsDateTime;
 import com.persagy.dmp.file.constant.FileCommonConst;
-import com.persagy.dmp.file.constant.UploadCodeEnum;
 import com.persagy.dmp.file.context.OldFileAppContext;
-import com.persagy.dmp.file.context.OldFileContext;
 import com.persagy.dmp.file.dao.FileMapper;
 import com.persagy.dmp.file.model.*;
 import com.persagy.dmp.file.service.*;
 import com.persagy.dmp.file.utils.FileStorageHelper;
-import com.sun.imageio.plugins.common.ImageUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
@@ -30,6 +26,8 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /***
  * Description: 向前兼容旧的文件服务
@@ -157,23 +155,43 @@ public class CompatibleOldFileServiceImpl implements CompatibleOldFileService {
         // 3.下载文件
         IoUtil.copy(service.download(fileInfo.getFileBucket(),fileInfo.getFilePath()),response.getOutputStream());
     }
+
     /***
      * Description: 列出文件key
      * @param param : 请求参数
-     * @param response : 响应体
      * @return : void
      * @author : lijie
      * @date :2021/12/8 18:22
      * Update By lijie 2021/12/8 18:22
      */
     @Override
-    public List<String> listFiles(JSONObject param, HttpServletResponse response) {
+    public List<String> listFiles(JSONObject param) {
         if (StrUtil.isBlank(OldFileAppContext.getContext().getSystemId())){
             return new ArrayList<>();
         }
+        // 1.准备分页参数
+        Page<FileInfo> page = new Page<>();
+        page.setCurrent(0);
+        int intValue = param.getIntValue(MAX_COUNT);
+        page.setSize(intValue);
+        if (intValue<=0||intValue>1000){
+            page.setSize(1000);
+        }
+        if (StrUtil.isNotBlank(param.getString(FROM))){
+            // 1.1根据传递的key获得分页开始数
+            Integer current = fileMapper.getPageSizeByPrefixAndFrom(param.getString(PREFIX),param.getString(FROM),
+                    OldFileAppContext.getContext().getSystemId(),
+                    SpringHelper.getInt("persagy.common.sql.limit", 1000));
+            if (null!=current){
+                page.setCurrent(current);
+            }
+        }
 
-
-
-        return null;
+        List<FileInfo> fileInfos = fileMapper
+                .queryListByPrefixAndFrom(page, param.getString(PREFIX), OldFileAppContext.getContext().getSystemId());
+        if (CollUtil.isEmpty(fileInfos)){
+            return new ArrayList<>();
+        }
+        return fileInfos.stream().map(FileInfo::getId).collect(Collectors.toList());
     }
 }

+ 26 - 13
dmp-cloud/dmp-file/src/main/resources/mapper/FileMapper.xml

@@ -21,19 +21,32 @@
         <result column="upload_status" property="uploadStatus"/>
     </resultMap>
     <select id="getFileInfoById" resultMap="FileMap">
-        SELECT
-            dfi.*,
-            dfm.file_bucket,
-            dfm.file_path,
-            dfm.file_size,
-            dfm.file_type,
-            dfm.upload_status
-        FROM
-            dt_file_info dfi
-                INNER JOIN dt_file_md5 dfm ON ( dfi.file_md5 = dfm.file_md5 )
-        WHERE dfi.id = #{fileId}
-          AND dfi.valid = TRUE
-          AND dfm.valid = TRUE;
+        SELECT dfi.*,dfm.file_bucket,dfm.file_path,dfm.file_size,dfm.file_type,dfm.upload_status FROM dt_file_info dfi
+        INNER JOIN dt_file_md5 dfm ON ( dfi.file_md5 = dfm.file_md5 ) WHERE dfi.id = #{fileId} AND dfi.valid = TRUE
+        AND dfm.valid = TRUE;
+    </select>
+
+    <sql id="selectList">
+        FROM dt_file_info dfi INNER JOIN dt_file_md5 dfm ON (dfi.valid = TRUE AND dfm.valid = TRUE AND dfi.file_md5 = dfm.file_md5
+        AND dfm.upload_status = 0 AND dfm.file_bucket = #{bucket}
+        <if test="null!=prefix and prefix.length>0">
+            AND dfm.file_path LIKE CONCAT('%',#{prefix},'%')
+        </if>) ORDER BY dfi.creation_time DESC
+    </sql>
+    <select id="getPageSizeByPrefixAndFrom" resultType="java.lang.Integer">
+        SET @rowNum = 0;
+        SELECT FLOOR((@rowNum := @rowNum + 1)/ #{size}) AS rowNum FROM (SELECT dfi.id AS id
+        <include refid="selectList">
+            <property name="bucket" value="#{bucket}"/>
+            <property name="prefix" value="#{prefix}"/>
+        </include>) AS df GROUP BY df.id HAVING df.id = #{from}
+    </select>
+    <select id="queryListByPrefixAndFrom" resultMap="FileMap">
+        SELECT dfi.*,dfm.file_bucket,dfm.file_path,dfm.file_size,dfm.file_type,dfm.upload_status
+        <include refid="selectList">
+            <property name="bucket" value="#{bucket}"/>
+            <property name="prefix" value="#{prefix}"/>
+        </include>
     </select>
 </mapper>