后台:从活动组选择活动
This commit is contained in:
@@ -61,6 +61,13 @@ export default class ActivityController extends Controller {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getGroupDataById() {
|
||||||
|
const { ctx } = this;
|
||||||
|
const { groupId } = ctx.request.body;
|
||||||
|
ctx.body = await ctx.service.activity.getGroupDataById(groupId);
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
public async updateActivityGroupName() {
|
public async updateActivityGroupName() {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
const { groupId, groupName } = ctx.request.body;
|
const { groupId, groupName } = ctx.request.body;
|
||||||
@@ -75,6 +82,13 @@ export default class ActivityController extends Controller {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async saveSingleActivityToGroup() {
|
||||||
|
const { ctx } = this;
|
||||||
|
const { groupId, index, activityId } = ctx.request.body;
|
||||||
|
ctx.body = await ctx.service.activity.saveSingleActivityToGroup(groupId, index, activityId);
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
public async saveGroupToServer() {
|
public async saveGroupToServer() {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
const { groupId, serverIds } = ctx.request.body;
|
const { groupId, serverIds } = ctx.request.body;
|
||||||
|
|||||||
@@ -61,8 +61,9 @@ export default (app: Application) => {
|
|||||||
router.post('/api/activity/updateactivity', tokenParser, controller.activity.updateActivity);
|
router.post('/api/activity/updateactivity', tokenParser, controller.activity.updateActivity);
|
||||||
router.post('/api/activity/deleteactivity', tokenParser, controller.activity.deleteActivity);
|
router.post('/api/activity/deleteactivity', tokenParser, controller.activity.deleteActivity);
|
||||||
router.post('/api/activity/getactivitygrouplist', tokenParser, controller.activity.getActivityGroupList);
|
router.post('/api/activity/getactivitygrouplist', tokenParser, controller.activity.getActivityGroupList);
|
||||||
router.post('/api/activity/updateactivitygroupname', tokenParser, controller.activity.updateActivityGroupName);
|
router.post('/api/activity/updateactivitygroupname', controller.activity.updateActivityGroupName);
|
||||||
router.post('/api/activity/saveactivitiestogroup', tokenParser, controller.activity.saveActivitiesToGroup);
|
router.post('/api/activity/saveactivitiestogroup', tokenParser, controller.activity.saveActivitiesToGroup);
|
||||||
|
router.post('/api/activity/savesingleactivitytogroup', controller.activity.saveSingleActivityToGroup);
|
||||||
router.post('/api/activity/savegrouptoserver', tokenParser, controller.activity.saveGroupToServer);
|
router.post('/api/activity/savegrouptoserver', tokenParser, controller.activity.saveGroupToServer);
|
||||||
router.post('/api/activity/creategroup', tokenParser, controller.activity.createGroup);
|
router.post('/api/activity/creategroup', tokenParser, controller.activity.createGroup);
|
||||||
router.post('/api/activity/deletegroup', tokenParser, controller.activity.deleteGroup);
|
router.post('/api/activity/deletegroup', tokenParser, controller.activity.deleteGroup);
|
||||||
@@ -70,4 +71,5 @@ export default (app: Application) => {
|
|||||||
router.post('/api/activity/saveactivitygrouptypelist', controller.activity.updateActivityGroupType);
|
router.post('/api/activity/saveactivitygrouptypelist', controller.activity.updateActivityGroupType);
|
||||||
router.post('/api/activity/deleteactivitygrouptype', controller.activity.deleteActivityGroupType);
|
router.post('/api/activity/deleteactivitygrouptype', controller.activity.deleteActivityGroupType);
|
||||||
router.post('/api/activity/saveactivitygrouptype', controller.activity.saveGroupTypeToActivityGroup);
|
router.post('/api/activity/saveactivitygrouptype', controller.activity.saveGroupTypeToActivityGroup);
|
||||||
|
router.post('/api/activity/getgroupdatabyid', controller.activity.getGroupDataById);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -50,6 +50,28 @@ export default class Activity extends Service {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async checkActivityGroupType(groupId: number, aids: number[], ctx) {
|
||||||
|
|
||||||
|
let activityGroup = await ActivityGroupModel.findGroupData(groupId);
|
||||||
|
if(!activityGroup) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_NOT_FOUND);
|
||||||
|
if(activityGroup.type != 0) {
|
||||||
|
let activityGroupType = await ActivityGroupTypeModel.findByGroupType(activityGroup.type);
|
||||||
|
if(!activityGroupType) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_TYPE_NOT_FOUND);
|
||||||
|
let dic = activityGroupType.activityTypes;
|
||||||
|
let activities = await ActivityModel.findActivityByIds(aids);
|
||||||
|
for(let { type } of activities) {
|
||||||
|
let index = dic.findIndex(cur => cur.activityType == type);
|
||||||
|
if(index == -1) {
|
||||||
|
return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE);
|
||||||
|
} else {
|
||||||
|
dic.splice(index, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
public async updateActivity(activityId: number | string, groupId: number, beginTime: number, endTime: number, type: number, data: string) {
|
public async updateActivity(activityId: number | string, groupId: number, beginTime: number, endTime: number, type: number, data: string) {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
let gmuser: GMUserType = ctx.user;
|
let gmuser: GMUserType = ctx.user;
|
||||||
@@ -68,7 +90,10 @@ export default class Activity extends Service {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const activities = await ActivityModel.addActivity(aids, groupId, beginTime ? new Date(beginTime) : undefined, endTime ? new Date(endTime) : undefined, type, data, gmuser.uid);
|
let checkResult = await this.checkActivityGroupType(groupId, aids, ctx);
|
||||||
|
if(checkResult) return checkResult;
|
||||||
|
|
||||||
|
let activities = await ActivityModel.addActivity(aids, groupId, beginTime ? new Date(beginTime) : undefined, endTime ? new Date(endTime) : undefined, type, data, gmuser.uid);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||||
activity: activities
|
activity: activities
|
||||||
})
|
})
|
||||||
@@ -124,23 +149,44 @@ export default class Activity extends Service {
|
|||||||
public async saveActivitiesToGroup(groupId: number, activityIds: number[]) {
|
public async saveActivitiesToGroup(groupId: number, activityIds: number[]) {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
try {
|
try {
|
||||||
|
let checkResult = await this.checkActivityGroupType(groupId, activityIds, ctx);
|
||||||
|
if(checkResult) return checkResult;
|
||||||
|
|
||||||
|
await ActivityGroupModel.setActivitiesToGroupData(groupId, activityIds, ctx.user?.uid);
|
||||||
|
|
||||||
|
} catch(e) {
|
||||||
|
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, null, e.stack);
|
||||||
|
}
|
||||||
|
return ctx.service.utils.resResult(STATUS.SUCCESS)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 选择活动组内的活动
|
||||||
|
*/
|
||||||
|
public async saveSingleActivityToGroup(groupId: number, index: number, activityId: number) {
|
||||||
|
console.log(groupId, index, activityId);
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
let checkResult = await this.checkActivityGroupType(groupId, [activityId], ctx);
|
||||||
|
if(checkResult) return checkResult;
|
||||||
|
|
||||||
let activityGroup = await ActivityGroupModel.findGroupData(groupId);
|
let activityGroup = await ActivityGroupModel.findGroupData(groupId);
|
||||||
if(!activityGroup) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_NOT_FOUND);
|
if(!activityGroup) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_NOT_FOUND);
|
||||||
|
let activity = await ActivityModel.findActivity(activityId);
|
||||||
|
if(!activity) return ctx.service.utils.resResult(STATUS.ACTIVITY_MISSING);
|
||||||
|
|
||||||
if(activityGroup.type != 0) {
|
if(activityGroup.type != 0) {
|
||||||
let activityGroupType = await ActivityGroupTypeModel.findByGroupType(activityGroup.type);
|
let activityGroupType = await ActivityGroupTypeModel.findByGroupType(activityGroup.type);
|
||||||
if(!activityGroupType) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_TYPE_NOT_FOUND);
|
if(!activityGroupType) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_TYPE_NOT_FOUND);
|
||||||
let dic = activityGroupType.activityTypes;
|
let dic = activityGroupType.activityTypes;
|
||||||
let activities = await ActivityModel.findActivityByIds(activityIds);
|
let curDic = dic.find(cur => cur.index == index);
|
||||||
for(let { type } of activities) {
|
console.log(dic, curDic)
|
||||||
let index = dic.findIndex(cur => cur.activityType == type);
|
if(curDic.activityType != activity.type) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE)
|
||||||
if(index == -1) {
|
|
||||||
return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_NOT_FIT_GROUP_TYPE);
|
|
||||||
} else {
|
|
||||||
dic.splice(index, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let activityIds = activityGroup.activities||[];
|
||||||
|
if(activityIds.indexOf(activityId) == -1) activityIds.push(activityId);
|
||||||
|
|
||||||
await ActivityGroupModel.setActivitiesToGroupData(groupId, activityIds, ctx.user?.uid);
|
await ActivityGroupModel.setActivitiesToGroupData(groupId, activityIds, ctx.user?.uid);
|
||||||
|
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@@ -239,4 +285,16 @@ export default class Activity extends Service {
|
|||||||
await ActivityGroupModel.updateGroup(groupId, { type: groupType }, ctx.user?.uid);
|
await ActivityGroupModel.updateGroup(groupId, { type: groupType }, ctx.user?.uid);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getGroupDataById(groupId: number) {
|
||||||
|
const { ctx } = this;
|
||||||
|
let activityGroup = await ActivityGroupModel.findGroupData(groupId);
|
||||||
|
if(!activityGroup) return ctx.service.utils.resResult(STATUS.GM_ACTIVITY_GROUP_NOT_FOUND);
|
||||||
|
let { type, activities: activityIds = [] } = activityGroup;
|
||||||
|
let activities = await ActivityModel.findActivityByIds(activityIds);
|
||||||
|
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||||
|
data: { groupId, groupType: type, activities }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user