redis实现队列和消息推送

 

 

 /**
     *@退款专用
     *@ author renhui
     *@ WARN_REFUND_BALANCE    退款金额
     *@ desc:账号余额不足短信提醒分金额段进行提醒 YPWJ-5757
     * 查金额 s 每10分钟执行一次
     */
    public function refundSelect()
    {
     
        try{
            //查金额
            $finance = new finance_inc();
            $info = $finance->core_balance('a0009ac8027723dd9c5*****00' );
            if($info['error']){
                throw new Exception($info['error'].$info['error_description']);
            }
            if($info['success']) {
                //金额分转为元
                $balance = isset($info[ 'balance' ]) ? bcdiv($info[ 'balance' ], 100, 2) : 0;
                //查规则警报金额段
                $rules = bru_config(Configure::WARN_REFUND_BALANCE) ? bru_config(Configure::WARN_REFUND_BALANCE) : array();
                //去除重复的值并排序,从大到小
                $rules = array_unique($rules);
                sort($rules);
                //入队

                if ($rules) {
                    foreach ($rules as $value) {

                        if ($balance <= $value) {
                            //入队
                            $redis = new BruRedis();
                            $redis->hSetNx('warn:warn_refund_balance', $value, 0);
                            echo 'done';
                            return;
                        }
                    }
                } else {
                    throw new Exception('not found  warn:warn_refund_balance ');
                }
            }
        }catch(Exception $e){
            return $e->getMessage();
        }


    }
    /**
     *@退款专用
     *@ author renhui
     *@ WARN_REFUND_BALANCE    退款金额
     *@ desc:账号余额不足短信提醒分金额段进行提醒 YPWJ-5757
     * 发送消息s 每10分钟执行一次
     */
    public function wap_task_refundPhone()
    {
       
        try{
            $redis    = new BruRedis();
            //频率次数
            $wf_count = bru_config(Configure::WARN_FREQUENCY) ? bru_config(Configure::WARN_FREQUENCY) : '1';
            $reds_key = 'warn:warn_refund_balance';
            $send_arr = $redis->hGetAll($reds_key);
            if($send_arr)
            {
                foreach ($send_arr as $k => $v)
                {
                    //获取发放的值
                    $val = $redis->hGet($reds_key, $k);
                    if ($val < $wf_count) {
                        //查金额
                        $finance = new finance_inc();
                        $info = $finance->core_balance('a0009ac8027723dd9c5*****00' );//正式的
                        if($info['success']) {
                            //金额分转为元
                            $balance = isset($info[ 'balance' ]) ? bcdiv($info[ 'balance' ], 100, 2) : 0;
                        }
                        // 去发放短信或者短消息 todo
                        $client = new Client(getenv('BEARYCHAT_WEBHOOK'));
                        $res = $client->send('_退款专用,余额剩余 '.$balance.' 元,金额小于'.$k.'元!');
                        if($res){
                            echo 'send ok';
                        }else{
                            echo 'send error';
                        }
                        //设置为1,表示已经发放,每次+1
                        $redis->hIncrBy($reds_key, $k, 1);
                    }
                    //清空上一条
                    $last_send_arr = $redis->hGetAll($reds_key);
                    foreach ($last_send_arr as $key=>$last_v)
                    {
                        if($k !=$key){
                            $redis->hDel($reds_key,$key);
                        }
                    }
                    //清空end
                }
            }else{
                throw new Exception('not found  warn:warn_refund_balance ');
            }
        }catch(Exception $e){
            return $e->getMessage();
        }


    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值