Commit 7e5c28fe authored by 任国军's avatar 任国军

add getArticleByCategory

parent 163baa3b
Pipeline #21690 passed with stage
in 3 seconds
......@@ -56,6 +56,19 @@ class InstitutionController extends Controller {
ctx.success(ret);
}
// 获取科普文章
async getArticleByCategory() {
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.institution.getArticleByCategory(queryParams.cat_id);
ctx.success(ret);
}
}
module.exports = InstitutionController;
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseV5Article = app.classModel.define('course_v5_article', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
cat_id: INTEGER,
image: STRING,
content: 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_article',
});
return CourseV5Article;
};
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseV5ArticleQA = app.classModel.define('course_v5_article_qa', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
article_id: INTEGER,
question: STRING,
answer: STRING,
sort: INTEGER,
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_article_qa',
});
return CourseV5ArticleQA;
};
......@@ -23,4 +23,6 @@ module.exports = app => {
router.get('/third', '/collection/class/all', auth, 'course.v5.institution.getCollectionClassList');// 获取收藏课程列表
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.get('/third', '/article', 'course.v5.institution.getArticleByCategory');// 获取科普文章
};
......@@ -199,6 +199,29 @@ class InstitutionSubService extends Service {
return { result: true };
}
// 获取科普文章
async getArticleByCategory(catId) {
const { ctx } = this;
const article = await ctx.classModel.V5.CourseV5Article.findOne({ where: { cat_id: catId, status: 1, is_deleted: 0 } });
if (ctx.isEmpty(article)) {
return {};
}
// 问答
const qa = await ctx.classModel.V5.CourseV5ArticleQA.findAll({ where: { article_id: article.id, status: 1, is_deleted: 0 }, order: [[ 'sort', 'asc' ]], attributes: [ 'id', 'question', 'answer' ] });
const ret = {
id: article.id,
cat_id: article.cat_id,
image: article.image,
content: article.content,
qa,
};
return ret;
}
}
module.exports = InstitutionSubService;
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