后台:从活动组选择活动

This commit is contained in:
luying
2021-06-19 10:13:47 +08:00
parent 5fcc953d7c
commit 70b5b59912
3 changed files with 85 additions and 11 deletions
+68 -10
View File
@@ -50,6 +50,28 @@ export default class Activity extends Service {
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) {
const { ctx } = this;
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, {
activity: activities
})
@@ -124,23 +149,44 @@ export default class Activity extends Service {
public async saveActivitiesToGroup(groupId: number, activityIds: number[]) {
const { ctx } = this;
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);
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) {
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(activityIds);
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);
}
}
let curDic = dic.find(cur => cur.index == index);
console.log(dic, curDic)
if(curDic.activityType != activity.type) return ctx.service.utils.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, ctx.user?.uid);
} catch(e) {
@@ -239,4 +285,16 @@ export default class Activity extends Service {
await ActivityGroupModel.updateGroup(groupId, { type: groupType }, ctx.user?.uid);
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 }
});
}
}