练兵场结算
This commit is contained in:
@@ -3,6 +3,7 @@ import { index, getModelForClass, prop, DocumentType, Ref } from '@typegoose/typ
|
||||
import Role, { RoleType } from './Role';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
import { GUILD_STRUCTURE, GUILD_STATUS, GUILD_PER_PAGE } from '../consts';
|
||||
import { getCurWeekTime } from '../pubUtils/timeUtil';
|
||||
|
||||
class Structure {
|
||||
@prop({ required: true })
|
||||
@@ -79,6 +80,10 @@ export default class Guild extends BaseModel {
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
trainId: number; // 试炼id
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
resetTrainTime: number;//上次刷新挑战训练场次数的时间
|
||||
|
||||
public static async createGuild(params: { name: string, icon: number, notice: string }, role: RoleType, serverId: number) {
|
||||
const doc = new GuildModel();
|
||||
const update = Object.assign(doc.toJSON(), params, { leader: role._id, members: [role.roleId], guildCe: role.ce, serverId });
|
||||
@@ -174,6 +179,12 @@ export default class Guild extends BaseModel {
|
||||
const result = await GuildModel.findOneAndUpdate({ $elemMatch: {members: roleId}, status: GUILD_STATUS.RUNNING}, {$inc: {guildCe: inc}}, {new: true}).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async resetGuildTrain(code: string, serverId: number, lean = true) {
|
||||
const time = getCurWeekTime(1, 5);//每周一,5点刷新
|
||||
const result = await GuildModel.findOneAndUpdate({ code, status: GUILD_STATUS.RUNNING, serverId, resetTrainTime:{$ne:time}},{$set: {trainId: 1}}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const GuildModel = getModelForClass(Guild);
|
||||
|
||||
32
shared/db/GuildRefine.ts
Normal file
32
shared/db/GuildRefine.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
|
||||
class ScienceTree {
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
@prop({ required: true })
|
||||
time: number;
|
||||
@prop({ required: true })
|
||||
assistCount: number;
|
||||
}
|
||||
|
||||
@index({ guildCode: 1 })
|
||||
|
||||
export default class GuildRefiner extends BaseModel {
|
||||
@prop({ required: true })
|
||||
guildCode: string;
|
||||
|
||||
@prop({ required: true, type: ScienceTree, default:[] })
|
||||
scienceTrees: ScienceTree[];
|
||||
|
||||
public static async createScienceTree(guildCode: string, scienceTrees: ScienceTree[], lean = true) {
|
||||
const result = await GuildRefinerModel.findOneAndUpdate({ guildCode }, {$set: {scienceTrees}}, {new: true, upsert: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const GuildRefinerModel = getModelForClass(GuildRefiner);
|
||||
|
||||
export interface GuildRefinerType extends Pick<DocumentType<GuildRefiner>, keyof GuildRefiner>{}
|
||||
@@ -110,6 +110,16 @@ export default class GuildTrain extends BaseModel {
|
||||
{ $push:{ 'trainInstances.$.trainBoxs': {roleId, index, good} }}, {new: true}).lean(lean);
|
||||
return guildTrain;
|
||||
}
|
||||
|
||||
public static async resetGuildTrain(guildCode: string) {
|
||||
const result = await GuildTrainModel.updateMany({guildCode}, {$set:{locked: false}});
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getGuildTrainBoxs(guildCode: string) {
|
||||
const result: GuildTrainType[] = await GuildTrainModel.find({guildCode, 'trainInstances.endTime':{$gte: nowSeconds()}, locked: false});
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,8 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, Ref } from '@typegoose/typegoose';
|
||||
import Role, { RoleType } from './Role';
|
||||
import { GUILD_AUTH, USER_GUILD_STATUS, GUILD_JOB } from '../consts';
|
||||
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { ARMY } from '../pubUtils/dicParam';
|
||||
class ActiveRecord {
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
@@ -51,12 +52,16 @@ export default class UserGuild extends BaseModel {
|
||||
@prop({ required: true, default: 0 })
|
||||
trainCount: number;//每日挑战训练场的次数
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
buyTrainCount: number;//每日挑战训练场购买次数
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
trainTime: number;//上次刷新挑战训练场次数的时间
|
||||
|
||||
@prop({ required: true, default: [] })
|
||||
trainRewards: Array<number>;//领取过的进阶等级
|
||||
|
||||
|
||||
public static async getMyAuth(roleId: string, guildCode?: string, userGuild?: UserGuildType) {
|
||||
let myGuild: UserGuildType;
|
||||
if(!userGuild) {
|
||||
@@ -133,6 +138,17 @@ export default class UserGuild extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static async addTrainCount(roleId: string, trainCount: number, lean = true) {
|
||||
const result = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON, $gte:{buyTrainCount: trainCount}},
|
||||
{$inc: {trainCount, buyTrainCount: -1 * trainCount}}, {new: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async resetTrainUserGuild(guildCode: string) {
|
||||
const result = await UserGuildModel.updateMany({ guildCode }, {$set: { trainCount: ARMY.ARMY_TRAIN_BUYTIMES, buyTrainCount: 0, trainTime: nowSeconds(), trainRewards: [] }});
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const UserGuildModel = getModelForClass(UserGuild);
|
||||
|
||||
Reference in New Issue
Block a user