const { models } = require('../db') const { validateField, handleAdd, handleUpdate, handleDelete, handleFindByField } = require('../common') /** * * 记录用户行为 表格 调 monitor_behavior(监听用户行为) * * 字段展示 用户名 根据 监听用户行为表 user_id 去 老师表(wx_teacher_user)里查_id是否相同 相同取园所名称(name) * 进入时间 —— start_time * 退出时间 —— end_time * 流量时长 —— duration * 修改后手机号 —— update_phone * 修改后收货人 —— update_name * 下单时间 —— createdAt * * 查询 调 monitor_behavior(监听用户行为) * createdAt —— 创建时间 * * */ /** * 新增 * @param {*} user_id 用户Id * @param {*} type 用户端(0-教师 1-家长) * @param {*} duration 时长 * @param {*} start_time 进入时间 * @param {*} end_time 退出时间 * @param {*} file_id 课件Id * @returns */ async function addMmonitorBehavior(parameter) { const { user_id, type, duration, start_time, end_time, file_id } = parameter const v1 = validateField(user_id, 'user_id') if (!v1.flag) { return { success: false, msg: v1.msg } } const v2 = validateField(type, 'type') if (!v2.flag) { return { success: false, msg: v2.msg } } const v3 = validateField(file_id, 'file_id') if (!v3.flag) { return { success: false, msg: v3.msg } } const v4 = validateField(start_time, 'start_time') if (!v4.flag) { return { success: false, msg: v4.msg } } const data = { user_id, type, duration, start_time, end_time } return await handleAdd(parameter, data, 'monitor_behavior') } /** * 根据Id删除 * @param {*} _id Id */ async function deleteMmonitorBehavior(parameter) { const { _id } = parameter return handleDelete(parameter, _id, 'monitor_behavior') } /** * 编辑 * @param {*} _id 主键Id * @param {*} user_id 用户Id * @param {*} type 用户端(0-教师 1-家长) * @param {*} duration 时长 * @param {*} start_time 进入时间 * @param {*} end_time 退出时间 * @param {*} file_id 课件Id * @returns */ async function updateMmonitorBehavior(parameter) { const { _id, user_id, type, duration, start_time, end_time, file_id } = parameter const obj = {} const v0 = validateField(_id, '_id') if (!v0.flag) { return { success: false, msg: v0.msg } } const v1 = validateField(user_id, 'user_id') if (v1.flag) { obj.user_id = user_id } const v2 = validateField(type, 'type') if (v2.flag) { obj.type = type } const v3 = validateField(duration, 'duration') if (v3.flag) { obj.duration = duration } const v4 = validateField(start_time, 'start_time') if (v4.flag) { obj.start_time = start_time } const v5 = validateField(end_time, 'end_time') if (v5.flag) { obj.end_time = end_time } const v6 = validateField(file_id, 'file_id') if (v6.flag) { obj.file_id = file_id } return await handleUpdate(parameter, _id, obj, 'monitor_behavior') } /** * 分页查询 * @param {*} startTime 开始时间 * @param {*} endTime 结束时间 * @param {*} pageNum 当前页面 * @param {*} pageSize 每页展示数量 * @returns 分页数据 */ async function findMmonitorBehaviorPage(parameter) { const { startTime, endTime, pageNum, pageSize } = parameter const v1 = validateField(pageNum) if (!v1.flag) { return { success: false, records: [], msg: v1.msg } } const v2 = validateField(pageSize) if (!v2.flag) { return { success: false, records: [], msg: v2.msg } } // 查询参数 const params = { pageNum, pageSize } // 拼接查询条件 let condition = "" if (startTime != null && endTime != null) { condition += " where mb.createdAt >= {{startTime}} and mb.createdAt <= {{endTime}} " params.startTime = startTime params.endTime = endTime } const skip = (pageNum - 1) * pageSize // 查询sql const sql = "select " + "mb._id, " + "tu.user_name, " + "mb.start_time, " + "mb.end_time, " + "mb.duration, " + "mb.createdAt, " + "(select count(*) from download_history dh where dh.user_id = mb.user_id and mb.file_id = dh.file_manage_id) as total " + "from monitor_behavior mb " + "left join wx_teacher_user tu on mb.user_id = tu._id " + condition + " order by mb.createdAt desc " + "limit " + skip + ", " + pageSize const countSql = "select count(*) as total from monitor_behavior mb " + "left join wx_teacher_user tu on mb.user_id = tu._id " + condition try { // 查询数据sql const records = await models.$runSQL(sql, params) const count = await models.$runSQL(countSql, params) return { sql, countSql, params, success: true, msg: '查询成功', records: records.data.executeResultList, total: count.data.executeResultList[0].total } } catch (error) { return { success: false, msg: '查询失败', params, sql, countSql, error: error } } } /** * 根据Id查询 * @param {*} _id Id */ async function findMmonitorBehaviorById(parameter) { const { _id } = parameter return handleFindByField(parameter, _id, 'monitor_behavior') } module.exports = { addMmonitorBehavior, deleteMmonitorBehavior, updateMmonitorBehavior, findMmonitorBehaviorPage, findMmonitorBehaviorById, }