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

news2024/10/7 10:16:51

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.菜品的分页查询

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1501944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32day3

1.思维导图 1.总结任务的调度算法&#xff0c;把实现代码再写一下 /* Definitions for myTask02 */ osThreadId_t myTask02Handle; uint32_t myTask02Buffer[ 64 ]; osStaticThreadDef_t myTask02ControlBlock; const osThreadAttr_t myTask02_attributes {.name "myTa…

PostgreSQL容器安装

docker中的centos7中安装 选择对应的版本然后在容器中的centos7中执行下面命令 但是启动容器的时候需要注意 开启端口映射开启特权模式启动init进程 docker run -itd --name centos-postgresql -p 5433:5432 --privilegedtrue centos:centos7 /usr/sbin/init 启动然后进入后先…

Mysql的Cardinality值

什么是Cardinality值&#xff1f; Cardinality值是Mysql做索引优化时一个非常关键的值&#xff0c;优化器会根据这个值来判断是否使用这个索引&#xff0c;它表示索引中唯一值的数目估计值&#xff0c;该值应该尽可能接近1&#xff0c;如果非常小&#xff0c;则用户需要考虑是否…

Clickhouse表引擎介绍

作者&#xff1a;俊达 1 引擎分类 ClickHouse表引擎一共分为四个系列&#xff0c;分别是Log、MergeTree、Integration、Special。其中包含了两种特殊的表引擎Replicated、Distributed&#xff0c;功能上与其他表引擎正交&#xff0c;根据场景组合使用。 2 Log系列 Log系列…

运维知识点-Apache HTTP Server

Apache 介绍 介绍 Apache是一个开源的Web服务器软件&#xff0c;全称为Apache HTTP Server&#xff0c;由Apache软件基金会开发和维护。它是目前全球使用最广泛的Web服务器软件之一&#xff0c;占全球所有网络服务器的很大比例。Apache服务器具有跨平台的特性&#xff0c;可以…

ChatGPT Plus 支付出现「您的银行卡被拒绝/your card has been declined」怎么办?

ChatGPT Plus 支付出现「您的银行卡被拒绝/your card has been declined」怎么办&#xff1f; 在订阅 ChatGPT Plus 或者 OpenAI API 时&#xff0c;有时候会出现已下报错 &#xff1a; Your card has been declined. 您的银行卡被拒绝 出现这种错误&#xff0c;有以下几个解…

Linux操作系统的vim常用命令和vim 键盘图

在vi编辑器的命令模式下&#xff0c;命令的组成格式是&#xff1a;nnc。其中&#xff0c;字符c是命令&#xff0c;nn是整数值&#xff0c;它表示该命令将重复执行nn次&#xff0c;如果不给出重复次数的nn值&#xff0c;则命令将只执行一次。例如&#xff0c;在命令模式下按j键表…

FPGA高端项目:FPGA基于GS2971的SDI视频接收+GTX 8b/10b编解码SFP光口传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放Video Mixer多路视频拼接应用本方案的SDI接收OSD动态字符叠加…

防火墙配置实验

配置 配置IPSec FW1 FW3 NAT策略 FW1 FW3 安全策略 FW1 FW3 最后测试

软考高级:系统工程生命周期方法(计划驱动方法、渐进迭代式方法等)概念和例子

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Windows按文件类型指定默认应用程序方法,.py文件设置默认打开程序实例演示

有两种方法可以设置按文件类型指定默认应用。 一个是系统的设置&#xff0c;但是部分类型里面是没有的&#xff0c;这种就要通过注册表来添加。 如果没有的话&#xff0c;通过 winR 打开运行&#xff0c;然后输入 regedit 打开注册表&#xff0c;在 计算机\HKEY_CLASSES_ROO…

【leetcode热题】重排链表

给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。 示…

<商务世界>《第8课 Leads——MQL——SQL——商机——成交》

1 各种概念 英文缩写概念Traffic流量Leads潜在客户&#xff0c;销售线索&#xff1b;简称潜在线索MQLMarketing-Qualified Leads市场认可线索SQLSales-Qualified Leads销售认可线索OPPOpportunity商机Account成单客户 2 线索到商机 一般企业会把自身线索进行如下的划分&…

ubuntu18.04编译OpenCV-3.4.19+OpenCV_contrib-3.4.19

首先确保安装了cmake工具 安装opencv依赖文件 sudo apt-get install build-essential sudo apt-get install git libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev li…

瑞_23种设计模式_模板方法模式

文章目录 1 模板方法模式&#xff08;Template Pattern&#xff09; ★ 钩子函数1.1 介绍1.2 概述1.3 模板方法模式的结构1.4 模板方法模式的优缺点1.5 模板方法模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;InputStre…

Javaweb day13 day14 day15

spring boot 快速入门 写法 http协议 请求协议 响应协议 协议解析 Tomcat

功能强大使用简单的截图/贴图工具,PixPin

一、下载链接 PixPin 截图/贴图/长截图/文字识别/标注 | PixPin 截图/贴图/长截图/文字识别/标注 (pixpinapp.com) 二、功能 截图/贴图/长截图/文字识别/标注 三、安装教程 根据提示安装即可&#xff1a; 四、快捷键 1.软件自带快捷键&#xff08;右击PixPin查看 &#xff09…

Tomcat的安装

下载Tomcat&#xff08;这里以Tomcat8.5为例&#xff09; 直接进入官网进行下载&#xff0c;Tomcat官网 选择需要下载的版本&#xff0c;点击下载这里一定要注意&#xff1a;下载路径一定要记住&#xff0c;并且路径中尽量不要有中文&#xff01;&#xff01;&#xff01;&…

C/C++编程-理论学习-通信协议理论

通信协议理论 protobuf简述使用简介proto 文件为了nanopb 编译.proto文件修改生成器行为 streamsoutput streamsinput streams Data types(数据类型)Field callbacks(字段回调)Encoding callbacks(编码回调)Message descriptor(信息描述)三个关键字required、optional、repeate…

【编程实践】matlab中的转义字符

简记 这个报错是因为在sprintf函数中使用了无效的转义字符\U。在MATLAB中&#xff0c;转义字符\U是无效的&#xff0c;因此会导致警告。 检查sprintf函数中的格式化字符串是否包含了无效的转义字符。确保只使用MATLAB支持的转义字符。 如果想要输出一个反斜杠字符\&#xff0c…