'use strict';
|
const businessState = require('../../../../application/service/businessState.js')
|
module.exports = {
|
/**
|
* 此函数名称
|
* @url user/pub/test1 前端调用的url参数地址
|
* @description 此函数描述
|
* @params {Object} data 请求参数
|
* @params {String} uniIdToken 用户token
|
* @params {String} userInfo 当前登录用户信息(可信任,仅kh目录下的函数有此值)
|
* pub目录下请求参数需要带上 need_user_info = true
|
* @params {Object} util 公共工具包
|
* @params {Object} filterResponse 过滤器返回的数据
|
* @params {Object} originalParam 原始请求参数(包含了原始event和context)
|
* data 请求参数 说明
|
* @params {String} uid 当前登录用户id(可信任,仅kh目录下的函数有此值)
|
* res 返回参数说明
|
* @params {Number} code 错误码,0表示成功
|
* @params {String} msg 详细信息
|
*/
|
main: async (event) => {
|
// 注意: userInfo 和 uid 是可信任的,但默认只有kh目录下的函数才有此值
|
let { data = {}, userInfo, util, originalParam } = event;
|
let { customUtil, config, pubFun, vk, db, _ } = util;
|
let { uid } = data;
|
let res = {
|
code: 0,
|
msg: '',
|
data: {}
|
};
|
// 业务逻辑开始-----------------------------------------------------------
|
//课程主体
|
res.data.courses = await vk.baseDao.findById({
|
dbName: "course",
|
id: data._id,
|
whereJson: {
|
is_show: 1,
|
published_at: _.lte(pubFun.getNowTimeStr())
|
}
|
});
|
|
// 用户历史记录
|
let sonWhere = {}
|
if (uid != null) sonWhere['user_id'] = uid
|
|
// 章节信息
|
res.data.test = await vk.baseDao.selects({
|
dbName: "course_chapter",
|
getMain: true,
|
pageSize: 9999,
|
fieldJson: { title: true },
|
whereJson: { course_id: data._id },
|
// 视频 和 讲义
|
foreignDB: [{
|
dbName: "course_videos",
|
localKey: "_id",
|
foreignKey: "chapter_id",
|
as: "videos",
|
fieldJson: { url: true, title: true, duration: true, free_seconds: true },
|
whereJson: { course_id: data._id, is_show: 1 },
|
sortArr: [{ "name": "sort", "type": "desc" }],
|
// 观看情况
|
foreignDB: [{
|
dbName: "user_video_watch_records",
|
localKey: "_id",
|
foreignKey: "video_id",
|
as: "watch_info",
|
limit: 1,
|
fieldJson: { _id: true },
|
whereJson: sonWhere
|
}]
|
}, {
|
dbName: "course_words",
|
localKey: "_id",
|
foreignKey: "chapter_id",
|
as: "word",
|
limit: 1,
|
fieldJson: { url: true, title: true },
|
whereJson: { course_id: data._id, is_show: 1 }
|
}]
|
});
|
|
//获取用户课程购买情况
|
res.data.has_buy = await businessState.hasBuyCourses(event, data._id, userInfo)
|
if (uid != null) {
|
let info = await vk.baseDao.findByWhereJson({
|
dbName: "user_goods",
|
whereJson: { goods_id: data._id, user_id: uid }
|
})
|
if (info != null) res.data.endTime = info.end_time
|
}
|
|
// 获取收藏状态
|
if (uid == null) {
|
res.data.star = 0
|
} else {
|
let info = await vk.baseDao.findByWhereJson({
|
dbName: "user-star",
|
whereJson: {
|
user_id: uid,
|
course_id: data._id
|
}
|
});
|
res.data.star = info ? 1 : 0
|
}
|
|
// 业务逻辑结束-----------------------------------------------------------
|
return res;
|
}
|
}
|