AddAttendanceItems.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. const API = require("../../lib/API");
  2. const { BaseStdResponse } = require("../../BaseStdResponse");
  3. const db = require("../../plugin/DataBase/db");
  4. const AccessControl = require("../../lib/AccessControl");
  5. class AddAttendanceItems extends API {
  6. constructor() {
  7. super();
  8. this.setPath('/Attendance');
  9. this.setMethod('POST');
  10. }
  11. async onRequest(data, res) {
  12. this.setAllowCORS(res);
  13. let {
  14. uuid,
  15. session,
  16. name,
  17. user,
  18. day_of_week,
  19. loopy,
  20. begintime,
  21. endtime,
  22. position,
  23. radius,
  24. address,
  25. admin
  26. } = data;
  27. // 检查必需的参数是否缺失
  28. if ([uuid, session, name, user, day_of_week, loopy, begintime, endtime, position, radius].some(value => value === '' || value === null || value === undefined)) {
  29. res.json({
  30. ...BaseStdResponse.MISSING_PARAMETER,
  31. endpoint: 1513123
  32. });
  33. return;
  34. }
  35. // 检查 session 是否有效
  36. if (!await AccessControl.checkSession(uuid, session)) {
  37. res.json({
  38. ...BaseStdResponse.ACCESS_DENIED,
  39. endpoint: 48153145
  40. });
  41. return;
  42. }
  43. // 确认权限
  44. let permission = await AccessControl.getPermission(uuid);
  45. if (!permission.includes('admin') && !permission.includes('manage')) {
  46. res.json({
  47. ...BaseStdResponse.PERMISSION_DENIED,
  48. endpoint: 481454
  49. });
  50. return;
  51. }
  52. user = user.split('|');
  53. admin = admin.split('|');
  54. let uuids, admins;
  55. try {
  56. uuids = await AccessControl.checkUser(user);
  57. admins = await AccessControl.checkUser(admin);
  58. } catch (error) {
  59. return res.json({
  60. ...BaseStdResponse.ERR,
  61. endpoint: 513513,
  62. msg: error.message
  63. });
  64. }
  65. // 插入数据
  66. const sql = `INSERT INTO kq_items (name, createUser, createTime, user, day_of_week, loopy, begintime, endtime, position, radius, address, admin)
  67. VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
  68. const values = [
  69. name,
  70. uuid,
  71. new Date().getTime(),
  72. JSON.stringify(uuids),
  73. day_of_week,
  74. loopy,
  75. begintime,
  76. endtime,
  77. JSON.stringify(position),
  78. radius,
  79. address,
  80. JSON.stringify(admins)
  81. ];
  82. try {
  83. const [result] = await db.query(sql, values);
  84. if (result.affectedRows !== 1) {
  85. res.json({
  86. ...BaseStdResponse.DATABASE_ERR,
  87. endpoint: 513513
  88. });
  89. return;
  90. }
  91. res.json({
  92. ...BaseStdResponse.OK
  93. });
  94. } catch (error) {
  95. res.json({
  96. ...BaseStdResponse.DATABASE_ERR,
  97. endpoint: 513513,
  98. msg: error.message
  99. });
  100. }
  101. }
  102. }
  103. module.exports.AddAttendanceItems = AddAttendanceItems;