qirong
2023-12-06 badc83cad7a47ec00af8a45a3d1ecddb696bb17b
修改
10个文件已修改
1个文件已添加
259 ■■■■ 已修改文件
ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-prod.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/logback-plus.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/VideoRequest.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SynchronizationController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/uitil/HttpUtils.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java
@@ -78,7 +78,7 @@
        SysUserVo sysUserVo = userMapper.selectUserByUserName(username);
        SysUserRole userRole = new SysUserRole();
        userRole.setUserId(sysUserVo.getUserId());
        userRole.setRoleId(Long.valueOf(RoleType.VIDEO.getType()));
        userRole.setRoleId(Long.valueOf(RoleType.INTERNET.getType()));
        userRoleMapper.insert(userRole);
        recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.register.success"));
    }
ruoyi-admin/src/main/resources/application-prod.yml
@@ -105,7 +105,7 @@
spring.data:
  redis:
    # 地址
    host: 162.14.79.111
    host: 123.207.71.245
    # 端口,默认为6379
    port: 16379
    password: 234#Wersdf!
ruoyi-admin/src/main/resources/logback-plus.xml
@@ -40,7 +40,7 @@
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/VideoRequest.java
New file
@@ -0,0 +1,25 @@
package org.dromara.common.oss.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;
@NoArgsConstructor
@Data
public class VideoRequest {
    //文件
    private MultipartFile file;
    //文件名称
    private String fileName;
    @Override
    public String toString() {
        return "VideoRequest{" +
            "file=" + file +
            ", fileName='" + fileName + '\'' +
            '}';
    }
}
ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java
@@ -61,7 +61,8 @@
                    .setIdleConnectionTimeout(singleServerConfig.getIdleConnectionTimeout())
                    .setSubscriptionConnectionPoolSize(singleServerConfig.getSubscriptionConnectionPoolSize())
                    .setConnectionMinimumIdleSize(singleServerConfig.getConnectionMinimumIdleSize())
                    .setConnectionPoolSize(singleServerConfig.getConnectionPoolSize());
                    .setConnectionPoolSize(singleServerConfig.getConnectionPoolSize())
                    .setSubscriptionsPerConnection(5000);
            }
            // 集群配置方式 参考下方注释
            RedissonProperties.ClusterServersConfig clusterServersConfig = redissonProperties.getClusterServersConfig();
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SynchronizationController.java
@@ -3,6 +3,8 @@
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -10,13 +12,21 @@
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.oss.entity.SynchronousRequest;
import org.dromara.common.oss.entity.VideoRequest;
import org.dromara.common.redis.utils.QueueUtils;
import org.dromara.system.domain.properties.Boundary;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.dromara.system.uitil.HttpUtils;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -28,10 +38,11 @@
@RequestMapping("/resource/synchronization")
public class SynchronizationController {
    private final ISysOssService ossService;
    /**
     * 上传同步
     * 上传同步  视频专网
     * @param
     * @return
     */
@@ -49,6 +60,24 @@
        return R.ok();
    }
    @PostMapping(value = "/uploadTwo")
    public R uploadTwo(VideoRequest request1) throws IOException {
        if (ObjectUtil.isNull(request1.getFile())) {
            return R.fail("上传文件不能为空");
        }
        SysOssVo oss = ossService.upload3(request1);
        //添加队列数据
        QueueUtils.addDelayedQueueObject("OSS", oss.getOssId().toString(), 1, TimeUnit.DAYS);
        log.info("通道: {} , 发送数据: {}", "OSS", oss.getOssId());
        SysOssUploadVo uploadVo = new SysOssUploadVo();
        uploadVo.setUrl(oss.getUrl());
        uploadVo.setFileName(oss.getOriginalName());
        uploadVo.setOssId(oss.getOssId().toString());
        uploadVo.setPassword(oss.getPassword());
        return R.ok(uploadVo);
    }
    /**
     * 删除同步
     *
@@ -56,7 +85,6 @@
     */
    @PostMapping(value = "/delete")
    public R<Void> remove(String ossId) throws Exception {
        ossId = "12312312";
        return ossService.deleteWithValidByIds(List.of(convert(ossId)), true,"000000") ? R.ok() : R.fail("提取码错误!");
    }
@@ -70,4 +98,5 @@
        return longArray;
    }
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java
@@ -4,11 +4,15 @@
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONArray;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.QueryGroup;
import org.dromara.common.oss.entity.SynchronousRequest;
import org.dromara.common.oss.entity.VideoRequest;
import org.dromara.common.redis.utils.CacheUtils;
import org.dromara.common.redis.utils.QueueUtils;
import org.dromara.common.web.core.BaseController;
@@ -18,6 +22,7 @@
import org.dromara.common.mybatis.core.page.TableDataInfo;
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.SysOssUploadVo;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.mapper.SysOssMapper;
@@ -25,6 +30,7 @@
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor;
import org.dromara.system.uitil.HttpUtils;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -32,6 +38,7 @@
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -48,6 +55,7 @@
@RequestMapping("/resource/oss")
public class SysOssController extends BaseController {
    private final Boundary boundary;
    private final ISysOssService ossService;
    private final SysOssMapper ossMapper;
    /**
@@ -72,33 +80,66 @@
        return R.ok(list);
    }
//    /**
//     * 上传OSS对象存储  视频专网
//     *
//     * @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) throws IOException {
//        if (ObjectUtil.isNull(file)) {
//            return R.fail("上传文件不能为空");
//        }
//        SysOssVo oss = ossService.upload(file);
//        SynchronousRequest request = new SynchronousRequest();
//        request.setFile(file);
//
//
//
//        //添加队列数据
//        QueueUtils.addDelayedQueueObject("OSS", oss.getOssId().toString(), 1, TimeUnit.DAYS);
//        log.info("通道: {} , 发送数据: {}", "OSS", oss.getOssId());
//        SysOssUploadVo uploadVo = new SysOssUploadVo();
//        uploadVo.setUrl(oss.getUrl());
//        uploadVo.setFileName(oss.getOriginalName());
//        uploadVo.setOssId(oss.getOssId().toString());
//        uploadVo.setPassword(oss.getPassword());
//        return R.ok(uploadVo);
//    }
    /**
     * 上传OSS对象存储
     * 上传OSS对象存储  互联网
     *
     * @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) throws IOException {
    public R<String> upload(@RequestPart("file") MultipartFile file) throws IOException {
        if (ObjectUtil.isNull(file)) {
            return R.fail("上传文件不能为空");
        }
        SysOssVo oss = ossService.upload(file);
        SynchronousRequest request = new SynchronousRequest();
        VideoRequest request = new VideoRequest();
        request.setFile(file);
        request.setFileName(file.getOriginalFilename());
        String post = post(request);
        String password = post.substring(post.indexOf("password\":\"") + 9, post.indexOf("\"}"));
        return R.ok(password);
    }
        //添加队列数据
        QueueUtils.addDelayedQueueObject("OSS", oss.getOssId().toString(), 300, TimeUnit.SECONDS);
        log.info("通道: {} , 发送数据: {}", "OSS", oss.getOssId());
        SysOssUploadVo uploadVo = new SysOssUploadVo();
        uploadVo.setUrl(oss.getUrl());
        uploadVo.setFileName(oss.getOriginalName());
        uploadVo.setOssId(oss.getOssId().toString());
        uploadVo.setPassword(oss.getPassword());
        return R.ok(uploadVo);
    private String post(VideoRequest request) throws IOException {
        HashMap<String, String> headers = new HashMap<>(3);
        String requestUrl = boundary.getChief() +  "/resource/synchronization/uploadTwo";
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
        headers.put("content-type", "application/json");
        // 发送post请求
        String resultData = HttpUtils.sendPostRequest2(requestUrl, request);
        // 并接收返回结果
        System.out.println(resultData);
        return resultData;
    }
    /**
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java
@@ -52,18 +52,18 @@
        log.info("初始化OSS配置成功");
        log.info("通道: {} 监听中......", "OSS");
        // 项目初始化设置一次即可
        QueueUtils.subscribeBlockingQueue("OSS", (String ossId) -> {
            // 观察接收时间
            log.info("通道: {}, 收到数据: {}", "OSS", ossId);
            SysOssVo vo = ossMapper.selectVoById(ossId);
            client.delete( vo.getUrl());
            ossMapper.deleteById(Long.valueOf(ossId));
//        QueueUtils.subscribeBlockingQueue("OSS", (String ossId) -> {
//            // 观察接收时间
//            log.info("通道: {}, 收到数据: {}", "OSS", ossId);
//            SysOssVo vo = ossMapper.selectVoById(ossId);
//            client.delete( vo.getUrl());
//            ossMapper.deleteById(Long.valueOf(ossId));
//            try {
//                HttpUtils.sendDeleteRequest(boundary.getLocalhost() + "/resource/synchronization/delete",ossId);
//                HttpUtils.sendDeleteRequest(boundary.getVideo() + "/resource/synchronization/delete",ossId);
//            } catch (IOException e) {
//                throw new RuntimeException(e);
//            }
        });
//        });
    }
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java
@@ -4,6 +4,7 @@
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.oss.entity.SynchronousRequest;
import org.dromara.common.oss.entity.VideoRequest;
import org.dromara.system.domain.bo.SysOssBo;
import org.dromara.system.domain.vo.SysOssVo;
import jakarta.servlet.http.HttpServletResponse;
@@ -30,6 +31,8 @@
    SysOssVo upload(MultipartFile file) throws IOException;
    SysOssVo upload3(VideoRequest request) throws IOException;
    SysOssVo upload2(SynchronousRequest request) throws ParseException;
//    SysOssVo upload(File file);
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java
@@ -8,6 +8,7 @@
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;
@@ -24,6 +25,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;
@@ -158,6 +160,22 @@
        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
@@ -166,7 +184,7 @@
     */
    @Override
    public SysOssVo upload2(SynchronousRequest request) throws ParseException {
        String originalfileName = request.getFile().getOriginalFilename();
        String originalfileName = request.getFileName();
        String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
        OssClient storage = OssFactory.instance();
        UploadResult uploadResult;
@@ -176,8 +194,10 @@
            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.getCreateTime());
            request.getPassword(), "1731588854831022081", request.getFileName(), request.getCreateTime());
    }
//    @Override
@@ -205,12 +225,12 @@
        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");
        request.setCreateBy("1731588854831022081");
        request.setOssId(String.valueOf(oss.getOssId()));
//        request.setOssId();
        post(request);
        SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
@@ -261,7 +281,7 @@
            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;
@@ -299,16 +319,16 @@
    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();
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
        String jsonString = "";
        try {
            // 将Java对象转换为JSON字符串
//            request.setFileName(URLEncoder.encode(request.getFileName(),"utf-8"));
            jsonString = objectMapper.writeValueAsString(request);
            System.out.println(jsonString);
//            System.out.println(jsonString);
        } catch (Exception e) {
            e.printStackTrace();
//            e.printStackTrace();
        }
        headers.put("content-type", "application/json");
        // 发送post请求
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/uitil/HttpUtils.java
@@ -14,6 +14,7 @@
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.dromara.common.oss.entity.SynchronousRequest;
import org.dromara.common.oss.entity.VideoRequest;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
@@ -117,7 +118,7 @@
    }
    /**
     * 上传同步
     * 上传同步 视频专网
     * @param url
     * @param entity
     * @return
@@ -152,6 +153,63 @@
    }
    /**
     * 上传同步 视频专网
     * @param url
     * @param entity
     * @return
     * @throws IOException
     */
    public static String sendPostRequest2(String url, VideoRequest entity) throws IOException {
        org.apache.http.client.HttpClient httpClient = HttpClientBuilder.create().build();
        HttpPost httpPost = new HttpPost(url);
        ContentType contentType = ContentType.create("multipart/form-data", StandardCharsets.UTF_8);
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        // 添加MultipartFile参数
        builder.addBinaryBody("file", entity.getFile().getBytes(), ContentType.MULTIPART_FORM_DATA, entity.getFile().getOriginalFilename());
        // 添加String参数
        builder.addTextBody("fileName", entity.getFileName(), contentType);
        HttpEntity multipart = builder.build();
        httpPost.setEntity(multipart);
        HttpResponse response = httpClient.execute(httpPost);
        String responseBody = EntityUtils.toString(response.getEntity());
        System.out.println("Response: " + responseBody);
        return responseBody;
    }
    /**
     * 上传同步2
     * @param url
     * @param entity
     * @return
     * @throws IOException
     */
    public static String sendPostRequestTwo(String url, SynchronousRequest entity) throws IOException {
        org.apache.http.client.HttpClient httpClient = HttpClientBuilder.create().build();
        HttpPost httpPost = new HttpPost(url);
        ContentType contentType = ContentType.create("multipart/form-data", StandardCharsets.UTF_8);
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        // 添加MultipartFile参数
        builder.addBinaryBody("file", entity.getFile().getBytes(), ContentType.MULTIPART_FORM_DATA, entity.getFile().getOriginalFilename());
        HttpEntity multipart = builder.build();
        httpPost.setEntity(multipart);
        HttpResponse response = httpClient.execute(httpPost);
        String responseBody = EntityUtils.toString(response.getEntity());
        System.out.println("Response: " + responseBody);
        return responseBody;
    }
    /**
     * 删除同步
     * @param url
//     * @param parameter