瑞吉外卖项目——新增菜品

需求分析

后台系统可以管理菜品信息,可以通过新增功能来增加一个菜品,在添加菜品时需要选择一个菜品所属的分类,并且需要上传菜品图片。

搭建类和基本结构

  • 实体类
  • mapper层
  • 业务层service接口和接口实现类
  • controller层

前后端交互过程:

1.页面发送ajax请求,请求服务端获取菜品分类并展示到下拉框。
categorycontroller层

  /**
   * 根据条件查询分类数据
   * @param category
   * @return
   */
  @GetMapping("/list")
  public R<List<Category>> list(Category category) {
    //创建条件构造器
    LambdaQueryWrapper<Category> lambdaQueryWrapper = new LambdaQueryWrapper<>();
    //构造条件
    lambdaQueryWrapper.eq(category.getType()!=null,Category::getType,category.getType());
    //构造排序
    lambdaQueryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);
    //执行查询。
    List<Category> list = categoryService.list(lambdaQueryWrapper);
    return R.success(list);
  }

2.页面发送请求进行图片上传,请求服务端把图片保存到服务器。
3.页面发送请求进行图片下载,将上传的图片进行回显。
4.点击保存按钮,把页面数据以json数据格式发送到服务端进行保存。

  • DTO:数据传输对象,一般用于展示层与服务层之间的数据传输。

dishcontroller层

  /**
   * 新增菜品
   *
   * @param dishDto
   * @return
   */
  @PostMapping
  public R<String> save(@RequestBody DishDto dishDto) {
    log.info("新增菜品:{}", dishDto);
    dishService.saveWithFlavor(dishDto);
    return R.success("新增菜品成功");
  }

dto包下的数据传输对象


/**
 *  DTO:数据传输对象,一般用于展示层与服务层之间的数据传输。(注意继承)
 */
@Data
public class DishDto extends Dish {

    private List<DishFlavor> flavors = new ArrayList<>();

    private String categoryName;

    private Integer copies;
}

service层代码

      /**
     * 保存菜品,同时保存菜品的口味,所有需要操作两张表:dish、dish_flavor;
     * @param dishDto
     * 事务一般开在接口上,不要开在实现类中,开启事务,同时要在启动类上加@EnableTransactionManagement注解。
     * 降低耦合,也可以直接写在接口上,那么接口中所有方法都添加了事务。
     */
    @Transactional
    void saveWithFlavor(DishDto dishDto);

service实现层


  
  @Override
  public void saveWithFlavor(DishDto dishDto) {
    // 先保存菜品基本信息到dish表。
    this.save(dishDto);
    // 处理dish_id字段。
    Long dishId = dishDto.getId();
    List<DishFlavor> flavors = dishDto.getFlavors();
    //函数式编程。
    flavors =
        flavors.stream()
            .map(
                (item) -> {
                  item.setDishId(dishId);
                  return item;
                })
            .collect(Collectors.toList());

    // 保存口味到dish_flavor表。
    dishFlavorService.saveBatch(flavors);
  }

测试通过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值