✨ feat(百家争鸣):祈灵 更新至 eb9f941ae

This commit is contained in:
luying
2023-08-25 14:57:06 +08:00
parent f8349849eb
commit e6665208e1
13 changed files with 417 additions and 137 deletions
@@ -51,6 +51,7 @@ import { getPlayerDragonBoatDataShow } from './dragonBoatService';
import { getPlayerEntertainDataShow } from './entertainService';
import { getPlayerQixiDataShow } from './qixiService';
import { getPlayerMidAutumnDataShow } from './midAutumnService';
import { getPlayerAuthorGachaDataShow } from './authorGachaService';
/**
* 获取活动数据
@@ -292,6 +293,12 @@ export async function getActivity(serverId: number, roleId: string, uid: number,
activityData = await getPlayerMidAutumnDataShow(activityId, serverId, roleId);
break;
}
case ACTIVITY_TYPE.AUTHOR_GACHA:
{
activityData = await getPlayerAuthorGachaDataShow(activityId, serverId, roleId);
break;
}
default: {
console.log('未知活动类型.........', activityType)
break;
@@ -0,0 +1,33 @@
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);
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
}