diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 9f49914a..b1ea14cc 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -94,9 +94,7 @@ class UsersController extends AbstractController 'line_ip' => Base::getIp(), 'line_at' => Carbon::now(), ]; - foreach ($array as $key => $value) { - $user->$key = $value; - } + $user->updateInstance($array); $user->save(); // $user->token = User::token($user); diff --git a/app/Models/User.php b/app/Models/User.php index 11e65978..f3453eea 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -60,6 +60,19 @@ class User extends AbstractModel 'updated_at', ]; + /** + * 更新数据校验 + * @param array $param + */ + public function updateInstance(array $param) + { + parent::updateInstance($param); + // + if (isset($param['line_at']) && $this->userid) { + Cache::put("User::online:" . $this->userid, time(), Carbon::now()->addSeconds(30)); + } + } + /** * 昵称 * @param $value @@ -93,6 +106,19 @@ class User extends AbstractModel return array_filter(is_array($value) ? $value : explode(",", trim($value, ","))); } + /** + * 是否在线 + * @return int + */ + public function getOnlineStatus() + { + $online = intval(Cache::get("User::online:" . $this->userid, 0)); + if ($online) { + return true; + } + return WebSocket::whereUserid($this->userid)->exists(); + } + /** ***************************************************************************************** */ /** ***************************************************************************************** */ @@ -329,10 +355,10 @@ class User extends AbstractModel if (isset($_A["__static_userid2basic_" . $userid])) { return $_A["__static_userid2basic_" . $userid]; } - $fields = ['userid', 'email', 'nickname', 'userimg', 'line_at']; + $fields = ['userid', 'email', 'nickname', 'userimg']; $userInfo = self::whereUserid($userid)->select($fields)->first(); if ($userInfo) { - $userInfo->line_at; + $userInfo->online = $userInfo->getOnlineStatus(); } return $_A["__static_userid2basic_" . $userid] = ($userInfo ?: []); }