活动:添加开服内多少天隐藏某活动

This commit is contained in:
luying
2022-04-01 20:36:09 +08:00
parent a99bdae492
commit 0bb5fad55b
4 changed files with 18 additions and 5 deletions

View File

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

View File

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

View File

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

View File

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