【苍穹外卖】Day4 套餐接口

1 数据设计

/*** 套餐*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Setmeal implements Serializable {private static final long serialVersionUID = 1L;private Long id;//分类idprivate Long categoryId;//套餐名称private String name;//套餐价格private BigDecimal price;//状态 0:停用 1:启用private Integer status;//描述信息private String description;//图片private String image;private LocalDateTime createTime;private LocalDateTime updateTime;private Long createUser;private Long updateUser;
}
/*** 套餐菜品关系*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SetmealDish implements Serializable {private static final long serialVersionUID = 1L;private Long id;//套餐idprivate Long setmealId;//菜品idprivate Long dishId;//菜品名称 (冗余字段)private String name;//菜品原价private BigDecimal price;//份数private Integer copies;
}

2 新增套餐

业务规则:

  • 套餐名称唯一

  • 套餐必须属于某个分类

  • 套餐必须包含菜品

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

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

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

接口设计:

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

  • 根据分类id查询菜品

  • 图片上传(已完成)

  • 新增套餐

根据类型查询分类

path:/admin/dish/list

method:Get

总结一下参数:

1、Query参数在地址栏以URL后加"?"跟着键值对传入,不需要加注解

2、POST方法传递JSON参数,加注解 @RequestBody

3、路径参数 /admin/employee/status/{status},注解 @PathVariable

新增套餐

path:/admin/setmeal

method:POST

请求参数

实现

Service

package com.sky.service.impl;import com.sky.context.BaseContext;
import com.sky.dto.SetmealDTO;
import com.sky.entity.Setmeal;
import com.sky.entity.SetmealDish;
import com.sky.mapper.SetmealDishMapper;
import com.sky.mapper.SetmealMapper;
import com.sky.service.SetmealService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.util.List;@Service
public class SetmealServiceImpl implements SetmealService {@Autowiredprivate SetmealMapper setmealMapper;@Autowiredprivate SetmealDishMapper setmealDishMapper;@Overridepublic void add(SetmealDTO setmealDTO) {Setmeal setmeal = new Setmeal();BeanUtils.copyProperties(setmealDTO,setmeal);// 设置更新信息setmeal.setCreateTime(LocalDateTime.now());setmeal.setCreateUser(BaseContext.getCurrentId());setmeal.setUpdateTime(LocalDateTime.now());setmeal.setUpdateUser(BaseContext.getCurrentId());//1.添加套餐setmealMapper.add(setmeal);//获取生成的套餐的idLong setmealId = setmeal.getId();List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes();setmealDishes.forEach(setmealDish -> {setmealDish.setSetmealId(setmealId);});//2.添加套餐和菜品的关系setmealDishMapper.addSetWithDish(setmealDishes);}
}

mapper

添加菜品

<insert id="add" parameterType="Setmeal" useGeneratedKeys="true" keyProperty="id">insert into sky_take_out.setmeal(category_id, name, price, description, image, create_time, update_time, create_user, update_user)VALUES(#{categoryId},#{name},#{price},#{description},#{image},#{createTime},#{updateTime},#{createUser},#{updateUser})</insert>

添加套餐和菜品的关系

<insert id="addSetWithDish" parameterType="list">insert into sky_take_out.setmeal_dish(setmeal_id, dish_id, name, price, copies)values <foreach collection="setmealDishes" item="sd" separator=",">(#{sd.setmealId},#{sd.dishId},#{sd.name},#{sd.price},#{sd.copies})</foreach></insert>

3 套餐分页查询

业务规则:

  • 根据页码进行分页展示

  • 每页展示10条数据

  • 可以根据需要,按照套餐名称、分类、售卖状态进行查询

path:/admin/setmeal/page

method:GET

controller

controller

 mapper

<select id="page" resultType="com.sky.vo.SetmealVO">select s.*,c.name categoryNamefrom sky_take_out.setmeal sleft join sky_take_out.category con s.category_id = c.id<where><if test="name != null">and s.name like concat('%',#{name},'%')</if><if test="status != null">and s.status = #{status}</if><if test="categoryId != null">and s.category_id = #{categoryId}</if></where>order by s.create_time desc</select>

测试

4 删除、修改、启用/禁用套餐,略

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

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

相关文章

Renesa Version Board开发RT-Thread 之Client(WIFI)和上位机的数据传输

目录 概述 1 系统框架 1.1 模块介绍 1.1 Version-Board 开发板 1.1.1 Vision-Board简介 1.1.2 Vision-Board的资源 1.2 框架介绍 2 上位机App 2.1 UI设计 2.2 代码实现 3 功能测试 3.1 网络连接 3.2 功能测试 概述 本文主要Renesa Version Board开发RT-Thread 之…

与MySQL邂逅

MySQL安装捏~ 其实每次新学一样东西&#xff0c;安装永远是一个小坎 但是小问题啦 安装MySQL要用root账户&#xff0c;安装后普通用户也可以用捏 要安装MySQL先来看第一步&#xff01; 改bug&#xff01; Centos 卸载不要的环境 先康康有木有捏&#xff1a; mariadb就是…

ElasticSearch-聚合操作

聚合的分类 aggsMetric Aggregation min, max, avg, sumstats, cardinality Bucket Aggregation terms ordertext -> fielddatarangehistogramtop_hits Pipeline Aggregation min_bucketstats_bucketpercentiles_bucketcumulative_sum 聚合的作用范围 Filter, Post Filter,…

AI智能电销机器人的优势是什么,有什么特点?

机器学习、大数据、深度学习、云计算等的发展和应用&#xff0c;机器人完成复杂专业任务的能力越来越强。智能化机器人时代的到来&#xff0c;进一步拓宽了服务机器人的应用场景和服务模式&#xff0c;人工智能机器人的问世&#xff0c;更使电销机器人进入到了电销行业。我们一…

如何禁用USB存储设备|禁用USB储存和连接手机的方法有哪些?深度解析,四招搞定!

在企业网络安全管理中&#xff0c;禁用USB存储设备和限制手机连接至关重要。这不仅可以防止数据泄露&#xff0c;还能阻止恶意软件通过外部设备入侵。 本文将为你推荐四种行之有效的方法&#xff0c;帮助你全面禁用USB存储设备和连接手机的功能&#xff0c;让企业数据安全更有…

【SpringCloud应用框架】GateWay网关

Spring Cloud Alibaba 之初识GateWay网关 文章目录 一、网关介绍二、网关对比三、GateWay基本概念&#xff1a;执行流程&#xff1a; 总结 一、网关介绍 在微服务架构中&#xff0c;一个系统会被拆分为多个微服务。如果没有网关存在&#xff0c;我们只能在客户端记录梅哥为服务…

echarts横向柱状图让Y轴的名字在柱状图上方展示

效果 代码 myEcharts(){// 基于准备好的dom&#xff0c;初始化echarts实例this.myChart echarts.init(this.$refs.rankingList);// 指定图表的配置项和数据var option { title: { }, tooltip: { trigger: axis, axisPointer: { type: shadow } }, legend: { …

中职院校智能物联网应用专业群建设方案

一、引言 随着信息技术的飞速发展&#xff0c;智能物联网&#xff08;IoT&#xff09;作为新一代信息技术的重要组成部分&#xff0c;正深刻改变着人们的生活方式、生产模式和社会形态。为积极响应国家“中国制造2025”和“智慧城市”等战略部署&#xff0c;培养适应未来社会需…

开源 AI 智能名片 S2B2C 商城小程序在社区团购中的应用与价值

摘要&#xff1a;本文探讨了开源 AI 智能名片 S2B2C 商城小程序在社区团购中的重要作用。社区团购的团长角色多元&#xff0c;包括小区店主、水站与快递站站长、宝妈等&#xff0c;其用户基础广泛。优秀团长的专业引导和良好服务至关重要&#xff0c;而开源 AI 智能名片 S2B2C …

YOLOv8改进实战 | 引入混合局部通道注意力模块MLCA(2023轻量级)

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8 是一种尖端的、最先进的 (SOTA) 模型,它建立在以前…

YoloV8 single channel train + Onnx trans

yolov8目前不支持单通道图片训练&#xff0c;需要修改后才能支持。本文将介绍如何修改yolov8代码&#xff0c;来训练单通道图的yolov8模型&#xff0c;以及使用onnx进行模型转换的简单实践。 1、修改代码 git diff ultralytics/utils/checks.py diff --git a/ultralytics/utils…

Spire.PDF for .NET【文档操作】演示:创建 PDF 文档

通过代码创建 PDF 文档具有多种优势。例如&#xff0c;您可以轻松合并动态内容&#xff0c;如用户输入、数据库记录或实时数据。基于代码的 PDF 生成允许更大的自定义和自动化&#xff0c;最大限度地减少创建高度定制文档时的手动干预。在本文中&#xff0c;您将学习如何使用Sp…

【陪诊系统-PC管理端】axios的二次封装

二次封装axios 引入axios创建axios实例&#xff0c;添加配置信息&#xff0c;这里主要设置基础url和请求超时时间给上述创建的实例添加拦截器&#xff0c;对请求、响应分别进行拦截 根据接口文档显示&#xff0c;当登录成功后&#xff0c;每次请求陪诊师、订单信息都需要携带t…

fastchat与autogen使用要点澄清

说明&#xff1a; 本文重点是想使用autogen构建智能体&#xff0c;并且想要通过加载本地模型来构建&#xff0c;以灵活使用。但是autogen重点是以API调用支持openai, mistral等大模型使用的&#xff0c;对于使用国内的一些模型不是那么友好方便。然后在查找方法的过程中&#x…

一篇常见第三方库之以及详细使用示例教程

作者&#xff1a;郭震 我们介绍了几个常用的 Python 第三方库,包括 NumPy、Pandas、Matplotlib 和 Requests.本篇将通过一些简单的示例来演示如何有效地使用这些库,以帮助小白理解它们的基本用法.通过这些案例,你可以直观感受到这些库在日常编程中的价值. NumPy NumPy 是一个强…

规控面试复盘

目录 前言 一、京东方 1、CPP和C的区别是什么? 2、讲一下的ROS的话题通信 二、Momenta(泊车部门实习面试) 1、MPC的预测时间步是多少? 2、MPC的代价函数考虑的是什么? 三、九识 1、智能指针有哪些优缺点? 优点: 缺点: 2、Protobuf的数据传输效率为什么更高…

【陪诊系统-PC管理端】动态路由

先说说这里为什么要使用动态路由&#xff1f; 因为前面的菜单管理功能模块中&#xff0c;可以创建或修改不同权限&#xff0c;当前登录账号可以绑定不同的权限&#xff0c;不同权限能访问的功能页面不同&#xff0c;所以使用动态路由来控制。 而登录成功后&#xff0c;服务器…

前端报文加密

前端加密功能 前端提供简单的AES对称加密算法&#xff0c;注意key 和后端网关配置相同&#xff0c;这里打包混淆后&#xff0c;相对安全。 &#xff08;lun-ui\src\store\modules\user.js、base-gateway-dev.yml&#xff09; 后端解密功能 使用hutool提供的工具类进行解密pub…

【无标题】docker-compose一键部署项目,haproxy容器代理多个web或java容器

# 创建脚本&#xff0c;可以在java环境中运行任何的jar包或者war包#!/bin/bash/usr/local/jdk/bin/java -jar /java/src/*.?ar 一、思路分析&#xff1a; &#xff08;1&#xff09;nginx 1、下载镜像&#xff0c;将本地的dist项目的目录挂载在容器的/usr/share/nginx/html/ …

连接型CRM+智能制造,助力医疗器械企业高质量发展

8月29日&#xff0c;由中国医疗器械行业协会智能制造与智慧监管分会主办&#xff0c;纷享销客参与协办的“数字化建设与智能制造助力医疗器械企业高质量发展”研讨会于苏州圆满落幕&#xff0c;国内知名医疗器械企业高层、行业专家及在医疗行业合规前沿的优秀专业人士齐聚一堂&…