活动:添加隐藏时间

This commit is contained in:
luying
2022-05-11 17:14:57 +08:00
parent 751c796a6b
commit 3c711a0f27
9 changed files with 26 additions and 46 deletions

View File

@@ -150,8 +150,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, hideDayByServer: number }, session: BackendSession) { 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, effectDay: number }, session: BackendSession) {
const { activityId, groupId, beginTime, endTime, type, data, timeType = 3, days = 0, delayDay = 0, interval = 0, name = '', hideDayByServer = 0 } = msg; const { activityId, groupId, beginTime, endTime, type, data, timeType = 3, days = 0, delayDay = 0, interval = 0, name = '', hideDayByServer = 0, effectDay = 0 } = msg;
const uid = session.get('uid'); const uid = session.get('uid');
if (!type || !data) { if (!type || !data) {
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
@@ -170,7 +170,7 @@ export class GmHandler {
let checkGroup = await checkActivityGroupTypeWithId(groupId, activities); let checkGroup = await checkActivityGroupTypeWithId(groupId, activities);
if(!checkGroup) return resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE); 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, hideDayByServer, 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, effectDay, uid);
let activityServers = pinus.app.getServersByType('activity'); let activityServers = pinus.app.getServersByType('activity');
@@ -186,13 +186,13 @@ export class GmHandler {
}); });
} }
async switchActivity(msg: { activityId: number }, session: BackendSession) { async switchActivity(msg: { activityId: number, isEnable: boolean }, session: BackendSession) {
const { activityId } = msg; const { activityId, isEnable } = msg;
const uid = session.get('uid'); const uid = session.get('uid');
let activity = await ActivityModel.findActivity(activityId); let activity = await ActivityModel.findActivity(activityId);
if(!activity) return resResult(STATUS.WRONG_PARMS); if(!activity) return resResult(STATUS.WRONG_PARMS);
activity = await ActivityModel.setEnable(activityId, !activity.isEnable, uid); activity = await ActivityModel.setEnable(activityId, isEnable, uid);
let activityServers = pinus.app.getServersByType('activity'); let activityServers = pinus.app.getServersByType('activity');
for(let server of activityServers) { for(let server of activityServers) {

View File

@@ -82,6 +82,7 @@ export default (app: Application) => {
router.post('/api/activity/createtasktoactivity', tokenParser, controller.activity.createTaskToActivity); router.post('/api/activity/createtasktoactivity', tokenParser, controller.activity.createTaskToActivity);
router.post('/api/activity/updateactivitytaskpoint', tokenParser, controller.activity.updateActivityTaskPoint); router.post('/api/activity/updateactivitytaskpoint', tokenParser, controller.activity.updateActivityTaskPoint);
router.post('/api/activity/delactivitytaskpoint', tokenParser, controller.activity.delActivityTaskPoint); router.post('/api/activity/delactivitytaskpoint', tokenParser, controller.activity.delActivityTaskPoint);
// router.post('/api/activity/getactivitylist', tokenParser, controller.activity.getActivityList);
router.post('/api/mail/getcreatesinglemail', tokenParser, controller.mail.getSingleMail); router.post('/api/mail/getcreatesinglemail', tokenParser, controller.mail.getSingleMail);
router.post('/api/mail/getcreatesinglemailtxt', tokenParser, controller.mail.getSingleMailTxt); router.post('/api/mail/getcreatesinglemailtxt', tokenParser, controller.mail.getSingleMailTxt);

View File

@@ -30,14 +30,16 @@ export default class Activity extends BaseModel {
@prop({ required: true }) @prop({ required: true })
days: number; // 活动持续天数 timeType=1、2 days: number; // 活动持续天数 timeType=1、2
@prop({ required: true }) @prop({ required: true })
effectDay: number; // 循环中显示的天数
@prop({ required: true })
delayDay: number; // 迟几天开启活动0表示按照规定时间开启 delayDay: number; // 迟几天开启活动0表示按照规定时间开启
@prop({ required: true }) @prop({ required: true })
interval: number; // 周期性活动时间间隔, interval: number; // 周期性活动时间间隔,
@prop({ required: true }) @prop({ required: true })
hideDayByServer: number; // 开服后几天内该活动不可见 hideDayByServer: number; // 开服后几天内该活动不可见
@prop({ required: true }) @prop({ required: true })
isEnable: boolean; // 开服后几天内该活动不可见 isEnable: boolean; // 该活动是否有效
// 获取正在开启和即将到来的活动列表 // 获取正在开启和即将到来的活动列表
public static async findOpenAndComingActivityes() { public static async findOpenAndComingActivityes() {
@@ -81,13 +83,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, hideDayByServer: number, 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, effectDay: number, uid = 1) {
let result: ActivityModelType[] = []; let result: ActivityModelType[] = [];
let newAids = []; let newAids = [];
for (let activityId of aids) { for (let activityId of aids) {
if (!activityId) activityId = await CounterModel.getNewCounter(COUNTER.ACTIVITY); if (!activityId) activityId = await CounterModel.getNewCounter(COUNTER.ACTIVITY);
newAids.push(activityId); newAids.push(activityId);
let update = { type, data, timeType, days, delayDay, interval, groupId, name, hideDayByServer } let update = { type, data, timeType, days, delayDay, interval, groupId, name, hideDayByServer, effectDay }
if (beginTime != undefined) { if (beginTime != undefined) {
update["beginTime"] = beginTime; update["beginTime"] = beginTime;
} }

View File

@@ -13,6 +13,7 @@ export abstract class ActivityBase {
type: number = 0; type: number = 0;
todayIndex: number = 0;//从1开始 todayIndex: number = 0;//从1开始
delayDay: number = 0;//延迟多少天开启0表示按照原计划开启 delayDay: number = 0;//延迟多少天开启0表示按照原计划开启
effectDay: number = 0;// 活动生效天数
hideDayByServer: number = 0; hideDayByServer: number = 0;
isEnable: boolean = false; isEnable: boolean = false;
@@ -27,8 +28,10 @@ export abstract class ActivityBase {
} }
public canShow() { public canShow() {
console.log('#### canShow', this.beginTime <= Date.now(), this.endTime >= Date.now()) if(!this.isEnable) return false;
return this.isEnable && this.beginTime <= Date.now() && this.endTime >= Date.now() if(this.beginTime > Date.now() || this.endTime < Date.now()) return false;
if(this.nextRefreshTime && this.nextRefreshTime < Date.now()) return false;
return true;
} }
/** /**
@@ -63,7 +66,7 @@ export abstract class ActivityBase {
this.type = activityData.type; this.type = activityData.type;
console.log('今天是活动第几天', activityData.beginTime, new Date, this.todayIndex) console.log('今天是活动第几天', activityData.beginTime, new Date, this.todayIndex)
console.log('***** activityData', activityData.timeType) console.log('***** activityData', activityData.timeType, this.beginTime, this.endTime, this.todayIndex, this.roundIndex, this.nextRefreshTime, this.effectDay)
switch (activityData.timeType) { switch (activityData.timeType) {
case ACTIVITY_TIME_TYPE.SERVER_OPEN_TIME: { case ACTIVITY_TIME_TYPE.SERVER_OPEN_TIME: {
this.beginTime = moment(serverTime * 1000).add(this.delayDay, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf(); this.beginTime = moment(serverTime * 1000).add(this.delayDay, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf();
@@ -73,7 +76,6 @@ export abstract class ActivityBase {
this.endTime = moment(this.beginTime).add(1, 'd').valueOf(); this.endTime = moment(this.beginTime).add(1, 'd').valueOf();
} }
this.todayIndex = deltaDays(moment(this.beginTime).toDate(), new Date) + 1; this.todayIndex = deltaDays(moment(this.beginTime).toDate(), new Date) + 1;
console.log('活动时间数据11...', activityData.timeType, this.beginTime, this.endTime, this.todayIndex, this.roundIndex, this.nextRefreshTime)
break; break;
} }
case ACTIVITY_TIME_TYPE.ROLE_REGISTER_TIME: { case ACTIVITY_TIME_TYPE.ROLE_REGISTER_TIME: {
@@ -85,11 +87,9 @@ export abstract class ActivityBase {
} }
this.todayIndex = deltaDays(moment(this.beginTime).toDate(), new Date) + 1; this.todayIndex = deltaDays(moment(this.beginTime).toDate(), new Date) + 1;
console.log('活动时间数据22...', activityData.timeType, this.beginTime, this.endTime, this.todayIndex, this.roundIndex, this.nextRefreshTime)
break; break;
} }
case ACTIVITY_TIME_TYPE.DATE_TIME: { case ACTIVITY_TIME_TYPE.DATE_TIME: {
console.log('活动时间数据33...', activityData.timeType, this.beginTime, this.endTime, this.todayIndex, this.roundIndex, this.nextRefreshTime)
break; break;
} }
default: { default: {
@@ -97,8 +97,8 @@ export abstract class ActivityBase {
} }
} }
if (activityData.interval > 0) { if (activityData.interval > 0) {
this.roundIndex = Math.ceil((moment(new Date).valueOf() - this.beginTime) / (activityData.interval * 1000)); this.roundIndex = Math.ceil((moment(new Date).valueOf() - this.beginTime) / (activityData.interval * 86400000));
this.nextRefreshTime = moment(this.beginTime).add(activityData.interval * this.roundIndex, 'second').valueOf(); this.nextRefreshTime = moment(this.beginTime).add(activityData.interval * (this.roundIndex - 1), 'day').add(activityData.effectDay, 'd').valueOf();
this.todayIndex = Math.ceil(((moment(new Date).valueOf() - this.beginTime) / (24 * 60 * 60 * 1000))); this.todayIndex = Math.ceil(((moment(new Date).valueOf() - this.beginTime) / (24 * 60 * 60 * 1000)));
} }
if(activityData.hideDayByServer > 0) { if(activityData.hideDayByServer > 0) {
@@ -125,6 +125,7 @@ export class ActivityInRemote {
timeType: number; // 活动时间类型 ACTIVITY_TIME_TYPE 1.服务器开启时间 2.角色创建时间 3.指定开启时间(beginTime,endTime) timeType: number; // 活动时间类型 ACTIVITY_TIME_TYPE 1.服务器开启时间 2.角色创建时间 3.指定开启时间(beginTime,endTime)
days: number; // 活动持续天数 timeType=1、2 days: number; // 活动持续天数 timeType=1、2
delayDay: number; // 迟几天开启活动0表示按照规定时间开启 delayDay: number; // 迟几天开启活动0表示按照规定时间开启
effectDay: number; // 生效天数
interval: number; // 周期性活动时间间隔,秒 interval: number; // 周期性活动时间间隔,秒
hideDayByServer: number; hideDayByServer: number;
isEnable: boolean; isEnable: boolean;
@@ -144,6 +145,7 @@ export class ActivityInRemote {
this.hideDayByServer = activity.hideDayByServer; this.hideDayByServer = activity.hideDayByServer;
this.isEnable = activity.isEnable; this.isEnable = activity.isEnable;
this.name = activity.name; this.name = activity.name;
this.effectDay = activity.effectDay;
} }
} }

View File

@@ -76,7 +76,7 @@ export class LimitShopData extends ActivityBase {
// this.nextRefreshTime = this.endTime; // this.nextRefreshTime = this.endTime;
let dataObj = JSON.parse(data); let dataObj = JSON.parse(data);
this.name = dataObj.name; this.name = dataObj.name;
this.interval = dataObj.interval; this.interval = dataObj.interval * 864000;
// this.beginTime = moment(this.beginTime).startOf('d').add(REFRESH_TIME, 'hour').valueOf(); // this.beginTime = moment(this.beginTime).startOf('d').add(REFRESH_TIME, 'hour').valueOf();
// if (this.interval > 0) { // if (this.interval > 0) {

View File

@@ -155,7 +155,7 @@ export class RefreshShopData extends ActivityBase {
let dataObj = JSON.parse(data); let dataObj = JSON.parse(data);
this.shopType = dataObj.shopType; this.shopType = dataObj.shopType;
this.name = dataObj.name; this.name = dataObj.name;
this.interval = dataObj.interval; this.interval = dataObj.interval * 864000;
// this.beginTime = moment(this.beginTime).startOf('d').add(REFRESH_TIME, 'hour').valueOf(); // this.beginTime = moment(this.beginTime).startOf('d').add(REFRESH_TIME, 'hour').valueOf();
// if (this.interval > 0) { // if (this.interval > 0) {

View File

@@ -112,7 +112,7 @@ export class RefreshTaskData extends ActivityBase {
// this.nextRefreshTime = this.endTime; // this.nextRefreshTime = this.endTime;
let dataObj = JSON.parse(data); let dataObj = JSON.parse(data);
this.name = dataObj.name; this.name = dataObj.name;
this.interval = dataObj.interval; this.interval = dataObj.interval * 864000;
this.consumePoint = dataObj.consumePoint; this.consumePoint = dataObj.consumePoint;
this.reward = dataObj.reward; this.reward = dataObj.reward;
this.addPointActivityId = dataObj.addPointActivityId ? dataObj.addPointActivityId : 0; this.addPointActivityId = dataObj.addPointActivityId ? dataObj.addPointActivityId : 0;

View File

@@ -1,22 +1,4 @@
[ [
{
"id": 1,
"activityType": 1,
"name": " DAILY_DISCOUNT_GIFT",
"string": "七天乐活动"
},
{
"id": 2,
"activityType": 2,
"name": "TASK_GROWTH",
"string": "七天乐(成长任务)"
},
{
"id": 3,
"activityType": 3,
"name": "TASK_DAILY_CHALLENGES",
"string": "七天乐(今日挑战)"
},
{ {
"id": 4, "id": 4,
"activityType": 4, "activityType": 4,
@@ -167,12 +149,6 @@
"name": "FOURTEEN_DAY", "name": "FOURTEEN_DAY",
"string": "十四天乐活动" "string": "十四天乐活动"
}, },
{
"id": 29,
"activityType": 29,
"name": "COMMON_SEVEN_DAY",
"string": "通用七天乐活动"
},
{ {
"id": 30, "id": 30,
"activityType": 30, "activityType": 30,

View File

@@ -1,7 +1,6 @@
{ {
"API_IS_CLOSE": 1, "API_IS_CLOSE": 1,
"CLOSE_APIS": [ "CLOSE_APIS": [
"order.orderHandler.applyOrder"
], ],
"CLOSE_LOGIN": 0, "CLOSE_LOGIN": 0,
"CLOSE_LOGIN_WHEN_ONLINE_MAX": 1, "CLOSE_LOGIN_WHEN_ONLINE_MAX": 1,