validate([ 'email' => ['required', 'email'], 'password' => ['required', 'string'], 'source' => ['nullable', 'string'], ]); $user = User::query()->where('email', $data['email'])->first(); if (! $user || ! Hash::check($data['password'], $user->password)) { return ApiResponse::error('账号或密码错误', 1001, null, 422); } $source = $data['source'] ?? 'pc'; $user->forceFill(['last_login_source' => $source])->save(); return ApiResponse::success([ 'token' => base64_encode($user->id . '|' . now()->timestamp . '|demo'), 'user' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'source' => $source, ], ], '登录成功'); } public function wechatPlaceholder(Request $request): JsonResponse { $data = $request->validate([ 'platform' => ['required', 'in:wechat_mp,wechat_mini,app'], 'openid' => ['nullable', 'string'], 'unionid' => ['nullable', 'string'], 'nickname' => ['nullable', 'string'], ]); $merchant = Merchant::query()->first(); $user = User::query()->first(); if ($user && ($data['openid'] ?? null)) { OauthAccount::query()->updateOrCreate( [ 'provider' => $data['platform'], 'openid' => $data['openid'], ], [ 'user_id' => $user->id, 'merchant_id' => $merchant?->id, 'platform' => $data['platform'], 'provider' => $data['platform'], 'unionid' => $data['unionid'] ?? null, 'nickname' => $data['nickname'] ?? null, 'raw_payload' => $data, ] ); } return ApiResponse::success([ 'platform' => $data['platform'], 'next_step' => '待接入真实微信 / App 登录流程', 'received' => $data, ], '渠道登录占位已预留'); } }