瑞吉外卖-移动端菜品展示功能,购物车添加菜品及修改等功能,用户下单功能及历史订单派送功能

整理记录下学习整个瑞吉外卖项目,详细代码可在我的Gitee仓库瑞吉外卖实战克隆下载学习使用!

12.菜品展示

12.1 需求分析

![[Pasted image 20230304211220.png]]

12.2 更改前台页面使其正常显示

由于购物车功能还未进行开发,所以修改main.js中的cartListJson函数中访问固定数据,如图
![[Pasted image 20230305102615.png]]
重启清除缓存后如图![[Pasted image 20230305103748.png]]

12.3 修改查询菜品方法

12.3.1 代码开发

前台访问的是查询菜品接口方法list,但移动端还需要菜品的口味信息,所以必须得修改DishController中原有的方法,修改如下:

    @GetMapping("/list")  
    public Result<List<DishDto>> list(Dish dish) {
     
        List<DishDto> dishDtoList;  
        //构造查询条件  
        LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();  
        queryWrapper.eq(dish.getCategoryId() != null, Dish::getCategoryId, dish.getCategoryId());  
        //添加条件,查询状态为1(起售状态)的菜品  
        queryWrapper.eq(Dish::getStatus, 1);  
        //添加排序条件  
        queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);  
        List<Dish> list = dishService.list(queryWrapper);  
        dishDtoList = list.stream().map((item) -> {
     
            DishDto dishDto = new DishDto();  
            BeanUtils.copyProperties(item, dishDto);  
            Long categoryId = item.getCategoryId();//分类id  
            //当前菜品的id  
            Long dishId = item.getId();  
            LambdaQueryWrapper<DishFlavor> lambdaQueryWrapper = new LambdaQueryWrapper<>();  
            lambdaQueryWrapper.eq(DishFlavor::getDishId, dishId);  
            //SQL:select * from dish_flavor where dish_id = ?  
            List<DishFlavor> dishFlavorList = dishFlavorService.list(lambdaQueryWrapper);  
            dishDto.setFlavors(dishFlavorList);  
            return dishDto;  
        }).collect(Collectors.toList());  
        return Result.success(dishDtoList);  
    }

12.3.2 测试

  • 测试后如图,点击添加规格有口味信息来选择,![[Pasted image 20230305104045.png]]

12.4 查询套餐

12.4.1 代码开发

SetmealController编写查询套餐代码,如下:

@GetMapping("/list")  
    public Result<List<Setmeal>> list(Setmeal setmeal) {
     
        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();  
        queryWrapper.eq(setmeal.getCategoryId() != null, Setmeal::getCategoryId, setmeal.getCategoryId());  
        queryWrapper.eq(setmeal.getStatus() != null, Setmeal::getStatus, setmeal.getStatus());  
        queryWrapper.orderByDesc(Setmeal::getUpdateTime);  
        List<Setmeal> list = setmealService.list(queryWrapper);  
        return Result.success(list);  
    }

12.4.2 测试

如图所示,不再报错
![[Pasted image 20230305110950.png]]

13. 购物车模块

13.1需求分析

![[Pasted image 20230305110759.png]]

13.2 数据模型

购物车对应表为shopping_cart表,结构如下:
![[Pasted image 20230305111150.png]]

13.3 代码开发

13.3.1 导入实体类或编写实体类

@Data  
public class ShoppingCart implements Serializable {
     
    private static final long serialVersionUID = 1L;  
    private Long id;  
    //名称  
    private String name;  
    //用户id  
    private Long userId;  
    //菜品id  
    private Long dishId;  
    //套餐id  
    private Long setmealId;  
    //口味  
    private String dishFlavor;  
    //数量  
    private Integer number;  
    //金额  
    private BigDecimal amount;  
    //图片  
    private String image;  
    private LocalDateTime createTime;  
}

13.3.2 新建对应的Mapper、Service及实现类和controller类

这里自行建立就行,和之前一样

13.3.3 购物车添加功能

  • controller编写添加功能,如下:
@Slf4j  
@RestController  
@RequestMapping("/shoppingCart")  
@RequiredArgsConstructor  
public class ShoppingCartController {
     
    private final ShoppingCartService shoppingCartService;  
    /**  
     * 添加购物车  
     * @param shoppingCart  
     * @return  
     */  
    @PostMapping("/add")  
    public Result<ShoppingCart> add(@RequestBody ShoppingCart shoppingCart){
     
        log.info("购物车数据:{}",shoppingCart);  
        //设置用户id,指定当前是哪个用户的购物车数据  
        Long currentId = BaseContext.getCurrentId();  
        shoppingCart.setUserId(currentId);  
        Long dishId = shoppingCart.getDishId();  
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();  
        queryWrapper.
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值