#ifndef NETWORKAPIMANAGER_H #define NETWORKAPIMANAGER_H #include #include #include #include #include "AttendanceRecord.h" #include "TimeSlotConfig.h" /** * @brief 网络API管理类 * * 负责与服务器端HTTP API通信(支持AES-128-CBC加密) * API端点:http://server_ip:8082/api/ */ class NetworkApiManager : public QObject { Q_OBJECT public: explicit NetworkApiManager(QObject *parent = nullptr); ~NetworkApiManager(); // 设置服务器地址 void setServerUrl(const QString &url); QString getServerUrl() const { return m_serverUrl; } // 设置是否启用加密通信 void setEncryptionEnabled(bool enabled) { m_encryptionEnabled = enabled; } bool isEncryptionEnabled() const { return m_encryptionEnabled; } // API调用 void fetchRecords(int limit = 100, int offset = 0); void fetchStatistics(); void clearAllRecords(); void deleteRecord(const QString ×tamp, const QString &studentId); void uploadTimeSlots(const QVector &timeSlots); void checkHealth(); // 映射配置API void uploadMappingConfig(const QMap &studentNameMap, const QMap &classNameMap); void fetchMappingConfig(); // 人脸照片管理API void fetchFacePhotos(); void fetchFacePhoto(const QString &faceId); void uploadFaceIdMapping(const QMap &mapping); void fetchFaceIdMapping(); signals: // 响应信号 void recordsFetched(const QVector &records); void statisticsFetched(int total, int today, const QString &serverTime); void recordsCleared(bool success); void recordDeleted(bool success); void timeSlotsUploaded(bool success); void healthChecked(bool healthy); void errorOccurred(const QString &error); // 映射配置信号 void mappingConfigUploaded(bool success); void mappingConfigFetched(const QMap &studentNameMap, const QMap &classNameMap); // 人脸照片管理信号 void facePhotosFetched(const QJsonArray &photos); void facePhotoFetched(const QString &faceId, const QByteArray &photoData); void faceIdMappingUploaded(bool success); void faceIdMappingFetched(const QMap &mapping); private slots: void onReplyFinished(QNetworkReply *reply); private: QNetworkAccessManager *m_networkManager; QString m_serverUrl; bool m_encryptionEnabled; // 是否启用加密通信 QString buildApiUrl(const QString &endpoint, const QMap ¶ms = QMap()); QVector parseRecordsJson(const QByteArray &json); // AES加密/解密功能 QByteArray aesDecrypt(const QByteArray &encryptedData); QByteArray removePKCS7Padding(const QByteArray &data); }; #endif // NETWORKAPIMANAGER_H