GetMyAttendanceItems.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. const conn = db.getConnection();
  29. // 查询用户考勤项目
  30. const sqlGetItems = `
  31. SELECT id, name, user, day_of_week, loopy, begintime, endtime, address
  32. FROM kq_items
  33. WHERE JSON_CONTAINS(user, JSON_QUOTE(?), '$') ORDER BY id DESC
  34. `;
  35. const [items] = await conn.query(sqlGetItems, [uuid]);
  36. if (!items) {
  37. return res.json({
  38. ...BaseStdResponse.DATABASE_ERR,
  39. endpoint: 154754511
  40. });
  41. }
  42. // 查询用户考勤记录
  43. const sqlGetRecords = `
  44. SELECT id, uuid, project_id, time, commit
  45. FROM kq_records
  46. WHERE uuid = ?
  47. `;
  48. const [records] = await conn.query(sqlGetRecords, [uuid]);
  49. if (records === undefined) {
  50. return res.json({
  51. ...BaseStdResponse.DATABASE_ERR,
  52. endpoint: 154754511
  53. });
  54. }
  55. res.json({
  56. ...BaseStdResponse.OK,
  57. list: items,
  58. records: records
  59. });
  60. } catch (error) {
  61. res.json({
  62. ...BaseStdResponse.DATABASE_ERR,
  63. endpoint: 154754511
  64. });
  65. }
  66. }
  67. }
  68. module.exports.GetMyAttendanceItems = GetMyAttendanceItems;