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://xiahunao.cn/news/3017246.html

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

相关文章

【强训笔记】day11

NO.1 思路&#xff1a;枚举&#xff0c;设一号大礼包的数量为x&#xff0c;二号大礼包的数量为y&#xff0c;用循环枚举一号大礼包的个数得到二号大礼包的数量&#xff0c;使得某一时刻axby的值最大。 代码实现&#xff1a; #include<iostream>using namespace std;lo…

昂科烧录器支持Infineon英飞凌的三相电机驱动器TLE9877QXA40

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Infineon英飞凌的三相电机驱动器TLE9877QXA40已经被昂科的通用烧录平台AP8000所支持。 TLE9877QXA40是一款单芯片三相电机驱动器&#xff0c;集成了行业标准的ARMCortex™M3 内…

如何去官网下载windows10操作系统iso镜像

文章目录 一、先从微软中国官网https://www.microsoft.com/zh-cn/进去二、然后按图示一步步点进去三、点击下载工具这个工具会帮你生成windows操作系统iso文件四、下载好后一步步按图示要求成功操作一、先从微软中国官网https://www.microsoft.com/zh-cn/进去 二、然后按图示一…

HackMyVM-Animetronic

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 feroxbuster steghide exiftool hydra ssh连接 提权 系统信息收集 socat提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7…

代码随想录第52天|300.最长递增子序列 718. 最长重复子数组

300.最长递增子序列 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 动态规划之子序列问题&#xff0c;元素不连续&#xff01;| LeetCode&#xff1a;300.最长递增子序列_哔哩哔哩_bilibili 给你一个整数数组 nums &#xff0…

学习软考----数据库系统工程师25

关系规范化 1NF&#xff08;第一范式&#xff09; 2NF&#xff08;第二范式&#xff09; 3NF&#xff08;第三范式&#xff09; BCNF&#xff08;巴克斯范式&#xff09; 4NF&#xff08;第四范式&#xff09; 总结

KUKA机器人故障报警信息处理(一)

1、KSS00276 机器人参数不等于机器人类型 ①登录专家模式 ②示教器操作&#xff1a;【菜单】—【显示】—【变量】—【单个】 ③名称输入&#xff1a;$ROBTRAFO[] 新值&#xff1a;TRAFONAME[] ④点击【设定值】。 2、电池报警&#xff1a; ①“充电电池警告-发现老化的蓄电池…

TriCore TC162 Archievture Volume 笔记

说明 本文是 英飞凌 架构文档 TriCore TC162P core archiecture Volume 1 of 2 (infineon.com) 的文笔&#xff0c;稍作整理方便查阅&#xff0c;错误之处&#xff0c;还请指正&#xff0c;谢谢 :) 1. Architecture 2. General Purpose & System Register 名词列表&#…

Redis学习(十)|使用消息队列的重试机制实现 MySQL 和 Redis 的数据一致性

文章目录 介绍原理整体方案实现步骤示例代码总结其他&#xff1a;Kafka 重试策略配置1. 生产者重试策略配置2. 消费者重试策略配置 介绍 在分布式系统中&#xff0c;保持 MySQL 和 Redis 之间的数据一致性是至关重要的。为了确保数据的一致性&#xff0c;我们通常采取先更新数…

Elasticsearch:使用 MongoDB connector 同步数据到 Elasticsearch

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。Elasticsearch 是一个高效强…

TCP经典异常问题探讨与解决

作者&#xff1a;kernelxing TCP的经典异常问题无非就是丢包和连接中断&#xff0c;在这里我打算与各位聊一聊TCP的RST到底是什么&#xff1f;现网中的RST问题有哪些模样&#xff1f;我们如何去应对、解决&#xff1f;本文将从RST原理、排查手段、现网痛难点案例三个板块自上而…

【容器】Pod 生命周期

概述 Pod的生命周期包含从Pod创建事件的触发到Pod被停止的整个流程。了解Pod的生命周期方便日常排障&#xff0c;并能帮助较深入了解K8s。 在Pod生命周期中有两个重要的标识&#xff1a;Pod Condition 和 Pod Phase。Pod Phase提供了一个Pod当前状况的概览&#xff0c;可以帮…

Unity EventSystem入门

概述 相信在学习Unity中&#xff0c;一定有被UI事件困扰的时候把&#xff0c;当添加UICanvas的时候&#xff0c;Unity会为我们自动添加EventSystem&#xff0c;这个是为什么呢&#xff0c;Unity的UI事件是如何处理的呢&#xff0c;在使用各个UI组件的时候&#xff0c;一定有不…

Linux搭建http发布yum源

1、搭建http源yum仓库 &#xff08;1&#xff09;在yum仓库服务端安装httpd yum -y install httpd &#xff08;2&#xff09;修改配置文件 我们httpd 中默认提供web 界面的位置是我们/var/www/html 目录&#xff0c;如果我们yum 源想指定目录&#xff0c;就需要修改蓝框2处…

如何用TONGYILingma进行AI辅助编程?

通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力&#xff0c;并针对阿里云的云服务使用场景调优&#xff0c…

使用quicker进行局域网文件互传

使用了动作&#xff1a;文件服务器 https://getquicker.net/Sharedaction?code7a49ca6b-d243-4478-1e87-08d9f1ba2358 在文件夹中打开打开这个动作就能使用。 配置 右键动作可以设置&#xff1a; 选择了最后一个之后&#xff0c;打开服务之后能在右下角有一个弹窗&#xff…

八、Redis集群模式(3主3从)

目录 一、环境准备 二、集群搭建 一、环境准备 IP 角色 192.168.134.132 192.168.134.132&#xff1a;7001 192.168.134.132&#xff1a;7002 192.168.134.133 192.168.134.133&#xff1a;7003 192.168.134.133&#xff1a;7004 192.168.134.134 192.168.134.134&…

基于Springboot的教学辅助系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的教学辅助系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

男士内裤多久换一次最合适?男士最靠谱的内裤品牌推荐

很多男同胞可能认为内裤没什么好讲究的&#xff0c;随便穿一条就好&#xff0c;而且也没有定期更换。实际上长期穿质量不好或没有定期更换内裤&#xff0c;会对健康造成一定影响。而现在市面上的男士内裤品牌和种类又有不少&#xff0c;让大家选择时感觉眼花缭乱&#xff0c;所…

Linux —— 信号(3)

Linux —— 信号&#xff08;3&#xff09; Core dump为什么core默认是被关闭的阻塞信号信号其他相关常见概念信号递达信号未决信号阻塞两者的区别信号的结构 信号集操作函数一个简单使用例子sigpending的使用例子 我们今天接着来了解信号&#xff1a; Core dump 大家不知道有…