public function bindToUser(WechatUser $wechatUser, $role_name = RoleModel::WECHATER, $cache = TRUE) { $userModel = config('auth.model'); $user = !empty($wechatUser->uid) ? (new $userModel())->find($wechatUser->uid) : (new $userModel())->get($wechatUser->unionid); empty($user) && ($user = (new $userModel())->add(['username' => $wechatUser->unionid, 'password' => (new $userModel())->auto_password($wechatUser->unionid)], $role_name)); $wechatUser->update(['uid' => $user->getKey()]); $hashkey = 'update-user-from-wechat-' . $user->getKey(); if (!$cache || is_null(Cache::get($hashkey, null))) { $user->update(['nickname' => $wechatUser->nickname, 'gender' => $wechatUser->gender, 'avatar_aid' => $wechatUser->avatar_aid]); Cache::put($hashkey, time(), 1440); //0.5 day } return $user; }