php redis冻结库存实现

php redis冻结库存实现

以预售活动支付定金为例

 $frozen_num = 0;   //定义初始冻结库存为0
 $ApiRedis = new \Addons\Api\RedisController();  //封装的redis类初始化方法已经链接了redis与选择了数据库
 $redis_key = 'retail_advance_frozen_goods_' . $advance_bill['id'] . '_goods_id_' . $goods_id;    //key $advance_bill['id'] 预售活动id   $goods_id 商品id
 $redis_time = ($advance_bill['tail_end_time'] - time())*1;  //redis 保存时间秒  尾款结束时间减去当前时间
 $advance_frozen_goods = $ApiRedis::$redis->mget($ApiRedis::$redis->keys($redis_key));   //查询之前冻结的信息
 if($advance_frozen_goods){
    foreach ($advance_frozen_goods as $key=>&$val){
        $frozen_num += json_decode($val,true)['num'];
    }
 }
 $frozen_num = round($frozen_num + $num, 3);    //购买的数量 + 冻结的库存
 $redis_save = array(
     'advance_id' => $advance_id,
     'num' => $frozen_num
 );
 $ApiRedis::$redis->setex($redis_key, $redis_time, json_encode($redis_save));   //替换该活动商品的值存入nosql 尾款结束后自动释放 尾款支付成功后商品库存减少,然后再次查询冻结库存,减去购买的数量重新存入nosql即可
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值