abnormal.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. const { models } = require('../db')
  2. const { validateField, handleAdd, handleUpdate, handleFindByField, handleDelete } = require('../common')
  3. /**
  4. *
  5. * 异常行为告警 表格 调 abnormal_behavior_alarm(异常行为报警)
  6. *
  7. * 字段展示 用户名 根据 异常行为报警表 user_id 去 老师表(wx_teacher_user)里查_id是否相同 相同取园所名称(name)
  8. * 学校名 —— school_id 根据 监异常行为报警表 school_id 去 老师表(wx_school)里查_id是否相同 相同取园所名称(name)
  9. * 课件名称 —— file_name
  10. * 异常行为 —— reason
  11. * 报警时间 —— createdAt
  12. *
  13. */
  14. /**
  15. * 新增异常行为告警
  16. * @param {*} file_name 课件名称
  17. * @param {*} reason 异常行为
  18. * @param {*} user_id 用户Id
  19. * @param {*} type 报警端: 0-教师 1-家长
  20. * @returns
  21. */
  22. async function addBehaviorAlarm(parameter) {
  23. const { file_name, reason, user_id, type } = parameter
  24. const v1 = validateField(file_name, 'file_name')
  25. if (!v1.flag) {
  26. return {
  27. success: false,
  28. msg: v1.msg
  29. }
  30. }
  31. const v2 = validateField(reason, 'reason')
  32. if (!v2.flag) {
  33. return {
  34. success: false,
  35. msg: v2.msg
  36. }
  37. }
  38. const v3 = validateField(user_id, 'user_id')
  39. if (!v3.flag) {
  40. return {
  41. success: false,
  42. msg: v3.msg
  43. }
  44. }
  45. const v4 = validateField(type, 'type')
  46. if (!v4.flag) {
  47. return {
  48. flag: false,
  49. msg: v4.msg
  50. }
  51. }
  52. const user = await models[type === 1 ? 'wx_user' : 'wx_teacher_user'].get({
  53. select: {
  54. school_id: true
  55. },
  56. filter: {
  57. where: {
  58. _id: {
  59. $eq: user_id
  60. }
  61. }
  62. }
  63. })
  64. const data = {
  65. file_name,
  66. reason,
  67. user_id,
  68. type,
  69. school_id: user.data.school_id,
  70. createdAt: new Date().getTime(),
  71. }
  72. return await handleAdd(parameter, data, 'abnormal_behavior_alarm')
  73. }
  74. /**
  75. * 根据Id删除商品规格
  76. * @param {*} _id 规格Id
  77. */
  78. async function deleteBehaviorAlarm(parameter) {
  79. const { _id } = parameter
  80. return handleDelete(parameter, _id, 'abnormal_behavior_alarm')
  81. }
  82. /**
  83. * 编辑异常行为告警
  84. * @param {*} _id 主键Id
  85. * @param {*} file_name 课件名称
  86. * @param {*} reason 异常行为
  87. * @param {*} user_id 用户Id
  88. * @param {*} type 报警端: 0-教师 1-家长
  89. * @param {*} id 团购Id
  90. * @returns
  91. */
  92. async function updateBehaviorAlarm(parameter) {
  93. const { _id, file_name, reason, user_id, type } = parameter
  94. const obj = {}
  95. const v0 = validateField(_id, '_id')
  96. if (!v0.flag) {
  97. return {
  98. success: false,
  99. msg: v0.msg
  100. }
  101. }
  102. const v1 = validateField(file_name, 'file_name')
  103. if (v1.flag) {
  104. obj.file_name = file_name
  105. }
  106. const v2 = validateField(reason, 'reason')
  107. if (v2.flag) {
  108. obj.reason = reason
  109. }
  110. const v3 = validateField(user_id, 'user_id')
  111. if (v3.flag) {
  112. obj.user_id = user_id
  113. }
  114. const v4 = validateField(type, 'type')
  115. if (v4.flag) {
  116. obj.type = type
  117. }
  118. return await handleUpdate(parameter, _id, obj, 'abnormal_behavior_alarm')
  119. }
  120. /**
  121. * 分页查询异常行为告警
  122. * @param {*} startTime 开始时间
  123. * @param {*} endTime 结束时间
  124. * @param {*} pageNum 当前页面
  125. * @param {*} pageSize 每页展示数量
  126. * @returns 分页数据
  127. */
  128. async function findBehaviorAlarmPage(parameter) {
  129. const { startTime, endTime, pageNum, pageSize } = parameter
  130. const v1 = validateField(pageNum)
  131. if (!v1.flag) {
  132. return {
  133. success: false,
  134. records: [],
  135. msg: v1.msg
  136. }
  137. }
  138. const v2 = validateField(pageSize)
  139. if (!v2.flag) {
  140. return {
  141. success: false,
  142. records: [],
  143. msg: v2.msg
  144. }
  145. }
  146. // 查询参数
  147. const params = {
  148. pageNum,
  149. pageSize
  150. }
  151. // 拼接查询条件
  152. let condition = " where aba.type = 0 "
  153. if (startTime != null && endTime != null) {
  154. condition += " and aba.createdAt >= {{startTime}} and aba.createdAt <= {{endTime}} "
  155. params.startTime = startTime
  156. params.endTime = endTime
  157. }
  158. const skip = (pageNum - 1) * pageSize
  159. // 查询sql
  160. const sql = "select " +
  161. "aba._id as id, " +
  162. "tu.name as yonghuming, " +
  163. "s.name as xuexiaomingcheng, " +
  164. "aba.file_name as kejianmingcheng, " +
  165. "aba.reason as yichangxingwei, " +
  166. "aba.type, " +
  167. "aba.createdAt " +
  168. "from abnormal_behavior_alarm aba " +
  169. "left join wx_teacher_user tu on aba.user_id = tu._id " +
  170. "left join wx_school s on tu.school_id = s._id " +
  171. condition +
  172. " order by createdAt desc " + "limit " + skip + ", " + pageSize
  173. const countSql = "select count(*) as total from abnormal_behavior_alarm aba " +
  174. "left join wx_teacher_user tu on aba.user_id = tu._id " +
  175. "left join wx_school s on tu.school_id = s._id " +
  176. condition
  177. try {
  178. // 查询数据sql
  179. const records = await models.$runSQL(sql, params)
  180. const count = await models.$runSQL(countSql, params)
  181. return {
  182. sql,
  183. countSql,
  184. params,
  185. success: true,
  186. msg: '查询成功',
  187. records: records.data.executeResultList,
  188. total: count.data.executeResultList[0].total
  189. }
  190. } catch (error) {
  191. return {
  192. success: false,
  193. msg: '查询失败',
  194. params,
  195. sql,
  196. countSql,
  197. error: error
  198. }
  199. }
  200. }
  201. /**
  202. * 根据Id查询
  203. * @param {*} _id Id
  204. */
  205. async function findBehaviorAlarmById(parameter) {
  206. const { _id } = parameter
  207. return handleFindByField(parameter, _id, 'abnormal_behavior_alarm')
  208. }
  209. module.exports = {
  210. addBehaviorAlarm,
  211. deleteBehaviorAlarm,
  212. updateBehaviorAlarm,
  213. findBehaviorAlarmPage,
  214. findBehaviorAlarmById,
  215. };