gradesapi.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef GRADESAPI_H
  2. #define GRADESAPI_H
  3. #include <QObject>
  4. #include "requestthreadpool.h"
  5. namespace TC {
  6. class GradesUpdate : public QObject
  7. {
  8. Q_OBJECT
  9. public:
  10. struct Data
  11. {
  12. bool success;
  13. QString message;
  14. };
  15. GradesUpdate();
  16. GradesUpdate(const QString &answerFileName,
  17. const QString &checkinNumber,
  18. int endTime,
  19. const QString &examRoom,
  20. const QString &examSessions,
  21. const QString &examText,
  22. const QString &examineNumber,
  23. const QString &groupName,
  24. const QString &name,
  25. int onlineStatus,
  26. const QString &schoolAddress,
  27. const QString &schoolName,
  28. int sex,
  29. int startTime,
  30. int status,
  31. const QString &swId);
  32. // 同步版本
  33. Data post();
  34. // 异步版本 - 添加到线程池中执行
  35. void postAsync(std::function<void(const Data&)> callback = nullptr, int maxRetries = 3);
  36. QString url;
  37. QByteArray postData;
  38. };
  39. // GradesUpdate 请求任务类
  40. class GradesUpdateTask : public RequestTask
  41. {
  42. Q_OBJECT
  43. public:
  44. GradesUpdateTask(const QString &url, const QByteArray &postData, std::function<void(const GradesUpdate::Data&)> callback = nullptr);
  45. void run() override;
  46. bool retry() override;
  47. private:
  48. QString m_url;
  49. QByteArray m_postData;
  50. std::function<void(const GradesUpdate::Data&)> m_callback;
  51. };
  52. } // namespace TC
  53. #endif // GRADESAPI_H