xiangpei
2025-02-17 15e8b9f998c99dc19a07fffac91a7982e724aeff
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
@@ -8,7 +8,10 @@
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.apache.commons.io.IOUtils;
import org.apache.xmlbeans.impl.common.IOUtil;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
@@ -24,6 +27,7 @@
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;
@@ -41,12 +45,12 @@
import org.springframework.cache.annotation.Cacheable;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -157,27 +161,71 @@
        return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult, file);
    }
    @Override
    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;
        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, request.getFile());
    }
    /**
     * 同步
     * 同步 定时拉取
     * @param
     * @param
     * @return
     */
    @Override
    public SysOssVo upload2(SynchronousRequest request) {
        String originalfileName = request.getFile().getOriginalFilename();
    public SysOssVo upload2(SynchronousRequest request) throws ParseException {
        String originalfileName = request.getFileName();
        String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
        OssClient storage = OssFactory.instance();
//        String type = request.getFileName().substring(14,request.getFileName().length());
        String type = request.getFile().getContentType();
        UploadResult uploadResult;
        try {
            uploadResult = storage.uploadSuffix2(request.getFile().getBytes(), request.getPath(), request.getFile().getContentType());
            uploadResult = storage.uploadSuffix2(request.getFile().getBytes(), request.getPath(), type);
        } 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(), request.getCreateBy(), request.getFileName());
            request.getPassword(), "1731588854831022081", request.getFileName(), request.getCreateTime());
    }
//    /**
//     * 同步 定时拉取
//     * @param
//     * @param
//     * @return
//     */
//    @Override
//    public SysOssVo upload3(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) {
@@ -204,13 +252,13 @@
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        request.setFile(file);
        request.setFileName(oss.getOriginalName());
        request.setPath(uploadResult.getFilename() + "1");
        request.setPath(uploadResult.getFilename());
        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);
        request.setCreateBy("1731588854831022081");
        request.setOssId(String.valueOf(oss.getOssId()));
//        request.setOssId("123890");
        post(request);
        SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
        return this.matchingUrl(sysOssVo);
@@ -231,8 +279,9 @@
    @NotNull
    private SysOssVo buildResultEntity2(String originalfileName, String suffix, String configKey,
                                        UploadResult uploadResult, String ossId, String password,
                                         String createBy, String fileName) {
                                         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);
@@ -242,6 +291,7 @@
        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);
@@ -258,12 +308,23 @@
            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()));
                HttpUtils.sendDeleteRequest(boundary.getVideo() + "/resource/synchronization/delete",String.valueOf(sysOss.getOssId()));
                return true;
            }
            return false;
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteByIds(Collection<Long> ids) {
        List<SysOss> list = baseMapper.selectBatchIds(ids);
        for (SysOss sysOss : list) {
            OssClient storage = OssFactory.instance(sysOss.getService());
            storage.delete(sysOss.getUrl());
            baseMapper.deleteById(sysOss.getOssId());
        }
    }
    @Override
@@ -296,17 +357,9 @@
    private String post(SynchronousRequest request) throws IOException {
        HashMap<String, String> headers = new HashMap<>(3);
        String requestUrl = boundary.getLocalhost() +  "/resource/synchronization/upload";
        String requestUrl = boundary.getVideo() +  "/resource/synchronization/upload";
        ObjectMapper objectMapper = new ObjectMapper();
        String jsonString = "";
        try {
            // 将Java对象转换为JSON字符串
//            request.setFileName(URLEncoder.encode(request.getFileName(),"utf-8"));
            jsonString = objectMapper.writeValueAsString(request);
            System.out.println(jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
        headers.put("content-type", "application/json");
        // 发送post请求
        String resultData = HttpUtils.sendPostRequest(requestUrl, request);