import { ACTIVITY_TYPE } from "../../consts/constModules/activityConst"; import { ActivityAuthorGachaRecModel } from "../../db/AuthorGachaRec"; import { UserGachaModel } from "../../db/UserGacha"; import { AuthorGachaData } from "../../domain/activityField/authorGachaField"; import { getGachaRemainFloor } from "../../pubUtils/util"; import { getRoleCreateTime, getServerCreateTime } from "../redisService"; import { getActivityById } from "./activityService"; export async function getPlayerAuthorGachaData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); if(!activityData) return let createTime = await getRoleCreateTime(roleId); let serverTime = await getServerCreateTime(serverId); let playerData = new AuthorGachaData(activityData, createTime, serverTime); if ((playerData?.type || 0) != ACTIVITY_TYPE.AUTHOR_GACHA) return let playerRecord = await ActivityAuthorGachaRecModel.findData(serverId, activityId, playerData.roundIndex, roleId); playerData.setPlayerRecords(playerRecord); return playerData; } export async function getUseGachaData(activityId: number, roleId: string, playerData: AuthorGachaData) { let userGacha = await UserGachaModel.findByRole(roleId, playerData.gachaId, activityId); let count = userGacha?.count || 0; let remainFloor = getGachaRemainFloor(playerData.gachaId, userGacha?.floor || []); return { count, remainFloor } } export async function getPlayerAuthorGachaDataShow(activityId: number, serverId: number, roleId: string) { let playerData = await getPlayerAuthorGachaData(activityId, serverId, roleId); if (playerData && playerData.canShow && playerData.canShow()) { return { ...playerData.getShowResult(), ...await getUseGachaData(activityId, roleId, playerData) }; } return null }