93 lines
2.5 KiB
PHP
93 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: zn
|
|
* Date: 2017/6/15
|
|
* Time: 13:59
|
|
*/
|
|
|
|
namespace common\models;
|
|
|
|
|
|
use common\utils\RedisKeyUtil;
|
|
use Yii;
|
|
use yii\base\Model;
|
|
|
|
class UserInfo extends Model
|
|
{
|
|
public $userID = null;
|
|
public $token = null;
|
|
public $username = null;
|
|
public $fd = null;
|
|
|
|
public function save()
|
|
{
|
|
$jsonStr = json_encode($this->toArray());
|
|
|
|
Yii::$app->redis->setex(RedisKeyUtil::userInfoByUserID($this->userID), 3600 * 24, $jsonStr);
|
|
|
|
Yii::$app->redis->setex(RedisKeyUtil::userInfoByUsername($this->username), 3600 * 24, $this->userID);
|
|
Yii::$app->redis->setex(RedisKeyUtil::userInfoByToken($this->token), 3600 * 24, $jsonStr);
|
|
|
|
if (!empty($this->fd))
|
|
Yii::$app->redis->setex(RedisKeyUtil::userInfoByFD($this->fd), 3600 * 24, $this->userID);
|
|
}
|
|
|
|
public function delete()
|
|
{
|
|
Yii::$app->redis->del(RedisKeyUtil::userInfoByUserID($this->userID));
|
|
Yii::$app->redis->del(RedisKeyUtil::userInfoByUsername($this->username));
|
|
Yii::$app->redis->del(RedisKeyUtil::userInfoByToken($this->token));
|
|
Yii::$app->redis->del(RedisKeyUtil::userInfoByFD($this->fd));
|
|
}
|
|
|
|
/**
|
|
* @param $jsonStr
|
|
* @return UserInfo|null
|
|
*/
|
|
public static function loadByJson($jsonStr)
|
|
{
|
|
$data = json_decode($jsonStr, true);
|
|
if (empty($data)) return null;
|
|
|
|
$userInfo = new UserInfo();
|
|
$userInfo->setAttributes($data, false);
|
|
|
|
if (empty($userInfo->userID))
|
|
return null;
|
|
|
|
return $userInfo;
|
|
}
|
|
|
|
public static function loadByUserID($userID)
|
|
{
|
|
if (empty($userID)) return null;
|
|
|
|
$jsonStr = Yii::$app->redis->get(RedisKeyUtil::userInfoByUserID($userID));
|
|
return self::loadByJson($jsonStr);
|
|
}
|
|
|
|
public static function loadByToken($token)
|
|
{
|
|
$jsonStr = Yii::$app->redis->get(RedisKeyUtil::userInfoByToken($token));
|
|
if (empty($jsonStr)) return null;
|
|
|
|
$userInfo = self::loadByJson($jsonStr);
|
|
if (!empty($userInfo)) return $userInfo;
|
|
|
|
return self::loadByUserID($jsonStr);
|
|
}
|
|
|
|
public static function loadByUsername($username)
|
|
{
|
|
$userID = Yii::$app->redis->get(RedisKeyUtil::userInfoByUsername($username));
|
|
return self::loadByUserID($userID);
|
|
}
|
|
|
|
public static function loadByFd($fd)
|
|
{
|
|
$userID = Yii::$app->redis->get(RedisKeyUtil::userInfoByFD($fd));
|
|
return self::loadByUserID($userID);
|
|
}
|
|
}
|