Commit 42c487f7 authored by 任国军's avatar 任国军

fix recommendList

parent ec4a3a38
Pipeline #22931 passed with stage
in 13 seconds
...@@ -23,7 +23,7 @@ class ReportService extends Service { ...@@ -23,7 +23,7 @@ class ReportService extends Service {
} }
// 获取所有选项 // 获取所有选项
let answerList = await ctx.classModel.V5.CourseV5Answer.findAll({ where: { question_id: { $in: R.pluck('id', questionList) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'question_id', 'title', 'sub_title', 'selected_icon', 'unselected_icon' ], order: [[ 'sort', 'asc' ]] }); let answerList = await ctx.classModel.V5.CourseV5Answer.findAll({ where: { question_id: { $in: _.uniq(R.pluck('id', questionList)) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'question_id', 'title', 'sub_title', 'selected_icon', 'unselected_icon' ], order: [[ 'sort', 'asc' ]] });
answerList = _.groupBy(answerList, 'question_id'); answerList = _.groupBy(answerList, 'question_id');
const results = []; const results = [];
...@@ -96,11 +96,11 @@ class ReportService extends Service { ...@@ -96,11 +96,11 @@ class ReportService extends Service {
const userBabyInfo = await ctx.classModel.V5.CourseV5UserBaby.findOne({ where: { user_uuid: userReportInfo.user_uuid, status: 1, is_deleted: 0 }, attributes: [ 'user_uuid', 'baby_sex', 'baby_name', 'baby_age' ] }); const userBabyInfo = await ctx.classModel.V5.CourseV5UserBaby.findOne({ where: { user_uuid: userReportInfo.user_uuid, status: 1, is_deleted: 0 }, attributes: [ 'user_uuid', 'baby_sex', 'baby_name', 'baby_age' ] });
// 获取年龄对应的报告选项 // 获取年龄对应的报告选项
const ageToReport = await ctx.classModel.V5.CourseV5AgeToReportColumnDetail.findAll({ where: { age_id: userBabyInfo.baby_age, cat_id: userReportInfo.cat_id, status: 1, is_deleted: 0 } }); const ageToReport = await ctx.classModel.V5.CourseV5AgeToReportColumnDetail.findAll({ where: { age_id: userBabyInfo.baby_age, cat_id: userReportInfo.cat_id, status: 1, is_deleted: 0 } });
const ageReportColumnDetailList = await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: R.pluck('report_column_detail_id', ageToReport) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true }); const ageReportColumnDetailList = await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: _.uniq(R.pluck('report_column_detail_id', ageToReport)) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true });
let reportColumnDetailList = ctx.isEmpty(userReportInfo.report_column_detail_ids) ? [] : await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: eval(userReportInfo.report_column_detail_ids) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true }); let reportColumnDetailList = ctx.isEmpty(userReportInfo.report_column_detail_ids) ? [] : await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: eval(userReportInfo.report_column_detail_ids) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true });
reportColumnDetailList = _.concat(reportColumnDetailList, ageReportColumnDetailList); reportColumnDetailList = _.concat(reportColumnDetailList, ageReportColumnDetailList);
const reportColumnList = await ctx.classModel.V5.CourseV5ReportColumn.findAll({ where: { id: { $in: R.pluck('report_column_id', reportColumnDetailList) } }, order: [[ 'sort', 'asc' ]], attributes: [ 'id', 'title' ], raw: true }); const reportColumnList = await ctx.classModel.V5.CourseV5ReportColumn.findAll({ where: { id: { $in: _.uniq(R.pluck('report_column_id', reportColumnDetailList)) } }, order: [[ 'sort', 'asc' ]], attributes: [ 'id', 'title' ], raw: true });
reportColumnDetailList = _.groupBy(reportColumnDetailList, 'report_column_id'); reportColumnDetailList = _.groupBy(reportColumnDetailList, 'report_column_id');
const report = []; const report = [];
...@@ -143,11 +143,11 @@ class ReportService extends Service { ...@@ -143,11 +143,11 @@ class ReportService extends Service {
const userBabyInfo = await ctx.classModel.V5.CourseV5UserBaby.findOne({ where: { user_uuid: userReportInfo.user_uuid, status: 1, is_deleted: 0 }, attributes: [ 'user_uuid', 'baby_sex', 'baby_name', 'baby_age' ] }); const userBabyInfo = await ctx.classModel.V5.CourseV5UserBaby.findOne({ where: { user_uuid: userReportInfo.user_uuid, status: 1, is_deleted: 0 }, attributes: [ 'user_uuid', 'baby_sex', 'baby_name', 'baby_age' ] });
// 获取年龄对应的报告选项 // 获取年龄对应的报告选项
const ageToReport = await ctx.classModel.V5.CourseV5AgeToReportColumnDetail.findAll({ where: { age_id: userBabyInfo.baby_age, cat_id: userReportInfo.cat_id, status: 1, is_deleted: 0 } }); const ageToReport = await ctx.classModel.V5.CourseV5AgeToReportColumnDetail.findAll({ where: { age_id: userBabyInfo.baby_age, cat_id: userReportInfo.cat_id, status: 1, is_deleted: 0 } });
const ageReportColumnDetailList = await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: R.pluck('report_column_detail_id', ageToReport) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true }); const ageReportColumnDetailList = await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: _.uniq(R.pluck('report_column_detail_id', ageToReport)) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true });
let reportColumnDetailList = ctx.isEmpty(userReportInfo.report_column_detail_ids) ? [] : await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: eval(userReportInfo.report_column_detail_ids) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true }); let reportColumnDetailList = ctx.isEmpty(userReportInfo.report_column_detail_ids) ? [] : await ctx.classModel.V5.CourseV5ReportColumnDetail.findAll({ where: { id: { $in: eval(userReportInfo.report_column_detail_ids) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'report_column_id', 'sub_title', 'level', 'content', 'advice' ], raw: true });
reportColumnDetailList = _.concat(reportColumnDetailList, ageReportColumnDetailList); reportColumnDetailList = _.concat(reportColumnDetailList, ageReportColumnDetailList);
const reportColumnList = await ctx.classModel.V5.CourseV5ReportColumn.findAll({ where: { id: { $in: R.pluck('report_column_id', reportColumnDetailList) } }, order: [[ 'sort', 'asc' ]], attributes: [ 'id', 'title' ], raw: true }); const reportColumnList = await ctx.classModel.V5.CourseV5ReportColumn.findAll({ where: { id: { $in: _.uniq(R.pluck('report_column_id', reportColumnDetailList)) } }, order: [[ 'sort', 'asc' ]], attributes: [ 'id', 'title' ], raw: true });
reportColumnDetailList = _.groupBy(reportColumnDetailList, 'report_column_id'); reportColumnDetailList = _.groupBy(reportColumnDetailList, 'report_column_id');
const report = []; const report = [];
...@@ -329,13 +329,13 @@ class ReportService extends Service { ...@@ -329,13 +329,13 @@ class ReportService extends Service {
case 'type': case 'type':
tmpFilter = { where: { type_id: await this.getOptionValue(v), status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] }; tmpFilter = { where: { type_id: await this.getOptionValue(v), status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] };
tmpClassList = await ctx.classModel.V5.CourseV5ClassToType.findAll(tmpFilter); tmpClassList = await ctx.classModel.V5.CourseV5ClassToType.findAll(tmpFilter);
classIds = classFlag ? _.union(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList); classIds = classFlag ? _.intersection(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList);
classFlag = true; classFlag = true;
break; break;
case 'frequency': case 'frequency':
tmpFilter = { where: { frequency_id: await this.getOptionValue(v), status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] }; tmpFilter = { where: { frequency_id: await this.getOptionValue(v), status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] };
tmpClassList = await ctx.classModel.V5.CourseV5ClassToFrequency.findAll(tmpFilter); tmpClassList = await ctx.classModel.V5.CourseV5ClassToFrequency.findAll(tmpFilter);
classIds = classFlag ? _.union(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList); classIds = classFlag ? _.intersection(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList);
classFlag = true; classFlag = true;
break; break;
default: default:
...@@ -344,17 +344,19 @@ class ReportService extends Service { ...@@ -344,17 +344,19 @@ class ReportService extends Service {
} else if (v.column_type === 2) { // 额外字段 } else if (v.column_type === 2) { // 额外字段
tmpFilter = { where: { column_id: v.column, value: await this.getOptionValue(v) }, attributes: [ 'class_id' ] }; tmpFilter = { where: { column_id: v.column, value: await this.getOptionValue(v) }, attributes: [ 'class_id' ] };
tmpClassList = await ctx.classModel.V5.CourseV5ClassToColumn.findAll(tmpFilter); tmpClassList = await ctx.classModel.V5.CourseV5ClassToColumn.findAll(tmpFilter);
classIds = classFlag ? _.union(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList); classIds = classFlag ? _.intersection(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList);
classFlag = true; classFlag = true;
} }
} }
} }
// 分类筛选 // 分类筛选
tmpClassList = await ctx.classModel.V5.CourseV5ClassToCat.findAll({ where: { cat_id: catId, status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] }); let category = await ctx.classModel.V5.CourseV5Category.findOne({ where: { id: catId } });
classIds = classFlag ? _.union(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList); category = ctx.isEmpty(category) ? 0 : category.bind;
tmpClassList = await ctx.classModel.V5.CourseV5ClassToCat.findAll({ where: { cat_id: category, status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] });
classIds = classFlag ? _.intersection(classIds, R.pluck('class_id', tmpClassList)) : R.pluck('class_id', tmpClassList);
// 年级筛选 // 年级筛选
tmpClassList = await ctx.classModel.V5.CourseV5ClassToAge.findAll({ where: { age_id: babyAge, status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] }); tmpClassList = await ctx.classModel.V5.CourseV5ClassToAge.findAll({ where: { age_id: babyAge, status: 1, is_deleted: 0 }, attributes: [ 'class_id' ] });
classIds = _.union(classIds, R.pluck('class_id', tmpClassList)); classIds = _.intersection(classIds, R.pluck('class_id', tmpClassList));
where.id = { $in: classIds }; where.id = { $in: classIds };
return where; return where;
...@@ -401,30 +403,30 @@ class ReportService extends Service { ...@@ -401,30 +403,30 @@ class ReportService extends Service {
// 获取所有年龄段 // 获取所有年龄段
let classToAge = await ctx.classModel.V5.CourseV5ClassToAge.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'age_id' ] }); let classToAge = await ctx.classModel.V5.CourseV5ClassToAge.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'age_id' ] });
let ageList = await ctx.classModel.V5.CourseV5Age.findAll({ where: { id: { $in: R.pluck('age_id', classToAge) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] }); let ageList = await ctx.classModel.V5.CourseV5Age.findAll({ where: { id: { $in: _.uniq(R.pluck('age_id', classToAge)) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] });
classToAge = _.groupBy(classToAge, 'class_id'); classToAge = _.groupBy(classToAge, 'class_id');
ageList = _.groupBy(ageList, 'id'); ageList = _.groupBy(ageList, 'id');
// 获取所有课程类型 // 获取所有课程类型
let classToType = await ctx.classModel.V5.CourseV5ClassToType.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'type_id' ] }); let classToType = await ctx.classModel.V5.CourseV5ClassToType.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'type_id' ] });
let typeList = await ctx.classModel.V5.CourseV5Type.findAll({ where: { id: { $in: R.pluck('type_id', classToType) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] }); let typeList = await ctx.classModel.V5.CourseV5Type.findAll({ where: { id: { $in: _.uniq(R.pluck('type_id', classToType)) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] });
classToType = _.groupBy(classToType, 'class_id'); classToType = _.groupBy(classToType, 'class_id');
typeList = _.groupBy(typeList, 'id'); typeList = _.groupBy(typeList, 'id');
// 获取所有授课频次 // 获取所有授课频次
let classToFrequency = await ctx.classModel.V5.CourseV5ClassToFrequency.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'frequency_id' ] }); let classToFrequency = await ctx.classModel.V5.CourseV5ClassToFrequency.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'frequency_id' ] });
let frequencyList = await ctx.classModel.V5.CourseV5Frequency.findAll({ where: { id: { $in: R.pluck('frequency_id', classToFrequency) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] }); let frequencyList = await ctx.classModel.V5.CourseV5Frequency.findAll({ where: { id: { $in: _.uniq(R.pluck('frequency_id', classToFrequency)) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] });
classToFrequency = _.groupBy(classToFrequency, 'class_id'); classToFrequency = _.groupBy(classToFrequency, 'class_id');
frequencyList = _.groupBy(frequencyList, 'id'); frequencyList = _.groupBy(frequencyList, 'id');
// 获取所有额外字段 // 获取所有额外字段
let classToColumn = await ctx.classModel.V5.CourseV5ClassToColumn.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'column_id', 'value' ] }); let classToColumn = await ctx.classModel.V5.CourseV5ClassToColumn.findAll({ where: { class_id: { $in: classIds }, status: 1, is_deleted: 0 }, attributes: [ 'class_id', 'column_id', 'value' ] });
let columnList = await ctx.classModel.V5.CourseV5Column.findAll({ where: { id: { $in: R.pluck('column_id', classToColumn) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] }); let columnList = await ctx.classModel.V5.CourseV5Column.findAll({ where: { id: { $in: _.uniq(R.pluck('column_id', classToColumn)) }, status: 1, is_deleted: 0 }, attributes: [ 'id', 'name' ] });
classToColumn = _.groupBy(classToColumn, 'class_id'); classToColumn = _.groupBy(classToColumn, 'class_id');
columnList = _.groupBy(columnList, 'id'); columnList = _.groupBy(columnList, 'id');
// 获取所有机构 // 获取所有机构
let institutionList = await ctx.classModel.V5.CourseV5Institution.findAll({ where: { id: { $in: R.pluck('institution_id', classList) } } }); let institutionList = await ctx.classModel.V5.CourseV5Institution.findAll({ where: { id: { $in: _.uniq(R.pluck('institution_id', classList)) } } });
institutionList = _.groupBy(institutionList, 'id'); institutionList = _.groupBy(institutionList, 'id');
const ret = []; const ret = [];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment