Day_2

news2024/12/24 20:34:41

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.coloradmin.cn/o/1648618.html

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

相关文章

虚拟机文件夹共享操作(本地访问)

新建一个文件夹 右击文件夹点击属性 找到共享 点击共享 选择本地用户共享就可以了 本地winr 输入我们图片中的格式(IP前加 “\\” ) 会弹一个窗口,输入虚拟机的入户名和密码就可以共享了(一般默认用户名都是administrator&am…

C# winform 连接mysql数据库(navicat)

1.解决方案资源管理器->右键->管理NuGet程序包->搜索, 安装Mysql.Data 2.解决方案资源管理器->右键->添加->引用->浏览-> C:\Program Files (x86)\MySQL\MySQL Installer for Windows ->选择->MySql.Data.dll 3.解决方案资源管理器…

揭秘 IEEE/ACM Trans/CCF/SCI,谁才是科研界的王者?

会议之眼 快讯 在学术探索的浩瀚星海中,每一篇论文都像是一颗璀璨的星辰,而那些被顶级期刊或会议收录的论文,则无疑是最耀眼的几颗。 在众多评价标准中,IEEE/ACM Transactions、CCF推荐期刊和会议、SCI分区期刊,它们…

共价连接dPEG可作为PC和ADMET性能改良剂

共价连接 dPEG 可作为 PC 和 ADMET 性能改良剂 抗体片段(Antibody fragments) 工程抗体片段的 PEG 化通常使用较大的多分散 PEG(Cimzia、Dapirolizumab Pegol 等)来延长小分子量蛋白的半衰期。最近,Genentech公司的研究…

AI去衣技术在动画制作中的应用

随着科技的发展,人工智能(AI)已经在各个领域中发挥了重要作用,其中包括动画制作。在动画制作中,AI去衣技术是一个重要的工具,它可以帮助动画师们更加高效地完成工作。 AI去衣技术是一种基于人工智能的图像…

CUDA-共享内存法实现矩阵乘法(比常规方案提速一倍)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 共享内存是什么? 共享内存是在多个处理单元之间共享数据的一种内存区域。在计算机体系结构中,共享内存通…

dPEG与传统PEG以及其他烷基交联剂产品的优势

作为Linker的dPEG 研究证明,通过交联剂将不同物质结合在一起的能力已被证明是诊断和药物输送系统中非常有用的一项技术。由多分散PEG组成的交联剂已被用于制备多种多聚物以及将靶向配体偶联到纳米颗粒上。这通常用于需要非常大的尺寸以提供良好的DMPK性能并且受多分…

GPU术语

SP(Streaming Processor)流处理器 流处理器是GPU最基本的处理单元,在fermi架构开始被叫做CUDA core。 SM(Streaming MultiProcessor) 一个SM由多个CUDA core组成。SM还包括特殊运算单元(SFU),共享内存(shared memory),寄存器文件(Register …

抖音短视频矩阵系统技术源头/源代码开发部署/SaaS贴牌/源码api代开发

抖音短视频矩阵系统技术源头/源代码开发部署/SaaS贴牌/源码官方平台api授权代开发 一、短视频矩阵系统源码开发步骤 短视频矩阵系统的源头开发步骤通常包括以下几个关键阶段: 1.需求分析:明确系统的目标用户、功能需求、性能要求等。 2.系统设计&…

加密技术在保护企业数据中的应用

加密技术是企业数据保护的核心,对于维护信息安全至关重要。透明加密技术使文件加密后不改变用户对文件的使用习惯,内部文件打开自动解密,存储自动加密,一旦离开使用环境,加密文件将无法正常读取,从而保护文…

【算法】唯一分解定理及最lcm和gcd关系 宝石组合

前言 今天在做一道宝石组合的题目时了解到了这个定理,还是蛮有意思的。 思想 唯一分解定理: 对于任何正整数n,有 n p 1 a 1 p 2 a 2 . . . p k a k n p_1^{a1} \times p_2^{a2} \times ... \times p_k^{ak} np1a1​p2a2​...pkak​ …

【最大公约数 并集查找 调和级数】1998. 数组的最大公因数排序

本文涉及知识点 最大公约数 并集查找 调和级数 LeetCode1998. 数组的最大公因数排序 给你一个整数数组 nums ,你可以在 nums 上执行下述操作 任意次 : 如果 gcd(nums[i], nums[j]) > 1 ,交换 nums[i] 和 nums[j] 的位置。其中 gcd(nums…

【JVM】类加载机制及双亲委派模型

目录 一、类加载过程 1. 加载 2. 连接 a. 验证 b. 准备 c. 解析 3. 初始化 二、双亲委派模型 类加载器 双亲委派模型的工作过程 双亲委派模型的优点 一、类加载过程 JVM的类加载机制是JVM在运行时,将 .class 文件加载到内存中并转换为Java类的过程。它…

Android 桌面小组件 AppWidgetProvider

Android 桌面小组件 AppWidgetProvider 简介 小组件就是可以添加到手机桌面的窗口。点击窗口可以进入应用或者进入应用的某一个页面。 widget 组件 如需创建 widget,您需要以下基本组件: AppWidgetProviderInfo 对象 描述 widget 的元数据&#xff0…

Linux基础配置(镜像挂载,FQDN)

CentOS基础配置: 以下是appsrv的基础配置脚本,CentOS系统只需要把appsrv改成需要的主机名即可(因为Linux基础配置都差不多,写脚本是最省时间的做法,IP地址的配置一般用nmtui图形化界面工具) #!/bin/bash …

告别杂乱桌面,开启纯净视界!DeskCover Pro,Mac用户的桌面神器!

DeskCover Pro for Mac是一款专为macOS设计的桌面图标隐藏软件,其主要功能和特点包括: 桌面图标隐藏:通过单击鼠标或按全局热键,可以快速隐藏桌面上的所有图标,为您提供一个干净整洁的工作环境。窗口聚焦:…

ChatGPT-Next-Web漏洞利用分析(CVE-2023-49785)

1. 漏洞介绍 ​ 日常网上冲浪,突然粗看以为是有关Chat-GPT的CVE披露出来了,但是仔细一看原来是ChatGPT-Next-Web的漏洞。漏洞描述大致如下:(如果有自己搭建了还没更新的速速修复升级防止被人利用,2.11.3已经出来了&am…

MySQL—多表设计与查询

目录 多表设计 ▐ 数据库设计范式 ▐ 多对一 关系表设计 ▐ 多对多 关系表设计 关联查询 ▐ 概述 ▐ 内连接 ○ 思考? ▐ 左外连接 ▐ 右外连接 多表设计 ▐ 数据库设计范式 • 第一范式:确保每列保持原子性 ( 列不可再分解 ) 例如联系方式…

Mac数据恢复软件快速比较:适用于Macbook的10佳恢复软件

数据丢失导致无数个人和组织每天损失大量资金。更糟糕的是,某些文件具有货币价值和情感意义,使它们不可替代,并使数据恢复成为唯一可行的选择。最好的消息是Mac用户可以从各种数据恢复程序中进行选择。为了帮助您尽可能快速、轻松地恢复丢失的…

弹性云服务器是什么,为何如此受欢迎

云计算作为当下炙手可热的技术领域,已然成为现代企业不可或缺的核心能力。云服务器作为云计算的基石之一,在这个数字化时代发挥着至关重要的作用。而弹性云服务器,作为云服务器的一种演进形式,更是备受瞩目。 弹性云服务器&#…