Commit 0d753082 authored by 任国军's avatar 任国军

add generateReport

parent 253d033e
Pipeline #21760 passed with stage
in 12 seconds
...@@ -14,6 +14,21 @@ class ReportController extends Controller { ...@@ -14,6 +14,21 @@ class ReportController extends Controller {
const ret = await service.course.v5.report.getQuestionList(queryParams.cat_id); const ret = await service.course.v5.report.getQuestionList(queryParams.cat_id);
ctx.success(ret); ctx.success(ret);
} }
// 生成报告
async generateReport() {
const { ctx, service } = this;
const queryParams = ctx.request.body;
if (ctx.isEmpty(queryParams) || ctx.isEmpty(queryParams.data)) {
ctx.failed('data is empty');
}
if (ctx.isEmpty(queryParams) || ctx.isEmpty(queryParams.cat_id)) {
ctx.failed('cat_id is empty');
}
const ret = await service.course.v5.report.generateReport(queryParams);
ctx.success(ret);
}
} }
module.exports = ReportController; module.exports = ReportController;
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseUserReport = app.classModel.define('course_user_report', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
user_uuid: STRING,
cat_id: INTEGER,
report_column_detail_ids: STRING,
answer: 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_user_report',
});
return CourseUserReport;
};
...@@ -17,6 +17,7 @@ module.exports = app => { ...@@ -17,6 +17,7 @@ module.exports = app => {
sub_title: STRING, sub_title: STRING,
selected_icon: STRING, selected_icon: STRING,
unselected_icon: STRING, unselected_icon: STRING,
tag: STRING,
status: INTEGER, status: INTEGER,
is_deleted: INTEGER, is_deleted: INTEGER,
sort: INTEGER, sort: INTEGER,
......
...@@ -18,6 +18,7 @@ module.exports = app => { ...@@ -18,6 +18,7 @@ module.exports = app => {
column: STRING, column: STRING,
column_option: INTEGER, column_option: INTEGER,
column_value: STRING, column_value: STRING,
column_score: INTEGER,
status: INTEGER, status: INTEGER,
is_deleted: INTEGER, is_deleted: INTEGER,
created_time: { created_time: {
......
...@@ -6,16 +6,14 @@ const moment = require('moment'); ...@@ -6,16 +6,14 @@ const moment = require('moment');
module.exports = app => { module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize; const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseV5Column = app.classModel.define('course_v5_column', { const CourseV5AnswerToReportColumnDetail = app.classModel.define('course_v5_answer_to_report_column_detail', {
id: { id: {
type: INTEGER, type: INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true,
}, },
first: STRING, answer_id: INTEGER,
second: STRING, report_column_detail_id: INTEGER,
column: STRING,
score: INTEGER,
status: INTEGER, status: INTEGER,
is_deleted: INTEGER, is_deleted: INTEGER,
created_time: { created_time: {
...@@ -36,9 +34,9 @@ module.exports = app => { ...@@ -36,9 +34,9 @@ module.exports = app => {
}, },
}, { }, {
timestamps: false, timestamps: false,
tableName: 'course_v5_column', tableName: 'course_v5_answer_to_report_column_detail',
}); });
return CourseV5Column; return CourseV5AnswerToReportColumnDetail;
}; };
...@@ -13,6 +13,7 @@ module.exports = app => { ...@@ -13,6 +13,7 @@ module.exports = app => {
autoIncrement: true, autoIncrement: true,
}, },
cat_id: INTEGER, cat_id: INTEGER,
age_id: INTEGER,
title: STRING, title: STRING,
style: INTEGER, style: INTEGER,
type: INTEGER, type: INTEGER,
......
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseV5ReportColumn = app.classModel.define('course_v5_report_column', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
cat_id: INTEGER,
title: STRING,
status: INTEGER,
is_deleted: INTEGER,
sort: 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_report_column',
});
return CourseV5ReportColumn;
};
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseV5ReportColumnDetail = app.classModel.define('course_v5_report_column_detail', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
report_column_id: INTEGER,
content: STRING,
status: INTEGER,
is_deleted: INTEGER,
number: 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_report_column_detail',
});
return CourseV5ReportColumnDetail;
};
'use strict'; 'use strict';
module.exports = app => { module.exports = app => {
const router = app.router.namespace(app.config.projectRootPath + '/course'); // const router = app.router.namespace(app.config.projectRootPath + '/course');
const loginAuth = app.middleware.loginAuth({ type: 'new' });// 登录中间件 // const loginAuth = app.middleware.loginAuth({ type: 'new' });// 登录中间件
const miniAuth = app.middleware.miniAuth();// 因为不跟现有的用户中心系统,所以使用单独的登录中间件 // const miniAuth = app.middleware.miniAuth();// 因为不跟现有的用户中心系统,所以使用单独的登录中间件
router.get('third', '/options', 'course.option.getOptions');// 筛选项 // router.get('third', '/options', 'course.option.getOptions');// 筛选项
router.post('third', '/address', miniAuth, 'course.location.getAddress');// 根据经纬度或ip获取地理位置信息 // router.post('third', '/address', miniAuth, 'course.location.getAddress');// 根据经纬度或ip获取地理位置信息
router.post('third', '/institutions', miniAuth, 'course.institution.institutionList');// 机构列表 // router.post('third', '/institutions', miniAuth, 'course.institution.institutionList');// 机构列表
router.get('third', '/institutions', miniAuth, 'course.institution.institutionList');// 机构列表 // router.get('third', '/institutions', miniAuth, 'course.institution.institutionList');// 机构列表
router.get('third', '/institution/:institution_id/:area_id', miniAuth, 'course.institution.institutionInfo');// 机构详情 // router.get('third', '/institution/:institution_id/:area_id', miniAuth, 'course.institution.institutionInfo');// 机构详情
router.post('third', '/classes', miniAuth, 'course.institution.classList');// 课程列表 // router.post('third', '/classes', miniAuth, 'course.institution.classList');// 课程列表
router.get('third', '/classes', miniAuth, 'course.institution.classList');// 课程列表 // router.get('third', '/classes', miniAuth, 'course.institution.classList');// 课程列表
router.get('third', '/class/:class_id', miniAuth, 'course.institution.classInfo');// 课程详情 // router.get('third', '/class/:class_id', miniAuth, 'course.institution.classInfo');// 课程详情
router.post('third', '/teachers', miniAuth, 'course.institution.teacherList');// 老师列表 // router.post('third', '/teachers', miniAuth, 'course.institution.teacherList');// 老师列表
router.get('third', '/teachers', miniAuth, 'course.institution.teacherList');// 老师详情 // router.get('third', '/teachers', miniAuth, 'course.institution.teacherList');// 老师详情
router.get('third', '/teacher/:teacher_id', miniAuth, 'course.institution.teacherInfo');// 老师详情 // router.get('third', '/teacher/:teacher_id', miniAuth, 'course.institution.teacherInfo');// 老师详情
router.post('third', '/user/auth', 'course.user.auth');// 微信授权登录 // router.post('third', '/user/auth', 'course.user.auth');// 微信授权登录
router.post('third', '/user/register_user', miniAuth, 'course.user.registerUserInfo');// 授权后注册用户 // router.post('third', '/user/register_user', miniAuth, 'course.user.registerUserInfo');// 授权后注册用户
router.get('third', '/user/baby', miniAuth, 'course.user.getBabyInfo');// 获取baby信息 // router.get('third', '/user/baby', miniAuth, 'course.user.getBabyInfo');// 获取baby信息
router.post('third', '/user/baby', miniAuth, 'course.user.saveBabyInfo');// 保存baby信息 // router.post('third', '/user/baby', miniAuth, 'course.user.saveBabyInfo');// 保存baby信息
router.delete('third', '/user/baby', miniAuth, 'course.user.delBabyInfo');// 删除baby信息 // router.delete('third', '/user/baby', miniAuth, 'course.user.delBabyInfo');// 删除baby信息
router.get('third', '/user/collection/institution', miniAuth, 'course.user.getCollectInstitutions');// 收藏的机构列表 // router.get('third', '/user/collection/institution', miniAuth, 'course.user.getCollectInstitutions');// 收藏的机构列表
router.post('third', '/user/collection/institution', miniAuth, 'course.user.collectInstitution');// 收藏机构 // router.post('third', '/user/collection/institution', miniAuth, 'course.user.collectInstitution');// 收藏机构
router.delete('third', '/user/collection/institution', miniAuth, 'course.user.delCollectInstitution');// 取消收藏机构 // router.delete('third', '/user/collection/institution', miniAuth, 'course.user.delCollectInstitution');// 取消收藏机构
router.get('third', '/wechat/callbackAction', 'course.wechat.check'); // router.get('third', '/wechat/callbackAction', 'course.wechat.check');
router.post('third', '/wechat/callbackAction', 'course.wechat.callbackAction'); // router.post('third', '/wechat/callbackAction', 'course.wechat.callbackAction');
router.post('third', '/wechat/test', 'course.wechat.test'); // router.post('third', '/wechat/test', 'course.wechat.test');
}; };
...@@ -20,11 +20,12 @@ module.exports = app => { ...@@ -20,11 +20,12 @@ module.exports = app => {
router.get('third', '/class/all', auth, 'course.v5.institution.getClassList');// 获取课程列表 router.get('third', '/class/all', auth, 'course.v5.institution.getClassList');// 获取课程列表
router.get('third', '/class/:class_id', auth, 'course.v5.institution.getClassInfo');// 获取课程详情 router.get('third', '/class/:class_id', auth, 'course.v5.institution.getClassInfo');// 获取课程详情
router.get('/third', '/collection/class/all', auth, 'course.v5.institution.getCollectionClassList');// 获取收藏课程列表 router.get('third', '/collection/class/all', auth, 'course.v5.institution.getCollectionClassList');// 获取收藏课程列表
router.post('/third', '/collection/class/:class_id', auth, 'course.v5.institution.collectClass');// 收藏课程 router.post('third', '/collection/class/:class_id', auth, 'course.v5.institution.collectClass');// 收藏课程
router.delete('third', '/collection/class/:class_id', auth, 'course.v5.institution.delCollectClass');// 取消收藏课程 router.delete('third', '/collection/class/:class_id', auth, 'course.v5.institution.delCollectClass');// 取消收藏课程
router.get('/third', '/article', 'course.v5.institution.getArticleByCategory');// 获取科普文章 router.get('third', '/article', 'course.v5.institution.getArticleByCategory');// 获取科普文章
router.get('/third', '/question/all', 'course.v5.report.getQuestionList');// 获取问题列表 router.get('third', '/question/all', 'course.v5.report.getQuestionList');// 获取问题列表
router.post('third', '/report', auth, 'course.v5.report.generateReport');// 生成报告
}; };
This diff is collapsed.
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