后台:修改更新活动

This commit is contained in:
luying
2022-07-30 17:21:31 +08:00
parent f38c8b0fc8
commit 347c2ce7ed
10 changed files with 207 additions and 185 deletions

View File

@@ -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
}
}

View File

@@ -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);

View File

@@ -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
}
}