diff --git a/game-server/app/servers/gm/handler/gmHandler.ts b/game-server/app/servers/gm/handler/gmHandler.ts index 5be4e34b9..e74dc21bd 100644 --- a/game-server/app/servers/gm/handler/gmHandler.ts +++ b/game-server/app/servers/gm/handler/gmHandler.ts @@ -2,14 +2,10 @@ import { Application, BackendSession, pinus } from 'pinus'; import { getRandSingleEelm, resResult } from '../../../pubUtils/util'; import { STATUS } from '../../../consts/statusCode'; import { GMMailModel, GMMailType } from '../../../db/GMMail'; -import { delGuildActivityRank } from '../../../services/redisService'; import { ACTIVITY_TYPE, GM_MAIL_STATUS, GM_MAIL_TYPE, MAIL_TIME_TYPE, PUSH_ROUTE, SURVEY_SELECT } from '../../../consts'; -import { checkActivityEditable, checkActivityGroupType, checkActivityGroupTypeWithId } from '../../../services/activity/activityService'; import { ActivityModel } from '../../../db/Activity'; import { ActivityGroupModel } from '../../../db/ActivityGroup'; import { ActivityGroupTypeModel } from '../../../db/ActivityGroupType'; -import { GuildActivityCityModel } from '../../../db/GuildActivityCity'; -import { GuildActivityRecordModel } from '../../../db/GuildActivityRec'; import { getTimeFunM, nowSeconds } from '../../../pubUtils/timeUtil'; import moment = require('moment'); import { sendUngotDividend } from '../../../services/auctionService'; @@ -20,7 +16,6 @@ import { SurveyModel, SurveyUpdate } from '../../../db/Survery'; import { getSurvey } from '../../../services/gmService'; import { sendMessageToAllWithSuc } from '../../../services/pushService'; import { sendMailByContent, sendMailsByGmMail } from '../../../services/mailService'; -import { GuildActivityCityDeclareModel } from '../../../db/GuildActivityCityDeclare'; let timer: NodeJS.Timer; export default function (app: Application) { return new GmHandler(app); @@ -122,35 +117,17 @@ 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, 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); - } - let aids: number[] = []; - if (typeof activityId == 'number') { - aids.push(activityId); - } else { - activityId.split(',').forEach(aidStr => { - aids.push(parseInt(aidStr)); - }); - } + async updateActivity(msg: { aids: number[] }, session: BackendSession) { + let { aids }= msg; + let activities = await ActivityModel.findActivityByIds(aids); - // let checkTimeResult = await checkActivityEditable(activities); - // if(!checkTimeResult) return resResult(STATUS.GM_CAN_NOT_EDIT_ACT); - 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, effectDay, uid); - - let activityServers = pinus.app.getServersByType('activity'); for(let server of activityServers) { pinus.app.rpc.activity.activityRemote.updateActivities.toServer(server.id, activities.map(activity => new ActivityInRemote(activity))); } - if(type == ACTIVITY_TYPE.TIME_LIMIT_RANK) { - pinus.app.rpc.systimer.systimerRemote.updateTimeLimitRank.broadcast(activities); + let timeLimitRanks = activities.filter(cur => cur.type == ACTIVITY_TYPE.TIME_LIMIT_RANK); + if(timeLimitRanks.length > 0) { + pinus.app.rpc.systimer.systimerRemote.updateTimeLimitRank.broadcast(timeLimitRanks); } return resResult(STATUS.SUCCESS, { @@ -158,31 +135,8 @@ export class GmHandler { }); } - 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, isEnable, uid); - - let activityServers = pinus.app.getServersByType('activity'); - for(let server of activityServers) { - pinus.app.rpc.activity.activityRemote.updateActivities.toServer(server.id, [new ActivityInRemote(activity)]); - } - - return resResult(STATUS.SUCCESS, { activity }); - } - async deleteActivity(msg: { activityId: number}, session: BackendSession) { const { activityId } = msg; - const uid = session.get('uid'); - - const result = await ActivityModel.deleteActivity(activityId, uid); - if (!result) { - return resResult(STATUS.ACTIVITY_MISSING); - } - await ActivityGroupModel.pullByActivityIds([activityId]); let activityServers = pinus.app.getServersByType('activity'); for(let server of activityServers) { pinus.app.rpc.activity.activityRemote.deleteActivities.toServer(server.id, [activityId]); @@ -191,97 +145,17 @@ export class GmHandler { return resResult(STATUS.SUCCESS); } - async updateActivityGroup(msg: { groupId: number, groupName: string, serverIds: number[], activities: number[], type: number }, session: BackendSession) { + async updateActivityGroup(msg: { groupId: number, serverIds: number[], activityIds: number[] }, session: BackendSession) { const uid = session.get('uid'); - let { groupId, groupName, serverIds, activities, type } = msg; - let groupTypeObj = await ActivityGroupTypeModel.findByGroupType(type); - if(!groupTypeObj) return resResult(STATUS.GM_ACTIVITY_GROUP_TYPE_NOT_FOUND); - - { - let result = await this.saveActivitiesToGroup(groupId, type, activities, uid); - if(result.code != 0) return result; - } - { - let result = await this.saveGroupToServer(groupId, serverIds, uid); - if(result.code != 0) return result; - } - await ActivityGroupModel.updateGroup(groupId, {groupName, type}, uid); - return resResult(STATUS.SUCCESS); - } - - async saveGroupToServer(groupId: number, serverIds: number[], uid: number) { - - // await ServerlistModel.pullByGroupId(groupId); - // let servers = await ServerlistModel.findServerByIds(serverIds); - // for(let server of servers) { - // let pushArr: number[] = [], pullArr: number[] = []; - // let activityGroupId = server.activityGroupId||[]; - // if(!activityGroupId.includes(groupId)) { - // pushArr.push(groupId); - // } - // await ServerlistModel.updateActivityGroup(server._id, pushArr, pullArr); - // } - await ActivityGroupModel.updateServerData(groupId, serverIds, uid); - + let { groupId, serverIds, activityIds } = msg; let activityServers = pinus.app.getServersByType('activity'); for(let server of activityServers) { + pinus.app.rpc.activity.activityRemote.saveActivitiesToGroup.toServer(server.id, groupId, activityIds); pinus.app.rpc.activity.activityRemote.saveGroupToServer.toServer(server.id, groupId, serverIds); } - return resResult(STATUS.SUCCESS); } - /** - * 选择活动组内的活动 - */ - async saveActivitiesToGroup(groupId: number, groupType: number, activityIds: number[], uid: number) { - - let activities = await ActivityModel.findActivityByIds(activityIds); - let checkResult = await checkActivityGroupType(groupType, activities); - if(!checkResult) return resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE); - - await ActivityGroupModel.setActivitiesToGroupData(groupId, activityIds, uid); - - let activityServers = pinus.app.getServersByType('activity'); - for(let server of activityServers) { - pinus.app.rpc.activity.activityRemote.saveActivitiesToGroup.toServer(server.id, groupId, activityIds); - } - return resResult(STATUS.SUCCESS); - } - - async saveSingleActivityToGroup(msg: { groupId: number, index: number, activityId: number }, session: BackendSession) { - const { groupId, index, activityId } = msg; - const uid = session.get('uid'); - - let activity = await ActivityModel.findActivity(activityId); - if(!activity) return resResult(STATUS.ACTIVITY_MISSING); - let checkResult = await checkActivityGroupTypeWithId(groupId, [activity]); - if(checkResult) return checkResult; - - let activityGroup = await ActivityGroupModel.findGroupData(groupId); - if(!activityGroup) return resResult(STATUS.GM_ACTIVITY_GROUP_NOT_FOUND); - - if(activityGroup.type != 0) { - let activityGroupType = await ActivityGroupTypeModel.findByGroupType(activityGroup.type); - if(!activityGroupType) return resResult(STATUS.GM_ACTIVITY_GROUP_TYPE_NOT_FOUND); - let dic = activityGroupType.activityTypes; - let curDic = dic.find(cur => cur.index == index); - // console.log(dic, curDic) - if(curDic.activityType != activity.type) return resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE) - } - - let activityIds = activityGroup.activities||[]; - if(activityIds.indexOf(activityId) == -1) activityIds.push(activityId); - - await ActivityGroupModel.setActivitiesToGroupData(groupId, activityIds, uid); - - let activityServers = pinus.app.getServersByType('activity'); - for(let server of activityServers) { - pinus.app.rpc.activity.activityRemote.saveActivitiesToGroup.toServer(server.id, groupId, activityIds); - } - return resResult(STATUS.SUCCESS) - } - /** * 开启军团活动到拍卖行debug * @param msg diff --git a/game-server/app/services/activity/activityService.ts b/game-server/app/services/activity/activityService.ts index d2c8a3fc6..c654d890b 100644 --- a/game-server/app/services/activity/activityService.ts +++ b/game-server/app/services/activity/activityService.ts @@ -44,6 +44,7 @@ import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from '../pushServ import { UserOrderModelType } from '../../db/UserOrder'; import { isArray } from 'underscore'; import { getGuideGachaData } from './gachaService'; +import { getPopNoticeData } from './popNoticeService'; /** * 获取活动数据 @@ -222,6 +223,11 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s } case ACTIVITY_TYPE.SHOP: break + case ACTIVITY_TYPE.POP_NOTICE: + { + activityData = await getPopNoticeData(serverId, activityId, roleId); + break + } default: { console.log('未知活动类型.........', activityType) break; @@ -358,35 +364,6 @@ export async function checkActivityEditable(activities: ActivityModelType[]) { return true; } - -export async function checkActivityGroupTypeWithId(groupId: number, activities: ActivityModelType[]) { - - let activityGroup = await ActivityGroupModel.findGroupData(groupId); - if(!activityGroup) return false; - if(activityGroup.type != 0) { - return await checkActivityGroupType(activityGroup.type, activities); - } - - return true -} - - -export async function checkActivityGroupType(groupType: number, activities: ActivityModelType[]) { - if(groupType != 0) { - let activityGroupType = await ActivityGroupTypeModel.findByGroupType(groupType); - if(!activityGroupType) return false; - let dic = activityGroupType.activityTypes; - for(let { type } of activities) { - let index = dic.findIndex(cur => cur.activityType == type); - if(index == -1) { - return false; - } - } - } - - return true -} - /** * 达成任务可活动活动积分 * @param type 任务类型,主线、每日、成就 @@ -401,7 +378,6 @@ export async function addActvityTaskPoint(type: number, id: number, session: Bac let activityTaskPoint = await ActivityTaskPointModel.findData(type, id); let result: pushActivityInter[] = []; for (let { activityId, activityType, point } of activityTaskPoint) { - console.log('##### activityTaskPoint:', activityId, activityType, point) if(activityType == ACTIVITY_TYPE.NEW_HERO_GIFTS) { // 新武将活动 let totalPoint = await newHeroGiftPoint(serverId, activityId, roleId, point); result.push({ activityId, activityType, param: { totalPoint } }); diff --git a/game-server/app/services/checkParam.ts b/game-server/app/services/checkParam.ts index 3d21d3699..92d23de9e 100644 --- a/game-server/app/services/checkParam.ts +++ b/game-server/app/services/checkParam.ts @@ -858,10 +858,10 @@ export function checkRouteParam(route: string, msg: any) { } case "gm.gmHandler.updateActivityGroup": { - let { groupId, groupName, serverIds, activities, type } = msg; - if(!checkNaturalNumbers(groupId, type)) return false; + let { groupId, groupName, serverIds, activityIds, groupType } = msg; + if(!checkNaturalNumbers(groupId, groupType)) return false; if(!checkNaturalStrings(groupName)) return false; - if(!checkNumberArray(serverIds, activities)) return false; + if(!checkNumberArray(serverIds, activityIds)) return false; break; } case "gm.gmHandler.saveSingleActivityToGroup": diff --git a/gm-server/app/controller/activity.ts b/gm-server/app/controller/activity.ts index b82ff46e9..5452c73a8 100644 --- a/gm-server/app/controller/activity.ts +++ b/gm-server/app/controller/activity.ts @@ -1,3 +1,4 @@ +import { UpdateActivityParam } from '@domain/backEndField/params'; import { Controller } from 'egg'; export default class ActivityController extends Controller { @@ -100,4 +101,32 @@ export default class ActivityController extends Controller { return } + public async updateActivity() { + const { ctx } = this; + const obj = ctx.request.body; + let param = new UpdateActivityParam(obj); + ctx.body = await ctx.service.activity.updateActivity(param); + return + } + + public async switchActivity() { + const { ctx } = this; + const { activityId, isEnable } = ctx.request.body; + ctx.body = await ctx.service.activity.switchActivity(activityId, isEnable); + return + } + + public async deleteActivity() { + const { ctx } = this; + const { activityId } = ctx.request.body; + ctx.body = await ctx.service.activity.deleteActivity(activityId); + return + } + + public async updateActivityGroup() { + const { ctx } = this; + const { groupId, groupName, serverIds, activityIds, groupType } = ctx.request.body; + ctx.body = await ctx.service.activity.updateActivityGroup(groupId, groupName, serverIds, activityIds, groupType); + return + } } diff --git a/gm-server/app/router.ts b/gm-server/app/router.ts index c6e1466c0..da99b2098 100644 --- a/gm-server/app/router.ts +++ b/gm-server/app/router.ts @@ -72,6 +72,10 @@ export default (app: Application) => { router.post('/api/activity/getallactivities', tokenParser, controller.activity.getAllActivities); router.post('/api/activity/getactivitygrouplist', tokenParser, controller.activity.getActivityGroupList); router.post('/api/activity/getallactivitygroups', tokenParser, controller.activity.getAllActivityGroups); + router.post('/api/activity/updateactivity', controller.activity.updateActivity); + router.post('/api/activity/switchactivity', controller.activity.switchActivity); + router.post('/api/activity/deleteactivity', controller.activity.deleteActivity); + router.post('/api/activity/updategroup', controller.activity.updateActivityGroup); router.post('/api/activity/creategroup', tokenParser, controller.activity.createGroup); router.post('/api/activity/deletegroup', tokenParser, controller.activity.deleteGroup); router.post('/api/activity/getactivitygrouptypelist', tokenParser, controller.activity.getActivityGroupTypeList); diff --git a/gm-server/app/service/Activity.ts b/gm-server/app/service/Activity.ts index b5fd4b87c..ffb6f8c1f 100644 --- a/gm-server/app/service/Activity.ts +++ b/gm-server/app/service/Activity.ts @@ -1,11 +1,12 @@ import { Service } from 'egg'; import { STATUS, ACTIVITY_TYPE } from '@consts'; -import { ActivityModel } from '@db/Activity'; +import { ActivityModel, ActivityModelType } from '@db/Activity'; import { ActivityGroupModel } from '@db/ActivityGroup'; import { SignInData } from '@domain/activityField/signInField'; import { ActivityGroupTypeModel } from '@db/ActivityGroupType'; import { ActivityTaskPointModel } from '@db/ActivityTaskPoint'; import { gameData } from '@pubUtils/data'; +import { UpdateActivityParam } from '@domain/backEndField/params'; /** * Test Service @@ -129,7 +130,7 @@ export default class Activity extends Service { }); } - public async updateActivityGroupType(groupType: number|string, groupTypeName: string, activityTypes: number[]) { + public async updateActivityGroupType(groupType: number|string, groupTypeName: string, activityTypes: number[] = []) { const { ctx } = this; let result; if(groupType == 'new') { @@ -189,4 +190,83 @@ export default class Activity extends Service { await ActivityTaskPointModel.deleteData(taskType, taskId, activityId); return ctx.service.utils.resResult(STATUS.SUCCESS); } + + public async updateActivity(data: UpdateActivityParam) { + const { ctx } = this; + + if(!data.checkParams()) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + let activities = await ActivityModel.findActivityByIds(data.activityIds); + // let checkTimeResult = await checkActivityEditable(activities); + // if(!checkTimeResult) return resResult(STATUS.GM_CAN_NOT_EDIT_ACT); + let checkGroup = await this.checkActivityGroupTypeWithId(data.groupId, activities); + if(!checkGroup) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE); + + activities = await ActivityModel.updateActivity(data.activityIds, data, ctx.user?.uid); + return ctx.service.utils.resResult(STATUS.SUCCESS, { aids: activities.map(cur => cur.activityId) }); + } + + public async switchActivity(aid: number, isEnable: boolean) { + const { ctx } = this; + + let activity = await ActivityModel.findActivity(aid); + if(!activity) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + activity = await ActivityModel.setEnable(aid, isEnable, ctx.user?.uid); + return ctx.service.utils.resResult(STATUS.SUCCESS, { aids: [activity.activityId]}); + } + + public async deleteActivity(aid: number) { + const { ctx } = this; + + const result = await ActivityModel.deleteActivity(aid, ctx.user?.uid); + if (!result) { + return ctx.service.utils.resResult(STATUS.ACTIVITY_MISSING); + } + await ActivityGroupModel.pullByActivityIds([aid]); + + return ctx.service.utils.resResult(STATUS.SUCCESS); + } + + public async updateActivityGroup(groupId: number, groupName: string, serverIds: number[], activityIds: number[], groupType: number) { + const { ctx } = this; + + let groupTypeObj = await ActivityGroupTypeModel.findByGroupType(groupType); + if(!groupTypeObj) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_TYPE_NOT_FOUND); + + let activities = await ActivityModel.findActivityByIds(activityIds); + let checkResult = await this.checkActivityGroupType(groupType, activities); + if(!checkResult) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE); + + await ActivityGroupModel.setActivitiesToGroupData(groupId, activityIds, ctx.user?.uid); + await ActivityGroupModel.updateServerData(groupId, serverIds, ctx.user?.uid); + await ActivityGroupModel.updateGroup(groupId, {groupName, type: groupType}, ctx.user?.uid); + return ctx.service.utils.resResult(STATUS.SUCCESS); + } + + private async checkActivityGroupTypeWithId(groupId: number, activities: ActivityModelType[]) { + + let activityGroup = await ActivityGroupModel.findGroupData(groupId); + if(!activityGroup) return false; + if(activityGroup.type != 0) { + return await this.checkActivityGroupType(activityGroup.type, activities); + } + + return true + } + + private async checkActivityGroupType(groupType: number, activities: ActivityModelType[]) { + if(groupType != 0) { + let activityGroupType = await ActivityGroupTypeModel.findByGroupType(groupType); + if(!activityGroupType) return false; + let dic = activityGroupType.activityTypes; + for(let { type } of activities) { + let index = dic.findIndex(cur => cur.activityType == type); + if(index == -1) { + return false; + } + } + } + + return true + } } diff --git a/shared/db/Activity.ts b/shared/db/Activity.ts index 8e76b4493..63acdac22 100644 --- a/shared/db/Activity.ts +++ b/shared/db/Activity.ts @@ -1,8 +1,9 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, ReturnModelType, mongoose } from '@typegoose/typegoose'; -import { CounterModel } from './Counter'; +import { CounterAllModal } from './CounterAll'; import { COUNTER } from '../consts'; import { ActivityGroupModel } from './ActivityGroup'; +import { UpdateActivityParam } from '../domain/backEndField/params'; /** * 活动系统 @@ -90,25 +91,25 @@ 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, effectDay: number, uid = 1) { + public static async updateActivity(aids: number[], param: UpdateActivityParam, uid = 1) { let result: ActivityModelType[] = []; let newAids = []; for (let activityId of aids) { - if (!activityId) activityId = await CounterModel.getNewCounter(COUNTER.ACTIVITY); + if (!activityId) activityId = await CounterAllModal.getNewCounter(COUNTER.ACTIVITY); newAids.push(activityId); - let update = { type, data, timeType, days, delayDay, interval, groupId, name, hideDayByServer, effectDay } - if (beginTime != undefined) { - update["beginTime"] = beginTime; + if (!param.beginTime) { + delete param["beginTime"]; } - if (endTime != undefined) { - update["endTime"] = endTime; + if (!param.endTime) { + delete param["endTime"]; } - let rec: ActivityModelType = await ActivityModel.findOneAndUpdate({ activityId }, { $set: { ...update, updatedBy: uid }, $setOnInsert: { isEnable: true, createdBy: uid } }, + let rec: ActivityModelType = await ActivityModel.findOneAndUpdate({ activityId }, { $set: { ...param, updatedBy: uid }, $setOnInsert: { isEnable: true, createdBy: uid } }, { new: true, upsert: true }).lean(true); result.push(rec); } - if (groupId != undefined) { - if (groupId == 0) { + if (param.groupId != undefined) { + let groupId = param.groupId; + if (param.groupId == 0) { let newGroup = await ActivityGroupModel.createGroup(uid); groupId = newGroup.groupId; } diff --git a/shared/db/ActivityGroup.ts b/shared/db/ActivityGroup.ts index 28489650a..91f54b944 100644 --- a/shared/db/ActivityGroup.ts +++ b/shared/db/ActivityGroup.ts @@ -1,6 +1,6 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, ReturnModelType, mongoose } from '@typegoose/typegoose'; -import { CounterModel } from './Counter'; +import { CounterAllModal } from './CounterAll'; import { COUNTER } from '../consts'; import { ActivityModel } from './Activity'; @@ -28,7 +28,7 @@ export default class Activity_Group extends BaseModel { //查询组 public static async createGroup(uid = 1) { - let groupId = await CounterModel.getNewCounter(COUNTER.ACTIVITY_GROUP); + let groupId = await CounterAllModal.getNewCounter(COUNTER.ACTIVITY_GROUP); let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId }, { $setOnInsert: { groupName: `活动组${groupId}`, activities: [], serverIds: [], createdBy: uid, type: 0 }, $set: { updatedBy: uid } diff --git a/shared/db/ActivityGroupType.ts b/shared/db/ActivityGroupType.ts index 029ccbcfc..6c6962961 100644 --- a/shared/db/ActivityGroupType.ts +++ b/shared/db/ActivityGroupType.ts @@ -1,6 +1,6 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, ReturnModelType, mongoose } from '@typegoose/typegoose'; -import { CounterModel } from './Counter'; +import { CounterAllModal } from './CounterAll'; import { COUNTER, ACTIVITY_TYPE } from '../consts'; /** @@ -42,7 +42,7 @@ export default class Activity_GroupType extends BaseModel { let activityTypes = types.map((value, index) => { return { index: index + 1, activityType: value }; }); - let groupType = await CounterModel.getNewCounter(COUNTER.ACTIVITY_GROUP_TYPE); + let groupType = await CounterAllModal.getNewCounter(COUNTER.ACTIVITY_GROUP_TYPE); let result: ActivityGroupTypeInter = await ActivityGroupTypeModel.findOneAndUpdate({ groupType }, { $setOnInsert: { groupTypeName, activityTypes, createdBy: uid }, $set: { updatedBy: uid } diff --git a/shared/domain/backEndField/params.ts b/shared/domain/backEndField/params.ts index c1ccf3006..4a2f5d49e 100644 --- a/shared/domain/backEndField/params.ts +++ b/shared/domain/backEndField/params.ts @@ -4,6 +4,7 @@ import ServerStategy, { GMMail } from "../../db/ServerStategy"; import { RegionType } from "../../db/Region"; import { RewardInter } from "../../pubUtils/interface"; import { isTimestamp } from '../../pubUtils/util'; +import { isDate } from "util"; export class UpdateMailParams { hasGoods: boolean = false; // 是否有道具 @@ -336,4 +337,61 @@ export class SetHeroParam { if(this.colorStar && !isNumber(this.colorStar)) return false; return true; } +} + + +export class UpdateActivityParam { + activityIds: number[] = []; + groupId: number = 0; + beginTime: Date; + endTime: Date; + type: number = 0; + data: string = ''; + timeType: number = 0; + days: number = 0; + delayDay: number = 0; + interval: number = 0; + name: string = ''; + hideDayByServer: number = 0; + effectDay: number = 0; + + constructor(obj?: any) { + if(!obj) return; + if (typeof obj.activityId == 'number') { + this.activityIds.push(obj.activityId); + } else if (typeof obj.activityId == 'string'){ + obj.activityId.split(',').forEach(aidStr => { + this.activityIds.push(parseInt(aidStr)); + }); + } + this.groupId = obj.groupId; + if(obj.beginTime) this.beginTime = new Date(obj.beginTime); + if(obj.endTime) this.endTime = new Date(obj.endTime); + this.type = obj.type; + this.data = obj.data; + this.timeType = obj.timeType; + this.days = obj.days; + this.delayDay = obj.delayDay; + this.interval = obj.interval; + this.name = obj.name; + this.hideDayByServer = obj.hideDayByServer; + this.effectDay = obj.effectDay; + } + + checkParams() { + if(this.activityIds && this.activityIds.length && this.activityIds.find(activityId => !isNumber(activityId))) return false; + if(this.groupId && !isNumber(this.groupId)) return false; + if(this.beginTime && !isDate(this.beginTime)) return false; + if(this.endTime && !isDate(this.endTime)) return false; + if(this.type && !isNumber(this.type)) return false; + if(this.data && !isString(this.data)) return false; + if(this.timeType && !isNumber(this.timeType)) return false; + if(this.days && !isNumber(this.days)) return false; + if(this.delayDay && !isNumber(this.delayDay)) return false; + if(this.interval && !isNumber(this.interval)) return false; + if(this.name && !isString(this.name)) return false; + if(this.hideDayByServer && !isNumber(this.hideDayByServer)) return false; + if(this.effectDay && !isNumber(this.effectDay)) return false; + return true; + } } \ No newline at end of file