日志:添加玩家日志
This commit is contained in:
@@ -7,7 +7,7 @@ import { Application, HandlerService, pinus, } from 'pinus';
|
|||||||
import { FrontendSession } from 'pinus';
|
import { FrontendSession } from 'pinus';
|
||||||
import { HeroModel } from './../../../db/Hero';
|
import { HeroModel } from './../../../db/Hero';
|
||||||
import { genCode, generateStr, resResult } from '../../../pubUtils/util';
|
import { genCode, generateStr, resResult } from '../../../pubUtils/util';
|
||||||
import { COM_BTL_QUALITY, HERO_SELECT, DEBUG_MAGIC_WORD, REDIS_KEY, TASK_TYPE, ENTERY_ROLE_PICK, COUNTER, DEFAULT_LV, TA_USERSET_TYPE } from '../../../consts';
|
import { COM_BTL_QUALITY, HERO_SELECT, DEBUG_MAGIC_WORD, REDIS_KEY, TASK_TYPE, ENTERY_ROLE_PICK, COUNTER, DEFAULT_LV, TA_USERSET_TYPE, LOG_TYPE } from '../../../consts';
|
||||||
import { getAp } from '../../../services/actionPointService';
|
import { getAp } from '../../../services/actionPointService';
|
||||||
import { ItemModel } from '../../../db/Item';
|
import { ItemModel } from '../../../db/Item';
|
||||||
import { SkinModel } from '../../../db/Skin';
|
import { SkinModel } from '../../../db/Skin';
|
||||||
@@ -25,6 +25,7 @@ import { setComBtlOnUserLeave } from '../../../services/comBattleService';
|
|||||||
import Counter from '../../../db/Counter';
|
import Counter from '../../../db/Counter';
|
||||||
import { getExpByLv } from '../../../pubUtils/data';
|
import { getExpByLv } from '../../../pubUtils/data';
|
||||||
import { reportTAUserSet } from '../../../services/sdkService';
|
import { reportTAUserSet } from '../../../services/sdkService';
|
||||||
|
import { saveLoginAndOutLog } from '../../../pubUtils/logUtil';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
new HandlerService(app, {});
|
new HandlerService(app, {});
|
||||||
@@ -69,6 +70,7 @@ export class EntryHandler {
|
|||||||
let serverName = this.app.getServerId();
|
let serverName = this.app.getServerId();
|
||||||
await roleLogin(role.roleId, user.userCode, serverName, user.pkgName); // 保存在线用户
|
await roleLogin(role.roleId, user.userCode, serverName, user.pkgName); // 保存在线用户
|
||||||
await this.addSession(role, session);
|
await this.addSession(role, session);
|
||||||
|
saveLoginAndOutLog(LOG_TYPE.LOGIN, session);
|
||||||
|
|
||||||
// put user into channel
|
// put user into channel
|
||||||
// console.log(JSON.stringify(self.app.rpc.battle))
|
// console.log(JSON.stringify(self.app.rpc.battle))
|
||||||
@@ -224,6 +226,7 @@ export class EntryHandler {
|
|||||||
if(teamCode) { // 如果有寻宝中的队伍,那么等于战败
|
if(teamCode) { // 如果有寻宝中的队伍,那么等于战败
|
||||||
setComBtlOnUserLeave(roleId, teamCode)
|
setComBtlOnUserLeave(roleId, teamCode)
|
||||||
}
|
}
|
||||||
|
saveLoginAndOutLog(LOG_TYPE.LOGINOUT, session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -342,10 +342,10 @@ function randomQuestion(num: number) {
|
|||||||
let rid:Array<number> = [], result = [];
|
let rid:Array<number> = [], result = [];
|
||||||
while(num > 0) {
|
while(num > 0) {
|
||||||
let dicQuestion = getRandSingleEelm(questions);
|
let dicQuestion = getRandSingleEelm(questions);
|
||||||
let {id, question, answer, correct} = dicQuestion;
|
let {id, question, answer } = dicQuestion;
|
||||||
if(rid.includes(id)) continue;
|
if(rid.includes(id)) continue;
|
||||||
rid.push(id);
|
rid.push(id);
|
||||||
result.push({id, question, answer, correct});
|
result.push({id, question, answer});
|
||||||
num--;
|
num--;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import { checkOrderALI } from './pay/aliPay';
|
|||||||
import { getRoleOnlineInfo } from './redisService';
|
import { getRoleOnlineInfo } from './redisService';
|
||||||
import { PayCallback37Data } from '../domain/sdk';
|
import { PayCallback37Data } from '../domain/sdk';
|
||||||
import { reportTAEvent, reportTAUserSet } from './sdkService';
|
import { reportTAEvent, reportTAUserSet } from './sdkService';
|
||||||
|
import { savePayLog } from '../pubUtils/logUtil';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -160,6 +161,7 @@ export async function settleOrder(order: UserOrderModelType, serverId: number, s
|
|||||||
if (result.code !== 0) {//结算失败
|
if (result.code !== 0) {//结算失败
|
||||||
console.log(`支付失败..... ${JSON.stringify(result)}`)
|
console.log(`支付失败..... ${JSON.stringify(result)}`)
|
||||||
reportTAEvent(order.roleId, TA_EVENT.RECHARGE_FAIL, { pay_id: order.localOrderID, charge_id: order.productID, pay_name: order.message, pay_amount: order.price, pay_channel: order.payType })
|
reportTAEvent(order.roleId, TA_EVENT.RECHARGE_FAIL, { pay_id: order.localOrderID, charge_id: order.productID, pay_name: order.message, pay_amount: order.price, pay_channel: order.payType })
|
||||||
|
savePayLog(order);
|
||||||
return resResult(result);
|
return resResult(result);
|
||||||
}
|
}
|
||||||
//推送
|
//推送
|
||||||
@@ -181,7 +183,7 @@ export async function settleOrder(order: UserOrderModelType, serverId: number, s
|
|||||||
reportTAUserSet(TA_USERSET_TYPE.SET_ONCE, order.roleId, { first_pay_time: new Date() });
|
reportTAUserSet(TA_USERSET_TYPE.SET_ONCE, order.roleId, { first_pay_time: new Date() });
|
||||||
reportTAUserSet(TA_USERSET_TYPE.SET, order.roleId, { last_pay_time: new Date() });
|
reportTAUserSet(TA_USERSET_TYPE.SET, order.roleId, { last_pay_time: new Date() });
|
||||||
reportTAUserSet(TA_USERSET_TYPE.ADD, order.roleId, { total_revenue: order.price });
|
reportTAUserSet(TA_USERSET_TYPE.ADD, order.roleId, { total_revenue: order.price });
|
||||||
|
savePayLog(order);
|
||||||
return result.data;
|
return result.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import { SkinUpdate } from '../db/Skin';
|
|||||||
import { getInitHeroById } from './roleService';
|
import { getInitHeroById } from './roleService';
|
||||||
import { getActivities } from './activity/activityService';
|
import { getActivities } from './activity/activityService';
|
||||||
import { reportTAEvent, reportTAUserSet } from './sdkService';
|
import { reportTAEvent, reportTAUserSet } from './sdkService';
|
||||||
|
import { saveCoinChangeLog, saveFigureInfoLog, saveGoldChangeLog, saveItemChangeLog } from '../pubUtils/logUtil';
|
||||||
|
|
||||||
export class CheckMeterial {
|
export class CheckMeterial {
|
||||||
private roleId: string;
|
private roleId: string;
|
||||||
@@ -120,6 +121,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
|
|||||||
let { hasError, result } = await ItemModel.decreaseItems(roleId, items);
|
let { hasError, result } = await ItemModel.decreaseItems(roleId, items);
|
||||||
if (hasError) return false;
|
if (hasError) return false;
|
||||||
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, { goods: result.map(cur => ({...cur, reason })) }), uids);
|
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, { goods: result.map(cur => ({...cur, reason })) }), uids);
|
||||||
|
saveItemChangeLog(roleId, result, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
//删除装备
|
//删除装备
|
||||||
@@ -146,6 +148,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
|
|||||||
|
|
||||||
|
|
||||||
let equips = await EquipModel.deleteEquips(roleId, equipSeqIds);
|
let equips = await EquipModel.deleteEquips(roleId, equipSeqIds);
|
||||||
|
saveItemChangeLog(roleId, equips.map(equip => ({ id: equip.id, count: equip.count, inc: -1 })), reason);
|
||||||
pinus.app.get('channelService').pushMessageByUids('onEquipDel', resResult(STATUS.SUCCESS, { equips: equips.map(equip => ({ seqId: equip.seqId, id: equip.id, inc: -1, reason })) }), uids);
|
pinus.app.get('channelService').pushMessageByUids('onEquipDel', resResult(STATUS.SUCCESS, { equips: equips.map(equip => ({ seqId: equip.seqId, id: equip.id, inc: -1, reason })) }), uids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,10 +164,12 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
|
|||||||
if(costGold > 0) {
|
if(costGold > 0) {
|
||||||
reportTAEvent(roleId, TA_EVENT.ITEM_CONSUME, getGoldEventProperties(costGold, role.gold, reason));
|
reportTAEvent(roleId, TA_EVENT.ITEM_CONSUME, getGoldEventProperties(costGold, role.gold, reason));
|
||||||
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_gold: role.gold });
|
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_gold: role.gold });
|
||||||
|
saveGoldChangeLog(roleId, role.gold, -1 * costGold, reason);
|
||||||
}
|
}
|
||||||
if(costCoin > 0) {
|
if(costCoin > 0) {
|
||||||
reportTAEvent(roleId, TA_EVENT.ITEM_CONSUME, getCoinEventProperties(costCoin, role.coin, reason));
|
reportTAEvent(roleId, TA_EVENT.ITEM_CONSUME, getCoinEventProperties(costCoin, role.coin, reason));
|
||||||
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_coin: role.coin });
|
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_coin: role.coin });
|
||||||
|
saveCoinChangeLog(roleId, role.coin, -1 * costCoin, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -205,6 +210,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
|||||||
if (equipInfos.length > 0) {
|
if (equipInfos.length > 0) {
|
||||||
let { serverId } = await RoleModel.findByRoleId(roleId);
|
let { serverId } = await RoleModel.findByRoleId(roleId);
|
||||||
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY_COUNT, equipInfos.length, { equips: equipInfos.map(obj => { return { quality: obj.quality } }) })
|
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY_COUNT, equipInfos.length, { equips: equipInfos.map(obj => { return { quality: obj.quality } }) })
|
||||||
|
saveItemChangeLog(roleId, equipInfos, reason);
|
||||||
}
|
}
|
||||||
// 发邮件的
|
// 发邮件的
|
||||||
if(mailEquips.length > 0) {
|
if(mailEquips.length > 0) {
|
||||||
@@ -219,8 +225,10 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
|||||||
showItems.push({ id: item.id, count: item.count });
|
showItems.push({ id: item.id, count: item.count });
|
||||||
}
|
}
|
||||||
//背包除去装备推送
|
//背包除去装备推送
|
||||||
if (!!itemInfos.length)
|
if (!!itemInfos.length) {
|
||||||
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, { goods: itemInfos }), uids);
|
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, { goods: itemInfos }), uids);
|
||||||
|
saveItemChangeLog(roleId, itemInfos, reason);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,6 +247,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
|||||||
});
|
});
|
||||||
reportTAEvent(roleId, TA_EVENT.ITEM_GET, getGoldEventProperties(incGold, role.gold, reason));
|
reportTAEvent(roleId, TA_EVENT.ITEM_GET, getGoldEventProperties(incGold, role.gold, reason));
|
||||||
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_gold: role.gold });
|
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_gold: role.gold });
|
||||||
|
saveGoldChangeLog(roleId, role.gold, incGold, reason );
|
||||||
}
|
}
|
||||||
if(coin.length > 0) {
|
if(coin.length > 0) {
|
||||||
coin.forEach(count => {
|
coin.forEach(count => {
|
||||||
@@ -246,6 +255,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
|||||||
});
|
});
|
||||||
reportTAEvent(roleId, TA_EVENT.ITEM_GET, getCoinEventProperties(incCoin, role.coin, reason));
|
reportTAEvent(roleId, TA_EVENT.ITEM_GET, getCoinEventProperties(incCoin, role.coin, reason));
|
||||||
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_coin: role.coin });
|
reportTAUserSet(TA_USERSET_TYPE.SET, roleId, { current_coin: role.coin });
|
||||||
|
saveCoinChangeLog(roleId, role.coin, incCoin, reason);
|
||||||
}
|
}
|
||||||
if(ap > 0) {
|
if(ap > 0) {
|
||||||
showItems.push(getApObject(ap));
|
showItems.push(getApObject(ap));
|
||||||
@@ -256,7 +266,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
|||||||
let figureInfos:{ heads: Figure[], frames: Figure[], spines: Figure[] }[] = []; // 头像变化推送信息
|
let figureInfos:{ heads: Figure[], frames: Figure[], spines: Figure[] }[] = []; // 头像变化推送信息
|
||||||
if(skins.length > 0) {
|
if(skins.length > 0) {
|
||||||
let heroskins: {skins: HeroSkin[], hid: number}[] = []; // 皮肤推送信息
|
let heroskins: {skins: HeroSkin[], hid: number}[] = []; // 皮肤推送信息
|
||||||
let skinInfos: {id: number, hid: number, inc: number, reason: number }[] = [];
|
let skinInfos: {id: number, hid: number, count: number, inc: number, reason: number }[] = [];
|
||||||
let calAllHeroResult = undefined; // 全局战力变化推送
|
let calAllHeroResult = undefined; // 全局战力变化推送
|
||||||
|
|
||||||
for (let skinId of skins) {//皮肤推送
|
for (let skinId of skins) {//皮肤推送
|
||||||
@@ -268,11 +278,12 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
|||||||
heroskins.push({ skins: result.hero.skins, hid: result.hero.hid });
|
heroskins.push({ skins: result.hero.skins, hid: result.hero.hid });
|
||||||
if(result.calAllHeroResult) calAllHeroResult = result.calAllHeroResult;
|
if(result.calAllHeroResult) calAllHeroResult = result.calAllHeroResult;
|
||||||
}
|
}
|
||||||
skinInfos.push({ id: skinId, hid: result.hero?.hid||0, inc: 1, reason })
|
skinInfos.push({ id: skinId, hid: result.hero?.hid||0, count: 1, inc: 1, reason })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!!skinInfos.length) {
|
if (!!skinInfos.length) {
|
||||||
pushHeroSkinMsg(heroskins, skinInfos, uids); // 推送onHeroSkinChange
|
pushHeroSkinMsg(heroskins, skinInfos, uids); // 推送onHeroSkinChange
|
||||||
|
saveItemChangeLog(roleId, skinInfos, reason);
|
||||||
}
|
}
|
||||||
// 推送全局加成信息
|
// 推送全局加成信息
|
||||||
if(calAllHeroResult) await pushCalAllHeroCe(roleId, sid, calAllHeroResult);
|
if(calAllHeroResult) await pushCalAllHeroCe(roleId, sid, calAllHeroResult);
|
||||||
@@ -291,6 +302,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
|
|||||||
if(!!figureInfos && figureInfos.length > 0) {
|
if(!!figureInfos && figureInfos.length > 0) {
|
||||||
for(let figureInfo of figureInfos) {
|
for(let figureInfo of figureInfos) {
|
||||||
pinus.app.get('channelService').pushMessageByUids('onHeadChange', resResult(STATUS.SUCCESS, { ...figureInfo }), uids);
|
pinus.app.get('channelService').pushMessageByUids('onHeadChange', resResult(STATUS.SUCCESS, { ...figureInfo }), uids);
|
||||||
|
saveFigureInfoLog(roleId, figureInfo, reason)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+17
-8
@@ -21,6 +21,9 @@ export default class UserLog extends BaseModel {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
uid: number; // uid
|
uid: number; // uid
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
serverId: number; // 小区id
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
roleId: string; // 角色id
|
roleId: string; // 角色id
|
||||||
|
|
||||||
@@ -40,12 +43,12 @@ export default class UserLog extends BaseModel {
|
|||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
ceChangeReason: number; // 战力变化原因
|
ceChangeReason: number; // 战力变化原因
|
||||||
|
|
||||||
@prop({ required: false })
|
@prop({ required: false, type: Number })
|
||||||
ceChangeReasonInfo: string; // 战力变化原因信息,如武将id等
|
ceChangeIds: number[]; // 战力变化原因信息,如武将id等
|
||||||
|
|
||||||
// 充值相关
|
// 充值相关
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
productId: string; // 商品id
|
productID: string; // 商品id
|
||||||
|
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
productName: string; // 商品名字
|
productName: string; // 商品名字
|
||||||
@@ -57,7 +60,10 @@ export default class UserLog extends BaseModel {
|
|||||||
isYuanbao: boolean; // 是否为代币
|
isYuanbao: boolean; // 是否为代币
|
||||||
|
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
localOrderId: string; // 订单id
|
orderID: string; // 平台订单id
|
||||||
|
|
||||||
|
@prop({ required: false })
|
||||||
|
localOrderID: string; // 订单id
|
||||||
|
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
totalPay: number; // 总充值金额
|
totalPay: number; // 总充值金额
|
||||||
@@ -75,9 +81,6 @@ export default class UserLog extends BaseModel {
|
|||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
itid: number; // 道具类型
|
itid: number; // 道具类型
|
||||||
|
|
||||||
@prop({ required: false })
|
|
||||||
itemChangeModule: string; // 道具变更模块
|
|
||||||
|
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
itemChangeReason: number; // 道具变更来源
|
itemChangeReason: number; // 道具变更来源
|
||||||
|
|
||||||
@@ -96,9 +99,15 @@ export default class UserLog extends BaseModel {
|
|||||||
|
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
mailSendName: string; // 邮件发件人
|
mailSendName: string; // 邮件发件人
|
||||||
|
|
||||||
|
|
||||||
|
public static async createRecord(params: UserLogModelTypeParam) {
|
||||||
|
const r = await UserLogModel.insertMany(params);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const UserLogModel = getModelForClass(UserLog);
|
export let UserLogModel = getModelForClass(UserLog);
|
||||||
|
|
||||||
export interface UserLogModelType extends Pick<DocumentType<UserLog>, keyof UserLog> { }
|
export interface UserLogModelType extends Pick<DocumentType<UserLog>, keyof UserLog> { }
|
||||||
export type UserLogModelTypeParam = Partial<UserLogModelType>; // 将所有字段变成可选项
|
export type UserLogModelTypeParam = Partial<UserLogModelType>; // 将所有字段变成可选项
|
||||||
@@ -224,7 +224,8 @@ export class Figure {
|
|||||||
unlocked: boolean = false; // 是否已解锁
|
unlocked: boolean = false; // 是否已解锁
|
||||||
|
|
||||||
// 埋点用
|
// 埋点用
|
||||||
inc?: number;
|
count = 1;
|
||||||
|
inc = 1;
|
||||||
reason?: number;
|
reason?: number;
|
||||||
|
|
||||||
public get status () { // 虚拟字段status,当前头像是否已经解锁
|
public get status () { // 虚拟字段status,当前头像是否已经解锁
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export async function addSkin(roleId: string, roleName: string, skinId: number,
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function addBags(roleId: string, roleName: string, datas: { id: number, count: number }[], reason: number) {
|
export async function addBags(roleId: string, roleName: string, datas: { id: number, count: number }[], reason: number) {
|
||||||
let items: { id: number, count: number }[] = [];
|
let items: { id: number, count: number, inc: number }[] = [];
|
||||||
for(let data of datas) {
|
for(let data of datas) {
|
||||||
let item = await addBag(roleId, roleName, data, reason);
|
let item = await addBag(roleId, roleName, data, reason);
|
||||||
items.push(item)
|
items.push(item)
|
||||||
|
|||||||
+105
-1
@@ -1,3 +1,107 @@
|
|||||||
export function saveUserLog() {
|
import { ACTIVITY_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, HERO_SYSTEM_TYPE, LOG_TYPE } from "../consts";
|
||||||
|
import { RoleModel, RoleType, RoleUpdate } from "../db/Role";
|
||||||
|
import { UserLogModel } from "../db/UserLog";
|
||||||
|
import { UserOrderModelType } from "../db/UserOrder";
|
||||||
|
import { Figure } from "../domain/dbGeneral";
|
||||||
|
import { MailParam } from "../domain/roleField/mail";
|
||||||
|
import { gameData } from "./data";
|
||||||
|
|
||||||
|
function getParamBySession(session: any) {
|
||||||
|
let uid = session.get('userid');
|
||||||
|
let roleId = session.get('roleId');
|
||||||
|
let roleName = session.get('roleName');
|
||||||
|
let ip = session.get('ip');
|
||||||
|
let serverId = session.get('serverId');
|
||||||
|
return { uid, roleId, roleName, ip, serverId };
|
||||||
|
}
|
||||||
|
|
||||||
|
function getParamByRole(role: RoleType) {
|
||||||
|
let uid = role.userInfo.uid;
|
||||||
|
let roleId = role.roleId;
|
||||||
|
let roleName = role.roleName;
|
||||||
|
let serverId = role.serverId;
|
||||||
|
return { uid, roleId, roleName, serverId };
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveLoginAndOutLog(type: LOG_TYPE, session: any) {
|
||||||
|
try {
|
||||||
|
let params = getParamBySession(session);
|
||||||
|
await UserLogModel.createRecord({ type, ...params });
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveCeChangeLog(role: RoleType, inc: number, count: number, type: number, ids: number[]) {
|
||||||
|
try {
|
||||||
|
let params = getParamByRole(role);
|
||||||
|
await UserLogModel.createRecord({ type: LOG_TYPE.CE_CHANGE, ...params, inc, count, ceChangeReason: type, ceChangeIds: ids });
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getReCalRoleAttrIds(type: number, update: RoleUpdate, args: number[]) {
|
||||||
|
if (type == HERO_SYSTEM_TYPE.TITLE) {
|
||||||
|
return [update.title];
|
||||||
|
} else {
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function savePayLog(order: UserOrderModelType) {
|
||||||
|
try {
|
||||||
|
let role = await RoleModel.findByRoleId(order.roleId, 'userInfo roleId roleName serverId');
|
||||||
|
let params = getParamByRole(role);
|
||||||
|
let { productID, message: productName, price, localOrderID, orderID, state } = order;
|
||||||
|
let dicRmb = gameData.rmb.get(productID);
|
||||||
|
let isYuanbao = dicRmb.type == ACTIVITY_TYPE.YUAN_BAO_SHOP;
|
||||||
|
await UserLogModel.createRecord({ type: LOG_TYPE.PAY, ...params, productID, productName, price, isYuanbao, localOrderID, orderID, totalPay: role.totalPay, orderStatus: state });
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveItemChangeLog(roleId: string, goods: { id: number, count: number, inc: number }[], reason: number) {
|
||||||
|
try {
|
||||||
|
let role = await RoleModel.findByRoleId(roleId, 'userInfo roleId roleName serverId');
|
||||||
|
let params = getParamByRole(role);
|
||||||
|
for (let { id, count, inc } of goods) {
|
||||||
|
let dicGoods = gameData.goods.get(id);
|
||||||
|
await UserLogModel.createRecord({ type: LOG_TYPE.ITEM_CHANGE, ...params, itemId: id, itemName: dicGoods.name, itid: dicGoods.itid, inc, count, 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveCoinChangeLog(roleId: string, count: number, inc: number, reason: number) {
|
||||||
|
let id = CURRENCY_BY_TYPE.get(CURRENCY_TYPE.COIN);
|
||||||
|
return await saveItemChangeLog(roleId, [{ id, count, inc }], reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveFigureInfoLog(roleId: string, figureInfo: { heads: Figure[], frames: Figure[], spines: Figure[] }, reason: number) {
|
||||||
|
try {
|
||||||
|
await saveItemChangeLog(roleId, figureInfo.frames, reason);
|
||||||
|
await saveItemChangeLog(roleId, figureInfo.heads, reason);
|
||||||
|
await saveItemChangeLog(roleId, figureInfo.spines, reason);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveMailLog(session: any, mails: MailParam[]) {
|
||||||
|
try {
|
||||||
|
let params = getParamBySession(session);
|
||||||
|
for(let { id, sendName, title, content, goods } of mails) {
|
||||||
|
await UserLogModel.createRecord({ type: LOG_TYPE.RECEIVE_MAIL, ...params, mailId: id, goods: goods, mailContent: content, mailSendName: sendName, mailTitle: title });
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,7 @@ import { findIndex } from 'underscore';
|
|||||||
import { GuildModel } from '../db/Guild';
|
import { GuildModel } from '../db/Guild';
|
||||||
import { DicJob } from './dictionary/DicJob';
|
import { DicJob } from './dictionary/DicJob';
|
||||||
import { DicSuit } from './dictionary/DicSuit';
|
import { DicSuit } from './dictionary/DicSuit';
|
||||||
|
import { saveCeChangeLog } from './logUtil';
|
||||||
|
|
||||||
// 修改并下发战力
|
// 修改并下发战力
|
||||||
export async function calPlayerCeAndSave(type: number, roleId: string, originHero: HeroType, update: HeroUpdate, args?: Array<number>) {
|
export async function calPlayerCeAndSave(type: number, roleId: string, originHero: HeroType, update: HeroUpdate, args?: Array<number>) {
|
||||||
@@ -54,6 +55,9 @@ export async function calPlayerCeAndSave(type: number, roleId: string, originHer
|
|||||||
ce: reduceCe(heroCe),
|
ce: reduceCe(heroCe),
|
||||||
incHeroCe: reduceCe(incCe),
|
incHeroCe: reduceCe(incCe),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
saveCeChangeLog(role, incCe, role.ce, type, [originHero.hid]);
|
||||||
|
|
||||||
return { pushHeros, role, topLineupCe, hero, guild, serverId }
|
return { pushHeros, role, topLineupCe, hero, guild, serverId }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,6 +100,8 @@ export async function reCalAllHeroCe(type: number, roleId: string, update: RoleU
|
|||||||
role = await RoleModel.updateRoleInfo(roleId, update);
|
role = await RoleModel.updateRoleInfo(roleId, update);
|
||||||
|
|
||||||
let guild = await GuildModel.updateCe(roleId, allIncCe); // 公会更新战力
|
let guild = await GuildModel.updateCe(roleId, allIncCe); // 公会更新战力
|
||||||
|
|
||||||
|
saveCeChangeLog(role, allIncCe, role.ce, type, args);
|
||||||
return { role, pushHeros, ce: role.ce, topLineupCe: role.topLineupCe, guild, serverId: role.serverId, heros }
|
return { role, pushHeros, ce: role.ce, topLineupCe: role.topLineupCe, guild, serverId: role.serverId, heros }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ import { UserTaskRecModel } from '../db/UserTaskRec';
|
|||||||
import { WishPoolReportModel } from '../db/WishPoolReport';
|
import { WishPoolReportModel } from '../db/WishPoolReport';
|
||||||
import { pick } from "underscore";
|
import { pick } from "underscore";
|
||||||
import { HeroShowParam } from '../domain/roleField/hero';
|
import { HeroShowParam } from '../domain/roleField/hero';
|
||||||
|
import { saveCeChangeLog } from "./logUtil";
|
||||||
|
|
||||||
// 储存在内存中的初始数据
|
// 储存在内存中的初始数据
|
||||||
export function getInitRoleInfo() {
|
export function getInitRoleInfo() {
|
||||||
@@ -208,6 +209,7 @@ export class UpdateHeroes {
|
|||||||
for(let { hid, incHeroCe } of this.pushHeroes) {
|
for(let { hid, incHeroCe } of this.pushHeroes) {
|
||||||
await PvpDefenseModel.updateCe(this.roleId, hid, incHeroCe); // 更新pvp防守阵战力
|
await PvpDefenseModel.updateCe(this.roleId, hid, incHeroCe); // 更新pvp防守阵战力
|
||||||
}
|
}
|
||||||
|
saveCeChangeLog(this.role, this.incRoleCe, this.role.ce, HERO_SYSTEM_TYPE.INIT, this.pushHeroes.map(cur => cur.hid));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async updateRedisRank(Rank: any) {
|
public async updateRedisRank(Rank: any) {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user