练兵场结算

This commit is contained in:
mamengke01
2021-01-26 10:41:11 +08:00
parent d4d4ba825b
commit 3c3e734019
24 changed files with 6690 additions and 1765 deletions

View File

@@ -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
View 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>{}

View File

@@ -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;
}
}

View File

@@ -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);