军团活动:修复rpc调用以及其他问题

This commit is contained in:
luying
2021-03-19 18:25:58 +08:00
parent 7324556852
commit f7627f85d1
23 changed files with 351 additions and 109 deletions

View File

@@ -1,5 +1,5 @@
import { Application, BackendSession, ChannelService } from "pinus";
import { setMedianCe, getMedianCe, getGuildActivityStatus, getRecordScore, getGuildActivityObj, getGuildActivityRank } from "../../../services/guildActivityService";
import { Application, BackendSession, ChannelService, pinus } from "pinus";
import { setMedianCe, getMedianCe, getGuildActivityStatus, getRecordScore, getGuildActivityObj, getGuildActivityRank, sendSingleGuildGateActEndMsg, sendGuildActEndMsg } from "../../../services/guildActivityService";
import { resResult } from "../../../pubUtils/util";
import { STATUS, GUILD_ACTIVITY_TYPE, GUILD_POINT_WAYS, ENEMIES_TYPE, GET_POINT_WAYS } from "../../../consts";
import { GameModel } from "../../../db/Game";
@@ -14,6 +14,8 @@ import { setRank, getGuildKeyName, getRankScore, getRank, getUnionRank } from ".
import { REDIS_KEY } from "../../../consts";
import { addActive } from "../../../services/guildService";
import { gameData } from "../../../pubUtils/data";
import { getGuildChannelSid } from "../../../services/chatService";
import { guildActivityStart } from "../../../services/timeTaskService";
export default function (app: Application) {
return new GateActivityHandler(app);
@@ -42,7 +44,7 @@ export class GateActivityHandler {
if(!guildActivityRec) return resResult(STATUS.INTERNAL_ERR);
let { code: sourceCode } = guildActivityRec;
let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, [], this.aid);
let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, this.aid);
let { challengeCnt } = myGuildActivityRec;
let ranks = await getGuildActivityRank(guildCode, serverId, roleId, roleName);
@@ -64,8 +66,9 @@ export class GateActivityHandler {
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
if(!guildCode) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
let obj = getGuildActivityObj(this.aid);
let gateHp = getGuildActivityObj(this.aid).getGateHpAndInc(guildCode);
let gateHp = obj.getGateHpAndInc(guildCode);
if(gateHp <= 0) return resResult(STATUS.GATE_HP_IS_ZERO);
let statusResult = getGuildActivityStatus(this.aid);
@@ -77,11 +80,15 @@ export class GateActivityHandler {
if(!guildActivityRec) return resResult(STATUS.INTERNAL_ERR);
let { code: sourceCode } = guildActivityRec;
let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, heroes, this.aid);
let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, this.aid);
if(myGuildActivityRec.challengeCnt > 0) {
return resResult(STATUS.CHALLENGE_CNT_NOT_ENOUGH);
}
await UserGuildActivityRecModel.incChallengeCnt(myGuildActivityRec.code, heroes);
let { code, challengeCnt } = myGuildActivityRec;
// 更新公会参与的玩家
getGuildActivityObj(this.aid).pushMembers(guildCode, serverId, roleId);
obj.pushMembers(guildCode, serverId, roleId);
// 返回当前军团总军功
let guildScore = await getRankScore(REDIS_KEY.GUILD_ACTIVITY, serverId, guildCode);
@@ -108,21 +115,22 @@ export class GateActivityHandler {
let serverId = session.get('serverId');
let { code, record } = msg;
let obj = getGuildActivityObj(this.aid);
let statusResult = getGuildActivityStatus(this.aid);
if(!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
// TODO 测试完成后去掉这条判断
// if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN);
let gateHp = getGuildActivityObj(this.aid).getGateHpAndInc(guildCode);
let gateHp = obj.getGateHpAndInc(guildCode);
if(gateHp <= 0) return resResult(STATUS.GATE_HP_IS_ZERO);
// 计算record内得分
let memberRecord = getGuildActivityObj(this.aid).getMemberRecord(code, roleId);
let memberRecord = obj.getMemberRecord(code, roleId);
let scoreResult = getRecordScore(this.aid, record, memberRecord);
if(!scoreResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let { score, newRecords, memberRecord: newMemberRecord } = scoreResult;
getGuildActivityObj(this.aid).setMemberRecord(code, memberRecord);
obj.setMemberRecord(code, newMemberRecord);
// 更新redis数据
let role = await RoleModel.findByRoleId(roleId);
@@ -154,7 +162,8 @@ export class GateActivityHandler {
let serverId = session.get('serverId');
let { code, damage } = msg;
let gateHp = getGuildActivityObj(this.aid).getGateHpAndInc(guildCode);
let obj = getGuildActivityObj(this.aid);
let gateHp = obj.getGateHpAndInc(guildCode);
if(gateHp <= 0) return resResult(STATUS.GATE_HP_IS_ZERO);
let statusResult = getGuildActivityStatus(this.aid);
@@ -162,11 +171,14 @@ export class GateActivityHandler {
// TODO 测试完成后去掉这条判断
// if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN);
gateHp = getGuildActivityObj(this.aid).getGateHpAndInc(guildCode, -1 * damage);
gateHp = obj.getGateHpAndInc(guildCode, -1 * damage);
if(gateHp <= 0) {
// TODO 推送 停止活动
// 推送 停止活动并结算奖励
await sendSingleGuildGateActEndMsg(guildCode, serverId);
}
// TODO 推送 城门血量
// 推送 城门血量
let chatSid = await getGuildChannelSid(guildCode);
pinus.app.rpc.chat.guildRemote.pushGateHp.toServer(chatSid, guildCode, { gateHp });
// 返回当前军团总军功
let guildScore = await getRankScore(REDIS_KEY.GUILD_ACTIVITY, serverId, guildCode);
@@ -189,6 +201,7 @@ export class GateActivityHandler {
let serverId = session.get('serverId');
let { code, isSuccess } = msg;
let obj = getGuildActivityObj(this.aid);
let statusResult = getGuildActivityStatus(this.aid);
if(!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
@@ -217,7 +230,7 @@ export class GateActivityHandler {
let role = await RoleModel.findByRoleId(roleId);
let { lv, vLv, head, frame, spine, title } = role;
let userParam = new RankParam(roleName, lv, vLv, head, frame, spine, title);
await setRank(getGuildKeyName(REDIS_KEY.USER_GUILD_ACTIVITY, guildCode), serverId, guildCode, score, Date.now(), userParam);
await setRank(getGuildKeyName(REDIS_KEY.USER_GUILD_ACTIVITY, guildCode), serverId, roleId, score, Date.now(), userParam);
let guild = await GuildModel.findByCode(guildCode, serverId);
let leader = <RoleType>guild.leader;
@@ -230,9 +243,9 @@ export class GateActivityHandler {
// 返回当前军团总军功
let guildScore = await getRankScore(REDIS_KEY.GUILD_ACTIVITY, serverId, guildCode);
let myScore = await getRankScore(getGuildKeyName(REDIS_KEY.USER_GUILD_ACTIVITY, guildCode), serverId, roleId, true);
let gateHp = getGuildActivityObj(this.aid).getGateHpAndInc(guildCode);
let gateHp = obj.getGateHpAndInc(guildCode);
getGuildActivityObj(this.aid).delMemberRecord(code);
obj.delMemberRecord(code);
let info = {
round,
enemyCnt, littleBossCnt, bossCnt,
@@ -261,7 +274,9 @@ export class GateActivityHandler {
async debugGetPrivate(msg: { }, session: BackendSession) {
let guildCode = session.get('guildCode');
let res = getGuildActivityObj(this.aid).getObj(guildCode);
console.log(guildCode);
let serverId = session.get('serverId');
let res = getGuildActivityObj(this.aid).getObj(guildCode, serverId);
return resResult(STATUS.SUCCESS, res)
}
@@ -270,4 +285,24 @@ export class GateActivityHandler {
let result = await setMedianCe();
return resResult(STATUS.SUCCESS, {result});
}
async debugIncChallengeCnt(msg: { }, session: BackendSession) {
let roleId = session.get('roleId');
let res = await UserGuildActivityRecModel.updateInfoByRoleId(roleId, { challengeCnt: 0 });
return resResult(STATUS.SUCCESS, { challengeCnt: res.challengeCnt });
}
async debugStartActivity(msg: { aid: number }, session: BackendSession) {
let { aid } = msg;
let dic = gameData.guildActivity.get(aid);
await guildActivityStart(dic);
return resResult(STATUS.SUCCESS);
}
async debugEndActivity(msg: { aid: number }, session: BackendSession) {
let { aid } = msg;
await sendGuildActEndMsg(aid);
return resResult(STATUS.SUCCESS);
}
}