roomapi.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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 RoomUserInfo
  45. {
  46. Q_GADGET
  47. Q_PROPERTY(QString userId MEMBER userId)
  48. Q_PROPERTY(QString userName MEMBER userName)
  49. Q_PROPERTY(QString clientId MEMBER clientId)
  50. public:
  51. RoomUserInfo() = default;
  52. QString userId; // 用户ID
  53. QString userName; // 用户名
  54. QString clientId; // 客户端ID
  55. friend bool operator==(const RoomUserInfo &lhs, const RoomUserInfo &rhs)
  56. {
  57. return lhs.userId == rhs.userId && lhs.userName == rhs.userName
  58. && lhs.clientId == rhs.clientId;
  59. }
  60. };
  61. Q_DECLARE_METATYPE(RoomUserInfo)
  62. class RoomListData
  63. {
  64. Q_GADGET
  65. Q_PROPERTY(qint64 total MEMBER total)
  66. Q_PROPERTY(QList<RoomInfo> data MEMBER data)
  67. public:
  68. RoomListData() {}
  69. RoomListData(const QJsonObject &object);
  70. RoomListData(const RoomListData &other) = default;
  71. RoomListData &operator=(const RoomListData &other) = default;
  72. QList<RoomInfo> getRooms() const;
  73. private:
  74. qint64 total = 0;
  75. QList<RoomInfo> data;
  76. };
  77. Q_DECLARE_METATYPE(RoomListData)
  78. class RoomUsersResp
  79. {
  80. Q_GADGET
  81. Q_PROPERTY(qint64 total MEMBER total)
  82. Q_PROPERTY(QList<RoomUserInfo> data MEMBER data)
  83. public:
  84. RoomUsersResp() {}
  85. RoomUsersResp(const QJsonObject &object);
  86. RoomUsersResp(const RoomUsersResp &other) = default;
  87. RoomUsersResp &operator=(const RoomUsersResp &other) = default;
  88. QList<RoomUserInfo> getRoomUsers() const;
  89. private:
  90. qint64 total = 0;
  91. QList<RoomUserInfo> data;
  92. };
  93. Q_DECLARE_METATYPE(RoomUsersResp)
  94. QFuture<HttpResponse> getRoomListApi(const RoomInfo &roomInfo = RoomInfo(),
  95. int page = 1,
  96. int pageSize = 100);
  97. QFuture<HttpResponse> getRoomApi(const QString &id);
  98. QFuture<HttpResponse> getRoomUsersApi(const QString &roomId);
  99. #endif // ROOMAPI_H