DeleteAttendanceItem.js 2.9 KB

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