tp5 用 Cache缓存实现购物车功能

本文探讨了购物车功能的代码实现,包括显示购物车、添加商品、减少商品数量及清空购物车等操作。通过分析现有代码的问题,提出了遵循PHPPSR-2代码风格规范的建议,旨在提高代码质量和可维护性。

主要基于文件缓存来实现。

namespace app\api\controller;

use app\common\controller\Api;
use think\Cache;
use think\Db;

class Cart
{
//购物车的显示
	public function index()
	{
        $UID = input('user_id');
        $UID == is_numeric(strval($UID))&&!empty($UID)?$UID:die('请求出错');
        $sel = Cache::get($UID);
        if ($sel){
            return json(['code'=>'200','data'=>$sel]);
        }else{
            return json(['code'=>'200','data'=>'','msg'=>'请去添加商品']);
        }
    }
    //加购物车
    public function toAdd(){
        $bin = 0;
        $data = array_filter(input());
        $arr = Cache::get($data['user_id']);
        if (!$arr){
            $b[] = $data;
            $dat = Cache::set($data['user_id'],$b);
            if ($dat){
                return json(['code'=>'200','msg'=>'ok1']);
            }
        }
        foreach ($arr as $key=>&$val){
            if ($val['goods_id']==$data['goods_id']){
                $val['buy_num'] = $val['buy_num']+1;
                $val['goods_price'] = round($val['buy_num']*$data['goods_price'],2);
                $bin++;
            }
        }
        if ($bin==0){
            $arr[] = $data;
            $da = Cache::set($data['user_id'],$arr);
            if ($da){
                return json(['code'=>'200','msg'=>'ok2']);
            }
        }
        $ins = Cache::set($data['user_id'],$arr);
        if ($ins){
            return json(['code'=>'200','msg'=>'ok3']);
        }
    }
    //减购物车
     public function toRde(){
        $data = array_filter(input());
        $arr = Cache::get($data['user_id']);
        foreach ($arr as $key => &$val){
            if($val['goods_id']==$data['goods_id']){
                if ($val['buy_num']>1){
                   $val['buy_num'] = $val['buy_num']-1;
                   $val['goods_price'] = $val['goods_price']-$data['goods_price'];
                }else{
                    unset($arr[$key]);
                }
            }
        }
        $rde = Cache::set($data['user_id'],$arr);
        if ($rde){
            return json(['code'=>'200','msg'=>'ok']);
        }
    }
    //清空购物车
    public function delCar() {
        $uid = input('user_id');
        $uid == is_numeric(strval($uid))&&!empty($uid)?$uid:die('请求出错');
        $sel = Cache::get($uid);
        $sel = count($sel)!==0?:die('购物车是空的,快去选择商品吧');
        $todel = Cache::set($uid,[]);
        return json($this->delmsg($todel));
    }
    public function delmsg($todel){
        return $todel==true?['code'=>'200','msg'=>'success']:['code'=>'100','msg'=>'is fail'];
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值