活动:修改活动的时候改变内存
This commit is contained in:
@@ -17,6 +17,8 @@ import { MaintenanceModel } from '../../../db/Maintenance';
|
||||
import { initMaintenance, stopMaintenance } from '../../../services/gmService';
|
||||
import { checkActivityEditable, checkActivityGroupType } from '../../../services/activity/activityService';
|
||||
import { ActivityModel } from '../../../db/Activity';
|
||||
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
||||
import { ActivityGroupTypeModel } from '../../../db/ActivityGroupType';
|
||||
export default function (app: Application) {
|
||||
return new GmHandler(app);
|
||||
}
|
||||
@@ -261,4 +263,81 @@ export class GmHandler {
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
async saveGroupToServer(msg: { groupId: number, serverIds: number[] }, session: BackendSession) {
|
||||
const { groupId, serverIds } = msg;
|
||||
const uid = session.get('uid');
|
||||
|
||||
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 activityServers = pinus.app.getServersByType('activity');
|
||||
for(let server of activityServers) {
|
||||
pinus.app.rpc.activity.activityRemote.saveGroupToServer.toServer(server.id, groupId, serverIds);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择活动组内的活动
|
||||
*/
|
||||
async saveActivitiesToGroup(msg: { groupId: number, activities: number[] }, session: BackendSession) {
|
||||
const { groupId, activities: activityIds } = msg;
|
||||
const uid = session.get('uid');
|
||||
|
||||
let activities = await ActivityModel.findActivityByIds(activityIds);
|
||||
let checkResult = await checkActivityGroupType(groupId, 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 checkActivityGroupType(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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user