前言
thinphp6安装使用可以参考官方的文档哦
在这里我用了商品表,规格表,购物车表
一、添加购物车流程?
清楚的流程逻辑可以让我们在搬砖时有条不紊的进行
参数(商品id,添加的number)
1.判断用户是否登录
2.根据提交的商品id查询商品是否存在——不存在返回false
3.根据商品id查询的库存和商品的规格(尺寸、颜色等)
4.查询用户名下是否存在同一件商品
5.存在——增加相同商品的数量
6.不存在——是添加为新商品
二、实现
1.判断用户是否登录
1.在这里用的是JWT验证,将Token的验证单独写在控制器中的,在其他文件中直接继承的Token,每次前端请求接口时都会过一遍验证来判断用户是否登录。
很方便(感兴趣的可以看我另一篇关于“jwt token的生成及解密” 有详细的代码)
同时在签发Token时将用的id签发给前端,所以可以直接通过 $uid = $this->uid; 来获取用户id 。很方便
2.参考代码
//添加购物车
public function addshop($id, $num)
{
$uid = $this->uid; //获取用户当前ID
$shop = new shop(); //根据商品ID查询商品是否存在
$compare = $shop->compare($id);
if (empty($compare)) {
return json(['code' => 0, 'msg' => '错误操作,商品不存在']);
}
//商品存在————根据查询到商品规格查询库存是否大于用户提交的商品数量
else {
$specs = new specifications();
$shopspecs = $specs->shopspecs($id);
if (empty($shopspecs)) {
return json(['code' => 0, 'msg' => '错误操作,商品规格不存在']);
} else if ($shopspecs['stock'] < $num) {
return json(['code' => 0, 'msg' => '商品库存不足,请等待商家补货']);
}
//根据用户ID和商品ID查询该用户购物车中是否存在相同的商品
$newshop = new shopcart();
$cartshop = $newshop->add($uid, $id);
//存在相同商品————增加数量
if (!empty($cartshop['userid']) && !empty($cartshop['shopid'])) {
$checknum = $cartshop['num'] + $num;
$cartshop->num = $checknum;
$cartshop->save();
return json(['code' => 1, '已添加,商品在购物车等你哦', 'data' => $cartshop]);
} else {
//这里将查询的商品转换了一下格式方便查看
$shop = $compare->toArray();
//不存在相同商品————是新商品
$addshop = new shopcart();
$addshop->save([
'userid' => $uid,
'shopid' => $id,
'specifications' => $shopspecs['shopnumber'],
'num' => $num,
]);
return json(['code' => 1, 'msg' => '已添加,商品在购物车等你哦', 'data' => $shop]);
}
}
}
总结
团结就是力量,分享是温故知新