import Utils from "../Script/module/Pay/Utils"; export interface SevenDayRewardItem { type: "coin" | "hammer" | "freeze" | "magic_wand" | "infinite_health" | "cat_skin"; amount?: number; count?: number; itemId?: number; } export interface SevenDayReward { day: number; items: SevenDayRewardItem[]; claimed: boolean; } export interface SevenDayActivityInfo { serverNow: string | number; activityId: string; status: string; triggerLevel: number; triggerReached: boolean; startAt: string | number; endAt: string | number; claimedCount: number; todayClaimed: boolean; canClaim: boolean; nextRewardDay: number; rewards: SevenDayReward[]; } export interface SevenDayClaimResult { claimId: string; rewardDay: number; rewards: SevenDayRewardItem[]; claimedCount: number; todayClaimed: boolean; completed: boolean; } export interface SevenDayResponse { code: number; data: T; msg?: string; } export default class SevenDayGiftApi { public static getInfo(callback: (response: SevenDayResponse) => void) { this.post("signInActivityInfo", { uid: this.getUid() }, callback); } public static claim(callback: (response: SevenDayResponse) => void) { this.post("signInClaim", { uid: this.getUid() }, callback); } public static saveCat(catNum: number, callback: (response: SevenDayResponse<{ catArr: number[] }>) => void) { this.post("setCatArr", { uid: this.getUid(), action: "save", catNum, }, callback); } public static saveProps(propData: object, callback: (response: SevenDayResponse) => void) { this.post("userProp", { uid: this.getUid(), action: "save", propType: 0, propData: JSON.stringify(propData), }, callback); } public static getUid(): string { const storedUid = cc.fx.StorageMessage.getStorage("uid"); if (storedUid !== undefined && storedUid !== null && storedUid !== "") { cc.fx.GameConfig.GM_INFO.uid = storedUid; } return cc.fx.GameConfig.GM_INFO.uid || ""; } private static post(endpoint: string, params: object, callback: (response: SevenDayResponse) => void) { let completed = false; const timeoutHandle = setTimeout(() => { if (completed) return; completed = true; cc.warn("[SevenDayGiftApi] 请求超时:" + endpoint); callback({ code: 0, data: null, msg: "请求超时,请稍后重试" }); }, 5500); Utils.POST(endpoint, params, response => { if (completed) return; completed = true; clearTimeout(timeoutHandle); callback(response); }); } }