From fb766b5ff9f913561f76aa747c76eae5c3678589 Mon Sep 17 00:00:00 2001
From: qirong <2032486488@qq.com>
Date: 星期五, 08 十二月 2023 14:08:54 +0800
Subject: [PATCH] 三方同步

---
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java |  171 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 161 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..22d6d70 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,16 @@
 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.fasterxml.jackson.databind.SerializationFeature;
+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 +23,22 @@
 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.entity.VideoRequest;
 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 +48,9 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URLEncoder;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -47,6 +62,7 @@
 @Service
 public class SysOssServiceImpl implements ISysOssService, OssService {
 
+    private final Boundary boundary;
     private final SysOssMapper baseMapper;
 
     @Override
@@ -85,6 +101,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 +110,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 +146,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 +157,121 @@
             throw new ServiceException(e.getMessage());
         }
         // 淇濆瓨鏂囦欢淇℃伅
-        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
+        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, file);
     }
 
     @Override
-    public SysOssVo upload(File file) {
-        String originalfileName = file.getName();
+    public SysOssVo upload3(VideoRequest request) throws IOException {
+
+        String originalfileName = request.getFileName();
         String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
         OssClient storage = OssFactory.instance();
-        UploadResult uploadResult = storage.uploadSuffix(file, suffix);
+        UploadResult uploadResult;
+        try {
+            uploadResult = storage.uploadSuffix(request.getFile().getBytes(), suffix, request.getFile().getContentType());
+        } catch (IOException e) {
+            throw new ServiceException(e.getMessage());
+        }
         // 淇濆瓨鏂囦欢淇℃伅
-        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult);
+        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, request.getFile());
     }
 
+    /**
+     * 鍚屾
+     * @param
+     * @param
+     * @return
+     */
+    @Override
+    public SysOssVo upload2(SynchronousRequest request) throws ParseException {
+        String originalfileName = request.getFileName();
+        String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
+        OssClient storage = OssFactory.instance();
+        UploadResult uploadResult;
+        try {
+            uploadResult = storage.uploadSuffix2(request.getFile().getBytes(), request.getPath(), request.getFile().getContentType());
+        } catch (IOException e) {
+            throw new ServiceException(e.getMessage());
+        }
+        // 淇濆瓨鏂囦欢淇℃伅
+        System.out.println("canshu:" + "," + originalfileName +"," + suffix +"," + storage.getConfigKey() +"," + uploadResult + "," +request.getOssId()
+         +"," + request.getPassword() +"," + request.getCreateBy() +"," + request.getFileName() +"," +  request.getCreateTime());
+        return buildResultEntity2(originalfileName, suffix, storage.getConfigKey(), uploadResult,request.getOssId(),
+            request.getPassword(), "1731588854831022081", request.getFileName(), request.getCreateTime());
+    }
+
+//    @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());
+        request.setCreateTime(format.format(oss.getCreateTime()));
+        request.setPassword(oss.getPassword());
+        request.setCreateBy("1731588854831022081");
+        request.setOssId(String.valueOf(oss.getOssId()));
+//        request.setOssId();
+//        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, String createTime) throws ParseException {
+        SysOss oss = new SysOss();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        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));
+        oss.setCreateTime(format.parse(createTime));
         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 +279,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.getVideo() + "/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 +316,25 @@
         }
         return oss;
     }
+
+    private String post(SynchronousRequest request) throws IOException {
+        HashMap<String, String> headers = new HashMap<>(3);
+        String requestUrl = boundary.getVideo() +  "/resource/synchronization/upload";
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
+        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