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(req, res) {
  12. let {
  13. uuid,
  14. session,
  15. name,
  16. user,
  17. day_of_week,
  18. loopy,
  19. begintime,
  20. endtime,
  21. position,
  22. radius,
  23. address,
  24. admin
  25. } = req.body;
  26. // 检查必需的参数是否缺失
  27. if ([uuid, session, name, user, day_of_week, loopy, begintime, endtime, position, radius].some(value => value === '' || value === null || value === undefined)) {
  28. res.json({
  29. ...BaseStdResponse.MISSING_PARAMETER,
  30. endpoint: 1513123
  31. });
  32. return;
  33. }
  34. // 检查 session 是否有效
  35. if (!await AccessControl.checkSession(uuid, session)) {
  36. res.json({
  37. ...BaseStdResponse.ACCESS_DENIED,
  38. endpoint: 48153145
  39. });
  40. return;
  41. }
  42. // 确认权限
  43. let permission = await AccessControl.getPermission(uuid);
  44. if (!permission.includes('admin') && !permission.includes('manage')) {
  45. res.json({
  46. ...BaseStdResponse.PERMISSION_DENIED,
  47. endpoint: 481454
  48. });
  49. return;
  50. }
  51. user = user.split('|');
  52. admin = admin.split('|');
  53. let uuids = [], admins = [];
  54. try {
  55. uuids = await AccessControl.checkUser(user);
  56. if(admin != '')
  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;