diff --git a/game-server/app/servers/activity/remote/activityRemote.ts b/game-server/app/servers/activity/remote/activityRemote.ts index a56849240..a2c05c126 100644 --- a/game-server/app/servers/activity/remote/activityRemote.ts +++ b/game-server/app/servers/activity/remote/activityRemote.ts @@ -84,10 +84,10 @@ export class ActivityRemote { this.app.set('activities', this.activities); } - public async updateActivities(activities: ActivityModelType[]) { + public async updateActivities(activities: ActivityInRemote[]) { let activityIds: number[] = []; for(let activity of activities) { - this.activities.set(activity.activityId, new ActivityInRemote(activity)); + this.activities.set(activity.activityId, activity); activityIds.push(activity.activityId); } this.setActivityTypeAndServer(); diff --git a/game-server/app/servers/gm/handler/gmHandler.ts b/game-server/app/servers/gm/handler/gmHandler.ts index 6a40cca8a..4383bd069 100644 --- a/game-server/app/servers/gm/handler/gmHandler.ts +++ b/game-server/app/servers/gm/handler/gmHandler.ts @@ -22,6 +22,7 @@ import { getTimeFunM, nowSeconds } from '../../../pubUtils/timeUtil'; import moment = require('moment'); import { sendUngotDividend } from '../../../services/auctionService'; import { taflush } from '../../../services/sdkService'; +import { ActivityInRemote } from '../../../domain/activityField/activityField'; let timer: NodeJS.Timer; export default function (app: Application) { return new GmHandler(app); @@ -180,7 +181,7 @@ export class GmHandler { let activityServers = pinus.app.getServersByType('activity'); for(let server of activityServers) { - pinus.app.rpc.activity.activityRemote.updateActivities.toServer(server.id, activities); + pinus.app.rpc.activity.activityRemote.updateActivities.toServer(server.id, activities.map(activity => new ActivityInRemote(activity))); } return resResult(STATUS.SUCCESS, { diff --git a/game-server/app/servers/gm/handler/gmRoleHandler.ts b/game-server/app/servers/gm/handler/gmRoleHandler.ts index 146ab336f..602270698 100644 --- a/game-server/app/servers/gm/handler/gmRoleHandler.ts +++ b/game-server/app/servers/gm/handler/gmRoleHandler.ts @@ -4,7 +4,7 @@ import { STATUS } from '../../../consts/statusCode'; import { getRoleOnlineInfo, updateUserInfo } from '../../../services/redisService'; import { addItems, createHeroes } from '../../../services/rewardService'; import { RewardInter } from '../../../pubUtils/interface'; -import { getExpByLv } from '../../../pubUtils/data'; +import { getExpByLv, getLvByExp } from '../../../pubUtils/data'; import { RoleModel, RoleType } from '../../../db/Role'; import { BLOCK_TYPE, GUILD_AUTH, GUILD_DISMISS_WAY, GUILD_JOB, GUILD_MASTER_CHANGE_WAY, GUILD_STATUS, GUILD_STRUCTURE, ITEM_CHANGE_REASON, MAIL_TYPE, REDIS_KEY, TA_EVENT } from '../../../consts'; import { GuildFormParam } from '../../../domain/backEndField/params'; @@ -27,10 +27,10 @@ export class GmRoleHandler { constructor(private app: Application) { } - async addItems(msg: { roleId: string, roleName: string, serverId: number, values: { reward: RewardInter[], heroes: number[], lv: number }}, session: BackendSession) { + async addItems(msg: { roleId: string, roleName: string, serverId: number, values: { reward: RewardInter[], heroes: number[], lv: number, expInc: number }}, session: BackendSession) { let { roleId, roleName, serverId, values } = msg; - let { reward, heroes, lv } = values; + let { reward, heroes, lv, expInc = 0 } = values; if (reward == undefined && heroes == undefined && lv == undefined) { return resResult(STATUS.WRONG_PARMS); } @@ -45,12 +45,14 @@ export class GmRoleHandler { } if(lv && lv > 0) { let exp = getExpByLv(lv - 1)?.sum||0; - let role = await RoleModel.updateRoleInfo(roleId, { lv, exp }) + exp += expInc; + let newLv = getLvByExp(exp); + let role = await RoleModel.updateRoleInfo(roleId, { lv: newLv, exp }) let r = new Rank(REDIS_KEY.USER_LV, { serverId: serverId }); - await r.setRankWithRoleInfo(roleId, lv, Date.now(), role); + await r.setRankWithRoleInfo(roleId, newLv, Date.now(), role); let uids = [{ uid: roleId, sid }]; pinus.app.get('channelService').pushMessageByUids('onPlayerExpChange', resResult(STATUS.SUCCESS, { - isLvUp: false, lv, exp + isLvUp: false, lv: newLv, exp }), uids); } return resResult(STATUS.SUCCESS); diff --git a/gm-server/app/controller/users.ts b/gm-server/app/controller/users.ts index 535398059..1eb852015 100644 --- a/gm-server/app/controller/users.ts +++ b/gm-server/app/controller/users.ts @@ -44,6 +44,12 @@ export default class UserController extends Controller { ctx.body = await ctx.service.users.setWarRecord(roleId, warId); } + public async setCreateTime() { + const { ctx } = this; + const { roleId, day } = ctx.request.body; + ctx.body = await ctx.service.users.setCreateTime(roleId, day); + } + public async getHeroList() { const { ctx } = this; const { page, pageSize, sortField, sortOrder, form } = ctx.request.body; diff --git a/gm-server/app/router.ts b/gm-server/app/router.ts index 87c4675a8..cbf756b05 100644 --- a/gm-server/app/router.ts +++ b/gm-server/app/router.ts @@ -27,6 +27,7 @@ export default (app: Application) => { router.post('/api/users/getrolelist', tokenParser,controller.users.getrolelist); router.post('/api/users/deleterole', tokenParser,controller.users.deleteRole); router.post('/api/users/setwar', tokenParser, controller.users.setWar); + router.post('/api/users/setcreatetime', controller.users.setCreateTime); router.post('/api/users/getherolist', tokenParser,controller.users.getHeroList); router.post('/api/users/deletehero', tokenParser, controller.users.deleteHero); router.post('/api/users/getequiplist', tokenParser, controller.users.getEquipList); diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 3bb4ebf7d..e791481d7 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -28,6 +28,7 @@ import { RedisClient } from 'redis'; import { UserGuildModel } from '@db/UserGuild'; import { TowerRecordModel } from '@db/TowerRecord'; import { HangUpRecordModel } from '@db/HangUpRecord'; +import { nowSeconds } from '@pubUtils/timeUtil'; // import { resResult } from '@pubUtils/util'; @@ -693,6 +694,18 @@ export default class GMUsers extends Service { await HangUpRecordModel.updateRec(roleId, role.roleName, towerLv, new Date(), []); } + public async setCreateTime(roleId: string, day: number) { + const { ctx } = this; + if(!isNumber(day) || day < 0) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + let createTime = nowSeconds() - (day - 1) * 86400; + + let role = await RoleModel.updateRoleInfo(roleId, { createTime }); + if(!role) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + return ctx.service.utils.resResult(STATUS.SUCCESS); + } + private async setWarStarAndScript(roleId: string, dicWar: DicWar) { let { warStar } = await RoleModel.findByRoleId(roleId); let deleteIds: number[] = [], myMaxWarId = 0; diff --git a/shared/pubUtils/roleUtil.ts b/shared/pubUtils/roleUtil.ts index da9ccf9d7..fdf9735fd 100644 --- a/shared/pubUtils/roleUtil.ts +++ b/shared/pubUtils/roleUtil.ts @@ -15,7 +15,6 @@ import { reduceCe, resResult } from "./util"; import { calculatetopLineup, } from "./playerCe"; import { GuildModel, GuildType } from "../db/Guild"; import { PvpDefenseModel } from "../db/PvpDefense"; -import { ActivityModelType } from "../db/Activity"; import { EquipModel } from '../db/Equip'; import { ActionPointModel } from '../db/ActionPoint'; import { BattleDropModel } from '../db/BattleDrop';