| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- <?php
 
- namespace addons\faqueue\library\jobs;
 
- use addons\faqueue\library\QueueApi;
 
- use addons\faqueue\model\FaqueueLog;
 
- use app\admin\model\AdminMessage;
 
- use app\admin\model\UserMessage;
 
- use app\common\library\weChat\weChatMp;
 
- use think\Db;
 
- use think\Log;
 
- use think\queue\job;
 
- class CheckRelegation
 
- {
 
-     private $redis;
 
-     function __construct()
 
-     {
 
-         $redis = new \Redis();
 
-         $redisconfig = config("redis");
 
-         $redis->connect($redisconfig["host"], $redisconfig["port"], 86400 * 31);
 
-         $this->redis = $redis;
 
-     }
 
-     public function fire(Job $job, $data)
 
-     {
 
-         $user_id = $data['user_id'];
 
-         $user = Db::name('user')->where('id',$user_id)->field('id,noble,noble_duetime')->find();
 
-         //贵族等级高于30天前定时等级。视为无效任务
 
-         if (!$user || $user['noble']>$data['noble'] || $user['noble_duetime']>$data['end_time']){
 
-             $job->delete();
 
-             echo 11111;
 
-             return;
 
-         }
 
-         //玩家当前贵族等级
 
-         $userNoble = $user['noble'];
 
-         $nobleDuetime = $user['noble_duetime'];
 
-         $userRenew2 = $this->redis->get('user_renew2_'.$user_id);
 
-         $getNobleLevelData = $this->getNobleLevelData($userNoble);
 
-         if (empty($getNobleLevelData)) {
 
-             $job->delete();
 
-             return;
 
-         }
 
-         $renew2 = $getNobleLevelData['renew2'];
 
- //        $this->redis->set('user_renew_'.$user_id,0);
 
-         $this->redis->set('user_renew2_'.$user_id,0);
 
-         $duetime = strtotime("+1 month",$nobleDuetime);
 
-         //如果不是最大等级保级说明是重新回到该爵位,需扣除之前回到回到该爵位的消保
 
-         //增加月保级消费(处理保级),和月消费分开(处理升级)
 
-         if ($userRenew2!=0 && $userRenew2>=$renew2){
 
-             //保级成功,延长过期时间
 
-             Db::name('user')->where('id',$user_id)->setField('noble_duetime',$duetime);
 
-         }else{
 
-             //降级,>骑士
 
-             $userNoble = $userNoble - 1;
 
-             if ($userNoble<1) {
 
-                 $job->delete();
 
-                 return;
 
-             }
 
-             Db::name('user')->where('id',$user_id)->update(['noble'=>$userNoble,'noble_duetime'=>$duetime]);
 
-         }
 
-         $job->delete();
 
-         (new FaqueueLog())->log($job->getQueue(), $job->getName(), $data);
 
-         //重新定时任务
 
-         if ($userNoble>1) QueueApi::timeRelegation($user_id,$duetime,$userNoble);
 
-     }
 
-     public function failed($data)
 
-     {
 
-         Log::write("任务失败:" . print_r(['data' => $data,], true), 'error');
 
-     }
 
-     /**
 
-      * 获取指定等级的贵族数据
 
-      * @param $level_id
 
-      */
 
-     private function getNobleLevelData($level_id)
 
-     {
 
-         $getNobleLevelList = $this->redis->get('noble_level_list');
 
-         if (empty($getNobleLevelList)) return [];
 
-         $getNobleLevelList = unserialize($getNobleLevelList);
 
-         foreach ($getNobleLevelList as $v){
 
-             if ($level_id == $v['id']) return $v;
 
-         }
 
-         return [];
 
-     }
 
- }
 
 
  |