欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)

8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)

2024/10/25 10:25:00 来源:https://blog.csdn.net/2301_77946674/article/details/142594415  浏览:    关键词:8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)

目录

删除套餐

需求分析和设计

代码开发

根据id查询套餐

mapper层

Service层

ServiceImpl层

Mapper层

批量删除套餐

mapper层

Service层

ServiceImpl层

Mapper层

 SetmealMapper.xml

修改套餐

需求分析和设计

代码开发

起售停售套餐

需求分析和设计

代码开发


 
1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解-CSDN博客

2--苍穹外卖-SpringBoot项目中员工管理 详解(一)-CSDN博客

3--苍穹外卖-SpringBoot项目中员工管理 详解(二)-CSDN博客

4--苍穹外码-SpringBoot项目中分类管理 详解-CSDN博客

5--苍穹外卖-SpringBoot项目中菜品管理 详解(一)-CSDN博客

6--苍穹外卖-SpringBoot项目中菜品管理 详解(二)-CSDN博客

7--苍穹外卖-SpringBoot项目中套餐管理 详解(一)-CSDN博客

8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)-CSDN博客

删除套餐

需求分析和设计

业务规则:

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

  • 起售中的套餐不能删除

  • 删除套餐后,菜品的关联数据也需要删除掉

代码开发

根据id查询套餐

mapper层
 //根据id查询套餐@GetMapping("/{id}")@ApiOperation("根据id查询套餐")public Result<SetmealVO> getById(@PathVariable Long id){log.info("根据id查询套餐:{}",id);SetmealVO setmealVO=setmealService.getByIdWithDish(id);return Result.success(setmealVO);}
Service层
 //根据id查询套餐SetmealVO getByIdWithDish(Long id);
ServiceImpl层
//根据id查询套餐@Overridepublic SetmealVO getByIdWithDish(Long id) {Setmeal setmeal=setmealMapper.getById(id);List<SetmealDish> setmealDishes=setmealDishMapper.getDishId(id);SetmealVO setmealVO = new SetmealVO();BeanUtils.copyProperties(setmeal,setmealVO);setmealVO.setSetmealDishes(setmealDishes);return setmealVO;}
Mapper层
//根据id查询套餐@Select("select *from setmeal where id=#{id}")Setmeal getById(Long id);
 //根据id查询对应的菜品数据@Select("select *from setmeal_dish where setmeal_id=#{dishId}")List<SetmealDish> getDishId(Long dishId);

批量删除套餐

mapper层
//批量删除套餐@DeleteMapping@ApiOperation("批量删除套餐")public Result<String> delete(@RequestParam List<Long> ids){log.info("批量删除套餐:{}",ids);setmealService.deleteBatch(ids);return Result.success();}
Service层
//批量删除套餐void deleteBatch(List<Long> ids);
ServiceImpl层
//批量删除套餐@Override@Transactionalpublic void deleteBatch(List<Long> ids) {for (Long id:ids){Setmeal setmeal=setmealMapper.getById(id);if (Objects.equals(setmeal.getStatus(), StatusConstant.ENABLE)) {throw new DeletionNotAllowedException(MessageConstant.SETMEAL_ON_SALE);}}setmealMapper.deleteByIds(ids);setmealMapper.deleteByDishIds(ids);}
Mapper层
 //根据id集合批量删除套餐数据void deleteByIds(List<Long> ids);//根据id集合批量删除套餐关联的菜品数据void deleteByDishIds(List<Long> ids);
 SetmealMapper.xml
<delete id="deleteByIds">
delete from setmeal where id in<foreach collection="ids" open="(" separator="," close=")" item="id">#{id}</foreach></delete><delete id="deleteByDishIds">delete from setmeal_dish where setmeal_id in <foreach collection="dishIds" open="(" close=")" separator="," item="dishId">#{dishId}</foreach></delete>

修改套餐

需求分析和设计

代码开发

Controller层

//修改套餐@PutMapping@ApiOperation("修改套餐")public Result<String> update(@RequestBody SetmealDTO setmealDTO){log.info("修改套餐:{}",setmealDTO);setmealService.update(setmealDTO);return Result.success();}

Service层

 //修改套餐void update(SetmealDTO setmealDTO);

ServiceImpl层

//修改套餐@Overridepublic void update(SetmealDTO setmealDTO) {Setmeal setmeal = new Setmeal();BeanUtils.copyProperties(setmealDTO,setmeal);setmealMapper.update(setmeal);setmealDishMapper.deleteByDishId(setmealDTO.getId());List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes();if(setmealDishes!=null&&!setmealDishes.isEmpty()){setmealDishes.forEach(setmealDish -> {setmealDish.setSetmealId(setmealDTO.getId());});setmealDishMapper.insertBatch(setmealDishes);}}

Mapper层

//根据id动态修改套餐数据@AutoFill(value = OperationType.UPDATE)void update(Setmeal setmeal);
  //根据套餐id删除对应的菜品数据@Delete("delete from setmeal_dish where setmeal_id=#{dishId}")void deleteByDishId(Long dishId);

SetmealMapper.xml

 <update id="update">update dish<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="image!=null">image=#{image},</if><if test="description!=null">description=#{description},</if><if test="status!=null">status=#{status},</if><if test="updateTime!=null">update_time=#{updateTime},</if><if test="updateUser!=null">update_user=#{updateUser},</if></set>where id=#{id}</update>

起售停售套餐

需求分析和设计

业务规则:

  • 可以对状态为“启售” 的套餐进行“停售”操作
  • 可以对状态为“停售”的套餐进行“启售”操作
  • 状态为“停售”的套餐不在前台展示

代码开发

Controller层

  //起售禁售套餐@PostMapping("/status/{status}")@ApiOperation("起售禁售套餐")public Result<String> startOrStop(@PathVariable Integer status,Long id){log.info("起售禁售套餐:{},{}",status,id);setmealService.startOrStop(status,id);return Result.success();}

Service层

 //起售禁售套餐void startOrStop(Integer status, Long id);

ServiceImpl层

  //起售禁售套餐@Overridepublic void startOrStop(Integer status, Long id) {Setmeal setmeal = Setmeal.builder().status(status).id(id).build();setmealMapper.update(setmeal);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com