由于受疫情的影响,直播行业的发展也迎来了新变化,众多明星网红纷纷加入直播带货的行列,面对市场的变化,也要求直播行业随之改变,用的最多的当属商品的购物车功能了,下面我们就来分析下购物车的原理。
购物车的模块其实可以按照用户行为去将需求拆解,用户使用购物车可以分解成如下几个情况
1)添加购物车(与服务器同步)
2)查看购物车(服务器获取购物车列表并与本地同步)
3)修改购物车商品的购买数量(与服务器同步)
4)删除购物车(与服务器同步)
5)购物车商品提交订单(与服务器同步)
下面 我们分析下添加购物车功能:
需要的参数:用户id,商品的ID,商品购买数量,选择的商品规格
$res=DI()->notorm->shop_cart
->insert(
array(
'uid'=>$uid,
'goodsid'=>$goodsid,
'spec'=>$spec,
'spec_sign'=>$spec_str,
'shop_uid'=>$shop_uid,
'nums'=>$nums,
'addtime'=>time()
)
);
这里需要注意的是商品的规格存储,最好已json字符串的形式存储,这样既简洁,同时数据解析时更加方便。
删除购物车,通过购物车的ID进行相关操作即可,这里要做好数据的验证。
购物车提交商品订单,这里就比较复杂了,涉及到选择收货地址,订单生成,商品付费等内容。
这里需要注意几点:收货地址的正确性,购物车中商品是否在售状态,商品的库存是否满足购买数量。
foreach ($coupon_arr as $k => $v) {
$shop_uid=$v['shop_uid'];
$shop_coupon[$v['shop_uid']]=[];
$shop_coupon[$v['shop_uid']]['money']=0;
$shop_coupon[$v['shop_uid']]['msg']='';
//判断留言长度
if(mb_strlen($v['msg'])>100){
$msg_error=1;
break;
}
$shop_coupon[$v['shop_uid']]['msg']=$v['msg']; //店铺的留言
$shop_total=0;
$shop_price_total=0;
//根据店铺id 获取用户购物车记录的商品总价
$list=DI()->notorm->shop_cart->where("id in ({$cart_str}) and uid=? and shop_uid=?",$uid,$shop_uid)->select("goodsid,nums")->fetchAll();
foreach ($list as $k1 => $v1) {
//获取商品信息
$where=array('id'=>$v1['goodsid']);
$goods_info=$model_shop->getGoods($where,'price,postage');
$total=$goods_info['price']*$v1['nums'];
$shop_total+=$total;
$shop_price_total+=$total;
$shop_total+=$goods_info['postage'];
}
$order_total+=$shop_total;
if($coupon_info){
if($shop_price_total<$coupon_info['satisfy_money']){
$coupon_notuse=1;
break;
}
$order_total-=$coupon_info['money'];
}
}
以上就是关于购物车的简单说明。