diff --git a/basedatamanager.cpp b/basedatamanager.cpp index 0a84a1a..5544b39 100644 --- a/basedatamanager.cpp +++ b/basedatamanager.cpp @@ -22,3 +22,8 @@ UserInfo BaseDataManager::Login(const QString &userName, const QString &password { return UserInfo(); } + +void BaseDataManager::GetTrends(QDate date,const QString& token) +{ + +} diff --git a/basedatamanager.h b/basedatamanager.h index f12e8d4..690745d 100644 --- a/basedatamanager.h +++ b/basedatamanager.h @@ -4,6 +4,7 @@ #include #include #include "structs.h" +#include class BaseDataManager : public QObject { @@ -14,6 +15,7 @@ public: virtual QPixmap GetVerificationCode(); virtual UserInfo Login(const QString& userName,const QString& password,const QString& code); + virtual void GetTrends(QDate date,const QString& token); signals: //请求结束 ret 返回值 0成功 非0失败 diff --git a/main.cpp b/main.cpp index d5f3419..8b5c008 100644 --- a/main.cpp +++ b/main.cpp @@ -20,6 +20,8 @@ int main(int argc, char *argv[]) if(login.exec() == QDialog::Accepted) { MainWindow w; + w.SetUserInfo(login.GetUserInfo()); + w.LoadTrendsData(); w.show(); return app.exec(); } diff --git a/mainwindow.cpp b/mainwindow.cpp index 93e4e10..179f39a 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -12,6 +12,7 @@ MainWindow::MainWindow(QWidget *parent) ui->setupUi(this); this->setWindowTitle("mojin"); InitTradeTable(); + m_UserData.SetManagerType(ManagerType::Ruoyi); } MainWindow::~MainWindow() @@ -24,6 +25,11 @@ void MainWindow::SetUserInfo(UserInfo user) m_UserInfo = user; } +void MainWindow::LoadTrendsData() +{ + m_UserData.GetTrends(QDate(),m_UserInfo.token); +} + void MainWindow::InitTradeTable() { // m_pTradesModel = new TradeTableModel(ui->tradeTableView); @@ -54,14 +60,14 @@ void MainWindow::on_addTrade_pushButton_clicked() AddTradeDialog ad; ad.setWindowTitle("添加记录"); ad.exec(); - for (int row = 0; row < 4; ++row) - { - m_pTradeStandardModel->insertRow(row); - for (int column = 0; column < 3; ++column) { - QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column)); - m_pTradeStandardModel->setItem(row, column, item); - } - } +// for (int row = 0; row < 4; ++row) +// { +// m_pTradeStandardModel->insertRow(row); +// for (int column = 0; column < 3; ++column) { +// QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column)); +// m_pTradeStandardModel->setItem(row, column, item); +// } +// } } diff --git a/mainwindow.h b/mainwindow.h index 389c511..8e72c18 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -3,6 +3,7 @@ #include #include "structs.h" +#include "userdata.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } @@ -18,6 +19,9 @@ public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); void SetUserInfo(UserInfo user); + //临时使用,后续需要重新创建 + void SetUserData(); + void LoadTrendsData(); private: void InitTradeTable(); @@ -28,6 +32,7 @@ private slots: private: Ui::MainWindow *ui; UserInfo m_UserInfo; + UserData m_UserData; // TradeTableModel* m_pTradesModel; QStandardItemModel* m_pTradeStandardModel; }; diff --git a/ruoyi/ruoyidatamanager.cpp b/ruoyi/ruoyidatamanager.cpp index a972884..da733c1 100644 --- a/ruoyi/ruoyidatamanager.cpp +++ b/ruoyi/ruoyidatamanager.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -72,6 +73,35 @@ UserInfo RuoyiDataManager::Login(const QString &userName, const QString &passwor return m_userInfo; } +void RuoyiDataManager::GetTrends(QDate date,const QString& token) +{ + QNetworkRequest request; + QString urlStr(m_sUrl + "/prod-api/stocksystem/trends/listSection"); + + QUrl url = QUrl(urlStr); + + QUrlQuery query; + query.addQueryItem("Token", token.toUtf8()); + query.addQueryItem("pageNum", "1"); + query.addQueryItem("pageSize", "10"); + query.addQueryItem("tradeDay", "2023-12-07"); + query.addQueryItem("type", "20"); + url.setQuery(query); + + request.setUrl(url); + request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json;charset=UTF-8"); + request.setRawHeader("Authorization",QString("Bearer %1").arg(token).toLocal8Bit()); + qDebug() << __FUNCTION__ << " rawHeader: " << QString("Bearer %1").arg(token).toLocal8Bit(); + + QNetworkReply *reply = m_pNetworkManager->get(request); + reply->setProperty("msgType",QVariant(int(GETTRENDS))); + connect(reply,&QNetworkReply::finished,this,&RuoyiDataManager::RequestFinished); + + QEventLoop loop; + connect(this, SIGNAL(ParseReplyFinished()), &loop, SLOT(quit())); + loop.exec(); +} + void RuoyiDataManager::RequestFinished() { QNetworkReply *reply = dynamic_cast< QNetworkReply* >(sender()); @@ -84,6 +114,10 @@ void RuoyiDataManager::RequestFinished() { ParseLogin(reply); } + else if(type == GETTRENDS) + { + ParseTrends(reply); + } emit ParseReplyFinished(); } @@ -160,3 +194,73 @@ void RuoyiDataManager::ParseLogin(QNetworkReply *reply) } } +void RuoyiDataManager::ParseTrends(QNetworkReply *reply) +{ + QByteArray readAllArray; + QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); + if(statusCode.isValid()) + { + qDebug() << "status code=" << statusCode.toInt(); + } + + QNetworkReply::NetworkError err = reply->error(); + if(err != QNetworkReply::NoError) + { + qDebug() << "Failed: " << reply->errorString(); + } + else + { + readAllArray = reply->readAll(); + qDebug() << __FUNCTION__ << readAllArray; +/** + * total: + * rows:[{title:2级行业,sortDataList:["煤炭","营销服务"]},{title:2023-12-07,sortDataList:["1","2"]}] + * msg:"" + * + * 第0行是第一列行业;title是列名 +*/ + QJsonParseError jsonError; + QJsonDocument document = QJsonDocument::fromJson(readAllArray,&jsonError); + if(jsonError.error == QJsonParseError::NoError && !document.isNull()) + { + QList< QList > rowsList; + QList dates; + int rowCounts = 0; + QJsonObject root = document.object(); + if(root.contains("total")) + { + qDebug() << __FUNCTION__ << root["total"]; + rowCounts = root["total"].toInt(); + } + if(root.contains("rows")) + { + QJsonArray rows = root["rows"].toArray(); + for(int i = 0 ; i < rowCounts; i++) + { + QJsonObject obj = rows[i].toObject(); + if(obj.contains("title")) + { + dates.append(obj["title"].toString()); + } + if(obj.contains("sortDataList")) + { + QList datasList; + QJsonArray datas = obj["sortDataList"].toArray(); + for(int c = 0 ; c < datas.count(); c++) + { + datasList.append(datas[c].toString()); + } + rowsList.append(datasList); + } + } + rowsList.prepend(dates); + } + qDebug() << __FUNCTION__ << rowsList; + } + else + { + qDebug() << __FUNCTION__ << __LINE__ << jsonError.errorString(); + } + } +} + diff --git a/ruoyi/ruoyidatamanager.h b/ruoyi/ruoyidatamanager.h index efb159d..4267d81 100644 --- a/ruoyi/ruoyidatamanager.h +++ b/ruoyi/ruoyidatamanager.h @@ -11,7 +11,8 @@ class RuoyiDataManager : public BaseDataManager enum MsgType { GETVERIFICATIONCODE = 0, - LOGIN + LOGIN, + GETTRENDS, }; public: @@ -20,6 +21,7 @@ public: QPixmap GetVerificationCode() override; UserInfo Login(const QString& userName,const QString& password,const QString& code) override; + void GetTrends(QDate date,const QString& token) override; public slots: void RequestFinished(); @@ -29,6 +31,7 @@ signals: private: void ParseVerificationCode(QNetworkReply* reply); void ParseLogin(QNetworkReply* reply); + void ParseTrends(QNetworkReply* reply); private: QNetworkAccessManager* m_pNetworkManager; diff --git a/treasurefinder_zh_CN.ts b/treasurefinder_zh_CN.ts index 8310a7a..2ab6959 100644 --- a/treasurefinder_zh_CN.ts +++ b/treasurefinder_zh_CN.ts @@ -107,6 +107,55 @@ + + LoginDialog + + + Dialog + + + + + Verification code + + + + + Password + + + + + UserName + + + + + admin + + + + + 1qazse42W3 + + + + + + Login + + + + + Cancel + + + + + Login Error. + + + MainWindow @@ -196,79 +245,79 @@ - + date 日期 日期 - + week 星期 星期 - + name 证券名称 证券名称 - + operate 操作 操作 - + operateprice 操作价格 操作价格 - + volume 操作数量 操作数量 - + remainig 剩余数量 剩余数量 - + operatechange 操作涨跌幅 操作涨跌幅 - + close 收盘价 收盘价 - + operateprofit 操作盈亏 操作盈亏 - + totalprofit 收盘盈亏 收盘盈亏 - + finalprofit 总盈亏 总盈亏 - + remark 备注 备注 diff --git a/userdata.cpp b/userdata.cpp index 3ee71f5..d1f94fc 100644 --- a/userdata.cpp +++ b/userdata.cpp @@ -42,3 +42,9 @@ UserInfo UserData::Login(const QString &userName, const QString &password, const else return m_pDataManager->Login(userName,password,code); } + +void UserData::GetTrends(QDate date, const QString &token) +{ + if(m_pDataManager != nullptr) + m_pDataManager->GetTrends(date,token); +} diff --git a/userdata.h b/userdata.h index 90f1670..c1cda15 100644 --- a/userdata.h +++ b/userdata.h @@ -17,6 +17,8 @@ public: QPixmap GetVerificationCode(); //登录 获取用户信息,同步等待 UserInfo Login(const QString& userName,const QString& password,const QString& code); + //获取trends + void GetTrends(QDate date,const QString& token); private: BaseDataManager* m_pDataManager; diff --git a/widget/logindialog.h b/widget/logindialog.h index 6ec312f..9429798 100644 --- a/widget/logindialog.h +++ b/widget/logindialog.h @@ -17,7 +17,7 @@ class LoginDialog : public QDialog public: explicit LoginDialog(QWidget *parent = nullptr); ~LoginDialog(); - + UserInfo GetUserInfo(){return m_UserInfo;} private: //加载验证码 void GetVerificationCode();