🎈 perf(日志): gvg内的道具添加日志记录
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user