DeleteAttendanceItem.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 DeleteAttendanceItem extends API {
  6. constructor() {
  7. super();
  8. this.setPath('/Attendance');
  9. this.setMethod('DELETE');
  10. }
  11. async onRequest(data, res) {
  12. this.setAllowCORS(res);
  13. let {
  14. uuid,
  15. session,
  16. project_id
  17. } = data;
  18. // 检查必需的参数是否缺失
  19. if ([uuid, session, project_id].some(value => value === '' || value === null || value === undefined)) {
  20. res.json({
  21. ...BaseStdResponse.MISSING_PARAMETER,
  22. endpoint: 1513123
  23. });
  24. return;
  25. }
  26. // 检查 session 是否有效
  27. if (!await AccessControl.checkSession(uuid, session)) {
  28. res.json({
  29. ...BaseStdResponse.ACCESS_DENIED,
  30. endpoint: 48153145
  31. });
  32. return;
  33. }
  34. // 获取考勤项目
  35. const sqlGetProject = 'SELECT user, createUser, begintime, loopy, day_of_week, admin FROM kq_items WHERE id = ?';
  36. let [projectResult] = await db.query(sqlGetProject, [project_id]);
  37. if (!projectResult || projectResult.length === 0) {
  38. res.json({
  39. ...BaseStdResponse.DATABASE_ERR,
  40. endpoint: 154754511
  41. });
  42. return;
  43. }
  44. let projectData = projectResult[0];
  45. // 检查用户权限
  46. let permission = await AccessControl.getPermission(uuid);
  47. if (projectData.createUser !== uuid && !permission.includes('admin') && !Array.isArray(projectData.admin) && !JSON.parse(projectData.admin).includes(uuid)) {
  48. res.json({
  49. ...BaseStdResponse.PERMISSION_DENIED,
  50. endpoint: 481454,
  51. msg: '你不是该考勤项目管理员,无操作权限'
  52. });
  53. return;
  54. }
  55. // 删除考勤项目
  56. const sqlDeleteProject = 'DELETE FROM kq_items WHERE id = ?';
  57. let [deleteResult] = await db.query(sqlDeleteProject, [project_id]);
  58. if (deleteResult.affectedRows !== 1) {
  59. res.json({
  60. ...BaseStdResponse.DATABASE_ERR,
  61. endpoint: 513513
  62. });
  63. return;
  64. }
  65. // 删除考勤记录
  66. const sqlDeleteRecords = 'DELETE FROM kq_records WHERE project_id = ?';
  67. let [deleteRecordsResult] = await db.query(sqlDeleteRecords, [project_id]);
  68. if (!deleteRecordsResult) {
  69. res.json({
  70. ...BaseStdResponse.DATABASE_ERR,
  71. endpoint: 513513
  72. });
  73. return;
  74. }
  75. res.json({
  76. ...BaseStdResponse.OK
  77. });
  78. }
  79. }
  80. module.exports.DeleteAttendanceItem = DeleteAttendanceItem;