军团活动:修复rpc调用以及其他问题
This commit is contained in:
@@ -164,4 +164,4 @@ export enum ENEMIES_TYPE {
|
||||
ENEMY = 2, // 小兵
|
||||
LITTLE_BOSS = 3, // 小boss
|
||||
BOSS = 4, // 大boss
|
||||
}
|
||||
}
|
||||
|
||||
@@ -341,7 +341,8 @@ export const FILENAME = {
|
||||
DIC_ROLE_FRIEND: 'dic_zyz_friends',
|
||||
DIC_ROLE_FRIEND_LEVEL: 'dic_zyz_closelevel',
|
||||
DIC_GUILD_ACTIVITY: 'dic_zyz_guildActivity',
|
||||
DIC_GATE_ACTIVITY_POINT: 'dic_zyz_gateActivityPoint'
|
||||
DIC_GATE_ACTIVITY_POINT: 'dic_zyz_gateActivityPoint',
|
||||
DIC_GUILD_AUCTION: 'dic_zyz_guildAuction'
|
||||
}
|
||||
|
||||
export const WAR_RELATE_TABLES = [
|
||||
@@ -381,7 +382,8 @@ export const MAIL_TYPE = {
|
||||
WISH_POOL_REWARD: 11,
|
||||
PVP_RESULT: 12,
|
||||
PVP_RANK_REWARD: 13,
|
||||
GUILD_DIVIDEND: 14, // 拍卖行分红
|
||||
GUILD_ACTIVITY_REWARD: 14,
|
||||
GUILD_DIVIDEND: 15, // 拍卖行分红
|
||||
};
|
||||
|
||||
export const CHAT_SERVER = 'chat-server-1';
|
||||
|
||||
@@ -200,6 +200,7 @@ export const STATUS = {
|
||||
// 军团活动 21100-21199
|
||||
GUILD_ACTIVITY_NOT_OPEN: { code: 21100, simStr: '活动未开放' },
|
||||
GATE_HP_IS_ZERO: { code: 21101, simStr: '城门已被击破' },
|
||||
CHALLENGE_CNT_NOT_ENOUGH: { code: 21102, simStr: '挑战次数不足' },
|
||||
|
||||
// 通用 30000 - 30099
|
||||
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },
|
||||
|
||||
@@ -35,12 +35,15 @@ export default class GuildActivityRecord extends BaseModel {
|
||||
@prop({ required: true, default: 0 })
|
||||
memberCnt: number; // 参加的团员的数量
|
||||
|
||||
@prop({ required: true, type: ()=> ItemReward, default: [] })
|
||||
@prop({ required: true, type: ()=> ItemReward, default: [], _id: false })
|
||||
rewards: ItemReward[]; // 转到拍卖行的道具
|
||||
|
||||
@prop({ required: true })
|
||||
score: number; // 蛮夷入侵总军功
|
||||
|
||||
@prop({ required: true })
|
||||
remainGateHp: number; // 城门剩余血量
|
||||
|
||||
@prop({ required: true })
|
||||
cityId: number; // 诸侯混战占领了的城池
|
||||
|
||||
@@ -72,6 +75,14 @@ export default class GuildActivityRecord extends BaseModel {
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async updateInfo(guildCode: string, update: GuildActivityRecordUpdateParam) {
|
||||
let today = getTodayZeroDate();
|
||||
|
||||
let rec: GuildActivityRecordType = await GuildActivityRecordModel.findOneAndUpdate(
|
||||
{ guildCode, createdAt: { $gte: today } },
|
||||
{ $set: update }, { new: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
|
||||
export const GuildActivityRecordModel = getModelForClass(GuildActivityRecord);
|
||||
|
||||
@@ -62,11 +62,11 @@ export default class UserGuildActivityRec extends BaseModel {
|
||||
@prop({ required: true })
|
||||
score: number; // 个人总军功
|
||||
|
||||
@prop({ required: true, type: Record })
|
||||
@prop({ required: true, type: Record, _id: false })
|
||||
record: Record[]; // 个人总军功
|
||||
|
||||
// 每天一条记录
|
||||
public static async getRecord(roleId: string, roleName: string, guildCode: string, serverId: number, sourceCode: string, heroes: number[], aid: number) {
|
||||
public static async getRecord(roleId: string, roleName: string, guildCode: string, serverId: number, sourceCode: string, aid: number) {
|
||||
let today = getTodayZeroDate();
|
||||
let docs = new UserGuildActivityRecModel();
|
||||
let code = genCode(10);
|
||||
@@ -76,14 +76,17 @@ export default class UserGuildActivityRec extends BaseModel {
|
||||
{ roleId, sourceCode, createdAt: { $gte: today }},
|
||||
{ $setOnInsert: update },
|
||||
{new: true, upsert: true}).lean();
|
||||
if(heroes.length > 0 && rec) {
|
||||
rec = await UserGuildActivityRecModel.findOneAndUpdate( { code: rec.code}, { $push: { heroes: { $each: heroes}}, $inc: { challengeCnt: 1 }}, {new: true}).lean();
|
||||
}
|
||||
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async incChallengeCnt(code: string, heroes: number[], inc: number = 1 ) {
|
||||
let rec = await UserGuildActivityRecModel.findOneAndUpdate( { code}, { $push: { heroes: { $each: heroes}}, $inc: { challengeCnt: inc }}, {new: true}).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async pushRecord(code: string, records: Record[]) {
|
||||
let rec: UserGuildActivityRec = await UserGuildActivityRecModel.findOneAndUpdate(
|
||||
let rec: UserGuildActivityRecType = await UserGuildActivityRecModel.findOneAndUpdate(
|
||||
{ code },
|
||||
{ $push: { record: { $each: records } } },
|
||||
{ new: true }
|
||||
@@ -92,7 +95,14 @@ export default class UserGuildActivityRec extends BaseModel {
|
||||
}
|
||||
|
||||
public static async updateInfo(code: string, update: UserGuildActivityRecUpdateParam) {
|
||||
let rec: UserGuildActivityRec = await UserGuildActivityRecModel.findOneAndUpdate({ code }, { $set: update }, { new: true }).lean();
|
||||
let rec: UserGuildActivityRecType = await UserGuildActivityRecModel.findOneAndUpdate({ code }, { $set: update }, { new: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async updateInfoByRoleId(roleId: string, update: UserGuildActivityRecUpdateParam) {
|
||||
let today = getTodayZeroDate();
|
||||
let rec: UserGuildActivityRecType = await UserGuildActivityRecModel.findOneAndUpdate(
|
||||
{ roleId, createdAt: { $gte: today } }, { $set: update }, { new: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,16 +13,18 @@ export class GateMembersRec {
|
||||
// 军团活动蛮夷入侵城门血量等数据存储
|
||||
|
||||
export class GateActivityObject {
|
||||
private gateHp: Map<string, number> = new Map(); // 城门血条,每个军团有一条血条
|
||||
private members: Map<string, Array<string>> = new Map(); // 每个军团参与的成员
|
||||
private membersRecord: Map<string, GateMembersRec> = new Map(); // 每个成员的回合数和敌军数,防刷
|
||||
private guilds: Map<number, string[]> = new Map(); // 参加的所有军团
|
||||
private gateHp: Map<string, number> = new Map(); // 城门血条,每个军团有一条血条 guildCode => hp
|
||||
private members: Map<string, Array<string>> = new Map(); // 每个军团参与的成员 guildCode => [roleId]
|
||||
private membersRecord: Map<string, GateMembersRec> = new Map(); // 每个成员的回合数和敌军数,防刷 recCode => GateMembersRec
|
||||
private guilds: Map<number, string[]> = new Map(); // 参加的所有军团 server => [guildCode]
|
||||
|
||||
public getObj(guildCode: string) {
|
||||
public getObj(guildCode: string, serverId: number) {
|
||||
console.log(guildCode, serverId)
|
||||
return {
|
||||
gateHp: this.getGateHpAndInc(guildCode),
|
||||
members: this.members.get(guildCode),
|
||||
memberesRecord: this.membersRecord.get(guildCode)
|
||||
members: this.members.get(guildCode)||[],
|
||||
memberesRecord: [...this.membersRecord],
|
||||
guilds: this.guilds.get(serverId)||[]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,27 +50,40 @@ export class GateActivityObject {
|
||||
if(this.members.has(guildCode)) {
|
||||
this.members.get(guildCode).push(roleId);
|
||||
} else {
|
||||
let arr = new Array<string>();
|
||||
arr.push(roleId);
|
||||
this.members.set(guildCode, [roleId]);
|
||||
}
|
||||
if(this.guilds.has(serverId)) {
|
||||
this.guilds.set(serverId, []);
|
||||
} else {
|
||||
let arr = this.guilds.get(serverId)||[];
|
||||
let arr = this.guilds.get(serverId);
|
||||
if(!arr.includes(guildCode)) arr.push(guildCode);
|
||||
this.guilds.set(serverId, arr);
|
||||
} else {
|
||||
this.guilds.set(serverId, [guildCode]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public getMemberRecord(code: string, roleId: string) {
|
||||
return this.membersRecord.get(code)||new GateMembersRec(roleId)
|
||||
public getMemberRecord(recCode: string, roleId: string) {
|
||||
return this.membersRecord.get(recCode)||new GateMembersRec(roleId)
|
||||
}
|
||||
|
||||
public setMemberRecord(code: string, newMemberRecord: GateMembersRec) {
|
||||
this.membersRecord.set(code, newMemberRecord);
|
||||
public setMemberRecord(recCode: string, newMemberRecord: GateMembersRec) {
|
||||
this.membersRecord.set(recCode, newMemberRecord);
|
||||
}
|
||||
|
||||
public delMemberRecord(code: string) {
|
||||
this.membersRecord.delete(code);
|
||||
public delMemberRecord(recCode: string) {
|
||||
this.membersRecord.delete(recCode);
|
||||
}
|
||||
|
||||
public delGuildRecord(guildCode: string, serverId: number) {
|
||||
let guildList = this.guilds.get(serverId);
|
||||
if(guildList) {
|
||||
let index = guildList.indexOf(guildCode);
|
||||
guildList.splice(index, 1);
|
||||
}
|
||||
this.gateHp.delete(guildCode);
|
||||
this.members.delete(guildCode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ import { dicRoleFriendLv } from "./dictionary/DicRoleFriendLv";
|
||||
import { Attribute } from "../domain/roleField/attribute";
|
||||
import { dicGuildActivity, DicGuildActivity } from './dictionary/DicGuildActivity';
|
||||
import { dicGateActivityPoint } from './dictionary/DicGateActivityPoint';
|
||||
import { dicGuildAuction } from './dictionary/DicGuildAuction';
|
||||
import { getCutDay } from "./timeUtil";
|
||||
|
||||
export const gameData = {
|
||||
@@ -144,7 +145,8 @@ export const gameData = {
|
||||
roleFriendLv: dicRoleFriendLv,
|
||||
figureCondition: figureCondition,
|
||||
guildActivity: dicGuildActivity,
|
||||
gateActivityPoint: dicGateActivityPoint
|
||||
gateActivityPoint: dicGateActivityPoint,
|
||||
guildAuction: dicGuildAuction
|
||||
};
|
||||
|
||||
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||
@@ -456,3 +458,16 @@ export function getTodayGuildActivity() {
|
||||
}
|
||||
return dic;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据军团活动排名获得奖励
|
||||
* @param aid 活动id
|
||||
* @param rank 排名
|
||||
*/
|
||||
export function getGuildAuctionRewards(aid: number, rank: number) {
|
||||
let ranksReward = gameData.guildAuction.get(aid)||[];
|
||||
let dic = ranksReward.find(cur => {
|
||||
return rank >= cur.min && (rank <= cur.max || cur.max == 0);
|
||||
});
|
||||
return dic?dic.rewards: new Array<RewardInter>();
|
||||
}
|
||||
29
shared/pubUtils/dictionary/DicGuildAuction.ts
Normal file
29
shared/pubUtils/dictionary/DicGuildAuction.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
// 公会权限
|
||||
import { readJsonFile, parseGoodStr } from '../util'
|
||||
import { FILENAME } from '../../consts'
|
||||
import { RewardInter } from '../../pubUtils/interface';
|
||||
|
||||
export interface DicGuildAuction {
|
||||
|
||||
// 活动类型 1-蛮夷入侵 2-诸侯混战 3-粮草先行
|
||||
readonly id: number;
|
||||
// 最低名次
|
||||
readonly min: number;
|
||||
// 最高名次
|
||||
readonly max: number;
|
||||
// 奖励
|
||||
readonly rewards: RewardInter[];
|
||||
}
|
||||
|
||||
const str = readJsonFile(FILENAME.DIC_GUILD_AUCTION);
|
||||
let arr = JSON.parse(str);
|
||||
|
||||
export const dicGuildAuction = new Map<number, DicGuildAuction[]>();
|
||||
|
||||
arr.forEach(o => {
|
||||
o.rewards = parseGoodStr(o.rewards);
|
||||
let rank = dicGuildAuction.get(o.id)||[];
|
||||
rank.push(o);
|
||||
dicGuildAuction.set(o.id, rank);
|
||||
});
|
||||
arr = undefined;
|
||||
@@ -130,7 +130,6 @@ export function setCanReceiveAndCanSend(this: any, roleId: string, friendship: F
|
||||
let frd = outputCnt(roleId, friendship);
|
||||
if(frd) {
|
||||
let { sendHeart, receiveHeart, beSentHeart } = frd;
|
||||
console.log('***',sendHeart, receiveHeart, beSentHeart)
|
||||
if(sendHeart >= 1) {
|
||||
this.canSend = false;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,13 @@ export function getFriendPointObject(count: number) {
|
||||
return { id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.FRIEND_POINT), count};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 获取功勋物品 { id, count }
|
||||
* @param count 功勋数量
|
||||
*/
|
||||
export function getHonourObject(count: number) {
|
||||
return { id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.HONOUR), count};
|
||||
}
|
||||
/**
|
||||
* 解锁头像/相框
|
||||
* @param roleId 玩家id
|
||||
|
||||
@@ -172,11 +172,12 @@ export function getNextTime(date: Date, h: number, m = 0, s = 0, ms = 0): Date {
|
||||
|
||||
/**
|
||||
* 获得某个时间是星期几
|
||||
* @param needHandle 是否处理周日
|
||||
* @param {Date} time
|
||||
*/
|
||||
export function getCutDay(time?: Date) {
|
||||
export function getCutDay( needHandle = false, time?: Date) {
|
||||
if(!time) time = new Date();
|
||||
let d = time.getDay();
|
||||
if(d == 0) d = 7;
|
||||
if(needHandle && d == 0) d = 7;
|
||||
return d;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"content": "%d",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"content": "您对军团%d的申请被拒绝",
|
||||
@@ -26,7 +21,7 @@
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"content": "周活跃分成奖励",
|
||||
"content": "亲爱的小将军,您昨日的军团活跃奖励忘记领取了,现已通过邮件发放,请查收",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
@@ -68,5 +63,20 @@
|
||||
"id": 13,
|
||||
"content": "恭喜小将军,您在%d赛季最终获得了第%d名,获得如下奖励:",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"content": "亲爱的小将军,您昨日的军团活动奖励忘记领取了,现已通过邮件发放,请查收:",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"content": "小将军很抱歉,您在拍卖行的出价已被超过,元宝退还给您,请查收:",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"content": "恭喜小将军,您已在拍卖行成功拍下以下物品,请查收:",
|
||||
"time": 24
|
||||
}
|
||||
]
|
||||
@@ -146,7 +146,7 @@
|
||||
"outIndex": 6,
|
||||
"dirction": 2,
|
||||
"x": 10,
|
||||
"y": 11,
|
||||
"y": 4,
|
||||
"var": 1001,
|
||||
"lv": 0,
|
||||
"hide": 0,
|
||||
@@ -203,7 +203,7 @@
|
||||
"star": 0,
|
||||
"spine": 0,
|
||||
"bossStage": 0,
|
||||
"enemyType": 0,
|
||||
"enemyType": 2,
|
||||
"dest_oppo": 1001
|
||||
},
|
||||
{
|
||||
@@ -341,7 +341,7 @@
|
||||
"star": 0,
|
||||
"spine": 0,
|
||||
"bossStage": 1,
|
||||
"enemyType": 3,
|
||||
"enemyType": 4,
|
||||
"dest_oppo": 1001
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user