练兵接口调整,新增获得宝箱和战报
This commit is contained in:
@@ -170,7 +170,7 @@ export const STATUS = {
|
||||
GUILD_REACH_MAX_ASSIST_COUNT: { code: 20967, simStr: '已经达到协助的最大次数' },
|
||||
GUILD_TRAIN_IS_NOT_COMPLETE: { code: 20968, simStr: '军团该训练场没有完成' },
|
||||
GUILD_TRAIN_QUALITY_REWARD_IS_GOT: { code: 20969, simStr: '军团训练进阶奖励已经领取' },
|
||||
|
||||
GUILD_PERSITION_TREE_NOT_LIGHT: { code: 20970, simStr: '军团前置科技树未研发' },
|
||||
// 通用 30000 - 30099
|
||||
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },
|
||||
ROLE_MATERIAL_NOT_ENOUGH: { code: 30001, simStr: '材料数量不足' },
|
||||
|
||||
55
shared/db/Donation.ts
Normal file
55
shared/db/Donation.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { COUNTER } from './../consts';
|
||||
import { CounterModel } from './Counter';
|
||||
|
||||
class Report {
|
||||
@prop({ required: true })
|
||||
roleName: string;
|
||||
|
||||
@prop({ required: true })
|
||||
time: number;
|
||||
|
||||
@prop({ required: true })
|
||||
id: number;//捐献类型id
|
||||
}
|
||||
|
||||
export default class Donation extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
guildCode: string;
|
||||
|
||||
@prop({ required: true, default: 0})
|
||||
donateFund: number;
|
||||
|
||||
@prop({ required: true, default: 0})
|
||||
hisDonateFund: number; //历史捐赠最高
|
||||
|
||||
@prop({ required: true, type: Report, default:[] })
|
||||
reports: Array<Report>;
|
||||
|
||||
@prop({ required: true, default: 0})
|
||||
refTime: number;
|
||||
|
||||
public static async createDonation(guildCode: string, lean = true) {
|
||||
const doc = new Donation();
|
||||
const result: DonationType = await DonationModel.findOneAndUpdate({ guildCode }, {$set:doc}, {upsert: true, new: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getDonation(guildCode: string, select?: string, lean = true) {
|
||||
const result: DonationType = await DonationModel.findOne({ guildCode }).select(select).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async donation(guildCode: string, donateFund: number, report: Report, lean = true) {
|
||||
const result: DonationType = await DonationModel.findOneAndUpdate({ guildCode }, {$inc:{ donateFund, hisDonateFund: donateFund }, $push:{ reports: report}}, {upsert: true, new: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const DonationModel = getModelForClass(Donation);
|
||||
|
||||
export interface DonationType extends Pick<DocumentType<Donation>, keyof Donation>{}
|
||||
export type DonationUpdateParam = Partial<DonationType>; // 将所有字段变成可选项
|
||||
@@ -84,6 +84,9 @@ export default class Guild extends BaseModel {
|
||||
@prop({ required: true, default: 1 })
|
||||
trainId: number; // 试炼id
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
trainLv: number; // 试炼等级
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
resetTrainTime: number;//上次刷新挑战训练场次数的时间
|
||||
|
||||
@@ -196,9 +199,9 @@ export default class Guild extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async resetGuildTrain(code: string, serverId: number, lean = true) {
|
||||
public static async resetGuildTrain(code: string, serverId: number, trainLv: 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, resetTrainTime: time}}).lean(lean);
|
||||
const result = await GuildModel.findOneAndUpdate({ code, status: GUILD_STATUS.RUNNING, serverId, resetTrainTime:{$ne:time}},{$set: {trainId: 1, resetTrainTime: time, trainLv}}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,22 +35,7 @@ class Rank {
|
||||
score: number;
|
||||
}
|
||||
|
||||
class Report {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ required: true })
|
||||
trainId: number;//挑战的试炼关
|
||||
@prop({ required: true })
|
||||
hid: number;//据点
|
||||
@prop({ required: true })
|
||||
score: number;
|
||||
@prop({ required: true })
|
||||
time: number;
|
||||
@prop({ required: true })
|
||||
isSuccessed: boolean;
|
||||
@prop({ required: true })
|
||||
type: number;//1表示普通战报, 2表示系统战报即:被成功压制
|
||||
}
|
||||
|
||||
@index({guildCode:1, trainId:1})
|
||||
export default class GuildTrain extends BaseModel {
|
||||
@prop({ required: true })
|
||||
@@ -63,8 +48,6 @@ export default class GuildTrain extends BaseModel {
|
||||
trainInstances: TrainInstance[];
|
||||
@prop({ required: true, default: [], type: Rank, _id: false })
|
||||
ranks: Rank[];
|
||||
@prop({ required: true, default: [], type: Report, _id: false })
|
||||
reports: Report[];
|
||||
@prop({ required: true, default: false})
|
||||
locked: boolean;
|
||||
|
||||
@@ -88,14 +71,15 @@ export default class GuildTrain extends BaseModel {
|
||||
return guildTrain;
|
||||
}
|
||||
|
||||
public static async updateGuildTrainProgress(guildCode: string, trainId: number, hid:number, progress: number, ranks:Array<Rank>, reports: Array<Report>, isComplete: boolean,lean = true) {
|
||||
public static async updateGuildTrainProgress(guildCode: string, trainId: number, hid:number, progress: number, ranks:Array<Rank>, isComplete: boolean,lean = true) {
|
||||
const guildTrain: GuildTrainType = await GuildTrainModel.findOneAndUpdate({ guildCode, trainId, 'trainInstances.hid':hid},
|
||||
{ $set: {'trainInstances.$.progress': progress, ranks, reports, isComplete,'trainInstances.$.endTime': nowSeconds() + 24*60*60} },{new: true}).lean(lean);
|
||||
{ $set: {'trainInstances.$.progress': progress, ranks, isComplete,'trainInstances.$.endTime': nowSeconds() + 24*60*60} },{new: true}).lean(lean);
|
||||
|
||||
return guildTrain;
|
||||
}
|
||||
|
||||
public static async openGuildTrain(guildCode: string, trainId: number, trainInstances: Array<TrainInstance>, lean = true) {
|
||||
const guildTrain: GuildTrainType = await GuildTrainModel.findOneAndUpdate({ guildCode, trainId },{ trainId, reports: [], locked: false, ranks: [], trainInstances, isComplete: false, guildCode}, {new: true, upsert: true}).lean(lean);
|
||||
const guildTrain: GuildTrainType = await GuildTrainModel.findOneAndUpdate({ guildCode, trainId },{ trainId, locked: false, ranks: [], trainInstances, isComplete: false, guildCode}, {new: true, upsert: true}).lean(lean);
|
||||
return guildTrain;
|
||||
}
|
||||
|
||||
|
||||
51
shared/db/GuildTrainReport.ts
Normal file
51
shared/db/GuildTrainReport.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
|
||||
class Report {
|
||||
@prop({ required: true })
|
||||
roleName: string;
|
||||
@prop({ required: true })
|
||||
trainId: number;//挑战的试炼关
|
||||
@prop({ required: true })
|
||||
hid: number;//据点
|
||||
@prop({ required: true })
|
||||
score: number;
|
||||
@prop({ required: true })
|
||||
time: number;
|
||||
@prop({ required: true })
|
||||
isSuccessed: boolean;
|
||||
@prop({ required: true })
|
||||
type: number;//1表示普通战报, 2表示系统战报即:被成功压制
|
||||
}
|
||||
@index({guildCode: 1, trainId: 1})
|
||||
|
||||
export default class GuildTrainReport extends BaseModel {
|
||||
@prop({ required: true })
|
||||
guildCode: string;
|
||||
@prop({ required: true })
|
||||
trainId: number;
|
||||
@prop({ required: true, default: [], type: Report, _id: false })
|
||||
reports: Report[];
|
||||
|
||||
public static async pushGuildTrainReports(guildCode: string, trainId: number, reports: Array<Report>, lean = true) {
|
||||
const guildTrainReport: GuildTrainReportType = await GuildTrainReportModel.findOneAndUpdate({ guildCode, trainId },
|
||||
{ $push: {reports:{ $each:reports } } },{new: true}).lean(lean);
|
||||
return guildTrainReport;
|
||||
}
|
||||
|
||||
public static async resetGuildTrainReport(guildCode: string, trainId: number, lean = true) {
|
||||
const guildTrainReport: GuildTrainReportType = await GuildTrainReportModel.findOneAndUpdate({ guildCode, trainId },
|
||||
{ $set: {reports:[], guildCode, trainId } }, {new: true, upsert: true}).lean(lean);
|
||||
return guildTrainReport;
|
||||
}
|
||||
|
||||
public static async findGuildTrainByTrainIds(guildCode: string, trainIds:Array<number>, lean = true) {
|
||||
const guildTrains: GuildTrainReportType[] = await GuildTrainReportModel.find({ trainId:{ $in:trainIds}, guildCode }).lean(lean);
|
||||
return guildTrains;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const GuildTrainReportModel = getModelForClass(GuildTrainReport);
|
||||
|
||||
export interface GuildTrainReportType extends Pick<DocumentType<GuildTrainReport>, keyof GuildTrainReport> { };
|
||||
@@ -11,6 +11,22 @@ class ActiveRecord {
|
||||
count: number;
|
||||
}
|
||||
|
||||
class WishGood {
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
@prop({ required: true })
|
||||
type: number;
|
||||
@prop({ required: true })
|
||||
goodId: number;
|
||||
@prop({ required: true })
|
||||
count: number;
|
||||
@prop({ required: true, default:0 })
|
||||
receiveCnt: number;
|
||||
@prop({ required: true, default:0 })
|
||||
drawCnt: number;
|
||||
}
|
||||
|
||||
|
||||
@index({ roleId: 1 })
|
||||
export default class UserGuild extends BaseModel {
|
||||
@prop({ required: true })
|
||||
@@ -56,11 +72,22 @@ export default class UserGuild extends BaseModel {
|
||||
buyTrainCount: number;//每日挑战训练场购买次数
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
trainTime: number;//上次刷新挑战训练场次数的时间
|
||||
trainTime: number;//上次刷新挑战训练场次数的时间每天5点
|
||||
|
||||
@prop({ required: true, default: [] })
|
||||
trainRewards: Array<number>;//领取过的进阶等级
|
||||
|
||||
@prop({ required: true, default: [], type: WishGood })
|
||||
wishGoods:Array<WishGood>;
|
||||
|
||||
@prop({ required: true, default: [], type: Number })
|
||||
receiveBoxs:Array<number>;
|
||||
|
||||
@prop({ required: true })
|
||||
wishDntCnt:number;//今天许愿池捐献次数
|
||||
|
||||
@prop({ required: true })
|
||||
donateCnt:number;//今天捐献所次数
|
||||
|
||||
public static async getMyAuth(roleId: string, guildCode?: string, userGuild?: UserGuildType) {
|
||||
let myGuild: UserGuildType;
|
||||
@@ -148,6 +175,15 @@ export default class UserGuild extends BaseModel {
|
||||
const result = await UserGuildModel.updateMany({ guildCode }, {$set: { trainCount: ARMY.ARMY_TRAIN_BUYTIMES, buyTrainCount: 0, trainTime: nowSeconds(), trainRewards: [] }});
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async donateFund(roleId: string, donateCnt: number, lean = true) {
|
||||
const result = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON},
|
||||
{$inc: {donateCnt :-1*donateCnt}}, {new: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const UserGuildModel = getModelForClass(UserGuild);
|
||||
|
||||
Reference in New Issue
Block a user