JavaWeb_瑞吉外卖_业务开发Day6-菜品展示, 购物车, 用户下单

JavaWeb_瑞吉外卖_业务开发Day6-菜品展示, 购物车, 用户下单

菜品展示

// DishController
@GetMapping("/list")
public R<List<DishDto>> list(Dish dish)
{
    // 构造查询条件
    LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
    // 查询该分类的菜品
    queryWrapper.eq(dish.getCategoryId()!=null, Dish::getCategoryId, dish.getCategoryId());
    // 根据name查询菜品
    queryWrapper.like(dish.getName()!=null, Dish::getName, dish.getName());
    // 查询状态为1(起售状态)的菜品
    queryWrapper.eq(Dish::getStatus, 1);

    // 添加排序条件
    queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
    // 查询数据
    List<Dish> dishList = dishService.list(queryWrapper);

    List<DishDto> dishDtoList = null;

    dishDtoList = dishList.stream().map((item)->{
        DishDto dishDto = new DishDto();
        BeanUtils.copyProperties(item, dishDto);

        // 获取菜品id
        Long id = item.getId();

        // 在菜品口味表中查询口味
        LambdaQueryWrapper<DishFlavor> dishFlavorLambdaQueryWrapper = new LambdaQueryWrapper<>();
        dishFlavorLambdaQueryWrapper.eq(DishFlavor::getDishId, id);

        List<DishFlavor> dishFlavorList = dishFlavorService.list(dishFlavorLambdaQueryWrapper);

        dishDto.setFlavors(dishFlavorList);
        return dishDto;
    }).collect(Collectors.toList());
    return R.success(dishDtoList);
}
// SetmealController
@GetMapping("/list")
public R<List<Setmeal>> list(Setmeal setmeal)
{
    // 构造查询条件
    LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
    // 查询该分类的套餐
    queryWrapper.eq(setmeal.getCategoryId()!=null, Setmeal::getCategoryId, setmeal.getCategoryId());
    // 根据name查询套餐
    queryWrapper.like(setmeal.getName()!=null, Setmeal::getName, setmeal.getName());
    // 根据前端发送的状态码查询套餐
    queryWrapper.eq(Setmeal::getStatus, setmeal.getStatus());
    // 根据更新时间降序排序
    queryWrapper.orderByDesc(Setmeal::getUpdateTime);
    // 查询数据
    List<Setmeal> setmealList = setmealService.list(queryWrapper);
    return R.success(setmealList);
}

购物车

添加购物车

@PostMapping("/add")
public R<ShoppingCart> add(@RequestBody ShoppingCart shoppingCart)
{
    log.info("shoppingCart: {}", shoppingCart);
    // 获取用户id, 指定当前是哪个用户的购物车数据
    Long userId = BaseContext.getCurrentId();
    shoppingCart.setUserId(userId);

    // 查询当前菜品是否在购物车中
    LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(ShoppingCart::getUserId, userId);
    Long dishId = shoppingCart.getDishId();
    Long setmealId = shoppingCart.getSetmealId();
    queryWrapper.eq(dishId !=null, ShoppingCart::getDishId, dishId);
    queryWrapper.eq(setmealId!=null, ShoppingCart::getSetmealId, setmealId);
    ShoppingCart cartServiceOne = shoppingCartService.getOne(queryWrapper);
    if(cartServiceOne != null){
        Integer number = cartServiceOne.getNumber();
        cartServiceOne.setNumber(number+1);
        shoppingCartService.updateById(cartServiceOne);
    }else{
        shoppingCart.setNumber(1);
        shoppingCartService.save(shoppingCart);
        cartServiceOne = shoppingCart;
    }

    return R.success(cartServiceOne);
}

查看购物车

@GetMapping("/list")
public R<List<ShoppingCart>> list()
{
    Long userId = BaseContext.getCurrentId();
    LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(ShoppingCart::getUserId, userId);
    queryWrapper.orderByDesc(ShoppingCart::getCreateTime);
    List<ShoppingCart> shoppingCartList = shoppingCartService.list(queryWrapper);
    return R.success(shoppingCartList);
}

清空购物车

@DeleteMapping("/clean")
public R<String> clean()
{
    Long userId = BaseContext.getCurrentId();
    LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(ShoppingCart::getUserId, userId);
    shoppingCartService.remove(queryWrapper);
    return R.success("清空购物车成功");
}

减少购物车的商品

@PostMapping("/sub")
public R<ShoppingCart> sub(@RequestBody ShoppingCart shoppingCart)
{
    log.info("shoppingCart: {}", shoppingCart);
    Long userId = BaseContext.getCurrentId();
    Long dishId = shoppingCart.getDishId();
    Long setmealId = shoppingCart.getSetmealId();
    LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(dishId!= null, ShoppingCart::getDishId, dishId);
    queryWrapper.eq(setmealId!= null, ShoppingCart::getSetmealId, setmealId);
    queryWrapper.eq(ShoppingCart::getUserId, userId);
    ShoppingCart cartServiceOne = shoppingCartService.getOne(queryWrapper);
    Integer number = cartServiceOne.getNumber();
    cartServiceOne.setNumber(number-1);
    if(number > 1){
        shoppingCartService.updateById(cartServiceOne);
    }else{
        shoppingCartService.removeById(cartServiceOne.getId());
    }
    return R.success(cartServiceOne);
}

用户下单

/**
 * 用户下单
 * @param orders
 * @return
 */
@Override
@Transactional
public void submit(Orders orders)
{
    // 获取当前用户id
    Long userId = BaseContext.getCurrentId();
    // 查询当前用户的购物车数据
    LambdaQueryWrapper<ShoppingCart> queryWrapper1 = new LambdaQueryWrapper<>();
    queryWrapper1.eq(ShoppingCart::getUserId, userId);
    List<ShoppingCart> shoppingCartList = shoppingCartService.list(queryWrapper1);

    if(shoppingCartList == null || shoppingCartList.size() == 0){
        throw new CustomException("购物车为空, 无法下单");
    }
    // 查询用户数据
    User user = userService.getById(userId);
    // 查询地址数据
    Long addressBookId = orders.getAddressBookId();
    AddressBook addressBook = addressBookService.getById(addressBookId);
    if(addressBook == null){
        throw new CustomException("地址信息有误, 不能下单");
    }
    // 向订单表插入数据
    Long idNumber = IdWorker.getId();
    AtomicInteger amount = new AtomicInteger(0);
    List<OrderDetail> orderDetailList = shoppingCartList.stream().map((item) -> {
        OrderDetail orderDetail = new OrderDetail();
        BeanUtils.copyProperties(item, orderDetail);
        orderDetail.setOrderId(idNumber);
        amount.addAndGet(item.getAmount().multiply(new BigDecimal(item.getNumber())).intValue());
        return orderDetail;

    }).collect(Collectors.toList());
    orders.setId(idNumber);
    orders.setNumber(String.valueOf(idNumber));
    orders.setOrderTime(LocalDateTime.now());
    orders.setCheckoutTime(LocalDateTime.now());
    orders.setStatus(2);
    orders.setAmount(new BigDecimal(amount.get()));//总金额
    orders.setUserId(userId);
    orders.setUserName(user.getName());
    orders.setConsignee(addressBook.getConsignee());
    orders.setPhone(addressBook.getPhone());
    orders.setAddress((addressBook.getProvinceName() == null ? "" : addressBook.getProvinceName())
            + (addressBook.getCityName() == null ? "" : addressBook.getCityName())
            + (addressBook.getDistrictName() == null ? "" : addressBook.getDistrictName())
            + (addressBook.getDetail() == null ? "" : addressBook.getDetail()));
    this.save(orders);
    Long ordersId = orders.getId();
    // 向用户明细表插入数据
    orderDetailService.saveBatch(orderDetailList);
    // 清空购物车数据
    LambdaQueryWrapper<ShoppingCart> queryWrapper2 = new LambdaQueryWrapper<>();
    queryWrapper2.eq(ShoppingCart::getUserId, userId);
    shoppingCartService.remove(queryWrapper2);
}

来源

黑马程序员. 瑞吉外卖项目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_cen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值