redisKey . $user_id; if (ApiService::instance()->checkApiOn()) { if ($this->getVipStartTime($user_id) != $start_time) { $userUpdate = new UserUpdate(); $userUpdate->setVipStarttime($start_time)->setId($user_id); \app\source\service\UserService::instance()->updateUser($userUpdate); Redis::instance()->del($redisKey); } } else { $obj = $this->getUserVipExtendModel()->where('user_id', 'eq', $user_id)->find(); if ($obj) { // 更新 $this->getUserVipExtendModel()->where('user_id', 'eq', $user_id)->update(['vip_starttime' => $start_time, 'updatetime' => time()]); } else { // 插入 $data = [ 'user_id' => $user_id, 'vip_starttime' => $start_time ]; $this->getUserVipExtendModel()->save($data); } Redis::instance()->set($redisKey, $start_time, 86400); } } /** * 维护用户隶属的快分推手id * @param $userId * @param $kuaifenId 快分推手id */ public function saveUserKuaifenId($userId, $kuaifenId) { if (ApiService::instance()->checkApiOn()) { if ($this->getUserKuaifenId($userId) != $kuaifenId) { $userUpdate = new UserUpdate(); $userUpdate->setKuaifen($kuaifenId)->setId($userId); \app\source\service\UserService::instance()->updateUser($userUpdate); } } else { $obj = $this->getUserVipExtendModel()->where('user_id', $userId)->find(); if ($obj) { if ($obj['ext_a'] != $kuaifenId) { $this->getUserVipExtendModel()->where('user_id', $userId)->update([ 'ext_a' => $kuaifenId, 'updatetime' => time() ]); } } else { $data = ['user_id' => $userId, 'ext_a' => $kuaifenId, 'createtime' => time(), 'updatetime' => time()]; $this->getUserVipExtendModel()->insert($data); } } } /** * 获取用户隶属快分app的推手id * @param $userId * @return int|mixed */ public function getUserKuaifenId($userId) { if (!$userId) { return 0; } if (ApiService::instance()->checkApiOn()) { return (int)\app\source\service\UserService::instance()->getUserInfo($userId)->kuaifen; } else { $obj = $this->getUserVipExtendModel()->where('user_id', $userId)->find(); if ($obj) { return $obj['ext_a']; } else { return 0; } } } /** * 获取 用户 vip开始时间 * @param $user_id * @return bool|int|string */ public function getVipStartTime($user_id) { if (!$user_id) { return 0; } if (ApiService::instance()->checkApiOn()) { return (int)\app\source\service\UserService::instance()->getUserInfo($user_id)->vip_starttime; } else { $redisKey = $this->redisKey.$user_id; if ($rst = Redis::instance()->get($redisKey)) { return $rst; } else { $obj = $this->getUserVipExtendModel()->where('user_id', 'eq', $user_id)->find(); if ($obj) { $start_time = intval($obj->vip_starttime); Redis::instance()->set($redisKey, $start_time, 86400); return $start_time; } else { return 0; } } } } public function getUserOs($user_id){ if (!$user_id) { return 0; } $redisKey = UserConstants::USER_OS.$user_id; if (ApiService::instance()->checkApiOn()) { Redis::instance()->del($redisKey); return (int)\app\source\service\UserService::instance()->getUserInfo($user_id)->os; } else { if($rst = Redis::instance()->get($redisKey)){ return $rst; }else{ $obj = $this->getUserVipExtendModel()->where('user_id', $user_id)->find(); if ($obj && !empty($obj['ext_b'])) { Redis::instance()->set($redisKey, $obj['ext_b'], 86400); return $obj['ext_b']; } else { return 0; } } } } /** * @todo 更新用户系统 * @param $user_id * @param $os */ public function updateUserOs($user_id,$os){ $redisKey = UserConstants::USER_OS.$user_id; if (ApiService::instance()->checkApiOn()) { if ($this->getUserOs($user_id) != $os) { $userUpdate = new UserUpdate(); $userUpdate->setId($user_id)->setOs($os); \app\source\service\UserService::instance()->updateUser($userUpdate); Redis::instance()->del($redisKey); } } else { $obj = Redis::instance()->get($redisKey); if(!$obj){ $row = $this->getUserVipExtendModel()->where('user_id', $user_id)->find(); if($row){ if($row->ext_b != $os){ $this->getUserVipExtendModel()->where('user_id', $user_id)->update([ 'ext_b' => $os, 'updatetime' => time() ]); } Redis::instance()->set($redisKey, $os, 86400); }else{ $data = ['user_id' => $user_id, 'ext_b' => $os, 'createtime' => time(), 'updatetime' => time()]; try{ if(Redis::instance()->setnx($redisKey, $os)){ Redis::instance()->expire($redisKey,86400); $this->getUserVipExtendModel()->insert($data); } }catch (\Exception $e){ LogService::notice($e->getMessage()); } } }else{ if($obj != $os){ $this->getUserVipExtendModel()->where('user_id', $user_id)->update([ 'ext_b' => $os, 'updatetime' => time() ]); Redis::instance()->set($redisKey, $os, 86400); } } } } /** * @param $adminConfigObject * @param $uid * @param $str * @return bool */ public function isBlockIosUser($adminConfigObject,$uid, $str){ if ($adminConfigObject instanceof BaseObject) { $adminConfigObject = $adminConfigObject->toArray(); } $block_ios_user_switch = ArrayHelper::array_find($adminConfigObject, 'block_ios_user_switch'); if ($block_ios_user_switch == 1) { $userUaVal = self::instance()->getUserOs($uid); if ($userUaVal == 2 && (strpos($str, 'index/recharge') !== false || strpos($str, '/s/') !== false)) { return true; } } return false; } }