#ifndef ROOMAPI_H #define ROOMAPI_H #include "network/networkaccessmanager.h" #include "qjsonarray.h" #include #include #include #include class RoomInfo { Q_GADGET Q_PROPERTY(std::optional id MEMBER id) Q_PROPERTY(std::optional name MEMBER name) Q_PROPERTY(std::optional description MEMBER description) Q_PROPERTY(std::optional maxUsers MEMBER maxUsers) Q_PROPERTY(std::optional status MEMBER status) Q_PROPERTY(std::optional liveStatus MEMBER liveStatus) Q_PROPERTY(std::optional createdAt MEMBER createdAt) Q_PROPERTY(std::optional updatedAt MEMBER updatedAt) Q_PROPERTY(std::optional createdId MEMBER createdId) Q_PROPERTY(std::optional ownerId MEMBER ownerId) public: RoomInfo() = default; std::optional id; // 房间当前id std::optional name; // 房间名 std::optional description; // 房间的描述信息 std::optional maxUsers; // 最大用户数 std::optional status; // 1: normal 2: ban | 状态 1 正常 2 禁用 std::optional liveStatus; // 直播状态 状态 0 未使用 1 在线 2 不在线 std::optional createdAt; // 创建日期 std::optional updatedAt; // 修改日期 std::optional createdId; // 创建者 std::optional ownerId; // 房主ID,关联用户表 friend bool operator==(const RoomInfo &lhs, const RoomInfo &rhs) { return lhs.id == rhs.id && lhs.name == rhs.name && lhs.description == rhs.description && lhs.maxUsers == rhs.maxUsers && lhs.status == rhs.status && lhs.liveStatus == rhs.liveStatus && lhs.createdAt == rhs.createdAt && lhs.updatedAt == rhs.updatedAt && lhs.createdId == rhs.createdId && lhs.ownerId == rhs.ownerId; } }; Q_DECLARE_METATYPE(RoomInfo) class RoomUserInfo { Q_GADGET Q_PROPERTY(QString userId MEMBER userId) Q_PROPERTY(QString userName MEMBER userName) Q_PROPERTY(QString clientId MEMBER clientId) public: RoomUserInfo() = default; QString userId; // 用户ID QString userName; // 用户名 QString clientId; // 客户端ID friend bool operator==(const RoomUserInfo &lhs, const RoomUserInfo &rhs) { return lhs.userId == rhs.userId && lhs.userName == rhs.userName && lhs.clientId == rhs.clientId; } }; Q_DECLARE_METATYPE(RoomUserInfo) class RoomListData { Q_GADGET Q_PROPERTY(qint64 total MEMBER total) Q_PROPERTY(QList data MEMBER data) public: RoomListData() {} RoomListData(const QJsonObject &object); RoomListData(const RoomListData &other) = default; RoomListData &operator=(const RoomListData &other) = default; QList getRooms() const; private: qint64 total = 0; QList data; }; Q_DECLARE_METATYPE(RoomListData) class RoomUsersResp { Q_GADGET Q_PROPERTY(qint64 total MEMBER total) Q_PROPERTY(QList data MEMBER data) public: RoomUsersResp() {} RoomUsersResp(const QJsonObject &object); RoomUsersResp(const RoomUsersResp &other) = default; RoomUsersResp &operator=(const RoomUsersResp &other) = default; QList getRoomUsers() const; private: qint64 total = 0; QList data; }; Q_DECLARE_METATYPE(RoomUsersResp) QFuture getRoomListApi(const RoomInfo &roomInfo = RoomInfo(), int page = 1, int pageSize = 100); QFuture getRoomApi(const QString &id); QFuture getRoomUsersApi(const QString &roomId); #endif // ROOMAPI_H