活动:后台修改

This commit is contained in:
luying
2021-09-13 09:51:57 +08:00
parent d3f743ab4e
commit 7d2e4de3a8
3 changed files with 162 additions and 9 deletions
@@ -15,6 +15,8 @@ import { ServerlistModel } from '../../../db/Serverlist';
import { getWorldChannelSid } from '../../../services/chatService';
import { MaintenanceModel } from '../../../db/Maintenance';
import { initMaintenance, stopMaintenance } from '../../../services/gmService';
import { checkActivityEditable, checkActivityGroupType } from '../../../services/activity/activityService';
import { ActivityModel } from '../../../db/Activity';
export default function (app: Application) {
return new GmHandler(app);
}
@@ -214,4 +216,52 @@ export class GmHandler {
}
return resResult(STATUS.SUCCESS);
}
async updateActivity(msg: { activityId: number|string, groupId: number, beginTime: number, endTime: number, type: number, data: string }, session: BackendSession) {
const { activityId, groupId, beginTime, endTime, type, data } = 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));
});
}
let activities = await ActivityModel.findActivityByIds(aids);
let checkTimeResult = await checkActivityEditable(activities);
if(!checkTimeResult) return resResult(STATUS.GM_CAN_NOT_EDIT_ACT);
let checkGroup = await checkActivityGroupType(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, uid);
let activityServers = pinus.app.getServersByType('activity');
for(let server of activityServers) {
pinus.app.rpc.activity.activityRemote.updateActivities.toServer(server.id, activities);
}
return resResult(STATUS.SUCCESS, {
activity: activities
});
}
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);
}
let activityServers = pinus.app.getServersByType('activity');
for(let server of activityServers) {
pinus.app.rpc.activity.activityRemote.deleteActivities.toServer(server.id, [activityId]);
}
return resResult(STATUS.SUCCESS);
}
}