findOrEmpty()->toArray(); } //更新用户信息 或添加用户信息 public static function userLogin($data) { if (!empty($data['openid'])) { $wechatUser = self::getByOpenid($data['openid']); self::startTrans(); try { $time = time(); if ($wechatUser) { //更新用户微信信息 $wechatUserId = $wechatUser['id']; $data["token"] = md5($data["openid"] . $time . randomStr(1, 16)); $data["token_close_time"] = $time + 86400 * 3; $data["created_at"] = date('Y-m-d H:i:s', $time); $data["login_ip"] =request()->ip(); $data["last_login"] = date('Y-m-d H:i:s', $time); self::where(["id" => ["=", $wechatUserId]])->update($data); } else { //新增用户信息 $data["token"] = md5($data["openid"] . $time . randomStr(1, 16)); $data["token_close_time"] = $time + (86400 * 3); $data["created_at"] = date('Y-m-d H:i:s', $time); $data["login_ip"] = request()->ip(); $data["last_login"] = date('Y-m-d H:i:s', $time); $data["username"] = "";//所属用户 self::insertGetId($data); } //提交事务 self::commit(); return json(["state" => "ok", "message" => "登录成功", "token" => $data["token"]]); } catch (Exception $e) { self::rollback(); return json(["state" => "fail", "message" => "登录失败500"]); } } else { return json(["state" => "fail"]); } } //验证当前用户登录状态 static function userTokenVerification(string $token, string $openid) { $user = self::where([["openid", "=", $openid], ["token", "=", $token]])->field("id,token,token_close_time")->findOrEmpty(); if ($user->isEmpty()) { return []; } if (!$user["token"] || !($user["token_close_time"]) || $user["token_close_time"] < time()) { return []; } return $user; } }