获取当天某个产品中用户的交易数量redis 零点过期数据

23 篇文章 0 订阅
 /**
     * 获取当天某个产品中用户的交易数量
     * @param $pid 产品编号
     * @param $uid  会员编号
     * @return mixed
     */
    public function getCountForDayUid($pid,$uid){
        $key = $this->cacheZsetDayKey[0].$pid;
        if( $this->redis && ($this->redis->exists($key)) ){
            $count = $this->redis->zscore($key,$uid);
            $count=$count>0?$count:0;
        }else{
            $expireTime=strtotime("today")+60*60*24;
            $openSqlWhere ='status=1 and p_id='.$pid.' and uid='.$uid.' and createtime>='.strtotime("today").' and createtime<='.$expireTime;
            $count =  $this->model->where($openSqlWhere)->count();
            $this->redis->zadd($key,$count,$uid);

            //每天0点清楚前天记录数
            $this->redis->EXPIREAT($key,$expireTime);
        }
        return $count;
    }

	/**
	 * 增加当天某个产品中用户的成功交易数
	 * @param $pid  产品编号
	 * @param $uid
	 * @param int $ct 交易个数
	 * @return bool
	 */
	public function addCountForDayUid($pid,$uid,$ct=1){
		if($this->redis && isset($uid) && isset($pid) && $ct >0){
			$key = $this->cacheZsetDayKey[0].$pid;
			$this->redis->ZINCRBY($key,$ct,$uid);
			//每天0点清楚前天记录数
			$expireTime=strtotime("today")+60*60*24;
			$this->redis->EXPIREAT($key,$expireTime);
			return true;
		}else{
			return false;
		}
	}

=============================================================================
private $cacheZsetDefJifenUidKey = array('jifen:zset:jifenshopprecord_defjf_uid:', 86400);//消耗积分的所有订单id (所有兑换完成的,所有中奖的+所有未中奖的)
/**
     * 保存便有扣积分的订单编号  {有:兑换成功的;抽奖全部}
     * @param $uid
     * @param $rid
     * @return bool
     */
    public function addZsetDefJifenUidKey($uid,$rid){
        if($this->redis && isset($uid) && isset($rid)){
            $key =  $this->cacheZsetDefJifenUidKey[0].$uid;
            //判断数据是否已过期
            if(!$this->redis->exists($key)){
                $this->getListForDefJf($uid,strtotime("-3 month"));
            }
            $this->redis->zAdd($key,time(),$rid);
            $this->redis->EXPIRE($key,$this->cacheZsetDefJifenUidKey[1]);
        }else{
            return false;
        }
        return true;
    }


/**
 $idArray=$this->jifenShopRecordModel->getListForDefJf($this->uid,strtotime("-3 month"), '+inf', array($pageSize*($page-1),10));          

     *获取某个用户下 所有扣积分的订单id [兑换成功的,所有抽奖的]
     * @param $uid
     * @param int $start 开始日期
     * @param  $end 结束日期
     * @param $limit=array($start,count)
     * @return mixed
     */
    public function getListForDefJf($uid,$start,$end='+inf',$limit=array()){
        if($start<1){
            return false;
        }
        $key = $this->cacheZsetDefJifenUidKey[0].$uid;

        if( $this->redis && ($this->redis->exists($key)) ){
            $return =$this->redis->zRevRangeByScore($key,$end,$start,array('limit'=>$limit));
        }else{
            $sqlWhere ='uid='.$uid.' AND ((TYPE=1 AND STATUS=1) OR (TYPE=2 ) )';
            $result = $this->model->field('id,createtime')->where($sqlWhere)->order('id desc')->select();
            if($result && $this->redis){
                foreach($result as $k=>$v){
                    $this->redis->zAdd($key,$v['createtime'],$v['id']);
                }
                $this->redis->EXPIRE($key,$this->cacheZsetDefJifenUidKey[1]);
            }else{
                $result=array();
            }
            $end=(string)$end==='+inf'?time():$end;

            $returnArray = array_slice($result,$limit[0],$limit[1]);
            foreach($returnArray as $k=>$v){
                if($v['createtime']>=$start && $v['createtime']<=$end  ){
                    $return[$k]=$v['id'];
                }
            }
        }
        return $return;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值