海上捞火锅

海上捞火锅


加入购物车

[TOC]

简要描述
  • 向购物车中加入菜品
前端页面和服务端交互过程
  • 点击 [加入购物车] 或者 [+] 按钮,页面发送ajax请求,请求服务端,将菜品或者套餐添加到购物车
触发事件
<div class="addCart" @click="addCart(setMealDialog.item)" v-if="!setMealDialog.item.number">加入购物车</div>
接口调用
const res = await addCartApi(params)  
if(res.code === 1){  
    this.dishList.forEach(dish=>{  
        if(dish.id === item.id){  
            dish.number = res.data.number  
        }  
    })  
    if(this.setMealDialog.show){  
        item.number = res.data.number  
    }  
    this.getCartData()  
}else{  
    this.$notify({ type:'warning', message:res.msg});  
}
请求URL
  • [context-path]/shoppingCart/add
请求方式
  • POST
请求参数
参数名 类型 说明
amount decimal(10,2) 金额
image varchar(200) 图片
name varchar(64) 名称
id bigint 编号
接口API
function  addCartApi(data){
    return $axios({
        'url': '/shoppingCart/add',
        'method': 'post',
        data
      })
}
返回示例
code: 1
data: {id: "1609085965423616002", name: "畅享2人套餐", userId: "1605795539925098497", dishId: null,…}
map: {}
msg: null
返回参数说明
参数名 类型 说明
code int 返回码,1:成功;0 或其他:失败
data object 返回数据
map map 动态数据
msg string 错误信息
备注

data有两种返回值

public static <T> R<T> success(T object) {
    R<T> r = new R<T>();
    r.data = object;
    r.code = 1;
    return r;
}

public static <T> R<T> error(String msg) {
    R r = new R();
    r.msg = msg;
    r.code = 0;
    return r;
}
后端接口请求参数
  • @RequestBody 接收前端传递给后端的json字符串中的数据(请求体ShoppingCart中的数据)
后端代码
@PostMapping("/add")
public R<ShoppingCart> add(@RequestBody ShoppingCart shoppingCart){
    log.info(shoppingCart.toString());

    Long dishId = shoppingCart.getDishId();
    LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(ShoppingCart::getUserId,BaseContext.getCurrentId());
    shoppingCart.setUserId(BaseContext.getCurrentId());
    if (dishId != null){
        queryWrapper.eq(ShoppingCart::getDishId,shoppingCart.getDishId());
    }else {
        queryWrapper.eq(ShoppingCart::getSetmealId,shoppingCart.getSetmealId());
    }
    ShoppingCart one = shoppingCartService.getOne(queryWrapper);
    if (one == null){
        shoppingCart.setCreateTime(LocalDateTime.now());
        shoppingCart.setNumber(1);
        shoppingCartService.save(shoppingCart);
        one = shoppingCart;
    }else {
        one.setNumber(one.getNumber() + 1);
        shoppingCartService.updateById(one);
    }
    return R.success(one);
}

页面列表

ITEM_HTML