import type { ApiResponse } from "../client/types"; import proto from "db://assets/Scripts/proto/proto.pb.js"; import type { IAuthService } from "./IAuthService"; export class MockAuthService implements IAuthService { private delay(ms = 180) { return new Promise(r => setTimeout(r, ms)); } private ok(data: T): ApiResponse { return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; } // private err(message = "mock login error"): ApiResponse { // return ({ ok: false, error: { message } } as unknown) as ApiResponse; // } // 登录 async login(req: proto.cs.ICSLoginReq): Promise> { // 延时 await this.delay(150); const isGuest = req?.platType === "guest"; const userId = req?.userId ?? "uid"; const name = isGuest ? `guest_${userId.toString().slice(-6)}` : "tester"; // 过期时间(秒级时间戳,7天后过期) const expireSeconds = Math.floor(Date.now() / 1000) + 7 * 24 * 3600; // 模拟用户ID const accId = (Math.floor(Math.random() * 1000000)).toString(); // 模拟 CDN 前缀 const cdn = "https://cdn.mockserver.com/"; const res: proto.cs.ICSLoginRes = { name, token: `mock_token_${Date.now()}`, refreshToken: `mock_refresh_${Date.now()}`, expire: expireSeconds, accId, cdn, }; return this.ok(res); } /** 上报事件 */ async pointEvent(req: proto.cs.ICSPointEventReq): Promise> { // 延时 await this.delay(150); return this.ok({}); } }