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

成立了一支网站建设的专业队伍西安淘宝网站建设公司排名

成立了一支网站建设的专业队伍,西安淘宝网站建设公司排名,网站销售系统怎么做,网络设计工资高吗瑞吉外卖部分功能补充 菜品的启售和停售 在浏览器控制台点击对应功能后可以看到前端发送的请求是:http://localhost:9999/dish/status/1?ids1413342036832100354,请求方式为POST。 接收到前端参数后,进行controller层代码补全&#xff0c…

瑞吉外卖部分功能补充

菜品的启售和停售

在浏览器控制台点击对应功能后可以看到前端发送的请求是:http://localhost:9999/dish/status/1?ids=1413342036832100354,请求方式为POST。
在这里插入图片描述
接收到前端参数后,进行controller层代码补全,在DishController中添加下面的接口代码;

/*** 对菜品进行停售或者是起售* @return*/
@PostMapping("/status/{status}")
public R<String> status(@PathVariable("status") Integer status,Long ids){log.info("status:{}",status);log.info("ids:{}",ids);Dish dish = dishService.getById(ids);if (dish != null){dish.setStatus(status);dishService.updateById(dish);return R.success("开始启售");}return R.error("售卖状态设置异常");
}

菜品批量启售和批量停售

把上面对单个菜品的售卖状态的方法进行修改;

/*** 对菜品批量或者是单个 进行停售或者是起售* @return*/
@PostMapping("/status/{status}")
//这个参数这里一定记得加注解才能获取到参数,否则这里非常容易出问题
public R<String> status(@PathVariable("status") Integer status,@RequestParam List<Long> ids){//log.info("status:{}",status);//log.info("ids:{}",ids);LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper();queryWrapper.in(ids !=null,Dish::getId,ids);//根据数据进行批量查询List<Dish> list = dishService.list(queryWrapper);for (Dish dish : list) {if (dish != null){dish.setStatus(status);dishService.updateById(dish);}}return R.success("售卖状态修改成功");
}

注意:controller层的代码是不可以直接写业务的,建议把它抽离到service层,controller调用一下service的方法就行;下面的批量删除功能是抽离的,controller没有写业务代码;

菜品的批量删除

前端发来的请求:
在这里插入图片描述
在DishFlavor实体类中,在private Integer isDeleted;字段上加上@TableLogic注解,表示删除是逻辑删除,由mybatis-plus提供的;
在这里插入图片描述

在DishController中添加接口:

/*** 套餐批量删除和单个删除* @return*/
@DeleteMapping
public R<String> delete(@RequestParam("ids") List<Long> ids){//删除菜品  这里的删除是逻辑删除dishService.deleteByIds(ids);//删除菜品对应的口味  也是逻辑删除LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.in(DishFlavor::getDishId,ids);dishFlavorService.remove(queryWrapper);return R.success("菜品删除成功");
}

DishServicez中添加相关的方法:

//根据传过来的id批量或者是单个的删除菜品
void deleteByIds(List<Long> ids);

在实现类实现该方法:

/***套餐批量删除和单个删除* @param ids*/
@Override
@Transactional
public void deleteByIds(List<Long> ids) {//构造条件查询器LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();//先查询该菜品是否在售卖,如果是则抛出业务异常queryWrapper.in(ids!=null,Dish::getId,ids);List<Dish> list = this.list(queryWrapper);for (Dish dish : list) {Integer status = dish.getStatus();//如果不是在售卖,则可以删除if (status == 0){this.removeById(dish.getId());}else {//此时应该回滚,因为可能前面的删除了,但是后面的是正在售卖throw new CustomException("删除菜品中有正在售卖菜品,无法全部删除");}}}

功能测试:单个删除,批量删除,批量删除中有启售的…

测试成功!

在这里插入图片描述

菜品删除逻辑优化

上面写的菜品的删除功能有点小简单,下面完善一下相关的逻辑;

相关的service的注入,这里就不列举出来了,代码中使用了哪个service,你就autowire就行;

下面的代码可能会有点冗余,这里我就不进行抽离了;

    /*** 菜品批量删除和单个删除* 1.判断要删除的菜品在不在售卖的套餐中,如果在那不能删除* 2.要先判断要删除的菜品是否在售卖,如果在售卖也不能删除* @return*///遇到一个小问题,添加菜品后,然后再添加套餐,但是套餐可选择添加的菜品选项是没有刚刚添加的菜品的?//原因:redis存储的数据没有过期,不知道为什么redis没有重新刷新缓存// (与DishController中的@GetMapping("/list")中的缓存设置有关,目前不知道咋配置刷新缓存。。。。。// 解决方案,把redis中的数据手动的重新加载一遍,或者是等待缓存过期后再添加相关的套餐,或者改造成使用spring catch@DeleteMappingpublic R<String> delete(@RequestParam("ids") List<Long> ids){//根据菜品id在stemeal_dish表中查出哪些套餐包含该菜品LambdaQueryWrapper<SetmealDish> setmealDishLambdaQueryWrapper = new LambdaQueryWrapper<>();setmealDishLambdaQueryWrapper.in(SetmealDish::getDishId,ids);List<SetmealDish> SetmealDishList = setmealDishService.list(setmealDishLambdaQueryWrapper);//如果菜品没有关联套餐,直接删除就行  其实下面这个逻辑可以抽离出来,这里我就不抽离了if (SetmealDishList.size() == 0){//这个deleteByIds中已经做了菜品起售不能删除的判断力dishService.deleteByIds(ids);LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.in(DishFlavor::getDishId,ids);dishFlavorService.remove(queryWrapper);return R.success("菜品删除成功");}//如果菜品有关联套餐,并且该套餐正在售卖,那么不能删除//得到与删除菜品关联的套餐idArrayList<Long> Setmeal_idList = new ArrayList<>();for (SetmealDish setmealDish : SetmealDishList) {Long setmealId = setmealDish.getSetmealId();Setmeal_idList.add(setmealId);}//查询出与删除菜品相关联的套餐LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();setmealLambdaQueryWrapper.in(Setmeal::getId,Setmeal_idList);List<Setmeal> setmealList = setmealService.list(setmealLambdaQueryWrapper);//对拿到的所有套餐进行遍历,然后拿到套餐的售卖状态,如果有套餐正在售卖那么删除失败for (Setmeal setmeal : setmealList) {Integer status = setmeal.getStatus();if (status == 1){return R.error("删除的菜品中有关联在售套餐,删除失败!");}}//要删除的菜品关联的套餐没有在售,可以删除//这下面的代码并不一定会执行,因为如果前面的for循环中出现status == 1,那么下面的代码就不会再执行dishService.deleteByIds(ids);LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.in(DishFlavor::getDishId,ids);dishFlavorService.remove(queryWrapper);return R.success("菜品删除成功");}

套餐管理的启售,停售

前端发来的请求:
在这里插入图片描述

根据前面菜品模块自己实现的功能,我们可以知道,我们只需要写一个批量处理的方法就可以完成单个或者是批量套餐的启售,停售;

SetmealController中的controller层代码:

/*** 对套餐批量或者是单个 进行停售或者是起售* @return*/
@PostMapping("/status/{status}")
//这个参数这里一定记得加注解才能获取到参数,否则这里非常容易出问题
public R<String> status(@PathVariable("status") Integer status,@RequestParam List<Long> ids){setmealService.updateSetmealStatusById(status,ids);return R.success("售卖状态修改成功");
}

SetmealService中添加下面方法:

/*** 根据套餐id修改售卖状态* @param status* @param ids*/
void updateSetmealStatusById(Integer status,List<Long> ids);

该方法的实现

/*** 根据套餐id修改售卖状态* @param status* @param ids*/
@Override
public void updateSetmealStatusById(Integer status,  List<Long> ids) {LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper();queryWrapper.in(ids !=null,Setmeal::getId,ids);List<Setmeal> list = this.list(queryWrapper);for (Setmeal setmeal : list) {if (setmeal != null){setmeal.setStatus(status);this.updateById(setmeal);}}
}

功能测试成功:
在这里插入图片描述

http://www.15wanjia.com/news/159411.html

相关文章:

  • 做自己的建材配送网站客户关系管理系统名词解释
  • 怎样制作表白网站免费刷网站百度关键词
  • 大连专业html5网站建设安装wordpress邮件提示503
  • 做微网站价格小红门网站建设
  • 贸易公司广告网站东莞微网站建设报价
  • 广告手机网站制作网站开发用什么编辑器好点
  • 郑州网站建设渠道湖南大型网站建设公司
  • 生态旅游网站的建设的内容重庆排名seo公司
  • 做网站备案时间公司做宣传网站
  • 国外设计网站pinterest怎么打不开成都广告印刷公司
  • 北京搬家公司大全百度关键词优化软件怎么样
  • 绵阳手机网站制作asp网站 证书
  • 做网站一般是什么工作优秀品牌设计案例分析
  • 中国空间站成功对接网站前端设计软件
  • 彭阳门户网站建设外贸网站定制
  • 摄影网站知乎精准引流推广文案
  • 公司建设网站的优缺点长春市做网站推广
  • 网站建设源码开发网站职位推荐怎么做
  • 营销型企业网站建设包括什么搭建自己的博客网站
  • 海口网站建设就q479185700上墙石家庄做手机网站推广
  • 绘本馆网站建设成都软件培训机构排名前十
  • 公司做网站需要什么条件英国帮人做设计作业网站
  • 做网站做注册登录的难点手机网站 域名解析
  • 镇江网络违法网站汕头多语种网站制作
  • 做煤层气的网站服务器 打开网站iis7
  • 网络 网站建设办公wap建站程序
  • phpcms网站备份个人网站制作说明
  • 自己做的网站某个网页打开很慢重庆免费建站公司地址
  • 网站建设的必要性分析php网站开发说明文档
  • 战鼓网这种网站怎么做长春火车站有几个