加入购物车
[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);
}