🐞 fix(gvg): 玩家贡献更新下发推送

This commit is contained in:
luying
2023-03-14 14:55:00 +08:00
parent 522c4fd121
commit 6e3a82ddea
5 changed files with 22 additions and 11 deletions

View File

@@ -227,7 +227,7 @@ export class GVGProduceHandler {
// 计算产量
const { foodSum, rewardSum, leagueRewardSum, activeSum } = await sumOutputByResults(myResultFields);
// 资源
let resourceResult = await addResource(myLeague, roleId, roleName, GVG_RESOURCE_TYPE.FOOD, foodSum)||{};
let resourceResult = await addResource(myLeague, roleId, roleName, GVG_RESOURCE_TYPE.FOOD, foodSum, sid)||{};
// 相关物品
let leagueGoods = await addGVGReward(roleId, roleName, myLeague.leagueCode, sid, leagueRewardSum, rewardSum, ITEM_CHANGE_REASON.HARVEST)
// 活跃
@@ -370,7 +370,7 @@ export class GVGProduceHandler {
let { reward, leagueReward, leagueConsume } = dicGVGItem;
let produceCoin = getProduceCoinCnt(leagueConsume);
// 资源
let resourceResult = await addResource(myLeague, roleId, roleName, GVG_RESOURCE_TYPE.MINERAL, output)||{};
let resourceResult = await addResource(myLeague, roleId, roleName, GVG_RESOURCE_TYPE.MINERAL, output, sid)||{};
// 相关物品
let leagueGoods = await addGVGReward(roleId, roleName, myLeague.leagueCode, sid, leagueReward, reward, ITEM_CHANGE_REASON.HARVEST)
// 活跃
@@ -493,7 +493,7 @@ export class GVGProduceHandler {
let { reward, leagueReward, leagueConsume } = dicGVGItem;
let produceCoin = getProduceCoinCnt(leagueConsume);
// 资源
let resourceResult = await addResource(myLeague, roleId, roleName, GVG_RESOURCE_TYPE.WOOD, output)||{};
let resourceResult = await addResource(myLeague, roleId, roleName, GVG_RESOURCE_TYPE.WOOD, output, sid)||{};
// 相关物品
let leagueGoods = await addGVGReward(roleId, roleName, myLeague.leagueCode, sid, leagueReward, reward, ITEM_CHANGE_REASON.HARVEST)
// 活跃
@@ -513,6 +513,7 @@ export class GVGProduceHandler {
// 获取资源
async debugAddResource(msg: { type: number, count: number }, session: BackendSession) {
const roleId = session.get('roleId');
const sid = session.get('sid');
const roleName = session.get('roleName');
const guildCode = session.get('guildCode');
const { type, count } = msg;
@@ -520,7 +521,7 @@ export class GVGProduceHandler {
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
let resourceResult = await addResource(myLeague, roleId, roleName, type, count);
let resourceResult = await addResource(myLeague, roleId, roleName, type, count, sid);
if(!resourceResult) return resResult(STATUS.WRONG_PARMS);
return resResult(STATUS.SUCCESS, resourceResult);

View File

@@ -1,7 +1,7 @@
// 征战中原相关
import moment = require("moment");
import { GVG_PERIOD, GVG_RETURN_ITEM_TYPE, ITEM_CHANGE_REASON, MAIL_TYPE, REDIS_KEY, VESTIGE_OPP_STATUS, VESTIGE_STATUS } from "../../consts";
import { GVG_PERIOD, GVG_RETURN_ITEM_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY, VESTIGE_OPP_STATUS, VESTIGE_STATUS } from "../../consts";
import { ArtifactModel } from "../../db/Artifact";
import { GVGConfigModel } from "../../db/GVGConfig";
import { GVGLeagueModel, GVGLeagueType } from "../../db/GVGLeague";
@@ -25,10 +25,12 @@ import { getRandEelm } from "../../pubUtils/util";
import { getNumberArr, uniqueArr } from "../ladderService";
import { sendMailByContent } from "../mailService";
import { getHeroesAttributes } from "../playerCeService";
import { sendMessageToUserWithSuc } from "../pushService";
import { Rank } from "../rankService";
import { findKeys, getAllServerName, redisClient } from "../redisService";
import { isDevelopEnv } from "../utilService";
import { addGVGReward, combinePushItem } from "./gvgItemService";
import { calFighterContribute } from "./gvgPrepareService";
import { addVestigeLeagueRankRec, addVestigeRankMessage } from "./gvgRecService";
import { getGroupIdOfServer, getGroupKey, getGVGServerType, getPeriodByTime } from "./gvgService";
@@ -434,7 +436,10 @@ export async function saveVestigeRankSchedule() {
await GVGVestigeSumRankModel.saveRank(groupKey, ranks);
}
let playerSumRanks = await GVGVestigeSumRankModel.findAllScores();
await GVGUserDataModel.addVestigeScores(config.configId, playerSumRanks);
let userDatas = await GVGUserDataModel.addVestigeScores(config.configId, playerSumRanks);
for(let userData of userDatas) {
await sendMessageToUserWithSuc(userData.roleId, PUSH_ROUTE.GVG_CONTRIBUTE_UPDATE, { leagueCode: userData.leagueCode, job: LEAGUE_JOB.FIGHTER, sumContribute: calFighterContribute(userData.contribute) });
}
}
// systimer 服每周六5点

View File

@@ -16,7 +16,7 @@ import { getGVGConfig, getGVGPeriodData } from "./gvgService";
import { GVGVestigeRankModel } from "../../db/GVGVestigeRank";
import { addLeagueLvUpMessage, addResourceRecord } from "./gvgRecService";
import { GVGLeagueType } from "../../db/GVGLeague";
import { sendMessageToGuildWithSuc } from "../pushService";
import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from "../pushService";
import { sendMailByContent } from "../mailService";
export function checkPreTech(techId: number, activeQueue: number[], techQueue: Tech[]) {
@@ -118,7 +118,7 @@ export function getMyContribute(userDailyData: GVGUserDailyDataType, myRanks: {v
* @param count 数量
* @returns
*/
export async function addResource(myLeague: GVGLeagueType, roleId: string, roleName: string, resourceType: GVG_RESOURCE_TYPE, count: number) {
export async function addResource(myLeague: GVGLeagueType, roleId: string, roleName: string, resourceType: GVG_RESOURCE_TYPE, count: number, sid?: string) {
let { leagueCode } = myLeague;
let { configId } = getGVGConfig();
let resources = getResourceCnt(resourceType, count);
@@ -140,6 +140,7 @@ export async function addResource(myLeague: GVGLeagueType, roleId: string, roleN
let myContribute = getMyContribute(userDailyData, myRanks);
addResourceRecord(roleId, roleName, leagueCode, resourceType, count);
if(lv > originLv) addLeagueLvUpMessage(roleId, roleName, myLeague, lv);
await sendMessageToUserWithSuc(roleId, PUSH_ROUTE.GVG_CONTRIBUTE_UPDATE, { leagueCode, job: LEAGUE_JOB.PRODUCER, sumContribute: calProducerContribute(myContribute) }, sid);
return { resources: league.resources, leagueLv: league.lv, myContribute }
}

View File

@@ -204,4 +204,5 @@ export const PUSH_ROUTE = {
GVG_PLAYER_LEAVE_AREA: 'onPlayerLeaveArea', // 积分点上的驻守人变更
GVG_CITY_RANK_UPDATE: 'onGVGCityRankUpdate', // 城池积分排名
GVG_SPINE_ATTACKED: 'onSpinesAttacked', // 4.7 队伍在地图上受到攻击
GVG_CONTRIBUTE_UPDATE: 'onGVGContributeUpdate', // 贡献更新
}

View File

@@ -115,9 +115,12 @@ export default class GVGUserData extends BaseModel {
}
public static async addVestigeScores(configId: number, memberScores: { leagueCode: string, roleId: string, score: number }[]) {
await GVGUserDataModel.bulkWrite(memberScores.map(({ leagueCode, roleId, score }) => {
return { updateOne: { filter: { configId, leagueCode, roleId }, update: { $inc: { 'contribute.score': score } } } }
}));
let result: GVGUserDataType[] = [];
for(let { leagueCode, roleId, score } of memberScores) {
let data: GVGUserDataType = await GVGUserDataModel.findOneAndUpdate({ configId, leagueCode, roleId }, { $inc: { 'contribute.score': score } }, { new: true }).lean();
if(data) result.push(data);
}
return result;
}
public static async receiveBox(configId: number, leagueCode: string, roleId: string, boxId: number) {