一种基于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、付费专栏及课程。

余额充值