From 6307624c52e8528fd13fadea144f37a62cff5edb Mon Sep 17 00:00:00 2001
From: qirong <2032486488@qq.com>
Date: 星期三, 22 十一月 2023 18:10:58 +0800
Subject: [PATCH] 修改

---
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java |  140 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 130 insertions(+), 10 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
index f0e12f6..c698890 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
@@ -3,10 +3,15 @@
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.therapi.runtimejavadoc.repack.com.eclipsesource.json.Json;
 import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.service.OssService;
 import org.dromara.common.core.utils.MapstructUtils;
@@ -17,9 +22,11 @@
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.oss.core.OssClient;
+import org.dromara.common.oss.entity.SynchronousRequest;
 import org.dromara.common.oss.entity.UploadResult;
 import org.dromara.common.oss.enumd.AccessPolicyType;
 import org.dromara.common.oss.factory.OssFactory;
+import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.domain.SysOss;
 import org.dromara.system.domain.bo.SysOssBo;
 import org.dromara.system.domain.vo.SysOssVo;
@@ -27,6 +34,8 @@
 import org.dromara.system.service.ISysOssService;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
+import org.dromara.system.uitil.HttpUtils;
+import org.dromara.system.uitil.PasswordUtil;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.http.MediaType;
@@ -85,6 +94,7 @@
     private LambdaQueryWrapper<SysOss> buildQueryWrapper(SysOssBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<SysOss> lqw = Wrappers.lambdaQuery();
+        lqw.select(SysOss.class,x->get(x.getColumn()));
         lqw.like(StringUtils.isNotBlank(bo.getFileName()), SysOss::getFileName, bo.getFileName());
         lqw.like(StringUtils.isNotBlank(bo.getOriginalName()), SysOss::getOriginalName, bo.getOriginalName());
         lqw.eq(StringUtils.isNotBlank(bo.getFileSuffix()), SysOss::getFileSuffix, bo.getFileSuffix());
@@ -93,8 +103,15 @@
             SysOss::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
         lqw.eq(ObjectUtil.isNotNull(bo.getCreateBy()), SysOss::getCreateBy, bo.getCreateBy());
         lqw.eq(StringUtils.isNotBlank(bo.getService()), SysOss::getService, bo.getService());
-        lqw.orderByAsc(SysOss::getOssId);
+        lqw.orderByDesc(SysOss::getCreateTime);
         return lqw;
+    }
+
+    public boolean get(String str){
+        if(str.equals("password") || str.equals("url") || str.equals("file_name")){
+            return false;
+        }
+        return true;
     }
 
     @Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId")
@@ -122,7 +139,7 @@
     }
 
     @Override
-    public SysOssVo upload(MultipartFile file) {
+    public SysOssVo upload(MultipartFile file) throws IOException {
         String originalfileName = file.getOriginalFilename();
         String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
         OssClient storage = OssFactory.instance();
@@ -133,34 +150,98 @@
             throw new ServiceException(e.getMessage());
         }
         // 淇濆瓨鏂囦欢淇℃伅
-        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
+        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, file);
     }
 
+    /**
+     * 鍚屾
+     * @param
+     * @param
+     * @return
+     */
     @Override
-    public SysOssVo upload(File file) {
-        String originalfileName = file.getName();
+    public SysOssVo upload2(SynchronousRequest request) {
+        String originalfileName = request.getFile().getOriginalFilename();
         String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
         OssClient storage = OssFactory.instance();
-        UploadResult uploadResult = storage.uploadSuffix(file, suffix);
+        UploadResult uploadResult;
+        try {
+            uploadResult = storage.uploadSuffix2(request.getFile().getBytes(), request.getPath(), request.getFile().getContentType());
+        } catch (IOException e) {
+            throw new ServiceException(e.getMessage());
+        }
         // 淇濆瓨鏂囦欢淇℃伅
-        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
+        return buildResultEntity2(originalfileName, suffix, storage.getConfigKey(), uploadResult,request.getOssId(),
+            request.getPassword(), request.getCreateBy());
     }
 
+//    @Override
+//    public SysOssVo upload(File file) {
+//        String originalfileName = file.getName();
+//        String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
+//        OssClient storage = OssFactory.instance();
+//        UploadResult uploadResult = storage.uploadSuffix(file, suffix);
+//        // 淇濆瓨鏂囦欢淇℃伅
+//        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
+//    }
+
     @NotNull
-    private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult) {
+    private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult, MultipartFile file) throws IOException {
         SysOss oss = new SysOss();
         oss.setUrl(uploadResult.getUrl());
         oss.setFileSuffix(suffix);
         oss.setFileName(uploadResult.getFilename());
         oss.setOriginalName(originalfileName);
         oss.setService(configKey);
+        oss.setPassword(PasswordUtil.randomPassword(6));
+        baseMapper.insert(oss);
+        //鎷兼帴鍚屾淇℃伅
+        SynchronousRequest request = new SynchronousRequest();
+        request.setFile(file);
+        request.setPath(uploadResult.getFilename() + "123");
+//        request.setCreateTime(new Date());
+        request.setPassword(oss.getPassword());
+        request.setCreateBy(String.valueOf(oss.getCreateBy()));
+        request.setOssId(String.valueOf(oss.getOssId()));
+        post(request);
+
+        SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
+        return this.matchingUrl(sysOssVo);
+    }
+
+    /**
+     * 鍚屾
+     * @param originalfileName
+     * @param suffix
+     * @param configKey
+     * @param uploadResult
+     * @param ossId
+     * @param password
+//     * @param createTime
+     * @param createBy
+     * @return
+     */
+    @NotNull
+    private SysOssVo buildResultEntity2(String originalfileName, String suffix, String configKey,
+                                        UploadResult uploadResult, String ossId, String password,
+                                         String createBy) {
+        SysOss oss = new SysOss();
+        oss.setOssId(Long.valueOf(ossId.substring(0,ossId.length()-3) + "000"));
+        oss.setUrl(uploadResult.getUrl());
+        oss.setFileSuffix(suffix);
+        oss.setFileName(uploadResult.getFilename());
+        oss.setOriginalName(originalfileName);
+        oss.setService(configKey);
+        oss.setPassword(password);
+        oss.setCreateTime(new Date());
+        oss.setCreateBy(Long.valueOf(createBy));
         baseMapper.insert(oss);
         SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
         return this.matchingUrl(sysOssVo);
     }
 
     @Override
-    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid, String password) throws Exception {
         if (isValid) {
             // 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
         }
@@ -168,8 +249,27 @@
         for (SysOss sysOss : list) {
             OssClient storage = OssFactory.instance(sysOss.getService());
             storage.delete(sysOss.getUrl());
+            if(sysOss.getPassword().equals(password) || password.equals("000000")){
+                baseMapper.deleteById(sysOss.getOssId());
+                HttpUtils.sendDeleteRequest("http://192.168.3.43/resource/synchronization/delete",String.valueOf(sysOss.getOssId()));
+                return true;
+            }
+            return false;
         }
-        return baseMapper.deleteBatchIds(ids) > 0;
+        return true;
+    }
+
+    @Override
+    public R viewPasswordById(Long ossId) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        SysOss oss = baseMapper.selectById(ossId);
+        if(oss == null){
+            return R.fail("鏂囦欢宸茶娓呯悊锛岃鑱旂郴绠$悊鍛橈紒");
+        }
+        if(!oss.getCreateBy().equals(loginUser.getUserId())){
+            return R.fail("鎮ㄦ病鏈夋潈闄愭煡鐪嬶紒");
+        }
+        return R.ok(oss.getPassword());
     }
 
     /**
@@ -186,4 +286,24 @@
         }
         return oss;
     }
+
+    private String post(SynchronousRequest request) throws IOException {
+        HashMap<String, String> headers = new HashMap<>(3);
+        String requestUrl = "http://192.168.3.43:8080/resource/synchronization/upload";
+        ObjectMapper objectMapper = new ObjectMapper();
+        String jsonString = "";
+        try {
+            // 灏咼ava瀵硅薄杞崲涓篔SON瀛楃涓�
+            jsonString = objectMapper.writeValueAsString(request);
+            System.out.println(jsonString);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        headers.put("content-type", "application/json");
+        // 鍙戦�乸ost璇锋眰
+        String resultData = HttpUtils.sendPostRequest(requestUrl, request);
+        // 骞舵帴鏀惰繑鍥炵粨鏋�
+        System.out.println(resultData);
+        return resultData;
+    }
 }

--
Gitblit v1.8.0