const { models } = require('../db') const { validateField, handleAdd, handleUpdate, handleFindByField, handleDelete } = require('../common') /** * * 异常行为告警 表格 调 abnormal_behavior_alarm(异常行为报警) * * 字段展示 用户名 根据 异常行为报警表 user_id 去 老师表(wx_teacher_user)里查_id是否相同 相同取园所名称(name) * 学校名 —— school_id 根据 监异常行为报警表 school_id 去 老师表(wx_school)里查_id是否相同 相同取园所名称(name) * 课件名称 —— file_name * 异常行为 —— reason * 报警时间 —— createdAt * */ /** * 新增异常行为告警 * @param {*} file_name 课件名称 * @param {*} reason 异常行为 * @param {*} user_id 用户Id * @param {*} type 报警端: 0-教师 1-家长 * @returns */ async function addBehaviorAlarm(parameter) { const { file_name, reason, user_id, type } = parameter const v1 = validateField(file_name, 'file_name') if (!v1.flag) { return { success: false, msg: v1.msg } } const v2 = validateField(reason, 'reason') if (!v2.flag) { return { success: false, msg: v2.msg } } const v3 = validateField(user_id, 'user_id') if (!v3.flag) { return { success: false, msg: v3.msg } } const v4 = validateField(type, 'type') if (!v4.flag) { return { flag: false, msg: v4.msg } } const user = await models[type === 1 ? 'wx_user' : 'wx_teacher_user'].get({ select: { school_id: true }, filter: { where: { _id: { $eq: user_id } } } }) const data = { file_name, reason, user_id, type, school_id: user.data.school_id, createdAt: new Date().getTime(), } return await handleAdd(parameter, data, 'abnormal_behavior_alarm') } /** * 根据Id删除商品规格 * @param {*} _id 规格Id */ async function deleteBehaviorAlarm(parameter) { const { _id } = parameter return handleDelete(parameter, _id, 'abnormal_behavior_alarm') } /** * 编辑异常行为告警 * @param {*} _id 主键Id * @param {*} file_name 课件名称 * @param {*} reason 异常行为 * @param {*} user_id 用户Id * @param {*} type 报警端: 0-教师 1-家长 * @param {*} id 团购Id * @returns */ async function updateBehaviorAlarm(parameter) { const { _id, file_name, reason, user_id, type } = parameter const obj = {} const v0 = validateField(_id, '_id') if (!v0.flag) { return { success: false, msg: v0.msg } } const v1 = validateField(file_name, 'file_name') if (v1.flag) { obj.file_name = file_name } const v2 = validateField(reason, 'reason') if (v2.flag) { obj.reason = reason } const v3 = validateField(user_id, 'user_id') if (v3.flag) { obj.user_id = user_id } const v4 = validateField(type, 'type') if (v4.flag) { obj.type = type } return await handleUpdate(parameter, _id, obj, 'abnormal_behavior_alarm') } /** * 分页查询异常行为告警 * @param {*} startTime 开始时间 * @param {*} endTime 结束时间 * @param {*} pageNum 当前页面 * @param {*} pageSize 每页展示数量 * @returns 分页数据 */ async function findBehaviorAlarmPage(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 = " where aba.type = 0 " if (startTime != null && endTime != null) { condition += " and aba.createdAt >= {{startTime}} and aba.createdAt <= {{endTime}} " params.startTime = startTime params.endTime = endTime } const skip = (pageNum - 1) * pageSize // 查询sql const sql = "select " + "aba._id as id, " + "tu.name as yonghuming, " + "s.name as xuexiaomingcheng, " + "aba.file_name as kejianmingcheng, " + "aba.reason as yichangxingwei, " + "aba.type, " + "aba.createdAt " + "from abnormal_behavior_alarm aba " + "left join wx_teacher_user tu on aba.user_id = tu._id " + "left join wx_school s on tu.school_id = s._id " + condition + " order by createdAt desc " + "limit " + skip + ", " + pageSize const countSql = "select count(*) as total from abnormal_behavior_alarm aba " + "left join wx_teacher_user tu on aba.user_id = tu._id " + "left join wx_school s on tu.school_id = s._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 findBehaviorAlarmById(parameter) { const { _id } = parameter return handleFindByField(parameter, _id, 'abnormal_behavior_alarm') } module.exports = { addBehaviorAlarm, deleteBehaviorAlarm, updateBehaviorAlarm, findBehaviorAlarmPage, findBehaviorAlarmById, };