后台:修改更新活动
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 } });
|
||||
|
||||
@@ -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":
|
||||
|
||||
Reference in New Issue
Block a user