'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; } }