wenhongquan 1 rok temu
rodzic
commit
2723fd0762

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -169,7 +169,7 @@ mybatis-encryptor:
 # api接口加密
 api-decrypt:
   # 是否开启全局接口加密
-  enabled: false
+  enabled: true
   # AES 加密头标识
   headerFlag: encrypt-key
   # 响应加密公钥 非对称算法的公私钥 如:SM2,RSA 使用者请自行更换

+ 1 - 0
ruoyi-modules/ruoyi-filemanager/src/main/java/org/dromara/filemanager/service/impl/TblArchivesServiceImpl.java

@@ -91,6 +91,7 @@ public class TblArchivesServiceImpl implements ITblArchivesService {
         lqw.eq(StringUtils.isNotBlank(bo.getEcode()), TblArchives::getEcode, bo.getEcode());
         lqw.like(StringUtils.isNotBlank(bo.getSaveAddr()), TblArchives::getSaveAddr, bo.getSaveAddr());
         lqw.eq(StringUtils.isNotBlank(bo.getExt1()), TblArchives::getExt1, bo.getExt1());
+        lqw.like(StringUtils.isNotBlank(bo.getRemark()), TblArchives::getRemark, bo.getRemark());
         lqw.eq(StringUtils.isNotBlank(bo.getExt2()), TblArchives::getExt2, bo.getExt2());
         return lqw;
     }

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java

@@ -34,7 +34,6 @@ public class SysOperlogController extends BaseController {
     /**
      * 获取操作日志记录列表
      */
-    @SaCheckPermission("monitor:operlog:list")
     @GetMapping("/list")
     public TableDataInfo<SysOperLogVo> list(SysOperLogBo operLog, PageQuery pageQuery) {
         return operLogService.selectPageOperLogList(operLog, pageQuery);

+ 8 - 8
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java

@@ -43,7 +43,6 @@ public class SysOssController extends BaseController {
     /**
      * 查询OSS对象存储列表
      */
-    @SaCheckPermission("system:oss:list")
     @GetMapping("/list")
     public TableDataInfo<SysOssVo> list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) {
         return ossService.queryPageList(bo, pageQuery);
@@ -59,7 +58,6 @@ public class SysOssController extends BaseController {
      *
      * @param ossIds OSS对象ID串
      */
-    @SaCheckPermission("system:oss:list")
     @GetMapping("/listByIds/{ossIds}")
     @Log(title = "OSS对象存储", businessType = BusinessType.OTHER)
     public R<List<SysOssVo>> listByIds(@NotEmpty(message = "主键不能为空")
@@ -74,7 +72,6 @@ public class SysOssController extends BaseController {
      *
      * @param file 文件
      */
-    @SaCheckPermission("system:oss:upload")
     @Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
     @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
     public R<SysOssUploadVo> upload(@RequestPart("file") MultipartFile file) {
@@ -94,11 +91,15 @@ public class SysOssController extends BaseController {
      *
      * @param ossId OSS对象ID
      */
-    @SaCheckPermission("system:oss:download")
     @Log(title = "OSS对象存储", businessType = BusinessType.EXPORT)
-    @GetMapping("/download/{ossId}")
-    public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException {
-        ossService.download(ossId, response);
+    @GetMapping("/download/{ossIds}")
+    public void download(@PathVariable String ossIds, HttpServletResponse response) throws IOException {
+        if(ossIds.split(",").length>1){
+            ossService.downloads(Arrays.stream(ossIds.split(",")).map(i->Long.parseLong(i)).toList(), response);
+        }else{
+            ossService.download(Long.parseLong(ossIds), response);
+        }
+
     }
 
     /**
@@ -106,7 +107,6 @@ public class SysOssController extends BaseController {
      *
      * @param ossIds OSS对象ID串
      */
-    @SaCheckPermission("system:oss:remove")
     @Log(title = "OSS对象存储", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ossIds}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java

@@ -32,6 +32,8 @@ public interface ISysOssService {
 
     void download(Long ossId, HttpServletResponse response) throws IOException;
 
+    void downloads(List<Long> ossIds, HttpServletResponse response) throws IOException;
+
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
     TableDataInfo<SysOssFilesVo> queryPageFileList(SysOssBo sysOss,PageQuery pageQuery);

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java

@@ -55,6 +55,8 @@ public class SysOperLogServiceImpl implements ISysOperLogService {
         LambdaQueryWrapper<SysOperLog> lqw = new LambdaQueryWrapper<SysOperLog>()
             .like(StringUtils.isNotBlank(operLog.getOperIp()), SysOperLog::getOperIp, operLog.getOperIp())
             .like(StringUtils.isNotBlank(operLog.getTitle()), SysOperLog::getTitle, operLog.getTitle())
+            .like(StringUtils.isNotBlank(operLog.getJsonResult()), SysOperLog::getJsonResult, operLog.getJsonResult())
+            .like(StringUtils.isNotBlank(operLog.getOperUrl()), SysOperLog::getOperUrl, operLog.getOperUrl())
             .eq(operLog.getBusinessType() != null && operLog.getBusinessType() > 0,
                 SysOperLog::getBusinessType, operLog.getBusinessType())
             .func(f -> {

+ 54 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java

@@ -1,8 +1,12 @@
 package org.dromara.system.service.impl;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.net.URLEncodeUtil;
+import cn.hutool.core.util.CharsetUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.ZipUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -133,6 +137,56 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
     }
 
     @Override
+    public void downloads(List<Long> ossId, HttpServletResponse response) throws IOException {
+
+        List<SysOssVo> mediaFileEntityList = new ArrayList<>();
+        for (Long id : ossId) {
+            SysOssVo vo = SpringUtils.getAopProxy(this).getById(id);
+            mediaFileEntityList.add(vo);
+        }
+//        List<SysOssVo> mediaFileEntityList = SpringUtils.getAopProxy(this).listByIds(ossId);
+        if (mediaFileEntityList.size()<1) {
+            throw new ServiceException("文件数据不存在!");
+        }
+        int i = 0;
+        //如果有附件 进行zip处理
+        if (mediaFileEntityList != null && mediaFileEntityList.size() > 0) {
+            List<File> files = new ArrayList<>();
+            try {
+                //被压缩文件流集合
+                InputStream[] srcFiles = new InputStream[mediaFileEntityList.size()];
+                //被压缩文件名称
+                String[] srcFileNames = new String[mediaFileEntityList.size()];
+
+                for (SysOssVo entity : mediaFileEntityList) {
+                    //以下代码为获取图片inputStream
+                    OssClient storage = OssFactory.instance(entity.getService());
+                    try(InputStream inputStream = storage.getObjectContent(entity.getUrl())) {
+                        File temp= FileUtil.createTempFile();
+                        int available = inputStream.available();
+                        IoUtil.copy(inputStream, FileUtil.getOutputStream(temp), available);
+                        files.add(temp);
+                        srcFiles[i] = FileUtil.getInputStream(temp);
+                        srcFileNames[i] = entity.getOriginalName();
+                        i++;
+                    } catch (Exception e) {
+                        throw new ServiceException(e.getMessage());
+                    }
+                }
+                response.setCharacterEncoding("UTF-8");
+                FileUtils.setAttachmentResponseHeader(response, "下载.zip");
+                response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8");
+                //多个文件压缩成压缩包返回
+                ZipUtil.zip(response.getOutputStream(), srcFileNames, srcFiles);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }finally {
+                files.stream().map(File::delete);
+            }
+        }
+    }
+
+    @Override
     public SysOssVo upload(MultipartFile file) {
         String originalfileName = file.getOriginalFilename();
         String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());