军团:修改个人功勋→个人活跃
This commit is contained in:
@@ -32,8 +32,8 @@ export enum GUILD_AUTH {
|
||||
|
||||
// 职位
|
||||
export enum GUILD_JOB {
|
||||
JIANGJUN = 1,
|
||||
FUJIANGJUN = 2,
|
||||
DAJIANGJUN = 1,
|
||||
JIANGJUN = 2,
|
||||
XIAOWEI = 3,
|
||||
SHIZHANG = 4,
|
||||
WUZHANG = 5,
|
||||
|
||||
@@ -34,8 +34,8 @@ export default class GuildRec extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getGuildRec(guildCode: string) {
|
||||
const result: GuildRecType[] = await GuildRecModel.find({ guildCode }).sort({createTime: -1}).lean();
|
||||
public static async getGuildRec(guildCode: string, time: number) {
|
||||
const result: GuildRecType[] = await GuildRecModel.find({ guildCode, createTime: { $gte: time } }).sort({createTime: -1}).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+11
-13
@@ -28,10 +28,13 @@ export default class UserGuild extends BaseModel {
|
||||
job: number;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
honourWeekly: number;
|
||||
activeWeekly: number;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
activeDaily: number;
|
||||
|
||||
@prop({ required: true, default: Date.now() })
|
||||
honourUpdateTime: number;
|
||||
activeUpdateTime: number;
|
||||
|
||||
@prop({ required: true, default: USER_GUILD_STATUS.ON, enum: USER_GUILD_STATUS})
|
||||
status: number;
|
||||
@@ -76,7 +79,7 @@ export default class UserGuild extends BaseModel {
|
||||
return myGuild;
|
||||
}
|
||||
|
||||
public static async getListByGuild(guildCode: string, select?: string, sort: { auth?: number, honourWeekly?: number, honourUpdateTime?: number } = {auth: 1}) {
|
||||
public static async getListByGuild(guildCode: string, select?: string, sort: { auth?: number, activeWeekly?: number, activeUpdateTime?: number } = {auth: 1}) {
|
||||
const userGuilds: UserGuildType[] = await UserGuildModel.find({ guildCode, status: USER_GUILD_STATUS.ON })
|
||||
.select(select)
|
||||
.sort(sort)
|
||||
@@ -85,9 +88,9 @@ export default class UserGuild extends BaseModel {
|
||||
return userGuilds;
|
||||
}
|
||||
|
||||
public static async findTopHonour(guildCode: string, select?: string) {
|
||||
public static async findTopActive(guildCode: string, select?: string) {
|
||||
const userGuilds: UserGuildType = await UserGuildModel.findOne({ guildCode, status: USER_GUILD_STATUS.ON, auth: { $ne: GUILD_AUTH.LEADER } })
|
||||
.sort({ honourWeekly: -1, honourUpdateTime: 1 })
|
||||
.sort({ activeWeekly: -1, activeUpdateTime: 1 })
|
||||
.select(select)
|
||||
.populate('role', 'roleId roleName ce headHid sHid lv title loginTime', 'Role')
|
||||
.lean();
|
||||
@@ -96,12 +99,12 @@ export default class UserGuild extends BaseModel {
|
||||
|
||||
public static async createUserGuild(guildCode: string, role: RoleType, isLeader: boolean) {
|
||||
const doc = new UserGuildModel();
|
||||
let job = isLeader? GUILD_JOB.JIANGJUN: GUILD_JOB.SHIZHANG;
|
||||
let job = isLeader? GUILD_JOB.DAJIANGJUN: GUILD_JOB.SHIBING;
|
||||
let auth = isLeader? GUILD_AUTH.LEADER: GUILD_AUTH.MEMBER;
|
||||
const update = Object.assign(doc.toJSON(), { guildCode, roleId: role.roleId, role: role._id, job, auth });
|
||||
delete update._id;
|
||||
const result: UserGuildType = await UserGuildModel.findOneAndUpdate({ roleId: role.roleId, guildCode, status: USER_GUILD_STATUS.ON }, update, { upsert: true, new: true })
|
||||
.select('honourWeekly honourUpdateTime job auth receivedActive')
|
||||
.select('activeDaily activeRecord activeWeekly activeUpdateTime job auth receivedActive')
|
||||
.lean();
|
||||
|
||||
return result;
|
||||
@@ -124,17 +127,12 @@ export default class UserGuild extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async addHonourWeekly(roleId: string, inc: number, select?: string) {
|
||||
const result = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON }, { $inc: { honourWeekly: inc } }, { new: true }).select(select).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async receiveTrainRewards(roleId: string, trainId: number, lean = true) {
|
||||
const result = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON, 'trainRewards':{$ne: trainId }},
|
||||
{$push:{trainRewards: trainId} },{new: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const UserGuildModel = getModelForClass(UserGuild);
|
||||
|
||||
@@ -51,6 +51,7 @@ import { dicGuildPosition } from "./dictionary/DicGuildPosition";
|
||||
import { dicMail } from "./dictionary/DicMail";
|
||||
import { dicArmyTrainJuDian } from './dictionary/dicArmyTrainJuDian';
|
||||
import { dicTrainSoloReward } from './dictionary/dicTrainSoloReward';
|
||||
import { RewardInter } from "./interface";
|
||||
|
||||
export const gameData = {
|
||||
blurprtCompose: dicBlueprtCompose,
|
||||
@@ -350,3 +351,12 @@ export function getTrainBaseByLv(lv: number) {
|
||||
}
|
||||
|
||||
|
||||
export function getGuildActiveWeekReward(point: number) {
|
||||
let result = gameData.guildActiveWeekReward.find(cur => {
|
||||
let {weekPointMax, weekPointMin} = cur;
|
||||
return point >= weekPointMin && point <= (weekPointMax || weekPointMax == -1);
|
||||
});
|
||||
let reward = new Array<RewardInter>();
|
||||
if(result) reward = result.reward;
|
||||
return reward;
|
||||
}
|
||||
|
||||
@@ -19,10 +19,10 @@ export interface DicGuildActiveWeekReward {
|
||||
const str = readJsonFile(FILENAME.DIC_ACTIVE_DAY_REWARD);
|
||||
let arr = JSON.parse(str);
|
||||
|
||||
export const dicGuildActiveWeekReward = new Map<number, DicGuildActiveWeekReward>();
|
||||
export const dicGuildActiveWeekReward = new Array<DicGuildActiveWeekReward>();
|
||||
|
||||
arr.forEach(o => {
|
||||
o.reward = parseGoodStr(o.Reward)
|
||||
dicGuildActiveWeekReward.set(o.id, o);
|
||||
dicGuildActiveWeekReward.push(o);
|
||||
});
|
||||
arr = undefined;
|
||||
@@ -16,7 +16,7 @@ export interface DicGuildPosition {
|
||||
readonly activeRatio: number;
|
||||
}
|
||||
|
||||
const str = readJsonFile(FILENAME.DIC_BLUEPRT_COMPOSE);
|
||||
const str = readJsonFile(FILENAME.DIC_GUILD_POSITION);
|
||||
let arr = JSON.parse(str);
|
||||
|
||||
export const dicGuildPosition = new Map<number, DicGuildPosition>();
|
||||
|
||||
@@ -102,7 +102,7 @@ export interface DicDonateBase {
|
||||
// 捐献值
|
||||
readonly donateValue: {type: number, count: number}[];
|
||||
// 捐献奖励
|
||||
readonly donateReward: {fund: number, honour: number}[];
|
||||
readonly donateReward: {fund: number, active: number}[];
|
||||
// 今日捐献宝箱领取奖励系数
|
||||
readonly boxRewardRatio: number;
|
||||
}
|
||||
@@ -259,16 +259,16 @@ export function parseDonateValue(str: string) {
|
||||
return result
|
||||
}
|
||||
|
||||
// {"fund": number, "honour": number}
|
||||
// {"fund": number, "active": number}
|
||||
export function parseDonateReward(str: string) {
|
||||
let result = new Array<{ fund: number, honour: number }>();
|
||||
let result = new Array<{ fund: number, active: number }>();
|
||||
if (!str) return result;
|
||||
let decodeArr = decodeArrayListStr(str);
|
||||
for (let [fund, honour] of decodeArr) {
|
||||
if (isNaN(parseInt(fund)) || isNaN(parseInt(honour))) {
|
||||
for (let [fund, active] of decodeArr) {
|
||||
if (isNaN(parseInt(fund)) || isNaN(parseInt(active))) {
|
||||
throw new Error('data table format wrong');
|
||||
}
|
||||
result.push({ fund: parseInt(fund), honour: parseInt(honour) });
|
||||
result.push({ fund: parseInt(fund), active: parseInt(active) });
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -28,10 +28,6 @@ export async function addSkins(roleId: string, id: number) {
|
||||
export async function addBags(roleId: string, roleName: string, data: BagInter) {
|
||||
let { id, count, itemName, type, hid } = data;
|
||||
let item = await ItemModel.increaseItem(roleId, id, count, { roleId, roleName, itemName, id, type, hid });
|
||||
|
||||
if(item.id == CURRENCY_BY_TYPE.get(CURRENCY_TYPE.HONOUR) ) {
|
||||
await UserGuildModel.addHonourWeekly(roleId, count);
|
||||
}
|
||||
return { id: item.id, count: item.count };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user