diff --git a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts index 3dfe5405f..59b46df42 100644 --- a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts +++ b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts @@ -205,7 +205,7 @@ export class ExpeditionBattleHandler { } let role = await RoleModel.findByRoleId(roleId, 'lv'); - let apJson = await setAp(roleId, role.lv, -1 * warInfo.cost, sid, funcs); // 扣除体力 + let apJson = await setAp(roleId, role.lv, isSuccess?-1 * warInfo.cost: 0, sid, funcs); // 扣除体力 if (!apJson) { return resResult(STATUS.BATTLE_ACTION_POINT_LACK); } diff --git a/game-server/app/servers/battle/handler/normalBattleHandler.ts b/game-server/app/servers/battle/handler/normalBattleHandler.ts index a87715028..645ba3634 100644 --- a/game-server/app/servers/battle/handler/normalBattleHandler.ts +++ b/game-server/app/servers/battle/handler/normalBattleHandler.ts @@ -156,7 +156,7 @@ export class NormalBattleHandler { } let role = await RoleModel.findByRoleId(roleId, 'lv'); - let apJson = await setAp(roleId, role.lv, -1 * warInfo.cost, sid, funcs); // 扣除体力 + let apJson = await setAp(roleId, role.lv, isSuccess? -1 * warInfo.cost: 0, sid, funcs); // 扣除体力 if (!apJson) { return resResult(STATUS.BATTLE_ACTION_POINT_LACK); } diff --git a/game-server/app/servers/gm/handler/gmHandler.ts b/game-server/app/servers/gm/handler/gmHandler.ts index 2dd350bdc..94c244887 100644 --- a/game-server/app/servers/gm/handler/gmHandler.ts +++ b/game-server/app/servers/gm/handler/gmHandler.ts @@ -203,7 +203,7 @@ export class GmHandler { const uid = session.get('uid'); const maintenance = await MaintenanceModel.updateStatusByCode(code, false, uid); if(!maintenance) return resResult(STATUS.WRONG_PARMS); - await stopMaintenance(maintenance); + await stopMaintenance(maintenance, uid); return resResult(STATUS.SUCCESS,); } diff --git a/game-server/app/services/gmService.ts b/game-server/app/services/gmService.ts index 2a17473dd..6c11f4020 100644 --- a/game-server/app/services/gmService.ts +++ b/game-server/app/services/gmService.ts @@ -9,6 +9,8 @@ import { pinus } from "pinus"; import { getWorldChannelSid } from "./chatChannelService"; import { ServerlistModel } from "../db/Serverlist"; import { NoticeModel, NoticeType } from "../db/Notice"; +import { SendMailFun } from "./mailService"; +import { GMMailType } from '../db/GMMail'; // —————————————— 跑马灯 —————————————— // // 初始 @@ -146,8 +148,8 @@ async function startMaintenance(maintenance: MaintenanceType, startJob?: Job) { } // 停止维护 -export async function stopMaintenance(maintenance: MaintenanceType) { - let { serverIds, notice, marquee } = maintenance; +export async function stopMaintenance(maintenance: MaintenanceType, uid: number) { + let { serverIds, notice, marquee, mail } = maintenance; // 更新serverlist上的status await ServerlistModel.updateByServerIds(serverIds, { serverStatus: SERVER_STATUS.HOT }); // 更新notice的isEnable @@ -164,4 +166,11 @@ export async function stopMaintenance(maintenance: MaintenanceType) { if(marquee) { await cancelMarquee((marquee).code); } + console.log('*****', JSON.stringify(mail)); + if(mail) { + let f = new SendMailFun(); + await f.setWithGmMail((mail)._id); + await f.sendToServer(serverIds); + await f.saveRecord(uid); + } } \ No newline at end of file diff --git a/game-server/test/activity.test.ts b/game-server/test/activity.test.ts index 08ee9e82e..a764d77bd 100644 --- a/game-server/test/activity.test.ts +++ b/game-server/test/activity.test.ts @@ -156,10 +156,10 @@ describe('活动测试', function () { it('大富翁-移动', function (done) { if (activityId) { - requestActivity(pinusClient, 'role.heroHandler.addItem', { id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.SPECIAL_DICE), count: 1 }) + requestActivity(pinusClient, 'role.heroHandler.addItem', { id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.NORMAL_DICE), count: 1 }) .then((data: any) => { checkSuccessResponse(data); - return requestActivity(pinusClient, 'activity.activityMonopolyHandler.move', { activityId: activityId, step: 1 }) + return requestActivity(pinusClient, 'activity.activityMonopolyHandler.move', { activityId: activityId, step: 0 }) }) .then((data: any) => { checkSuccessResponse(data); diff --git a/game-server/test/chat.test.ts b/game-server/test/chat.test.ts index 5e3f62104..394b3e4a1 100644 --- a/game-server/test/chat.test.ts +++ b/game-server/test/chat.test.ts @@ -255,8 +255,6 @@ describe('聊天测试', function () { pinusClient.request('role.heroHandler.starUp', { hid: XIAHOUQINGYI_HID, star: i, starStage: j }, (starUpRes) => { if (starUpRes.code === STATUS.ROLE_STAR_REACH_MAX.code) { expect(msgReceiveCnt).to.be.equal(2); - pinusClientT.off(ON_GROUP_MSG_ROUTE); - pinusClient.off(ON_GROUP_MSG_ROUTE); done(); } else { checkSuccessResponse(starUpRes); @@ -299,8 +297,6 @@ describe('聊天测试', function () { checkSuccessResponse(qualityUpRes); setTimeout(() => { expect(msgReceiveCnt).to.be.equal(2); - pinusClientT.off(ON_GROUP_MSG_ROUTE); - pinusClient.off(ON_GROUP_MSG_ROUTE); done(); }, 1000); }); diff --git a/gm-server/app/controller/game.ts b/gm-server/app/controller/game.ts index b3767f336..ece2331ea 100644 --- a/gm-server/app/controller/game.ts +++ b/gm-server/app/controller/game.ts @@ -42,7 +42,6 @@ export default class GameController extends Controller { ctx.body = ctx.service.utils.resResult(STATUS.GM_JSON_FORMAT_ERR); return } - console.log(goods) ctx.body = await ctx.service.game.updateMaintenance( {...values, startTime: new Date(values.startTime)}, diff --git a/gm-server/app/controller/users.ts b/gm-server/app/controller/users.ts index 1085b3f32..9470353c4 100644 --- a/gm-server/app/controller/users.ts +++ b/gm-server/app/controller/users.ts @@ -86,6 +86,18 @@ export default class UserController extends Controller { ctx.body = await ctx.service.users.setHeroLv(roleIdAndHids, lv); } + public async setHeroParam() { + const { ctx } = this; + const { selectedRowKeys: roleIdAndHids, star, colorStar, quality } = ctx.request.body; + ctx.body = await ctx.service.users.setHeroParam(roleIdAndHids, star, colorStar, quality); + } + + public async setHeroJob() { + const { ctx } = this; + const { selectedRowKeys: roleIdAndHids, job } = ctx.request.body; + ctx.body = await ctx.service.users.setHeroJob(roleIdAndHids, job); + } + public async saveHeroToDefense() { const { ctx } = this; const { roleId, roleName, hid } = ctx.request.body; diff --git a/gm-server/app/router.ts b/gm-server/app/router.ts index 13a7a1b4c..4403fc434 100644 --- a/gm-server/app/router.ts +++ b/gm-server/app/router.ts @@ -35,6 +35,8 @@ export default (app: Application) => { router.post('/api/users/getherolist',tokenParser, controller.users.getHeroList); router.post('/api/users/deletehero', tokenParser, controller.users.deleteHero); router.post('/api/users/setherolv', tokenParser, controller.users.setHeroLv); + router.post('/api/users/setheroparam', controller.users.setHeroParam); + router.post('/api/users/setherojob', controller.users.setHeroJob); router.post('/api/users/saveherotodefense',tokenParser, controller.users.saveHeroToDefense); router.post('/api/users/removeherofromdefense',tokenParser, controller.users.removeHeroFromDefense); router.post('/api/users/getequiplist', tokenParser, controller.users.getEquipList); diff --git a/gm-server/app/service/Game.ts b/gm-server/app/service/Game.ts index 691e2bb41..1282422a3 100644 --- a/gm-server/app/service/Game.ts +++ b/gm-server/app/service/Game.ts @@ -81,7 +81,7 @@ export default class Game extends Service { let curEnv = serverEnv.find(cur => cur.env == this.app.config.env); let marqueeResult = await MarqueeModel.createData({ ...marquee, serverIds: values.serverIds, type: MARQUEE_TYPE.SCHEDULE, isRunning: false }, ctx.user?.uid); - let noticeResult = await NoticeModel.updateNotice('new', { ...notice, type: 1, sort: 1000, serverType: curEnv?.serverType, isEnable: true }, ctx.user?.uid); + let noticeResult = await NoticeModel.updateNotice('new', { ...notice, type: 1, sort: 1000, serverType: curEnv?.serverType, isEnable: false }, ctx.user?.uid); let mailResult = await GMMailModel.addMail({ ...mail, useTempTime: true }, ctx.user?.uid); await MaintenanceModel.createData(values, marqueeResult, noticeResult, mailResult); } else { diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 161efe115..e38c53ca0 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -35,6 +35,7 @@ import { FriendRelationModel } from '@db/FriendRelation'; import { createHero as pubCreateHero, addSkin } from '@pubUtils/itemUtils'; import { GiftCodeModel } from '@db/GiftCode'; import { GiftCodeDetailModel } from '@db/GiftCodeDetail'; +// import { resResult } from '@pubUtils/util'; // import * as fs from 'fs'; @@ -627,6 +628,53 @@ export default class GMUsers extends Service { } } + public async setHeroParam(roleIdAndHids: string[], star: number, colorStar: number, quality: number) { + try { + const ctx = this.ctx; + if (typeof star != 'number'||typeof colorStar != 'number'||typeof quality != 'number') return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + for (let roleIdAndHid of roleIdAndHids) { + let [roleId, hidStr] = roleIdAndHid.split('|'); + if (isNaN(parseInt(hidStr))) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + let hid = parseInt(hidStr); + + let hero = await HeroModel.findByHidAndRole(hid, roleId); + console.log(hid, roleId, !!hero); + if (!hero) continue; + await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, roleId, hero, { star, colorStar, quality }); + } + + return ctx.service.utils.resResult(STATUS.SUCCESS); + } catch (e) { + console.error(e.stack) + } + } + + + public async setHeroJob(roleIdAndHids: string[], job: number) { + try { + const ctx = this.ctx; + if(!gameData.job.has(job)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + for (let roleIdAndHid of roleIdAndHids) { + let [roleId, hidStr] = roleIdAndHid.split('|'); + if (isNaN(parseInt(hidStr))) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + let hid = parseInt(hidStr); + + let hero = await HeroModel.findByHidAndRole(hid, roleId); + console.log(hid, roleId, !!hero); + if (!hero) continue; + await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAGEUP, roleId, hero, { job }); + } + + return ctx.service.utils.resResult(STATUS.SUCCESS); + } catch (e) { + console.error(e.stack) + } + } + /** * 根据类型等搜索装备 */ diff --git a/web-server/app/controller/game.ts b/web-server/app/controller/game.ts index b98940984..a30ee76a8 100644 --- a/web-server/app/controller/game.ts +++ b/web-server/app/controller/game.ts @@ -12,11 +12,12 @@ export default class GameController extends Controller { public async checkVersion() { const { ctx } = this; const { version } = ctx.request.body; - if (version < CLIENT_VERSION) {//版本号太低 - ctx.body = ctx.service.utils.resResult(STATUS.VERSION_ERR, { version: CLIENT_VERSION }); + if (version >= CLIENT_VERSION) { + ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS); return; } - ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS); + //版本号太低 + ctx.body = ctx.service.utils.resResult(STATUS.VERSION_ERR, { version: CLIENT_VERSION }); return; }