diff --git a/game-server/app/servers/gm/handler/gmHandler.ts b/game-server/app/servers/gm/handler/gmHandler.ts index c9ba7e250..513d2c08c 100644 --- a/game-server/app/servers/gm/handler/gmHandler.ts +++ b/game-server/app/servers/gm/handler/gmHandler.ts @@ -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) { - const { activityId, groupId, beginTime, endTime, type, data, timeType = 3, days = 0, delayDay = 0, interval = 0, name = '', hideDayByServer = 0 } = 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, effectDay: number }, session: BackendSession) { + 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'); if (!type || !data) { return resResult(STATUS.WRONG_PARMS); @@ -170,7 +170,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, 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'); @@ -186,13 +186,13 @@ export class GmHandler { }); } - async switchActivity(msg: { activityId: number }, session: BackendSession) { - const { activityId } = msg; + async switchActivity(msg: { activityId: number, isEnable: boolean }, session: BackendSession) { + const { activityId, isEnable } = msg; const uid = session.get('uid'); let activity = await ActivityModel.findActivity(activityId); 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'); for(let server of activityServers) { diff --git a/gm-server/app/router.ts b/gm-server/app/router.ts index 6c5154c74..227b6cf84 100644 --- a/gm-server/app/router.ts +++ b/gm-server/app/router.ts @@ -82,6 +82,7 @@ export default (app: Application) => { router.post('/api/activity/createtasktoactivity', tokenParser, controller.activity.createTaskToActivity); router.post('/api/activity/updateactivitytaskpoint', tokenParser, controller.activity.updateActivityTaskPoint); 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/getcreatesinglemailtxt', tokenParser, controller.mail.getSingleMailTxt); diff --git a/shared/db/Activity.ts b/shared/db/Activity.ts index 6f2311def..cb94a44e5 100644 --- a/shared/db/Activity.ts +++ b/shared/db/Activity.ts @@ -30,14 +30,16 @@ export default class Activity extends BaseModel { @prop({ required: true }) days: number; // 活动持续天数 timeType=1、2 @prop({ required: true }) + effectDay: number; // 循环中显示的天数 + @prop({ required: true }) delayDay: number; // 迟几天开启活动,0表示按照规定时间开启 @prop({ required: true }) - interval: number; // 周期性活动时间间隔,秒 + interval: number; // 周期性活动时间间隔,天 @prop({ required: true }) hideDayByServer: number; // 开服后几天内该活动不可见 @prop({ required: true }) - isEnable: boolean; // 开服后几天内该活动不可见 + isEnable: boolean; // 该活动是否有效 // 获取正在开启和即将到来的活动列表 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 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, hideDayByServer } + let update = { type, data, timeType, days, delayDay, interval, groupId, name, hideDayByServer, effectDay } if (beginTime != undefined) { update["beginTime"] = beginTime; } diff --git a/shared/domain/activityField/activityField.ts b/shared/domain/activityField/activityField.ts index 193f993a6..1e332f431 100644 --- a/shared/domain/activityField/activityField.ts +++ b/shared/domain/activityField/activityField.ts @@ -13,6 +13,7 @@ export abstract class ActivityBase { type: number = 0; todayIndex: number = 0;//从1开始 delayDay: number = 0;//延迟多少天开启,0表示按照原计划开启 + effectDay: number = 0;// 活动生效天数 hideDayByServer: number = 0; isEnable: boolean = false; @@ -27,8 +28,10 @@ export abstract class ActivityBase { } public canShow() { - console.log('#### canShow', this.beginTime <= Date.now(), this.endTime >= Date.now()) - return this.isEnable && this.beginTime <= Date.now() && this.endTime >= Date.now() + if(!this.isEnable) return false; + 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; 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) { case ACTIVITY_TIME_TYPE.SERVER_OPEN_TIME: { 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.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; } 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; - console.log('活动时间数据22...', activityData.timeType, this.beginTime, this.endTime, this.todayIndex, this.roundIndex, this.nextRefreshTime) break; } case ACTIVITY_TIME_TYPE.DATE_TIME: { - console.log('活动时间数据33...', activityData.timeType, this.beginTime, this.endTime, this.todayIndex, this.roundIndex, this.nextRefreshTime) break; } default: { @@ -97,8 +97,8 @@ export abstract class ActivityBase { } } if (activityData.interval > 0) { - this.roundIndex = Math.ceil((moment(new Date).valueOf() - this.beginTime) / (activityData.interval * 1000)); - this.nextRefreshTime = moment(this.beginTime).add(activityData.interval * this.roundIndex, 'second').valueOf(); + this.roundIndex = Math.ceil((moment(new Date).valueOf() - this.beginTime) / (activityData.interval * 86400000)); + 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))); } if(activityData.hideDayByServer > 0) { @@ -125,6 +125,7 @@ export class ActivityInRemote { timeType: number; // 活动时间类型 ACTIVITY_TIME_TYPE 1.服务器开启时间 2.角色创建时间 3.指定开启时间(beginTime,endTime) days: number; // 活动持续天数 timeType=1、2 delayDay: number; // 迟几天开启活动,0表示按照规定时间开启 + effectDay: number; // 生效天数 interval: number; // 周期性活动时间间隔,秒 hideDayByServer: number; isEnable: boolean; @@ -144,6 +145,7 @@ export class ActivityInRemote { this.hideDayByServer = activity.hideDayByServer; this.isEnable = activity.isEnable; this.name = activity.name; + this.effectDay = activity.effectDay; } } diff --git a/shared/domain/activityField/limitShopField.ts b/shared/domain/activityField/limitShopField.ts index 3178f693d..dc45f500c 100644 --- a/shared/domain/activityField/limitShopField.ts +++ b/shared/domain/activityField/limitShopField.ts @@ -76,7 +76,7 @@ export class LimitShopData extends ActivityBase { // this.nextRefreshTime = this.endTime; let dataObj = JSON.parse(data); 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(); // if (this.interval > 0) { diff --git a/shared/domain/activityField/refreshShopField.ts b/shared/domain/activityField/refreshShopField.ts index 66dd11620..6830e34b7 100644 --- a/shared/domain/activityField/refreshShopField.ts +++ b/shared/domain/activityField/refreshShopField.ts @@ -155,7 +155,7 @@ export class RefreshShopData extends ActivityBase { let dataObj = JSON.parse(data); this.shopType = dataObj.shopType; 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(); // if (this.interval > 0) { diff --git a/shared/domain/activityField/refreshTaskField.ts b/shared/domain/activityField/refreshTaskField.ts index c55d1b87e..9e9699f80 100644 --- a/shared/domain/activityField/refreshTaskField.ts +++ b/shared/domain/activityField/refreshTaskField.ts @@ -112,7 +112,7 @@ export class RefreshTaskData extends ActivityBase { // this.nextRefreshTime = this.endTime; let dataObj = JSON.parse(data); this.name = dataObj.name; - this.interval = dataObj.interval; + this.interval = dataObj.interval * 864000; this.consumePoint = dataObj.consumePoint; this.reward = dataObj.reward; this.addPointActivityId = dataObj.addPointActivityId ? dataObj.addPointActivityId : 0; diff --git a/shared/resource/jsons/dic_zyz_activityType.json b/shared/resource/jsons/dic_zyz_activityType.json index cd8ddc321..7a373a143 100644 --- a/shared/resource/jsons/dic_zyz_activityType.json +++ b/shared/resource/jsons/dic_zyz_activityType.json @@ -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, "activityType": 4, @@ -167,12 +149,6 @@ "name": "FOURTEEN_DAY", "string": "十四天乐活动" }, - { - "id": 29, - "activityType": 29, - "name": "COMMON_SEVEN_DAY", - "string": "通用七天乐活动" - }, { "id": 30, "activityType": 30, diff --git a/shared/resource/jsons/server_const.json b/shared/resource/jsons/server_const.json index 05ee2e3db..5ed444f48 100644 --- a/shared/resource/jsons/server_const.json +++ b/shared/resource/jsons/server_const.json @@ -1,7 +1,6 @@ { "API_IS_CLOSE": 1, "CLOSE_APIS": [ - "order.orderHandler.applyOrder" ], "CLOSE_LOGIN": 0, "CLOSE_LOGIN_WHEN_ONLINE_MAX": 1,