roomapi.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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<int> status MEMBER status)
  17. Q_PROPERTY(std::optional<int> liveStatus MEMBER liveStatus)
  18. Q_PROPERTY(std::optional<qint64> createdAt MEMBER createdAt)
  19. Q_PROPERTY(std::optional<qint64> updatedAt MEMBER updatedAt)
  20. Q_PROPERTY(std::optional<QString> createdId MEMBER createdId)
  21. Q_PROPERTY(std::optional<QString> ownerId MEMBER ownerId)
  22. public:
  23. RoomInfo() = default;
  24. std::optional<QString> id; // 房间当前id
  25. std::optional<QString> name; // 房间名
  26. std::optional<QString> description; // 房间的描述信息
  27. std::optional<int> maxUsers; // 最大用户数
  28. std::optional<int> status; // 1: normal 2: ban | 状态 1 正常 2 禁用
  29. std::optional<int> liveStatus; // 直播状态 状态 0 未使用 1 在线 2 不在线
  30. std::optional<qint64> createdAt; // 创建日期
  31. std::optional<qint64> updatedAt; // 修改日期
  32. std::optional<QString> createdId; // 创建者
  33. std::optional<QString> ownerId; // 房主ID,关联用户表
  34. friend bool operator==(const RoomInfo &lhs, const RoomInfo &rhs)
  35. {
  36. return lhs.id == rhs.id && lhs.name == rhs.name && lhs.description == rhs.description
  37. && lhs.maxUsers == rhs.maxUsers && lhs.status == rhs.status
  38. && lhs.liveStatus == rhs.liveStatus && lhs.createdAt == rhs.createdAt
  39. && lhs.updatedAt == rhs.updatedAt && lhs.createdId == rhs.createdId
  40. && lhs.ownerId == rhs.ownerId;
  41. }
  42. };
  43. Q_DECLARE_METATYPE(RoomInfo)
  44. class RoomListData
  45. {
  46. Q_GADGET
  47. Q_PROPERTY(qint64 total MEMBER total)
  48. Q_PROPERTY(QList<RoomInfo> data MEMBER data)
  49. public:
  50. RoomListData() {}
  51. RoomListData(const QJsonObject &object);
  52. RoomListData(const RoomListData &other) = default;
  53. RoomListData &operator=(const RoomListData &other) = default;
  54. QList<RoomInfo> getRooms() const;
  55. private:
  56. qint64 total = 0;
  57. QList<RoomInfo> data;
  58. };
  59. Q_DECLARE_METATYPE(RoomListData)
  60. QFuture<HttpResponse> getRoomListApi(const RoomInfo &roomInfo = RoomInfo(),
  61. int page = 1,
  62. int pageSize = 100);
  63. QFuture<HttpResponse> getRoomApi(const QString &id);
  64. #endif // ROOMAPI_H