From 9f6f07f1649f01258aaad541d9fa1dfca63641c0 Mon Sep 17 00:00:00 2001
From: qirong <2032486488@qq.com>
Date: 星期一, 04 十二月 2023 11:59:58 +0800
Subject: [PATCH] 日期

---
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java |  148 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 138 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..9fb83c1 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,16 +22,21 @@
 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.properties.Boundary;
 import org.dromara.system.domain.vo.SysOssVo;
 import org.dromara.system.mapper.SysOssMapper;
 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;
@@ -36,6 +46,8 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -47,6 +59,7 @@
 @Service
 public class SysOssServiceImpl implements ISysOssService, OssService {
 
+    private final Boundary boundary;
     private final SysOssMapper baseMapper;
 
     @Override
@@ -85,6 +98,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 +107,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 +143,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 +154,101 @@
             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(), request.getFileName());
     }
 
+//    @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();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        request.setFile(file);
+        request.setFileName(oss.getOriginalName());
+        request.setPath(uploadResult.getFilename() + "1");
+        request.setCreateTime(format.format(oss.getCreateTime()));
+        request.setPassword(oss.getPassword());
+        request.setCreateBy(String.valueOf(oss.getCreateBy()));
+//        request.setOssId(String.valueOf(oss.getOssId()));
+        request.setOssId("12312312");
+//        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, String fileName) {
+        SysOss oss = new SysOss();
+        oss.setOssId(Long.valueOf(ossId));
+        oss.setUrl(uploadResult.getUrl());
+        oss.setFileSuffix(suffix);
+        oss.setFileName(uploadResult.getFilename());
+        oss.setOriginalName(fileName);
+        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 +256,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(boundary.getLocalhost() + "/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 +293,25 @@
         }
         return oss;
     }
+
+    private String post(SynchronousRequest request) throws IOException {
+        HashMap<String, String> headers = new HashMap<>(3);
+        String requestUrl = boundary.getLocalhost() +  "/resource/synchronization/upload";
+        ObjectMapper objectMapper = new ObjectMapper();
+        String jsonString = "";
+        try {
+            // 灏咼ava瀵硅薄杞崲涓篔SON瀛楃涓�
+//            request.setFileName(URLEncoder.encode(request.getFileName(),"utf-8"));
+            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