mitao
2024-06-18 06f59ebb282ab74565585f77dde772d228d6075a
修改bug
1 文件已重命名
2个文件已删除
9个文件已修改
289 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/lib/aws-java-sdk-s3.jar 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/pom.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/pom.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/StateCloudObsUtil.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/forepart/ForepartMemberController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/lib/aws-java-sdk-s3.jar
Binary files differ
ruoyi-api/ruoyi-api-system/pom.xml
@@ -39,14 +39,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>aws-java-sdk-s3</groupId>
            <artifactId>aws</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/aws-java-sdk-s3.jar</systemPath>
        </dependency>
    </dependencies>
</project>
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java
@@ -1,14 +1,14 @@
package com.ruoyi.system.api;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.SysFile;
import com.ruoyi.system.api.factory.RemoteFileFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.SysFile;
import com.ruoyi.system.api.factory.RemoteFileFallbackFactory;
/**
 * 文件服务
@@ -26,4 +26,7 @@
     */
    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
    @PostMapping(value = "/obs/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public R<String> obsUpload(@RequestPart("file") MultipartFile file);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java
@@ -1,13 +1,13 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.RemoteFileService;
import com.ruoyi.system.api.domain.SysFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.RemoteFileService;
import com.ruoyi.system.api.domain.SysFile;
/**
 * 文件服务降级处理
@@ -30,6 +30,12 @@
            {
                return R.fail("上传文件失败:" + throwable.getMessage());
            }
            @Override
            public R<String> obsUpload(MultipartFile file) {
                return R.fail("obs上传文件失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java
File was deleted
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -54,6 +54,7 @@
import com.ruoyi.common.core.utils.page.CollUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.RemoteFileService;
import com.ruoyi.system.api.constants.NotificationTypeConstant;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.AuctionGoods;
@@ -159,6 +160,8 @@
    @Resource
    private AuctionBidRecordMapper auctionBidRecordMapper;
    @Resource
    private RemoteFileService remoteFileService;
    public static RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build();
    // 配置您申请的KEY,在个人中心->我的数据,接口名称上方查看
    public static final String APPKEY = "";
@@ -776,8 +779,9 @@
            // 生成唯一编号
            Long nextId = IDhelper.getNextId();
            auctionSalesroom.setAuctionSalesroomNo(nextId.toString());
            String qrCodeToObs = CreateQrCode.createQRCodeToObs(nextId.toString());
            auctionSalesroom.setQrCode(qrCodeToObs);
            String url = remoteFileService.obsUpload(
                    CreateQrCode.createQRCodeStream(nextId.toString())).getData();
            auctionSalesroom.setQrCode(url);
            // 添加
            this.save(auctionSalesroom);
            List<GoodsStockUpdDTO> goodsStockUpdDTOS = auctionSalesroomGoods.stream().map(item -> {
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java
@@ -5,18 +5,23 @@
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.ruoyi.system.api.util.HuaWeiOBSUtil;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Base64;
import java.util.HashMap;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
public class CreateQrCode {
    private static final String base64Url = "data:image/png;base64,";
    /**
     * 创建二维码
     *
@@ -48,7 +53,8 @@
     * @throws IOException
     * @throws WriterException
     */
    public static String createQRCodeToObs(String json) throws IOException, WriterException {
    public static MultipartFile createQRCodeStream(String json)
            throws IOException, WriterException {
        QRCodeWriter qrCodeWriter = new QRCodeWriter();
        HashMap<EncodeHintType, Object> hints = new HashMap<>();
@@ -56,13 +62,69 @@
        BitMatrix bitMatrix = qrCodeWriter.encode(json, BarcodeFormat.QR_CODE, 600, 600, hints);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
        InputStream is = new ByteArrayInputStream(
        InputStream byteArrayInputStream = new ByteArrayInputStream(
                outputStream.toByteArray());
        return HuaWeiOBSUtil.obsUploadStream(json, is);
        // byteArrayInputStream 转MultipartFile
        return getMultipartFile(byteArrayInputStream, json + ".png");
    }
    public static void main(String[] args) throws IOException, WriterException {
        String qrCodeToObs = createQRCodeToObs("123456");
        System.out.println(qrCodeToObs);
    /**
     * 获取封装得MultipartFile
     *
     * @param inputStream inputStream
     * @param fileName    fileName
     * @return MultipartFile
     */
    public static MultipartFile getMultipartFile(InputStream inputStream, String fileName) {
        FileItem fileItem = createFileItem(inputStream, fileName);
        // CommonsMultipartFile是feign对multipartFile的封装,但是要FileItem类对象
        return new CommonsMultipartFile(fileItem);
    }
    /**
     * FileItem类对象创建
     *
     * @param inputStream inputStream
     * @param fileName    fileName
     * @return FileItem
     */
    public static FileItem createFileItem(InputStream inputStream, String fileName) {
        FileItemFactory factory = new DiskFileItemFactory(16, null);
        String textFieldName = "file";
        FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true,
                fileName);
        int bytesRead = 0;
        byte[] buffer = new byte[10 * 1024 * 1024];
        OutputStream os = null;
        // 使用输出流输出输入流的字节
        try {
            os = item.getOutputStream();
            while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            inputStream.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        return item;
    }
}
ruoyi-modules/ruoyi-file/pom.xml
@@ -65,7 +65,15 @@
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common-swagger</artifactId>
        </dependency>
        <dependency>
            <groupId>aws-java-sdk-s3</groupId>
            <artifactId>aws</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/aws-java-sdk-s3.jar</systemPath>
        </dependency>
    </dependencies>
    <build>
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
@@ -3,15 +3,17 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.file.FileUtils;
import com.ruoyi.file.service.ISysFileService;
import com.ruoyi.file.utils.StateCloudObsUtil;
import com.ruoyi.system.api.domain.SysFile;
import com.ruoyi.system.api.util.StateCloudObsUtil;
import io.swagger.annotations.ApiOperation;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@@ -86,4 +88,17 @@
            return R.fail(e.getMessage());
        }
    }
    @PostMapping("/obs/upload/stream")
    public R<String> obsUpload(@RequestParam("code") String code,
            @RequestParam("stream") InputStream stream) {
        try {
            // 上传并返回访问地址
            String url = StateCloudObsUtil.obsUploadStream(code, stream);
            return R.ok(url);
        } catch (Exception e) {
            log.error("上传文件失败", e);
            return R.fail(e.getMessage());
        }
    }
}
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/StateCloudObsUtil.java
File was renamed from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/StateCloudObsUtil.java
@@ -1,4 +1,4 @@
package com.ruoyi.system.api.util;
package com.ruoyi.file.utils;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
@@ -29,7 +29,8 @@
    public static String END_POINT = "obs.cn-sccd1.ctyun.cn";
    public static String BUCKET = "jyzx-obs";
    public static String DOMAIN = "https://" + BUCKET + "." + END_POINT + "/";
    public static AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY,
            SECRET_KEY);
    public static String uploadFile(MultipartFile file) {
        String originalFilename = file.getOriginalFilename();
@@ -42,8 +43,6 @@
        String fileName;
        AmazonS3 s3client = null;
        try {
            AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY,
                    SECRET_KEY);
            ClientConfiguration awsClientConfig = new ClientConfiguration();
            awsClientConfig.setSignerOverride("AWSS3V4SignerType");
            awsClientConfig.setProtocol(Protocol.HTTP);
@@ -73,4 +72,37 @@
        }
        return null;
    }
    public static String obsUploadStream(String code, InputStream content) throws IOException {
        String fileName = "";
        ObjectMetadata objectMetadata = new ObjectMetadata();// 创建上传Object的Metadata
        fileName = "qrCode/" + UUID.randomUUID().toString().replaceAll("-", "") + "-id" + code
                + ".png";
        AmazonS3 s3client = null;
        try {
            ClientConfiguration awsClientConfig = new ClientConfiguration();
            awsClientConfig.setSignerOverride("AWSS3V4SignerType");
            awsClientConfig.setProtocol(Protocol.HTTP);
            s3client = AmazonS3ClientBuilder.standard()
                    .withCredentials(new AWSStaticCredentialsProvider(credentials))
                    .withClientConfiguration(awsClientConfig)
                    .withEndpointConfiguration(new EndpointConfiguration(END_POINT, ""))
                    .disableChunkedEncoding()
                    .enablePathStyleAccess()
                    .build();
            System.out.print("=====connect success=====\n");
            // 上传 object
            PutObjectRequest request = new PutObjectRequest(BUCKET, fileName, content,
                    objectMetadata);
            PutObjectResult result = s3client.putObject(request);
            System.out.format("Etag: %s, versionId: %s\n", result.getETag(),
                    result.getVersionId());
            System.out.print("=====request success=====\n");
            return DOMAIN + fileName;
        } catch (Exception e) {
            System.out.print("=====request fail=====\n");
            System.out.print(e.getMessage());
        }
        return fileName;
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/forepart/ForepartMemberController.java
@@ -2,12 +2,15 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.member.service.IMemberService;
import com.ruoyi.system.api.RemoteFileService;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.CustomConfigDTO;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MobileDTO;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.util.HuaWeiOBSUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
@@ -37,6 +40,8 @@
    @Resource
    private SysUserClient sysUserClient;
    @Resource
    private RemoteFileService remoteFileService;
     @PostMapping("/miniLogin")
    @ApiOperation(value = "用户端-第三方登陸")
    public R<AppMiniLoginVO> loginThird(@RequestBody AppMiniLoginDTO appMiniLoginDto) {
@@ -67,7 +72,7 @@
        try {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            MultipartFile file = (MultipartFile) multipartRequest.getFile("images");
            String url=HuaWeiOBSUtil.obsUpload(file);
            String url = remoteFileService.obsUpload(file).getData();
            Member member=new Member();
            member.setAvatar(url);
            return R.ok(member);
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
@@ -33,10 +33,7 @@
import com.ruoyi.system.api.domain.vo.OrderReturnVO;
import com.ruoyi.system.api.feignClient.MemberClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.util.HuaWeiOBSUtil;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -47,7 +44,6 @@
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
/**
 * <p>