GetMyAttendanceItems.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 GetMyAttendanceItems extends API {
  6. constructor() {
  7. super();
  8. this.setPath('/GetMyAttendanceItems');
  9. this.setMethod('GET');
  10. }
  11. async onRequest(req, res) {
  12. const { uuid, session } = req.query;
  13. // 检查必需的参数是否缺失
  14. if (!uuid || !session) {
  15. return res.json({
  16. ...BaseStdResponse.MISSING_PARAMETER,
  17. endpoint: 1513123
  18. });
  19. }
  20. // 检查 session 是否有效
  21. if (!await AccessControl.checkSession(uuid, session)) {
  22. return res.json({
  23. ...BaseStdResponse.ACCESS_DENIED,
  24. endpoint: 48153145
  25. });
  26. }
  27. try {
  28. // 查询用户考勤项目
  29. const sqlGetItems = `
  30. SELECT id, name, user, day_of_week, loopy, begintime, endtime, address
  31. FROM kq_items
  32. WHERE JSON_CONTAINS(user, JSON_QUOTE(?), '$') ORDER BY id DESC
  33. `;
  34. const items = await db.query(sqlGetItems, [uuid]);
  35. if (!items) {
  36. return res.json({
  37. ...BaseStdResponse.DATABASE_ERR,
  38. endpoint: 154766
  39. });
  40. }
  41. // 查询用户考勤记录
  42. const sqlGetRecords = `
  43. SELECT id, uuid, project_id, time, commit
  44. FROM kq_records
  45. WHERE uuid = ?
  46. `;
  47. const records = await db.query(sqlGetRecords, [uuid]);
  48. if (records === undefined) {
  49. return res.json({
  50. ...BaseStdResponse.DATABASE_ERR,
  51. endpoint: 154756
  52. });
  53. }
  54. res.json({
  55. ...BaseStdResponse.OK,
  56. list: items,
  57. records: records
  58. });
  59. } catch (error) {
  60. res.json({
  61. ...BaseStdResponse.DATABASE_ERR,
  62. endpoint: 154754
  63. });
  64. }
  65. }
  66. }
  67. module.exports.GetMyAttendanceItems = GetMyAttendanceItems;