Commit 253d033e authored by 任国军's avatar 任国军

add getQuestionList

parent 7e5c28fe
Pipeline #21692 passed with stage
in 12 seconds
'use strict';
const Controller = require('egg').Controller;
class ReportController extends Controller {
// 获取问题列表
async getQuestionList() {
const { ctx, service } = this;
const queryParams = ctx.request.query;
if (ctx.isEmpty(queryParams) || ctx.isEmpty(queryParams.cat_id)) {
ctx.failed('cat_id is empty');
}
const ret = await service.course.v5.report.getQuestionList(queryParams.cat_id);
ctx.success(ret);
}
}
module.exports = ReportController;
......@@ -17,8 +17,6 @@ module.exports = app => {
sub_title: STRING,
selected_icon: STRING,
unselected_icon: STRING,
type: INTEGER,
type_value: STRING,
status: INTEGER,
is_deleted: INTEGER,
sort: INTEGER,
......
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseV5AnswerToFilter = app.classModel.define('course_v5_answer_to_filter', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
answer_id: INTEGER,
type: INTEGER,
column_type: INTEGER,
column: STRING,
column_option: INTEGER,
column_value: STRING,
status: INTEGER,
is_deleted: INTEGER,
created_time: {
type: DATE,
allowNull: true,
get() {
const date = this.getDataValue('created_time');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
updated_time: {
type: DATE,
allowNull: true,
get() {
const date = this.getDataValue('updated_time');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
}, {
timestamps: false,
tableName: 'course_v5_answer_to_filter',
});
return CourseV5AnswerToFilter;
};
......@@ -6,7 +6,7 @@ const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseV5Column = app.classModel.define('course_v5_column', {
const CourseV5Question = app.classModel.define('course_v5_question', {
id: {
type: INTEGER,
primaryKey: true,
......@@ -15,7 +15,6 @@ module.exports = app => {
cat_id: INTEGER,
title: STRING,
style: INTEGER,
score: INTEGER,
type: INTEGER,
sort: INTEGER,
status: INTEGER,
......@@ -38,9 +37,9 @@ module.exports = app => {
},
}, {
timestamps: false,
tableName: 'course_v5_column',
tableName: 'course_v5_question',
});
return CourseV5Column;
return CourseV5Question;
};
......@@ -25,4 +25,6 @@ module.exports = app => {
router.delete('third', '/collection/class/:class_id', auth, 'course.v5.institution.delCollectClass');// 取消收藏课程
router.get('/third', '/article', 'course.v5.institution.getArticleByCategory');// 获取科普文章
router.get('/third', '/question/all', 'course.v5.report.getQuestionList');// 获取问题列表
};
'use strict';
const Service = require('egg').Service;
const R = require('ramda');
const _ = require('lodash');
class ReportService extends Service {
// 获取问题列表
async getQuestionList(catId) {
const { ctx } = this;
const questionList = await ctx.classModel.V5.CourseV5Question.findAll({ where: { cat_id: catId, status: 1, is_deleted: 0 }, order: [[ 'sort', 'asc' ]] });
if (ctx.isEmpty(questionList)) {
return { list: [] };
}
// 获取所有选项
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' ]] });
answerList = _.groupBy(answerList, 'question_id');
const results = [];
let number = 1;
for (const v of questionList) {
results.push({
id: v.id,
number: number++,
cat_id: v.cat_id,
title: v.title,
style: v.style,
type: v.type,
answer: ctx.isEmpty(answerList[v.id]) ? [] : answerList[v.id],
});
}
const ret = {
list: results,
};
return ret;
}
}
module.exports = ReportService;
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