Commit 4e1c48c8 authored by 任国军's avatar 任国军

add class & fix header

parent 9880cadd
Pipeline #21628 passed with stage
in 47 seconds
...@@ -3,213 +3,26 @@ ...@@ -3,213 +3,26 @@
const Controller = require('egg').Controller; const Controller = require('egg').Controller;
class InstitutionController extends Controller { class InstitutionController extends Controller {
// 机构列表
async getInstitutions() {
const { ctx } = this;
const inputParams = ctx.request.query;
const ret = await ctx.service.course.v4.institution.getInstitutions(inputParams);
ctx.success(ret);
}
// 机构详情
async getInstitution() {
const { ctx } = this;
let inputParams = ctx.params;
const query = ctx.query;
inputParams = Object.assign(inputParams, query);
const result = await ctx.service.course.v4.institution.getInstitution(inputParams);
ctx.success({ result });
}
// 课程列表 // 课程列表
async getClasses() { async getClassList() {
const { ctx } = this; const { ctx } = this;
const inputParams = ctx.request.query; const queryParams = ctx.request.query;
const ret = await ctx.service.course.v4.institution.getClasses(inputParams); const ret = await ctx.service.course.v4.institution.getClassList(queryParams);
ctx.success(ret); ctx.success(ret);
} }
// 课程详情 // 课程详情
async getClass() { async getClassInfo() {
const { ctx } = this; const { ctx } = this;
const class_id = ctx.params.class_id; const class_id = ctx.params.class_id;
if (!class_id) { if (!class_id) {
ctx.failed('error class_id'); ctx.failed('error class_id');
} }
const inputParams = ctx.request.query; const ret = await ctx.service.course.v4.institution.getClassInfo(class_id);
inputParams.id = class_id;
const ret = await ctx.service.course.v4.institution.getClass(inputParams);
ctx.success(ret);
}
// 老师列表
async getTeachers() {
const { ctx } = this;
const inputParams = ctx.request.query;
if (ctx.isEmpty(inputParams.institution_id)) {
ctx.failed('institution_id is empty');
}
const ret = await ctx.service.course.v4.institution.getTeachers(inputParams);
ctx.success(ret);
}
// 老师详情
async getTeacher() {
const { ctx } = this;
const teacher_id = ctx.params.teacher_id;
if (!teacher_id) {
ctx.failed('error teacher_id');
}
const ret = await ctx.service.course.v4.institution.getTeacher(teacher_id);
ctx.success(ret);
}
// 获取分类
async getCats() {
const { ctx } = this;
const ret = await ctx.service.course.v4.institution.getCats();
ctx.success(ret);
}
// 搜索
async search() {
const { ctx } = this;
const inputParams = ctx.request.query;
const ret = await ctx.service.course.v4.institution.search(inputParams);
ctx.success(ret);
}
// 用户搜索历史
async getUserSearch() {
const { ctx, service } = this;
const ret = await service.course.v4.institution.getUserSearch();
ctx.success(ret);
}
// 获取热搜
async getHotSearch() {
const { ctx, service } = this;
const ret = await service.course.v4.institution.getHotSearch();
ctx.success(ret);
}
// 删除用户搜索历史
async deleteUserSearch() {
const { ctx, service } = this;
await service.course.v4.institution.deleteUserSearch();
ctx.success();
}
// 评论列表
async getComments() {
const { ctx, service } = this;
const inputParams = ctx.request.query;
const ret = await service.course.v4.institution.getComments(inputParams);
ctx.success(ret);
}
// 搜索联想
async getSuggestSearch() {
const { ctx, service } = this;
const inputParams = ctx.request.query;
const ret = await service.course.v4.institution.getSuggestSearch(inputParams);
ctx.success(ret);
}
// 用户收藏机构列表
async getUserCollectedInstitutions() {
const { ctx, service } = this;
const inputParams = ctx.request.query;
const ret = await service.course.v4.institution.getUserCollectedInstitutions(inputParams);
ctx.success(ret);
}
// 用户收藏课程列表
async getUserCollectedClasses() {
const { ctx, service } = this;
const inputParams = ctx.request.query;
const ret = await service.course.v4.institution.getUserCollectedClasses(inputParams);
ctx.success(ret);
}
// 根据分类获取选课指南
async getArticlesByCat() {
const { ctx, service } = this;
const inputParams = ctx.request.query;
if (ctx.isEmpty(inputParams) || ctx.isEmpty(inputParams.cat_id)) {
ctx.failed('cat_id is empty');
}
const ret = await service.course.v4.institution.getArticlesByCat(inputParams);
ctx.success(ret);
}
// 获取选课指南详情
async getArticle() {
const { ctx, service } = this;
const inputParams = ctx.params;
if (ctx.isEmpty(inputParams) || ctx.isEmpty(inputParams.id)) {
ctx.failed('article_id is empty');
}
const ret = await service.course.v4.institution.getArticle(Number(inputParams.id));
ctx.success(ret);
}
// 点赞
async like() {
const { ctx, service } = this;
const inputParams = ctx.request.body;
if (ctx.isEmpty(inputParams) || ctx.isEmpty(inputParams.type) || ctx.isEmpty(inputParams.type_id)) {
ctx.failed('参数错误');
}
const ret = await service.course.v4.institution.like(inputParams);
ctx.success(ret);
}
// 取消点赞
async unlike() {
const { ctx, service } = this;
const inputParams = ctx.request.body;
if (ctx.isEmpty(inputParams) || ctx.isEmpty(inputParams.type) || ctx.isEmpty(inputParams.type_id)) {
ctx.failed('参数错误');
}
const ret = await service.course.v4.institution.unlike(inputParams);
ctx.success(ret);
}
// 获取推荐选课指南
async getArticlesByRecommend() {
const { ctx, service } = this;
const inputParams = ctx.request.query;
const ret = await service.course.v4.institution.getArticlesByRecommend(inputParams);
ctx.success(ret); ctx.success(ret);
} }
} }
......
...@@ -10,22 +10,30 @@ class OptionController extends Controller { ...@@ -10,22 +10,30 @@ class OptionController extends Controller {
async getOptions() { async getOptions() {
const { ctx } = this; const { ctx } = this;
const results = await ctx.service.course.v4.option.getOptions(); const results = await ctx.service.course.v5.option.getOptions();
ctx.success({ results }); ctx.success({ results });
} }
async getBanners() { async getBannerList() {
const { ctx, service } = this; const { ctx, service } = this;
const inputParams = ctx.request.query; const queryParams = ctx.request.query;
if (ctx.isEmpty(inputParams.alias)) { if (ctx.isEmpty(queryParams.alias)) {
ctx.failed('alias is empty'); ctx.failed('alias is empty');
} }
const ret = await service.course.v4.option.getBanners(inputParams.alias); const ret = await service.course.v5.option.getBannerList(queryParams.alias);
ctx.success(ret); ctx.success(ret);
} }
// 获取分类列表
async getCategoryList() {
const { ctx, service } = this;
const queryParams = ctx.request.query;
const ret = await service.course.v5.option.getCategoryList(queryParams);
ctx.success(ret);
}
} }
module.exports = OptionController; module.exports = OptionController;
...@@ -17,7 +17,7 @@ module.exports = (options, app) => { ...@@ -17,7 +17,7 @@ module.exports = (options, app) => {
} }
const openid = userInfo.openid; const openid = userInfo.openid;
const phone = userInfo.phone; const phone = userInfo.phone;
const authToken = ctx.headers.auth_token; const authToken = ctx.headers.authorization;
if (ctx.helper.md5(uuid + openid + phone + 'jbwl') !== authToken) { if (ctx.helper.md5(uuid + openid + phone + 'jbwl') !== authToken) {
ctx.failed('login auth error'); ctx.failed('login auth error');
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
const moment = require('moment'); const moment = require('moment');
module.exports = app => { module.exports = app => {
const { STRING, INTEGER, DATE, ENUM } = app.Sequelize; const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseBanner = app.classModel.define('course_banner', { const CourseBanner = app.classModel.define('course_banner', {
id: { id: {
...@@ -17,7 +17,7 @@ module.exports = app => { ...@@ -17,7 +17,7 @@ module.exports = app => {
url: STRING, url: STRING,
link: STRING, link: STRING,
sort: INTEGER, sort: INTEGER,
status: ENUM('offline', 'online'), status: INTEGER,
is_deleted: INTEGER, is_deleted: INTEGER,
created_time: { created_time: {
type: DATE, type: DATE,
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
const moment = require('moment'); const moment = require('moment');
module.exports = app => { module.exports = app => {
const { STRING, INTEGER, DATE, ENUM } = app.Sequelize; const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseBannerType = app.classModel.define('course_banner_type', { const CourseBannerType = app.classModel.define('course_banner_type', {
id: { id: {
...@@ -14,7 +14,7 @@ module.exports = app => { ...@@ -14,7 +14,7 @@ module.exports = app => {
}, },
title: STRING, title: STRING,
alias: STRING, alias: STRING,
status: ENUM('offline', 'online'), status: INTEGER,
is_deleted: INTEGER, is_deleted: INTEGER,
created_time: { created_time: {
type: DATE, type: DATE,
......
...@@ -17,7 +17,6 @@ module.exports = app => { ...@@ -17,7 +17,6 @@ module.exports = app => {
name: STRING, name: STRING,
selected_icon: STRING, selected_icon: STRING,
unselected_icon: STRING, unselected_icon: STRING,
color: STRING,
status: INTEGER, status: INTEGER,
is_deleted: INTEGER, is_deleted: INTEGER,
sort: INTEGER, sort: INTEGER,
......
...@@ -9,4 +9,11 @@ module.exports = app => { ...@@ -9,4 +9,11 @@ module.exports = app => {
router.post('third', '/login/wechat', 'course.v5.user.loginByWX');// 微信登录 router.post('third', '/login/wechat', 'course.v5.user.loginByWX');// 微信登录
router.post('third', '/user/register_user', miniAuth, 'course.v5.user.registerUserInfo');// 授权后注册用户 router.post('third', '/user/register_user', miniAuth, 'course.v5.user.registerUserInfo');// 授权后注册用户
router.get('third', '/user/info', miniAuth, 'course.v5.user.getUserInfo');// 获取用户信息 router.get('third', '/user/info', miniAuth, 'course.v5.user.getUserInfo');// 获取用户信息
router.get('third', '/category/all', 'course.v5.option.getCategoryList');// 获取分类列表
router.get('third', '/banner/all', 'course.v5.option.getBannerList');// 获取banner列表
router.get('third', '/class/all', 'course.v5.institution.getClassList');// 获取课程列表
router.get('third', '/class/:class_id', 'course.v5.institution.getClassInfo');// 获取课程详情
}; };
This diff is collapsed.
...@@ -46,17 +46,27 @@ class OptionService extends Service { ...@@ -46,17 +46,27 @@ class OptionService extends Service {
return options; return options;
} }
async getBanners(alias) { async getBannerList(alias) {
const { ctx } = this; const { ctx } = this;
const bannerType = await ctx.classModel.V5.CourseBannerType.findOne({ where: { alias, status: 'online', is_deleted: 0 }, row: true }); const bannerType = await ctx.classModel.V5.CourseBannerType.findOne({ where: { alias, status: 1, is_deleted: 0 }, row: true });
if (ctx.isEmpty(bannerType)) { if (ctx.isEmpty(bannerType)) {
ctx.failed('数据不存在'); ctx.failed('数据不存在');
} }
const banners = await ctx.classModel.V5.CourseBanner.findAll({ where: { type_id: bannerType.id, status: 'online', is_deleted: 0 }, order: [[ 'sort', 'asc' ]], row: true }); const banners = await ctx.classModel.V5.CourseBanner.findAll({ where: { type_id: bannerType.id, status: 1, is_deleted: 0 }, order: [[ 'sort', 'asc' ]], row: true });
const results = [];
for (const v of banners) {
results.push({
id: v.id,
title: v.title,
url: v.url,
link: v.link,
created_time: v.created_time,
});
}
const ret = { const ret = {
results: banners, list: results,
count: banners.length,
}; };
return ret; return ret;
...@@ -84,9 +94,19 @@ class OptionService extends Service { ...@@ -84,9 +94,19 @@ class OptionService extends Service {
parent_id: v.parent_id, parent_id: v.parent_id,
name: v.name, name: v.name,
selected_icon: v.selected_icon, selected_icon: v.selected_icon,
unselected_icon: v.unselected_icon,
sort: v.sort,
}); });
} }
const ret = {
list: results,
};
return ret;
} }
} }
module.exports = OptionService; module.exports = OptionService;
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