diff --git a/TreasureFinder.pro b/TreasureFinder.pro index 40f401e..c62e47d 100644 --- a/TreasureFinder.pro +++ b/TreasureFinder.pro @@ -17,10 +17,11 @@ SOURCES += \ mainwindow.cpp \ model/tradetablemodel.cpp \ ruoyi/ruoyidatamanager.cpp \ + widget/trendwidget.cpp \ userdata.cpp \ widget/addtradedialog.cpp \ widget/logindialog.cpp \ - widget/trendswidget.cpp + widget/trends.cpp HEADERS += \ basedatamanager.h \ @@ -28,16 +29,18 @@ HEADERS += \ model/tradetablemodel.h \ ruoyi/ruoyidatamanager.h \ structs.h \ + widget/trendwidget.h \ userdata.h \ widget/addtradedialog.h \ widget/logindialog.h \ - widget/trendswidget.h + widget/trends.h FORMS += \ mainwindow.ui \ + widget/trendwidget.ui \ widget/addtradedialog.ui \ widget/logindialog.ui \ - widget/trendswidget.ui + widget/trends.ui win32-msvc2010 { SPEC = win32-msvc2010 diff --git a/basedatamanager.cpp b/basedatamanager.cpp index 3171e14..10cae2b 100644 --- a/basedatamanager.cpp +++ b/basedatamanager.cpp @@ -23,7 +23,7 @@ UserInfo BaseDataManager::Login(const QString &userName, const QString &password return UserInfo(); } -QList > BaseDataManager::GetTrends(QDate date,const QString& token) +QList > BaseDataManager::GetTrends(const TrendsRequestParam& requestParam) { return QList >(); } diff --git a/basedatamanager.h b/basedatamanager.h index 951accd..e037b53 100644 --- a/basedatamanager.h +++ b/basedatamanager.h @@ -15,7 +15,7 @@ public: virtual QPixmap GetVerificationCode(); virtual UserInfo Login(const QString& userName,const QString& password,const QString& code); - virtual QList > GetTrends(QDate date,const QString& token); + virtual QList > GetTrends(const TrendsRequestParam& requestParam); signals: //请求结束 ret 返回值 0成功 非0失败 diff --git a/main.cpp b/main.cpp index 8e276fc..ac46b75 100644 --- a/main.cpp +++ b/main.cpp @@ -26,7 +26,7 @@ int main(int argc, char *argv[]) { MainWindow w; w.SetUserInfo(login.GetUserInfo()); - w.LoadTrendsData(); +// w.LoadTrendsData(); QUIHelper::setFormInCenter(&login); w.show(); return app.exec(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 3a05ece..a3c0fa6 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -17,7 +17,8 @@ MainWindow::MainWindow(QWidget *parent) InitStyle(); this->installEventFilter(this); InitTradeTable(); - m_UserData.SetManagerType(ManagerType::Ruoyi); +// m_UserData.SetManagerType(ManagerType::Ruoyi); + m_UserData = UserData::Instanse(); } MainWindow::~MainWindow() diff --git a/mainwindow.h b/mainwindow.h index 00d62d2..134362c 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -48,7 +48,7 @@ private slots: private: Ui::MainWindow *ui; UserInfo m_UserInfo; - UserData m_UserData; + UserData* m_UserData; // TradeTableModel* m_pTradesModel; QStandardItemModel* m_pTradeStandardModel; diff --git a/mainwindow.ui b/mainwindow.ui index 373bdbd..e170b61 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -443,7 +443,7 @@ - + @@ -461,9 +461,9 @@ - TrendsWidget + Trends QWidget -
widget/trendswidget.h
+
widget/trends.h
1
diff --git a/ruoyi/ruoyidatamanager.cpp b/ruoyi/ruoyidatamanager.cpp index b29c3e6..b160db5 100644 --- a/ruoyi/ruoyidatamanager.cpp +++ b/ruoyi/ruoyidatamanager.cpp @@ -73,7 +73,7 @@ UserInfo RuoyiDataManager::Login(const QString &userName, const QString &passwor return m_userInfo; } -QList > RuoyiDataManager::GetTrends(QDate date,const QString& token) +QList > RuoyiDataManager::GetTrends(const TrendsRequestParam& requestParam) { QNetworkRequest request; QString urlStr(m_sUrl + "/prod-api/stocksystem/trends/listSection"); @@ -81,17 +81,17 @@ QList > RuoyiDataManager::GetTrends(QDate date,const QString& tok 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"); + query.addQueryItem("Token", requestParam.token.toUtf8()); + query.addQueryItem("pageNum", requestParam.pageNum); + query.addQueryItem("pageSize", requestParam.pageSize); + query.addQueryItem("tradeDay", requestParam.tradeDay); + query.addQueryItem("type", requestParam.period); 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(); + request.setRawHeader("Authorization",QString("Bearer %1").arg(requestParam.token).toLocal8Bit()); + qDebug() << __FUNCTION__ << " rawHeader: " << QString("Bearer %1").arg(requestParam.token).toLocal8Bit(); QNetworkReply *reply = m_pNetworkManager->get(request); reply->setProperty("msgType",QVariant(int(GETTRENDS))); diff --git a/ruoyi/ruoyidatamanager.h b/ruoyi/ruoyidatamanager.h index cc87deb..73f6446 100644 --- a/ruoyi/ruoyidatamanager.h +++ b/ruoyi/ruoyidatamanager.h @@ -21,7 +21,7 @@ public: QPixmap GetVerificationCode() override; UserInfo Login(const QString& userName,const QString& password,const QString& code) override; - QList > GetTrends(QDate date,const QString& token) override; + QList > GetTrends(const TrendsRequestParam& requestParam) override; public slots: void RequestFinished(); diff --git a/structs.h b/structs.h index ee09904..393b8c0 100644 --- a/structs.h +++ b/structs.h @@ -19,4 +19,22 @@ typedef struct tagUserInfo QPixmap codePix; }UserInfo; +typedef struct tagTrendsRequstParam +{ + QString period;//"1","3","5","10","15","20,"30",查询周期 + QString tradeDay;//交易日 + QString token; + QString pageNum;//页码 + QString pageSize;//页数量 + + tagTrendsRequstParam() + { + period = ""; + tradeDay = "2023-12-01"; + token = ""; + pageNum = "1"; + pageSize = "10"; + } +}TrendsRequestParam; + #endif // STRUCTS_H diff --git a/userdata.cpp b/userdata.cpp index e105f7c..829d98b 100644 --- a/userdata.cpp +++ b/userdata.cpp @@ -1,11 +1,23 @@ #include "userdata.h" #include "ruoyi/ruoyidatamanager.h" +UserData* UserData::g_UserData = nullptr; + UserData::UserData() { m_pDataManager = nullptr; } +UserData *UserData::Instanse() +{ + if(g_UserData == nullptr) + { + g_UserData = new UserData; + g_UserData->SetManagerType(Ruoyi); + } + return g_UserData; +} + UserData::~UserData() { if(m_pDataManager) @@ -43,9 +55,14 @@ UserInfo UserData::Login(const QString &userName, const QString &password, const return m_pDataManager->Login(userName,password,code); } -QList > UserData::GetTrends(QDate date, const QString &token) +QList > UserData::GetTrends(const TrendsRequestParam& requestParam) { if(m_pDataManager != nullptr) - return m_pDataManager->GetTrends(date,token); + return m_pDataManager->GetTrends(requestParam); return QList >(); } + +void UserData::AddTradeRecord() +{ + +} diff --git a/userdata.h b/userdata.h index 2aae7c4..f147f16 100644 --- a/userdata.h +++ b/userdata.h @@ -10,17 +10,22 @@ class UserData : public QObject { Q_OBJECT public: - UserData(); - ~UserData(); + static UserData* Instanse(); void SetManagerType(ManagerType type); //获取验证码图片;可选 QPixmap GetVerificationCode(); //登录 获取用户信息,同步等待 UserInfo Login(const QString& userName,const QString& password,const QString& code); //获取trends - QList > GetTrends(QDate date,const QString& token); + QList > GetTrends(const TrendsRequestParam& requestParam); + //添加交易记录 + void AddTradeRecord(); private: + UserData(); + ~UserData(); +private: + static UserData* g_UserData; BaseDataManager* m_pDataManager; }; diff --git a/widget/addtradedialog.cpp b/widget/addtradedialog.cpp index 5c99ee3..60f88ac 100644 --- a/widget/addtradedialog.cpp +++ b/widget/addtradedialog.cpp @@ -2,6 +2,7 @@ #include "ui_addtradedialog.h" #include #include +#include "userdata.h" AddTradeDialog::AddTradeDialog(QWidget *parent) : QDialog(parent), @@ -17,6 +18,7 @@ AddTradeDialog::~AddTradeDialog() void AddTradeDialog::on_pushButton_OK_clicked() { + UserData::Instanse()->AddTradeRecord(); this->accept(); } diff --git a/widget/logindialog.cpp b/widget/logindialog.cpp index 2699aa3..5ee43bb 100644 --- a/widget/logindialog.cpp +++ b/widget/logindialog.cpp @@ -19,7 +19,7 @@ LoginDialog::LoginDialog(QWidget *parent) : Init(); InitStyle(); this->installEventFilter(this); - m_UserData.SetManagerType(ManagerType::Ruoyi); + m_UserData = UserData::Instanse(); GetVerificationCode(); } @@ -127,13 +127,13 @@ void LoginDialog::on_btnMenu_Close_clicked() void LoginDialog::GetVerificationCode() { - QPixmap pix = m_UserData.GetVerificationCode(); + QPixmap pix = m_UserData->GetVerificationCode(); ui->label_code->setPixmap(pix.scaledToHeight(34)); } void LoginDialog::on_pushButton_login_clicked() { - m_UserInfo = m_UserData.Login(ui->username->text(),ui->password->text(),ui->code->text()); + m_UserInfo = m_UserData->Login(ui->username->text(),ui->password->text(),ui->code->text()); qDebug() << __FUNCTION__ << " login finished: "<< m_UserInfo.userName << m_UserInfo.token << m_UserInfo.uuid; if(m_UserInfo.token.isEmpty()) { diff --git a/widget/logindialog.h b/widget/logindialog.h index c45c07d..01c874e 100644 --- a/widget/logindialog.h +++ b/widget/logindialog.h @@ -43,7 +43,7 @@ private: QString &highColor); private: Ui::LoginDialog *ui; - UserData m_UserData; + UserData* m_UserData; UserInfo m_UserInfo; //根据QSS样式获取对应颜色值 diff --git a/widget/trends.cpp b/widget/trends.cpp new file mode 100644 index 0000000..9e77c73 --- /dev/null +++ b/widget/trends.cpp @@ -0,0 +1,61 @@ +#include "trends.h".h" +#include "ui_trends.h" +#include +#include +#include +#include "trendwidget.h" + +Trends::Trends(QWidget *parent) : + QWidget(parent), + ui(new Ui::Trends) +{ + ui->setupUi(this); + m_UserData = UserData::Instanse(); + ui->periodCombo->addItems(QStringList() << "1" << "3" << "5" << "10" << "15" << "20" << "30"); + ui->periodCombo->setCurrentText("20"); + this->LoadTrendsData(); + connect(ui->periodCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(periodCombo_currentIndexChanged(int))); +} + +Trends::~Trends() +{ + delete ui; +} + +void Trends::SetUserInfo(UserInfo user) +{ + m_UserInfo = user; +} + +void Trends::LoadTrendsData() +{ + TrendsRequestParam param; + param.token = m_UserInfo.token; + param.period = ui->periodCombo->currentText(); + param.tradeDay = ui->tradeDay->text(); + if(param.period.isEmpty() || param.token.isEmpty() || param.tradeDay.isEmpty()) + { + return; + } + TrendWidget* trend; + if(trendsMap.contains(param.period)) + { + ui->stackedWidget->setCurrentWidget(trendsMap[param.period]); + trend = trendsMap[param.period]; + } + else + { + //创建新的 + trend = new TrendWidget; + trend->setObjectName(param.period); + trendsMap.insert(param.period,trend); + ui->stackedWidget->addWidget(trend); + } + trend->LoadTrendsData(param); +} + +void Trends::periodCombo_currentIndexChanged(int index) +{ + LoadTrendsData(); +} + diff --git a/widget/trends.h b/widget/trends.h new file mode 100644 index 0000000..c1f887c --- /dev/null +++ b/widget/trends.h @@ -0,0 +1,33 @@ +#ifndef TRENDS_H +#define TRENDS_H + +#include +#include "userdata.h" +#include + +namespace Ui { +class Trends; +} + +class TrendWidget; +class Trends : public QWidget +{ + Q_OBJECT + +public: + explicit Trends(QWidget *parent = nullptr); + ~Trends(); + void SetUserInfo(UserInfo user); + void LoadTrendsData(); + +private slots: + void periodCombo_currentIndexChanged(int index); + +private: + Ui::Trends *ui; + UserData* m_UserData; + UserInfo m_UserInfo; + QMap trendsMap;// +}; + +#endif // TRENDS_H diff --git a/widget/trends.ui b/widget/trends.ui new file mode 100644 index 0000000..07c1af8 --- /dev/null +++ b/widget/trends.ui @@ -0,0 +1,94 @@ + + + Trends + + + + 0 + 0 + 1440 + 647 + + + + Form + + + + + + + + + + + + period + + + + + + + + + + trade_date + + + + + + + + 2023 + 12 + 1 + + + + yyyy-MM-dd + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + Tab 1 + + + + + Tab 2 + + + + + + + + + diff --git a/widget/trendswidget.h b/widget/trendswidget.h deleted file mode 100644 index 7b37bcd..0000000 --- a/widget/trendswidget.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef TRENDSWIDGET_H -#define TRENDSWIDGET_H - -#include -#include "userdata.h" -#include - -namespace Ui { -class TrendsWidget; -} - -class TrendsWidget : public QWidget -{ - Q_OBJECT - -public: - explicit TrendsWidget(QWidget *parent = nullptr); - ~TrendsWidget(); - //临时使用,后续需要重新创建 - void SetUserData(); - void SetUserInfo(UserInfo user); - void LoadTrendsData(); - -private: - Ui::TrendsWidget *ui; - UserData m_UserData; - UserInfo m_UserInfo; -}; - -#endif // TRENDSWIDGET_H diff --git a/widget/trendswidget.ui b/widget/trendswidget.ui deleted file mode 100644 index e85f81c..0000000 --- a/widget/trendswidget.ui +++ /dev/null @@ -1,45 +0,0 @@ - - - TrendsWidget - - - - 0 - 0 - 1440 - 647 - - - - Form - - - - - - - 16777215 - 16777215 - - - - - - - - - Tab 1 - - - - - Tab 2 - - - - - - - - - diff --git a/widget/trendswidget.cpp b/widget/trendwidget.cpp similarity index 80% rename from widget/trendswidget.cpp rename to widget/trendwidget.cpp index 17e7eaa..7a69f4a 100644 --- a/widget/trendswidget.cpp +++ b/widget/trendwidget.cpp @@ -1,36 +1,38 @@ -#include "trendswidget.h" -#include "ui_trendswidget.h" +#include "trendwidget.h" +#include "ui_trendwidget.h" #include -#include -#include -TrendsWidget::TrendsWidget(QWidget *parent) : +TrendWidget::TrendWidget(QWidget *parent) : QWidget(parent), - ui(new Ui::TrendsWidget) + ui(new Ui::TrendWidget) { ui->setupUi(this); - m_UserData.SetManagerType(ManagerType::Ruoyi); + m_UserData = UserData::Instanse(); } -TrendsWidget::~TrendsWidget() +TrendWidget::~TrendWidget() { delete ui; } -void TrendsWidget::SetUserData() -{ - -} - -void TrendsWidget::SetUserInfo(UserInfo user) +void TrendWidget::SetUserInfo(UserInfo user) { m_UserInfo = user; } -void TrendsWidget::LoadTrendsData() +void TrendWidget::LoadTrendsData(const TrendsRequestParam ¶m) { - QList > trends = m_UserData.GetTrends(QDate(),m_UserInfo.token); - + if(param.period == m_TrendParam.period && param.tradeDay == m_TrendParam.tradeDay && param.token == m_TrendParam.token) + { + return; + } + if(param.period.isEmpty()) + { + return; + } + ui->tableWidget->clear(); + m_TrendParam = param; + QList > trends = m_UserData->GetTrends(param); int rowCount = trends.count(); int columnCount = 0; //更新到tableview中 diff --git a/widget/trendwidget.h b/widget/trendwidget.h new file mode 100644 index 0000000..3f7e016 --- /dev/null +++ b/widget/trendwidget.h @@ -0,0 +1,28 @@ +#ifndef TRENDWIDGET_H +#define TRENDWIDGET_H + +#include +#include "userdata.h" + +namespace Ui { +class TrendWidget; +} + +class TrendWidget : public QWidget +{ + Q_OBJECT + +public: + explicit TrendWidget(QWidget *parent = nullptr); + ~TrendWidget(); + void SetUserInfo(UserInfo user); + void LoadTrendsData(const TrendsRequestParam& param); + +private: + Ui::TrendWidget *ui; + UserData* m_UserData; + UserInfo m_UserInfo; + TrendsRequestParam m_TrendParam; +}; + +#endif // TRENDWIDGET_H diff --git a/widget/trendwidget.ui b/widget/trendwidget.ui new file mode 100644 index 0000000..7d997c6 --- /dev/null +++ b/widget/trendwidget.ui @@ -0,0 +1,31 @@ + + + TrendWidget + + + + 0 + 0 + 839 + 639 + + + + Form + + + + + + + 16777215 + 16777215 + + + + + + + + +