2026-05-29 19:54:56 +08:00

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);
}
}