菜品展示
// 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);
}
来源
黑马程序员. 瑞吉外卖项目