login($code); if (empty($result['openid'])) { throw new \Exception('微信登录失败:' . ($result['errmsg'] ?? '未知错误')); } $openid = $result['openid']; $user = self::$Model::where('openid', $openid)->field('id,username,nickname,avatar,role')->find(); if (!$user) { // 新用户自动注册 $user = new User; $user->openid = $openid; $user->nickname = '微信用户' . mt_rand(10000, 99999); $user->account = new Accounts(); $res = $user->together('account')->save(); } $account = Accounts::where('user_id', $user->id ?? 0)->find(); if (!$account) { $acRes = $user->account()->save([]); } // 虚拟支付用户态签名依赖 session_key,只放缓存,不回给前端 if (!empty($result['session_key']) && !empty($user->id)) { VirtualPayService::saveSessionKey($user->id, $result['session_key']); } return $user; } }