苍穹外卖学习-----2024/03/08

1.新增菜品

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


工具类AliOssUtil .java

@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {

    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;

    /**
     * 文件上传
     *
     * @param bytes
     * @param objectName
     * @return
     */
    public String upload(byte[] bytes, String objectName) {

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
            // 创建PutObject请求。
            ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }

        //文件访问路径规则 https://BucketName.Endpoint/ObjectName
        StringBuilder stringBuilder = new StringBuilder("https://");
        stringBuilder
                .append(bucketName)
                .append(".")
                .append(endpoint)
                .append("/")
                .append(objectName);

        log.info("文件上传到:{}", stringBuilder.toString());

        return stringBuilder.toString();
    }
}





这段代码定义了一个名为AliOssUtil的Java类,用于实现向阿里云对象存储服务(OSS)上传文件的功能。该类包含以下主要部分:

  1. 类成员变量:定义了与阿里云OSS服务交互所需的一些基本信息,包括endpoint(OSS服务的访问域名),accessKeyId和accessKeySecret(用于身份验证的访问密钥ID和密钥),以及bucketName(存储桶名称,用于存储文件的容器)。
  2. 构造方法:通过@AllArgsConstructor注解,Lombok库自动生成一个包含所有成员变量作为参数的构造方法,用于创建AliOssUtil类的实例并初始化其成员变量。
  3. 日志记录:通过@Slf4j注解,Lombok库为该类自动生成日志记录对象log,便于在类中添加日志输出。
  4. 文件上传方法:upload方法是该类的核心功能,用于将字节数组(byte[] bytes)作为文件内容上传到OSS。该方法接受文件内容的字节数组和目标文件名(objectName)作为参数,并执行以下步骤:

  • 使用成员变量中的认证信息和endpoint创建一个OSS客户端实例。
  • 通过OSS客户端调用putObject方法,将字节流(封装在ByteArrayInputStream中)上传到指定的bucketName和objectName下。
  • 在上传过程中,捕获并处理可能发生的两种异常:OSSException(表示请求已到达OSS但被拒绝)和ClientException(表示客户端在与OSS通信时遇到内部问题)。
  • 最后,无论上传成功与否,都会关闭OSS客户端实例以释放资源。
  • 方法返回上传文件的访问URL,格式为https://BucketName.Endpoint/ObjectName。

5.异常处理:在上传过程中,如果遇到异常情况,代码会捕获异常并打印错误信息,包括错误消息、错误代码、请求ID和主机ID等,有助于开发者诊断和解决问题。

总之,这段代码提供了一个简单的工具类,用于将文件上传到阿里云OSS服务,并返回文件的访问URL。


在这里插入图片描述
这段代码定义了一个名为OssConfiguration的Java配置类,用于Spring框架中。它的主要作用是配置和初始化AliOssUtil这个Bean(即Spring管理的对象),以便在Spring应用程序中自动注入和使用AliOssUtil进行阿里云OSS服务的相关操作。具体来说,该配置类通过以下几个关键点实现了这一功能:

  • @Configuration:这是一个Spring注解,用于标识该类是一个配置类。Spring容器会在启动时扫描所有带有@Configuration注解的类,并根据其中定义的Bean创建和管理这些Bean。
  • @Slf4j:这是Lombok提供的注解,用于自动生成日志记录器(log变量)。在这个配置类中,log被用来记录信息,帮助开发者了解AliOssUtil对象的创建过程。
  • aliOssUtil方法:这个方法使用了两个Spring注解@Bean和@ConditionalOnMissingBean,并定义了如何创建和配置AliOssUtil这个Bean。
  • @Bean:表明该方法返回的对象应该被注册为Spring应用程序上下文中的一个Bean。方法的名称(在这里是aliOssUtil)通常作为Bean的ID。
  • @ConditionalOnMissingBean:这个注解指示Spring容器只有在不存在AliOssUtil类型的Bean时,才执行该方法创建AliOssUtil的Bean。这样可以避免重复创建相同类型的Bean,提高配置的灵活性。
  • 方法参数:aliOssUtil方法接受一个AliOssProperties类型的参数。Spring容器会自动注入这个参数,该参数封装了与阿里云OSS服务交互所需的配置信息,如endpoint、accessKeyId、accessKeySecret和bucketName。
  • 创建AliOssUtil实例:方法内部首先记录日志信息,显示开始创建阿里云对象,并展示相关配置。然后,使用从AliOssProperties对象获取的配置信息来创建AliOssUtil的实例,并返回这个实例。

总结来说,OssConfiguration配置类的作用是在Spring应用程序中自动配置和初始化AliOssUtil这个Bean,使得开发者可以轻松地在其他地方通过依赖注入的方式使用AliOssUtil,进行文件上传等阿里云OSS服务的操作。


出现报错
在这里插入图片描述

解决方法
在这里插入图片描述
上传成功
在这里插入图片描述

import java.io.IOException;
import java.util.UUID;

/**
 * 通用接口
 */
@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j
public class CommonController {

    @Autowired
    private AliOssUtil aliOssUtil;

    /**
     * 文件上传
     * @param multipartFile
     * @return
     */
    @PostMapping("/upload")
    @ApiOperation("文件上传")
    public Result<String> upload(@RequestParam("file") MultipartFile multipartFile){
        log.info("文件上传:{}",multipartFile);
        try {
            //获取原石文件名
            String originalFilename = multipartFile.getOriginalFilename();
            //截取原始文件名
            String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
            //获得新的文件名称
            String objectName = UUID.randomUUID().toString() + extension;
            //文件的请求路径
            String filePath = aliOssUtil.upload(multipartFile.getBytes(), objectName);
            return Result.success(filePath);
        } catch (IOException e) {
            log.error("文件上传失败:{}",e);

        }
        return Result.error(MessageConstant.UPLOAD_FAILED);
    }


}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


新增菜品代码

2.菜品的分页查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值