添加活动基础表

This commit is contained in:
qiaoxin
2021-04-21 11:58:10 +08:00
parent 169d39dca2
commit 6ce9c402de
7 changed files with 196 additions and 6 deletions
@@ -0,0 +1,9 @@
/**
* 活动类型
*/
export enum ACTIVITY_TYPE {
SEVEN_DAYS = 1, // 七天乐活动
}
+7 -6
View File
@@ -167,7 +167,7 @@ export const STATUS = {
HAS_REACH_WISH_DONATE_COUNT_LIMIT: { code: 20929, simStr: '今日捐赠次数已用完,不能捐赠' },
HAS_RECEIVE_WISH_GOOD: { code: 20930, simStr: '玩家已经收到许愿物品' },
NOT_WISH_THE_QUALITY_GOODS: { code: 20931, simStr: '不能够许愿该品质的物品' },
GUILD_SCRIPT_IS_OPENED_TODAY: { code: 20950, simStr: '今日演武场已开启' },
GUILD_SCRIPT_NOT_OPENED: { code: 20951, simStr: '演武场未开启' },
GUILD_SCRIPT_IS_BATTLED: { code: 20952, simStr: '今日已挑战过演武场' },
@@ -190,7 +190,7 @@ export const STATUS = {
GUILD_TRAIN_QUALITY_REWARD_IS_GOT: { code: 20969, simStr: '军团训练进阶奖励已经领取' },
GUILD_PERSITION_TREE_NOT_LIGHT: { code: 20970, simStr: '军团前置科技树未研发' },
GUILD_TRAIN_BOX_IS_OVER_TIME: { code: 20971, simStr: '军团宝箱超时' },
GUILD_TRAIN_BOX_INDEX_IS_GOT:{ code: 20972, simStr: '该位置试炼宝箱已经领取过,请重新选择' },
GUILD_TRAIN_BOX_INDEX_IS_GOT: { code: 20972, simStr: '该位置试炼宝箱已经领取过,请重新选择' },
GUILD_TRAIN_BOX_IS_GOT: { code: 20973, simStr: '玩家已经领取该试炼宝箱' },
GUILD_LOT_NOT_FOUND: { code: 21001, simStr: '拍品未找到' },
@@ -216,7 +216,7 @@ export const STATUS = {
ROLE_MATERIAL_NOT_ENOUGH: { code: 30001, simStr: '材料数量不足' },
REWARD_CONDITION_NOT_REACH: { code: 30002, simStr: '未满足领取条件' },
REWARD_HAS_RECEIVED: { code: 30003, simStr: '奖励已领取' },
// 武将养成通用 30100 - 30199
// 武将合成,升级,升星,升品相关 30200 - 30299
@@ -312,7 +312,7 @@ export const STATUS = {
ITEM_NOT_SOUL: { code: 30902, simStr: '该物品不是将魂' },
SKIN_HAS_NOT_HERO: { code: 30903, simStr: '未拥有该武将不可获得皮肤' },
HERO_NOT_MAX: { code: 30904, simStr: '该武将未升满星' },
// 任务相关 31001-31100
TASK_NOT_REACH_CONDITION: { code: 30900, simStr: '任务不满足条件' },
TASK_HAS_RECEIVED: { code: 30901, simStr: '奖励已领取' },
@@ -322,9 +322,10 @@ export const STATUS = {
TASK_BOX_HAS_RECEIVED: { code: 30905, simStr: '奖励已领取' },
// 社交相关状态 40000 - 49999
SYS_CHANNEL_AUTH_NOT_ENOUGH: {code: 40000, simStr: '无法在系统频道发送消息'},
UPDATE_PRIVATE_MSG_READ_TIME_ERR: {code: 40001, simStr: '更新私聊阅读时间失败'},
SYS_CHANNEL_AUTH_NOT_ENOUGH: { code: 40000, simStr: '无法在系统频道发送消息' },
UPDATE_PRIVATE_MSG_READ_TIME_ERR: { code: 40001, simStr: '更新私聊阅读时间失败' },
// 运营模块相关状态 50000 - 59999
ACTIVITY_MISSING: { code: 50000, simStr: '活动丢失' },
// GM后台相关状态 60000 - 69999
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
GM_MISS_API: { code: 60002, simStr: '未找到该接口' },
+44
View File
@@ -0,0 +1,44 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
/**
* 活动系统
*/
@index({ acvitityId: 1 })
export default class Activity extends BaseModel {
@prop({ required: true })
acvitityId: number; // 活动Id
@prop({ required: true })
beginTime: Date; // 开启时间
@prop({ required: true })
endTime: Date; // 结束时间
@prop({ required: true })
type: number; // 活动类型
@prop({ required: true })
data: string; // 活动表中的数据
//根据活动id查询活动数据
public static async findActivity(acvitityId: number, lean = true) {
let result: ActivityModelType = await ActivityModel.findOne({ acvitityId }).lean(lean);
return result;
}
//新增活动
public static async addActivity(acvitityId: number, beginTime: Date, endTime: Date, type: number, data: string, lean = true) {
let result: ActivityModelType = await ActivityModel.findOneAndUpdate({ acvitityId }, { beginTime, endTime, type, data },
{ upsert: true, new: true }).lean(lean);
return result;
}
//删除活动
public static async deleteActivity(acvitityId: number) {
let result = await ActivityModel.deleteMany({ acvitityId });
return result;
}
}
export const ActivityModel = getModelForClass(Activity);
export interface ActivityModelType extends Pick<DocumentType<Activity>, keyof Activity> { }
export type ActivityModelTypeParam = Partial<ActivityModelType>; // 将所有字段变成可选项
@@ -0,0 +1,27 @@
import { prop } from '@typegoose/typegoose';
import { ActivityModelType } from '../../db/Activity';
// 活动数据
export abstract class ActivityBase {
@prop({ required: true })
activityId: number = 0;
@prop({ required: true })
beginTime: Date = null;
@prop({ required: true })
endTime: Date = null;
@prop({ required: true })
type: number = 0;
// @prop({ required: true })
// data: string = '';
abstract initData(data: string): void;
constructor(activityData: ActivityModelType) {
this.activityId = activityData.acvitityId;
this.beginTime = activityData.beginTime;
this.endTime = activityData.endTime;
this.type = activityData.type;
// this.data = activityData.data;
this.initData(activityData.data);
}
}
@@ -0,0 +1,41 @@
import { prop } from '@typegoose/typegoose';
import { ActivityModelType } from '../../db/Activity';
import { ActivityBase } from './activityField';
// 每日配置数据
export class SevenDayItem {
@prop({ required: true })
id: number = 0;
@prop({ required: true })
count: number = 0;
@prop({ required: true })
total: number = 0;
@prop({ required: true })
isReceive: boolean = false;
constructor(id: number, count: number, total: number, isReceive: boolean) {
this.id = id;
this.count = count;
this.total = total;
this.isReceive = isReceive;
}
}
// 七天乐活动数据
export class SevenDaysData extends ActivityBase {
@prop({ required: true })
items: Array<SevenDayItem> = [];
public initData(data: string) {
let arr = JSON.parse(data);
for (let obj of arr) {
this.items.push(new SevenDayItem(obj.id, obj.count, 0, false));
}
}
constructor(activityData: ActivityModelType) {
super(activityData)
}
}