Day_2

1. 菜品管理

新增菜品

接口设计

1. 根据类型查询分类(分类管理已完成)

查看接口文档即可

2. 文件上传

创建Bucket

采用的是阿里云的OSS对象存储服务

 新增AccessKey

3. 菜品的新增逻辑

代码开发

1. 文件上传接口开发

为了提高代码的解耦性,在配置文件采用的是分离式的。

 这个文件的数据在 sky-common 里的 properties 里的 AliOssProperties 类里进行了配置

 在 sky-common 里的 utils 里配置了上传文件的工具,那么就需要将这个对象注入到 IOC

 在 sky-service 里进行注入该工具类 

 开发文件上传接口:

 2. 新增菜品接口开发

controller 层

serverImpl 层

Mapper 层 

通过下图的方式,将得到的自增的主键值,再赋值给原对象

 其他都属于比较常规的操作

菜品分页查询

常规的操作

删除菜品

规则:

起售中的菜品不能删除

套餐关联的菜品不能删除

删除菜品后,关联的口味数据也需要删除掉

常规方法解决 

修改菜品

接口设计

根据id查询菜品

根据类型查询分类(已完成)

文件上传 (已完成)

修改菜品

代码开发

1. 查询菜品及其相关联的口味信息,比较简单;

2. 修改菜品接口

对于菜品修改是普通的 update 方法

对于关联的口味信息,采用的是先删除原有相关联的所有信息,然后添加来自前端的信息

菜品起售停售

注:如果执行停售操作,则包含此菜品的套餐也需要停售。

controller 层

ServerImpl


2. 套餐管理

新增套餐

业务规则

  • 套餐名称唯一

  • 套餐必须属于某个分类

  • 套餐必须包含菜品

  • 名称、分类、价格、图片为必填项

  • 添加菜品窗口需要根据分类类型来展示菜品

  • 新增的套餐默认为停售状态

接口设计

  • 根据类型查询分类(已完成)

  • 根据分类id查询菜品

  • 图片上传(已完成)

  • 新增套餐

代码开发

常规开发

注意点:新增套餐,同时需要保存套餐和菜品的关联关系

套餐分页查询 

因为要返回对应的 种类名称,在表 setmeal 里记录的是对应的 种类id

所有需要去表 category 里根据 id 查询对应的 categoryName

删除套餐 

业务规则

  • 可以一次删除一个套餐,也可以批量删除套餐

  • 起售中的套餐不能删除

代码开发

注:删除套餐表中的数据的时候,也需要删除套餐菜品关系表中的数据

属于常规开发

修改套餐

接口设计

代码开发

查询回显数据常规方案

修改套餐对应的菜品关联关系

采用的方案与 菜品与对应的口味 方案相同

先删除之前有的所有关联,然后新增套餐与菜品对应的关系

  • 根据id查询套餐,用于修改页面回显数据

  • 修改套餐

起售停售套餐

业务规则

  • 可以对状态为起售的套餐进行停售操作,可以对状态为停售的套餐进行起售操作

  • 起售的套餐可以展示在用户端,停售的套餐不能展示在用户端

  • 起售套餐时,如果套餐内包含停售的菜品,则不能起售

代码开发

具体查看源码


3.  Redis

在项目中使用 redis,本项目使用的是 Spring Data Redis

操作步骤

1. 导入Spring Data Redis

2. 配置Redis数据源

3.  写配置类,创建RedisTemplate对象

导入 IOC 容器里

4. 通过 RedisTemplate 对象操作 Redis 

  1. ValueOperations:string数据操作
  2. SetOperations:set类型数据操作
  3. ZSetOperations:zset类型数据操作
  4. HashOperations:hash类型的数据操作
  5. ListOperations:list类型的数据操作

4. 店铺营业状态设置

管理端,用户端使用的 Controller 类的名称是一样的,所以要对 Controller 进行命名

管理端

查询店铺营业状态

设置店铺营业状态

这里要注意

如果在 redis 的配置文件里的配置  redis.conf 

stop-writes-on-bgsave-error yes

这样是强制把 redis 快照关闭了,导致不能持久化,无法对 redis 的数据进行修改

设置为:  stop-writes-on-bgsave-error no  即可

用户端

与管理端的获取方式一致


5. Swagger 修改

修改docker,使用户端的接口与管理端的接口分离

@Bean
public Docket docket1(){
    log.info("准备生成接口文档...");
    ApiInfo apiInfo = new ApiInfoBuilder()
            .title("苍穹外卖项目接口文档")
            .version("2.0")
            .description("苍穹外卖项目接口文档")
            .build();

    Docket docket = new Docket(DocumentationType.SWAGGER_2)
            .groupName("管理端接口")
            .apiInfo(apiInfo)
            .select()
            //指定生成接口需要扫描的包
            .apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin"))
            .paths(PathSelectors.any())
            .build();

    return docket;
}
@Bean
public Docket docket2(){
    log.info("准备生成接口文档...");
    ApiInfo apiInfo = new ApiInfoBuilder()
            .title("苍穹外卖项目接口文档")
            .version("2.0")
            .description("苍穹外卖项目接口文档")
            .build();

    Docket docket = new Docket(DocumentationType.SWAGGER_2)
            .groupName("用户端接口")
            .apiInfo(apiInfo)
            .select()
            //指定生成接口需要扫描的包
            .apis(RequestHandlerSelectors.basePackage("com.sky.controller.user"))
            .paths(PathSelectors.any())
            .build();

    return docket;
}

这样就完成了接口的分组

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java_方法引用

方法引用就是把已经有的方法拿过来用,当作函数式接口中抽象方法的方法体。 条件: 1.引用处需要是函数式接口 2.被引用的方法需要已经存在 3.被引用的方法的形参和返回值需要跟抽象方法的形参和返回值保持一致 4.被引用方法的功能需要满足当前的要求 简…

ATA-2161高压放大器用途有哪些种类

高压放大器是一种电子设备,其主要功能是将输入信号放大到较高的电压水平,同时保持信号的形状和特性。这种设备在各种应用领域中都有重要作用,它的种类繁多,根据不同的用途可以分为多种类型。 1.医学领域 在医学设备中,…

搭建Harbor仓库

文章目录 Harbor仓库搭建Harbor仓库安装 docker 服务修改配置文件 Harbor仓库 搭建Harbor仓库 下载 Harbor 仓库 安装 docker 服务 # step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 yum-config-m…

notepad++安装 hex-editor插件

打开notepad 点击插件 搜索 hex-editor,点击右侧 安装install 安装成功后,在已安装插件中就有显示了

Java性能优化(五)-多线程调优-Lock同步锁的优化

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还…

《QT实用小工具·五十九》随机图形验证码,带有一些可人的交互与动画

1、概述 源码放在文章末尾 该项目实现了可交互的动画验证码控件,趣味性十足: 字符变换动画 噪音动画 可拖动交互 项目demo演示如下所示: 项目部分代码如下所示: #ifndef CAPTCHAMOVABLELABEL_H #define CAPTCHAMOVABLELABEL…

【影片欣赏】【指环王】【魔戒:护戒使者 The Lord of the Rings: The Fellowship of the Ring】

2001年发行,Extended DVD Edition Part One 1. Prologue: One Ring to Rule Them All… 2. Concerning Hobbits 3. The Shire 4. Very Old Friends 5. A Long-expected Party 6. Farewell Dear Bilbo 7. Keep It Secret, Keep It Safe 8. The Account of Isildur 9…

MyBatis入门例子

1、建立与数据库对应的POJO类 2、建立mybatis的配置文件 修改后如下: 3、创建POJO对象和Mysql数据的表之间的映射配置 4、建一个测试方法 实现从数据库中取数一条数据,封装成User对象返回 注意点: 这点,大家应该不陌生了&#x…

28-代码随想录18四数之和

18. 四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)&#xff…

小米手机miui14 android chrome如何取消网页自动打开app

搜索媒体打开应用 选择你要阻止打开的app,以github为例 取消勾选打开支持的链接。 参考:https://www.reddit.com/r/chrome/s/JBsGkZDkRZ

【进程终止】退出信号 | 三种退出情况 | 如何进程终止returnexit_exit

目录 退出码 退出信号 进程终止情况3 如何进程终止 return退出 库函数exit 系统调用函数_exit ​exit和_exit的区别缓冲区 exit _exit 退出码 回顾上篇 代码跑完,结果正确(退出码为0)代码跑完,结果不正确(退…

批量将GOID转成GO term名并添加BP,MF,CC分类信息

基因本体论(Gene Ontology,GO,https://www.geneontology.org)是一个广泛应用于生物信息学领域的知识库,它提供了一套标准化的词汇和分类体系,用于描述基因功能、细胞组分和生物过程。GO旨在统一科研人员对基…

C/C++ BM30 二叉搜索树与双向链表

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题要明白二叉搜索树的概念,同时还要对链表的知识比较熟悉。 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示 数据范…

在QEMU上运行OpenSBI+Linux+Rootfs

在QEMU上运行OpenSBILinuxRootfs 1 编译QEMU2 安装交叉编译工具3 编译OpenSBI4 编译Linux5 创建根文件系统5.1 编译busybox5.2 创建目录结构5.3 制作文件系统镜像5.3.1 创建 ext2 文件5.3.2 将目录结构拷贝进 ext2 文件5.3.3 取消挂载 6 运行OpenSBILinuxRootfs 本文所使用的版…

PVZ2 植物克僵尸【第二期】

众所周知,PVZ2(植物大战僵尸2)中有许多恶心的僵尸,而我们不得不派出它们的————克星!(*为建议方法) 5.战机小鬼 战机小鬼,恶心会发射子弹,所以: 1&…

(三)JSP教程——JSP动作标签

JSP动作标签 用户可以使用JSP动作标签向当前输出流输出数据&#xff0c;进行页面定向&#xff0c;也可以通过动作标签使用、修改和创建对象。 <jsp:include>标签 <jsp:include>标签将同一个Web应用中静态或动态资源包含到当前页面中。资源可以是HTML、JSP页面和文…

【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output

象&#xff1a;之前一直使用gitee将个人学习和工作相关记录上传到个人gitee仓库&#xff0c;一直没出现过问题。直到有一天换电脑重新拉取代码发现出了问题&#xff0c;具体如下图&#xff1a; 原因分析&#xff1a; 经过查询发现主要原因是因为git clone的远程仓库的项目过大…

【强化学习】公平性Actor-Critic算法

Bringing Fairness to Actor-Critic Reinforcement Learning for Network Utility Optimization 阅读笔记 Problem FormulationLearning AlgorithmLearning with Multiplicative-Adjusted RewardsSolving Fairness Utility Optimization Evaluations 在网络优化问题中&#xff…

懒人网址导航源码v3.9源码及教程

懒人网址导航源码v3.9源码及教程 效果图使用方法部分源码领取源码下期更新预报 效果图 使用方法 测试环境 宝塔Nginx -Tengine2.2.3的PHP5.6 MySQL5.6.44为防止调试错误&#xff0c;建议使用测试环境运行的php与mysql版本首先用phpMyAdmin导入数据库文件db/db.sql 如果导入不…

QT-TCP通信

网上的资料太过于书面化&#xff0c;所以看起来有的让人云里雾里&#xff0c;看不懂C-tcpsockt和S-tcpsocket的关系 所以我稍微画了一下草图帮助大家理解两个套接字之间的关系。字迹有的飘逸勉强看看 下面是代码 服务端&#xff1a; MainWindow::MainWindow(QWidget *parent) …
最新文章