diff --git a/game-server/app/services/gvg/gvgItemService.ts b/game-server/app/services/gvg/gvgItemService.ts index f6fbae57f..2b8d7ac07 100644 --- a/game-server/app/services/gvg/gvgItemService.ts +++ b/game-server/app/services/gvg/gvgItemService.ts @@ -2,6 +2,7 @@ import { GVG_RETURN_ITEM_TYPE, ITEM_CHANGE_REASON, LEAGUE_ITEM_REFRESH_TYPE, GVG import { GVGUserItemModel } from "../../db/GVGUserItem"; import { gameData } from "../../pubUtils/data"; import { RewardInter } from "../../pubUtils/interface"; +import { saveGVGItemChangeLog } from "../../pubUtils/logUtil"; import { DAY_TO_SECOND, getZeroPoint, getFutureTime } from "../../pubUtils/timeUtil"; import { sendMessageToUserWithSuc } from "../pushService"; import { addItems, handleCost } from "../role/rewardService"; @@ -19,7 +20,7 @@ import { getGVGConfig } from "./gvgService"; * @returns */ export async function addGVGReward(roleId: string, roleName: string, leagueCode: string, sid: string, leagueItems: RewardInter[], items: RewardInter[], reason: ITEM_CHANGE_REASON) { - let returnGoods: { id: number, count: number, itemType: number }[] = [], pushGoods: { id: number, count: number, expireTime: number }[] = []; + let returnGoods: { id: number, count: number, itemType: number }[] = [], pushGoods: { id: number, count: number, expireTime: number, inc: number, reason: number }[] = []; let { configId } = getGVGConfig(); if(items.length > 0) { const goods = await addItems(roleId, roleName, sid, items, reason); @@ -32,10 +33,11 @@ export async function addGVGReward(roleId: string, roleName: string, leagueCode: if(!dicItem) continue; let item = await GVGUserItemModel.increaseItem(configId, leagueCode, roleId, id, count, getExpireTime(dicItem.refreshType)); returnGoods.push({ id, count, itemType: GVG_RETURN_ITEM_TYPE.GVG_ITEM }); - pushGoods.push({ id, count: item.count, expireTime: item.expireTime }); + pushGoods.push({ id, count: item.count, inc: count, expireTime: item.expireTime, reason }); } if(pushGoods.length > 0) { await sendMessageToUserWithSuc(roleId, PUSH_ROUTE.LEAGUE_ITEM_UPDATE, { items: pushGoods }, sid); + saveGVGItemChangeLog(roleId, leagueCode, pushGoods, reason); } return returnGoods; } @@ -71,8 +73,14 @@ export async function handleGVGCost(roleId: string, leagueCode: string, sid: str if(!itemResult) return false; const decreaseResult = await GVGUserItemModel.decreaseItem(configId, leagueCode, roleId, leagueItems); - const pushGoods = decreaseResult.map(item => ({ id: item.id, count: item.count, expireTime: item.expireTime })); - if(pushGoods.length > 0) await sendMessageToUserWithSuc(roleId, PUSH_ROUTE.LEAGUE_ITEM_UPDATE, { items: pushGoods }, sid); + const pushGoods = decreaseResult.map(item => { + let leagueItem = leagueItems.find(cur => cur.id == item.id); + return { id: item.id, count: item.count, expireTime: item.expireTime, inc: leagueItem?.count } + }); + if(pushGoods.length > 0) { + await sendMessageToUserWithSuc(roleId, PUSH_ROUTE.LEAGUE_ITEM_UPDATE, { items: pushGoods }, sid); + saveGVGItemChangeLog(roleId, leagueCode, pushGoods, reason); + } return true; } diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index e643f879b..3bac755fc 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -1241,6 +1241,7 @@ export enum LOG_TYPE { BOSS_HP = 'bossHp', // 演武台boss血量 REBIRTH = 'rebirth', // 演武台boss血量 MEMORY = 'memory', // 保存内存 + GVG_ITEM = 'gvgItemChange', // gvg道具变动 } export enum MEMORY_LOG_TYPE { diff --git a/shared/db/UserLog.ts b/shared/db/UserLog.ts index a37634d04..275fe1b78 100644 --- a/shared/db/UserLog.ts +++ b/shared/db/UserLog.ts @@ -181,6 +181,16 @@ export default class UserLog extends BaseModel { @prop({ required: false }) memoryData: string; // 内存数据 + // gvg道具数据 + @prop({ required: false }) + configId: number; // gvg赛季 + + @prop({ required: false }) + leagueCode: string; // 所在联军 + + @prop({ required: false }) + expireTime: number; // 过期时间 + public static async createRecord(params: UserLogModelTypeParam) { const r = await UserLogModel.insertMany(params); return r; diff --git a/shared/pubUtils/logUtil.ts b/shared/pubUtils/logUtil.ts index b9d848e2d..0605bc30c 100644 --- a/shared/pubUtils/logUtil.ts +++ b/shared/pubUtils/logUtil.ts @@ -81,6 +81,20 @@ export async function saveItemChangeLog(roleId: string, goods: { id: number, cou } } +export async function saveGVGItemChangeLog(roleId: string, leagueCode: string, goods: { id: number, count: number, inc: number, expireTime: number }[], reason: number) { + try { + let role = await RoleModel.findByRoleId(roleId, 'userInfo roleId roleName serverId'); + let params = getParamByRole(role); + for (let { id, count, inc, expireTime } of goods) { + let dicGVGItem = gameData.gvgItem.get(id); + if(inc == 0 || !dicGVGItem) continue; + await UserLogModel.createRecord({ type: LOG_TYPE.GVG_ITEM, ...params, leagueCode, itemId: id, itemName: dicGVGItem.name, inc, count, expireTime, itemChangeReason: reason }) + } + } catch (e) { + console.error(e); + } +} + export async function saveGoldChangeLog(roleId: string, count: number, inc: number, reason: number) { let id = CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD); return await saveItemChangeLog(roleId, [{ id, count, inc }], reason);