活动:添加开服内多少天隐藏某活动
This commit is contained in:
@@ -153,8 +153,8 @@ export class GmHandler {
|
||||
}
|
||||
}
|
||||
|
||||
async updateActivity(msg: { activityId: number|string, groupId: number, beginTime: number, endTime: number, type: number, data: string, timeType: number, days: number, delayDay: number, interval: number, name: string }, session: BackendSession) {
|
||||
const { activityId, groupId, beginTime, endTime, type, data, timeType = 3, days = 0, delayDay = 0, interval = 0, name = '' } = msg;
|
||||
async updateActivity(msg: { activityId: number|string, groupId: number, beginTime: number, endTime: number, type: number, data: string, timeType: number, days: number, delayDay: number, interval: number, name: string, hideDayByServer: number }, session: BackendSession) {
|
||||
const { activityId, groupId, beginTime, endTime, type, data, timeType = 3, days = 0, delayDay = 0, interval = 0, name = '', hideDayByServer = 0 } = msg;
|
||||
const uid = session.get('uid');
|
||||
if (!type || !data) {
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
@@ -173,7 +173,7 @@ export class GmHandler {
|
||||
let checkGroup = await checkActivityGroupTypeWithId(groupId, activities);
|
||||
if(!checkGroup) return resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE);
|
||||
|
||||
activities = await ActivityModel.addActivity(aids, groupId, beginTime ? new Date(beginTime) : undefined, endTime ? new Date(endTime) : undefined, type, data, timeType, days, delayDay, interval, name, uid);
|
||||
activities = await ActivityModel.addActivity(aids, groupId, beginTime ? new Date(beginTime) : undefined, endTime ? new Date(endTime) : undefined, type, data, timeType, days, delayDay, interval, name, hideDayByServer, uid);
|
||||
|
||||
|
||||
let activityServers = pinus.app.getServersByType('activity');
|
||||
|
||||
@@ -217,6 +217,9 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(activityData && activityData.canShow && !activityData.canShow()) {
|
||||
return null
|
||||
}
|
||||
return activityData;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@ export default class Activity extends BaseModel {
|
||||
delayDay: number; // 迟几天开启活动,0表示按照规定时间开启
|
||||
@prop({ required: true })
|
||||
interval: number; // 周期性活动时间间隔,秒
|
||||
@prop({ required: true })
|
||||
hideDayByServer: number; // 开服后几天内该活动不可见
|
||||
|
||||
// 获取正在开启和即将到来的活动列表
|
||||
public static async findOpenAndComingActivityes() {
|
||||
@@ -76,13 +78,13 @@ export default class Activity extends BaseModel {
|
||||
}
|
||||
|
||||
//新增活动
|
||||
public static async addActivity(aids: number[], groupId: number, beginTime: Date, endTime: Date, type: number, data: string, timeType: number, days: number, delayDay: number, interval: number, name: string, uid = 1) {
|
||||
public static async addActivity(aids: number[], groupId: number, beginTime: Date, endTime: Date, type: number, data: string, timeType: number, days: number, delayDay: number, interval: number, name: string, hideDayByServer: number, uid = 1) {
|
||||
let result: ActivityModelType[] = [];
|
||||
let newAids = [];
|
||||
for (let activityId of aids) {
|
||||
if (!activityId) activityId = await CounterModel.getNewCounter(COUNTER.ACTIVITY);
|
||||
newAids.push(activityId);
|
||||
let update = { type, data, timeType, days, delayDay, interval, groupId, name }
|
||||
let update = { type, data, timeType, days, delayDay, interval, groupId, name, hideDayByServer }
|
||||
if (beginTime != undefined) {
|
||||
update["beginTime"] = beginTime;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ export abstract class ActivityBase {
|
||||
type: number = 0;
|
||||
todayIndex: number = 0;//从1开始
|
||||
delayDay: number = 0;//延迟多少天开启,0表示按照原计划开启
|
||||
hideDayByServer: number = 0;
|
||||
|
||||
roundIndex: number = 0;//周期活动第几个周期,从1开始
|
||||
nextRefreshTime: number = 0;//周期活动下次刷新时间
|
||||
@@ -50,6 +51,7 @@ export abstract class ActivityBase {
|
||||
this.activityId = activityData.activityId;
|
||||
this.groupId = activityData.groupId;
|
||||
this.delayDay = activityData.delayDay ? activityData.delayDay : 0;
|
||||
this.hideDayByServer = activityData.hideDayByServer||0;
|
||||
this.beginTime = moment(activityData.beginTime).add(this.delayDay, 'd').valueOf();
|
||||
this.endTime = moment(activityData.endTime).add(this.delayDay, 'd').valueOf();
|
||||
this.todayIndex = deltaDays(moment(this.beginTime).toDate(), new Date) + 1;
|
||||
@@ -97,6 +99,10 @@ export abstract class ActivityBase {
|
||||
this.nextRefreshTime = moment(this.beginTime).add(activityData.interval * this.roundIndex, 'second').valueOf();
|
||||
this.todayIndex = Math.ceil(((moment(new Date).valueOf() - this.beginTime) / (24 * 60 * 60 * 1000)));
|
||||
}
|
||||
if(activityData.hideDayByServer > 0) {
|
||||
let hidOverTime = moment(serverTime * 1000).add(activityData.hideDayByServer, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf();
|
||||
if(this.beginTime < hidOverTime) this.beginTime = hidOverTime;
|
||||
}
|
||||
console.log('活动时间数据...', '活动id:', activityData.activityId, '类型:', activityData.timeType, '开始时间:', this.beginTime, moment(this.beginTime).toDate(),
|
||||
'结束:', this.endTime, moment(this.endTime).toDate(),
|
||||
'今天第几天:', this.todayIndex, '回合:', this.roundIndex, '下次刷新:', this.nextRefreshTime, moment(this.nextRefreshTime).toDate())
|
||||
@@ -118,6 +124,7 @@ export class ActivityInRemote {
|
||||
days: number; // 活动持续天数 timeType=1、2
|
||||
delayDay: number; // 迟几天开启活动,0表示按照规定时间开启
|
||||
interval: number; // 周期性活动时间间隔,秒
|
||||
hideDayByServer: number;
|
||||
name: string;
|
||||
|
||||
constructor(activity?: ActivityModelType) {
|
||||
@@ -131,6 +138,7 @@ export class ActivityInRemote {
|
||||
this.days = activity.days;
|
||||
this.delayDay = activity.delayDay;
|
||||
this.interval = activity.interval;
|
||||
this.hideDayByServer = activity.hideDayByServer;
|
||||
this.name = activity.name;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user