一种基于redis的购物车实现方案(php)

namespaceHome\Controller;
useThink\Controller;
useOrg\Net\Http;
useThink\Cache\Driver\Redis;
classIndexControllerextendsController
{
private$redis_obj=null;
public function__construct()
{
$this->redis_obj=newRedis();
}
 
/**
*@file:判断购物车是否存在这减商品
*@param$user_id
*@param$goods_id
*/
public functiongoods_is_exist($user_id,$goods_id)
{
$r1=$this->redis_obj->hExists($user_id,$goods_id);
return$r1;
}<br>
/**
*@file:增加购物车商品
*
*/
public functionadd_goods()
{
$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;
$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;
$exist=$this->goods_is_exist($user_id,$goods_id);
if(!empty($user_id) &&$goods_id) {
//不存在 增加商品
if(!$exist) {
$add_return=$this->redis_obj->hSet($user_id,$goods_id,1);
if($add_return) {
$this->ajaxReturn(array('code'=>0,'msg'=>'success'));
}else{
$this->ajaxReturn(array('code'=>1,'msg'=>'error'));
}
}elseif($exist) {
 
//存在的商品增加1
$add_exist_result=$this->redis_obj->hIncrBy($user_id,$goods_id,1);
if($add_exist_result) {
$this->ajaxReturn(array('code'=>0,'msg'=>'success','1'=>$add_exist_result));
}else{
$this->ajaxReturn(array('code'=>1,'msg'=>'error'));
}
}
}
}
 
//减少购物车的商品
public functionreduce_goods()
{
$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;
$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;
if(!empty($user_id) &&$goods_id) {
$exist=$this->goods_is_exist($user_id,$goods_id);
 
//不存在
if(!$exist) {
$this->ajaxReturn(array('code'=>1,'msg'=>'goods is not exist '));
}elseif($exist) {
$val=$this->redis_obj->hGet($user_id,$goods_id);
if($val==1) {//购物车商品只有一件的时候 减少到0就是删除
$del_result=$this->redis_obj->hDel($user_id,$goods_id);
if($del_result==1) {
$this->ajaxReturn(array('code'=>0,'msg'=>'success','num'=>0));
}
}elseif($val>1) {
$new_value=$this->redis_obj->hIncrBy($user_id,$goods_id,-1);
if($new_value>0) {
$this->ajaxReturn(array('code'=>0,'msg'=>'success','num'=>$new_value));
}else{
$this->ajaxReturn(array('code'=>1,'msg'=>'error'));
}
}
}
}else{
$this->ajaxReturn(array('code'=>1,'msg'=>'param is empty'));
}
}
 
//移除商品
public functionrm_goods()
{
$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;
$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;
if(!empty($user_id) && !empty($goods_id)) {
$arr= explode(',',$goods_id);
array_unshift($arr,$user_id);
$rm_result= call_user_func_array(array($this->redis_obj,"hDel"),$arr);
if($rm_result>=0) {
$this->ajaxReturn(array('code'=>0,'msg'=>'remove success'));
}
}else{
$this->ajaxReturn(array('code'=>1,'msg'=>'param is empty'));
}
}
//购物车列表
public functioncart_list()
{
$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;
 
if(!empty($user_id)) {
 
$goods_list=$this->redis_obj->hGetAll($user_id);
 
$this->ajaxReturn(array('code'=>0,'list'=>$goods_list));
 
}else{
 
$this->ajaxReturn(array('code'=>1,'msg'=>'param is empty'));
 
}
 
}
 
//设置一个商品的数量
public function edit_goods_num()
  {
 
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值