Files
ZYZ/game-server/app/services/activity/guildPayService.ts
2022-03-23 13:54:04 +08:00

82 lines
3.8 KiB
TypeScript

import { ACTIVITY_TYPE } from "../../consts";
import { ActivityGuildPayModel } from "../../db/ActivityGuildPay";
import { RoleType } from "../../db/Role";
import { GuildPayData } from "../../domain/activityField/guildPay";
import { getActivitiesByType, getActivityById, pushActivities, pushActivitiesToGuild, pushActivityInter } from "./activityService";
import { ServerlistModel } from '../../db/Serverlist';
import { ActivityGuildPayRecordModel } from "../../db/ActivityGuildPayRecord";
import { getServerCreateTime } from "../redisService";
/**
* 玩家活动数据
*
* @param {number} serverId 区Id
* @param {number} activityId 活动Id
* @param {string} roleId 角色Id
*
*/
export async function getGuildPayData(serverId: number, activityId: number, roleId: string, guildCode: string) {
let activityData = await getActivityById(activityId);
let serverTime = await getServerCreateTime(serverId);
let playerData = new GuildPayData(activityData, 0, serverTime);
let receiveRecord = await ActivityGuildPayRecordModel.findData(serverId, activityId, playerData.roundIndex, roleId);
playerData.setReceiveRecord(receiveRecord);
if(guildCode) {
let guildRecord = await ActivityGuildPayModel.findData(serverId, activityId, playerData.roundIndex, guildCode);
playerData.setGuildRecord(guildRecord);
}
return playerData;
}
export async function getGuildPayDataShow(serverId: number, activityId: number, roleId: string, guildCode: string) {
let playerData = await getGuildPayData(serverId, activityId, roleId, guildCode);
if(playerData && playerData.canShow && playerData.canShow()) {
return playerData.getShowResult();
}
return null;
}
export async function addGuildPay(role: RoleType, price: number) {
let { hasGuild, roleId, roleName, serverId, guildCode } = role;
if(hasGuild) { // 向全军团推送充值的人
let { openTime } = await ServerlistModel.findByServerId(serverId);
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.GUILD_PAY);
let pushResult: pushActivityInter[] = [];
for(let activityData of activities) {
let { activityId, type: activityType } = activityData;
let obj = new GuildPayData(activityData, 0, openTime * 1000);
let { isNew, result } = await ActivityGuildPayModel.addRecord(serverId, activityId, obj.roundIndex, guildCode, {
roleId, roleName, price
});
if(isNew) {
let { memberRecord } = result;
pushResult.push({ activityId, activityType, param: { payMember: roleName, payMemberCnt: memberRecord.length } });
}
}
await pushActivitiesToGuild(pushResult, guildCode);
}
}
export async function changeGuildActivity(guildCode: string, serverId: number, roleId: string, sid: string) {
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.GUILD_PAY);
let pushResult: pushActivityInter[] = [];
for(let activityData of activities) {
let { activityId, type: activityType } = activityData;
let obj = await getGuildPayData(serverId, activityId, roleId, guildCode);
pushResult.push({ activityId, activityType, param: { payRecord: obj.payRecord, payMemberCnt: obj.payMemberCnt } });
}
await pushActivities(pushResult, roleId, sid);
}
export async function guildDismisActivity(guildCode: string, serverId: number) {
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.GUILD_PAY);
let pushResult: pushActivityInter[] = [];
for(let activityData of activities) {
let { activityId, type: activityType } = activityData;
pushResult.push({ activityId, activityType, param: { payRecord: [], payMemberCnt: 0 } });
}
await pushActivitiesToGuild(pushResult, guildCode);
}