roomapi.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef ROOMAPI_H
  2. #define ROOMAPI_H
  3. #include "network/networkaccessmanager.h"
  4. #include "qjsonarray.h"
  5. #include <QMetaType>
  6. #include <QString>
  7. #include <QStringList>
  8. #include <optional>
  9. class RoomInfo
  10. {
  11. Q_GADGET
  12. Q_PROPERTY(std::optional<QString> id MEMBER id)
  13. Q_PROPERTY(std::optional<QString> name MEMBER name)
  14. Q_PROPERTY(std::optional<QString> description MEMBER description)
  15. Q_PROPERTY(std::optional<int> maxUsers MEMBER maxUsers)
  16. Q_PROPERTY(std::optional<qint64> status MEMBER status)
  17. Q_PROPERTY(std::optional<qint64> createdAt MEMBER createdAt)
  18. Q_PROPERTY(std::optional<qint64> updatedAt MEMBER updatedAt)
  19. Q_PROPERTY(std::optional<QString> createdId MEMBER createdId)
  20. Q_PROPERTY(std::optional<QString> ownerId MEMBER ownerId)
  21. public:
  22. RoomInfo() = default;
  23. std::optional<QString> id; // 房间当前id
  24. std::optional<QString> name; // 房间名
  25. std::optional<QString> description; // 房间的描述信息
  26. std::optional<int> maxUsers; // 最大用户数
  27. std::optional<qint64> status; // 1: normal 2: ban | 状态 1 正常 2 禁用
  28. std::optional<qint64> createdAt; // 创建日期
  29. std::optional<qint64> updatedAt; // 修改日期
  30. std::optional<QString> createdId; // 创建者
  31. std::optional<QString> ownerId; // 房主ID,关联用户表
  32. friend bool operator==(const RoomInfo &lhs, const RoomInfo &rhs)
  33. {
  34. return lhs.id == rhs.id && lhs.name == rhs.name && lhs.description == rhs.description
  35. && lhs.maxUsers == rhs.maxUsers && lhs.status == rhs.status
  36. && lhs.createdAt == rhs.createdAt && lhs.updatedAt == rhs.updatedAt
  37. && lhs.createdId == rhs.createdId && lhs.ownerId == rhs.ownerId;
  38. }
  39. };
  40. Q_DECLARE_METATYPE(RoomInfo)
  41. class RoomListData
  42. {
  43. Q_GADGET
  44. Q_PROPERTY(qint64 total MEMBER total)
  45. Q_PROPERTY(QList<RoomInfo> data MEMBER data)
  46. public:
  47. RoomListData() {}
  48. RoomListData(const QJsonObject &object);
  49. RoomListData(const RoomListData &other) = default;
  50. RoomListData &operator=(const RoomListData &other) = default;
  51. QList<RoomInfo> getRooms() const;
  52. private:
  53. qint64 total = 0;
  54. QList<RoomInfo> data;
  55. };
  56. Q_DECLARE_METATYPE(RoomListData)
  57. QFuture<HttpResponse> getRoomListApi(const RoomInfo &roomInfo = RoomInfo(),
  58. int page = 1,
  59. int pageSize = 100);
  60. #endif // ROOMAPI_H