当前位置: 首页 > news >正文

苍穹外卖项目实战(日记十四)-记录实战教程及问题的解决方法-(day3课后作业) 菜品停售启售功能

day3-6根据分类id查询菜品

(1)DishController完善

位置:sky-server/src/main/java/com/sky/controller/admin/DishController.java

完整代码:

package com.sky.controller.admin;import com.sky.dto.DishDTO;
import com.sky.dto.DishPageQueryDTO;
import com.sky.entity.Dish;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.DishService;
import com.sky.vo.DishVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/admin/dish")
@Api(tags = "后台菜品管理")
@Slf4j
public class DishController {@Autowiredprivate DishService dishService;/*** 新增菜品* @param dishDTO* @return*/@PostMapping@ApiOperation(value = "新增菜品")public Result save(@RequestBody DishDTO dishDTO){log.info("新增菜品:{}", dishDTO);dishService.saveWithFlavors(dishDTO);return Result.success();}/*** 分页查询菜品* @param dishPageQueryDTO* @return*/@GetMapping("/page")@ApiOperation("分页查询菜品")public Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO){log.info("分页查询菜品:{}", dishPageQueryDTO);PageResult pageResult = dishService.pageQuery(dishPageQueryDTO);return Result.success(pageResult);}/*** 删除菜品* @param ids* @return*/@DeleteMapping@ApiOperation("批量删除菜品")public Result delete(@RequestParam List<Long> ids){log.info("删除菜品:{}", ids);dishService.deleteBatch(ids);return Result.success();}/*** 根据ID查询菜品详情* @param id* @return*/@GetMapping("/{id}")@ApiOperation("根据ID查询菜品详情")public Result<DishVO> getById(@PathVariable Long id){log.info("查询菜品:{}", id);DishVO dishVO = dishService.getByIdWithFlavors(id);return Result.success(dishVO);}@PutMapping@ApiOperation("更新菜品")public Result update(@RequestBody DishDTO dishDTO){log.info("更新菜品:{}", dishDTO);dishService.updateWithFlavors(dishDTO);return Result.success();}/*** 根据分类id查询菜品* @param categoryId* @return*/@GetMapping("/list")@ApiOperation("根据分类id查询菜品")public Result<List<Dish>> list(Long categoryId){List<Dish> list = dishService.list(categoryId);return Result.success(list);}}

添加的代码:

/*** 根据分类id查询菜品* @param categoryId* @return*/
@GetMapping("/list")
@ApiOperation("根据分类id查询菜品")
public Result<List<Dish>> list(Long categoryId){List<Dish> list = dishService.list(categoryId);return Result.success(list);
}

示意图:

(2)DishService完善

位置:sky-server/src/main/java/com/sky/service/DishService.java

添加的代码:

/*** 根据分类ID查询菜品列表* @param categoryId* @return*/
List<Dish> list(Long categoryId);

示意图:

(3)DishServiceimpl完善

位置:sky-server/src/main/java/com/sky/service/impl/DishServiceimpl.java

添加的代码:

/*** 根据分类ID查询菜品列表* @param categoryId* @return*/
public List<Dish> list(Long categoryId) {Dish dish = Dish.builder().categoryId(categoryId).status(StatusConstant.ENABLE).build();return dishMapper.list(dish);
}

示意图:

(4)DishMapper.java完善

位置:sky-server/src/main/java/com/sky/mapper/DishMapper.java

添加的代码:

/*** 查询所有菜品* @param dish* @return*/
List<Dish> list(Dish dish);

示意图:

(5)DishMapper.xml完善

位置:sky-server/src/main/resources/mapper/DishMapper.xml

添加的代码:

<select id="list" resultType="Dish" parameterType="Dish">select * from dish<where><if test="name != null">and name like concat('%',#{name},'%')</if><if test="categoryId != null">and category_id = #{categoryId}</if><if test="status != null">and status = #{status}</if></where>order by create_time desc
</select>

示意图:

day3-7菜品起售停售功能

(6)DishController完善

位置:sky-server/src/main/java/com/sky/controller/admin/DishController.java

添加的代码:

/*** 菜品起售停售* @param status* @param id* @return*/
@PostMapping("/status/{status}")
@ApiOperation("菜品起售停售")
public Result<String> startOrStop(@PathVariable Integer status, Long id){dishService.startOrStop(status,id);return Result.success();
}

示意图:

(7)DishService完善

位置:sky-server/src/main/java/com/sky/service/DishService.java

添加的代码:

/*** 根据ID更新菜品状态* @param status* @param id*/
void startOrStop(Integer status, Long id);

示意图:

(8)DishServiceimpl完善

位置:sky-server/src/main/java/com/sky/service/impl/DishServiceimpl.java

添加的代码:

/*** 菜品起售停售** @param status* @param id*/
@Transactional
public void startOrStop(Integer status, Long id) {Dish dish = Dish.builder().id(id).status(status).build();dishMapper.update(dish);if (status == StatusConstant.DISABLE) {// 如果是停售操作,还需要将包含当前菜品的套餐也停售List<Long> dishIds = new ArrayList<>();dishIds.add(id);// select setmeal_id from setmeal_dish where dish_id in (?,?,?)List<Long> setmealIds = setmealDishMapper.getSetmealIdsByDishIds(dishIds);if (setmealIds != null && setmealIds.size() > 0) {for (Long setmealId : setmealIds) {Setmeal setmeal = Setmeal.builder().id(setmealId).status(StatusConstant.DISABLE).build();setmealMapper.update(setmeal);}}}
}

示意图:

(9)SetmealDishMapper.java完善

位置:sky-server/src/main/java/com/sky/mapper/SetmealDishMapper.java

添加的代码:

/*** 根据菜品id获取套餐id* @param dishIds* @return*/
List<Long> getSetmealIdsByDishIds(List<Long> dishIds);

示意图:

(10)SetmealDishMapper.xml

位置:sky-server/src/main/resources/mapper/SetmealDishMapper.xml

添加的代码:

<select id="getSetmealIdsByDishIds" resultType="java.lang.Long">SELECT DISTINCT setmeal_idFROM setmeal_dishWHERE dish_id IN<foreach collection="dishIds" item="dishId" open="(" separator="," close=")">#{dishId}</foreach>
</select>

示意图:

(11)SetmealMapper.java完善

位置:sky-server/src/main/java/com/sky/mapper/SetmealMapper.java

添加的代码:

/*** 根据id修改套餐** @param setmeal*/
@AutoFill(OperationType.UPDATE)
void update(Setmeal setmeal);

示意图:

(12)SetmealMapper.xml完善

位置:sky-server/src/main/resources/mapper/SetmealMapper.xml

添加的代码:

<update id="update" parameterType="Setmeal">update setmeal<set><if test="name != null">name = #{name},</if><if test="categoryId != null">category_id = #{categoryId},</if><if test="price != null">price = #{price},</if><if test="status != null">status = #{status},</if><if test="description != null">description = #{description},</if><if test="image != null">image = #{image},</if><if test="updateTime != null">update_time = #{updateTime},</if><if test="updateUser != null">update_user = #{updateUser}</if></set>where id = #{id}
</update>

示意图:

(13)功能测试

调试项目(DuBug),打开前端网页菜品管理

找到以下位置,任意点击“停售”按钮,后再点击“启售”,若都成功,这说明功能完成!


文章转载自:

http://adxLdtiB.bpLqh.cn
http://O8RTuqdN.bpLqh.cn
http://kUhFfVOo.bpLqh.cn
http://GbYzqGuu.bpLqh.cn
http://DGCSbcQ3.bpLqh.cn
http://CCl6Daye.bpLqh.cn
http://Hxdd7a7o.bpLqh.cn
http://5sqOPqAm.bpLqh.cn
http://PG3CdKRm.bpLqh.cn
http://3CApzI6a.bpLqh.cn
http://90ys02kv.bpLqh.cn
http://34tTU0YG.bpLqh.cn
http://o4je769B.bpLqh.cn
http://kofwl8hI.bpLqh.cn
http://IaoA1vj7.bpLqh.cn
http://64BTXJIq.bpLqh.cn
http://bqnh9fcz.bpLqh.cn
http://iBar7dK8.bpLqh.cn
http://TXn59lhb.bpLqh.cn
http://3NsVLrg8.bpLqh.cn
http://7iitxl07.bpLqh.cn
http://YshfkOHm.bpLqh.cn
http://Fb2ur0HS.bpLqh.cn
http://8OmIekMt.bpLqh.cn
http://Xzqxb6Ti.bpLqh.cn
http://5OWG4c5e.bpLqh.cn
http://I4zmF5tC.bpLqh.cn
http://wvM7JfD4.bpLqh.cn
http://HRrcFhA9.bpLqh.cn
http://uy8MwKrn.bpLqh.cn
http://www.dtcms.com/a/364862.html

相关文章:

  • centos 压缩命令
  • 解决CentOS 镜像列表服务已下线或迁移导致镜像服务和仓库停止维护解决方案
  • Python:AI开发第一语言的全面剖析
  • Linux之centos 系统常用命令详解(附实战案例)
  • pytorch gpu版本安装(最新保姆级安装教程)
  • 【常用SQL语句和语法总结】
  • Keras/TensorFlow 中 `fit()` 方法参数详细说明
  • leetcode_234 回文链表
  • 如何画时序图、流程图
  • try-catch:异常处理的最佳实践与陷阱规避
  • 2025年互联网行业专业认证发展路径分析
  • RoPE频率缩放机制:解密大语言模型上下文扩展的核心算法
  • 无人机散热模块技术要点分析
  • Diamond基础3:在线逻辑分析仪Reveal的使用
  • 超越马力欧:如何为经典2D平台游戏注入全新灵魂
  • 【Spring Cloud微服务】10.王子、巨龙与Spring Cloud:用注解重塑微服务王国
  • Maven动态控制版本号秘籍:高效发包部署,版本管理不再头疼!
  • .vsdx文件转pdf、word、ppt等文件在线分享(免费版)
  • 【MATLAB代码】UKF(无迹卡尔曼滤波)的组合导航,状态量为平面8维,观测量为XY坐标。附完整代码,有中文注释
  • Unity 的游戏循环机制
  • Vue基础知识-重要的内置关系:vc实例.__proto__.__proto__ === Vue.prototype
  • ESP32嵌入固件读取
  • AI大模型对决:谁是最强智能?
  • MySQL 8.0.40 主从复制完整实验总结(基础搭建 + 进阶延时同步与误操作恢复)
  • [信号与系统个人笔记]第三章 连续时间信号与系统的频域分析 Part 2
  • flutter 中间组件自适应宽度
  • 从在线工具到代码库:图表设计工具挑选指南
  • uniapp 开发上架 iOS App全流程
  • Spring Boot 事务失效的八大原因及解决方案详解
  • iOS 上架 uni-app 流程全解析,从打包到发布的完整实践