laixingyu 2 years ago
commit 7d63d14b68

@ -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

@ -23,7 +23,7 @@ UserInfo BaseDataManager::Login(const QString &userName, const QString &password
return UserInfo();
}
QList<QList<QString> > BaseDataManager::GetTrends(QDate date,const QString& token)
QList<QList<QString> > BaseDataManager::GetTrends(const TrendsRequestParam& requestParam)
{
return QList<QList<QString> >();
}

@ -15,7 +15,7 @@ public:
virtual QPixmap GetVerificationCode();
virtual UserInfo Login(const QString& userName,const QString& password,const QString& code);
virtual QList<QList<QString> > GetTrends(QDate date,const QString& token);
virtual QList<QList<QString> > GetTrends(const TrendsRequestParam& requestParam);
signals:
//请求结束 ret 返回值 0成功 非0失败

@ -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();

@ -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()

@ -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;

@ -443,7 +443,7 @@
</item>
</layout>
</widget>
<widget class="TrendsWidget" name="trendsPage"/>
<widget class="Trends" name="trendsPage"/>
<widget class="QWidget" name="limitPage"/>
<widget class="QWidget" name="newRecordPage"/>
</widget>
@ -461,9 +461,9 @@
</widget>
<customwidgets>
<customwidget>
<class>TrendsWidget</class>
<class>Trends</class>
<extends>QWidget</extends>
<header location="global">widget/trendswidget.h</header>
<header location="global">widget/trends.h</header>
<container>1</container>
</customwidget>
</customwidgets>

@ -73,7 +73,7 @@ UserInfo RuoyiDataManager::Login(const QString &userName, const QString &passwor
return m_userInfo;
}
QList<QList<QString> > RuoyiDataManager::GetTrends(QDate date,const QString& token)
QList<QList<QString> > RuoyiDataManager::GetTrends(const TrendsRequestParam& requestParam)
{
QNetworkRequest request;
QString urlStr(m_sUrl + "/prod-api/stocksystem/trends/listSection");
@ -81,17 +81,17 @@ QList<QList<QString> > 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)));

@ -21,7 +21,7 @@ public:
QPixmap GetVerificationCode() override;
UserInfo Login(const QString& userName,const QString& password,const QString& code) override;
QList<QList<QString> > GetTrends(QDate date,const QString& token) override;
QList<QList<QString> > GetTrends(const TrendsRequestParam& requestParam) override;
public slots:
void RequestFinished();

@ -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

@ -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<QList<QString> > UserData::GetTrends(QDate date, const QString &token)
QList<QList<QString> > UserData::GetTrends(const TrendsRequestParam& requestParam)
{
if(m_pDataManager != nullptr)
return m_pDataManager->GetTrends(date,token);
return m_pDataManager->GetTrends(requestParam);
return QList<QList<QString> >();
}
void UserData::AddTradeRecord()
{
}

@ -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<QList<QString> > GetTrends(QDate date,const QString& token);
QList<QList<QString> > GetTrends(const TrendsRequestParam& requestParam);
//添加交易记录
void AddTradeRecord();
private:
UserData();
~UserData();
private:
static UserData* g_UserData;
BaseDataManager* m_pDataManager;
};

@ -2,6 +2,7 @@
#include "ui_addtradedialog.h"
#include <QMessageBox>
#include <QDebug>
#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();
}

@ -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())
{

@ -43,7 +43,7 @@ private:
QString &highColor);
private:
Ui::LoginDialog *ui;
UserData m_UserData;
UserData* m_UserData;
UserInfo m_UserInfo;
//根据QSS样式获取对应颜色值

@ -0,0 +1,61 @@
#include "trends.h".h"
#include "ui_trends.h"
#include <QDebug>
#include <QTableWidgetItem>
#include <QColor>
#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();
}

@ -0,0 +1,33 @@
#ifndef TRENDS_H
#define TRENDS_H
#include <QWidget>
#include "userdata.h"
#include <QStandardItemModel>
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<QString,TrendWidget*> trendsMap;//<period,widget>
};
#endif // TRENDS_H

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Trends</class>
<widget class="QWidget" name="Trends">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1440</width>
<height>647</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="7,4">
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>period</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="periodCombo"/>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>trade_date</string>
</property>
</widget>
</item>
<item>
<widget class="QDateTimeEdit" name="tradeDay">
<property name="date">
<date>
<year>2023</year>
<month>12</month>
<day>1</day>
</date>
</property>
<property name="displayFormat">
<string>yyyy-MM-dd</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QStackedWidget" name="stackedWidget"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTabWidget" name="tabWidget">
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -1,30 +0,0 @@
#ifndef TRENDSWIDGET_H
#define TRENDSWIDGET_H
#include <QWidget>
#include "userdata.h"
#include <QStandardItemModel>
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

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TrendsWidget</class>
<widget class="QWidget" name="TrendsWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1440</width>
<height>647</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="6,4">
<item>
<widget class="QTableWidget" name="tableWidget">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QTabWidget" name="tabWidget">
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -1,36 +1,38 @@
#include "trendswidget.h"
#include "ui_trendswidget.h"
#include "trendwidget.h"
#include "ui_trendwidget.h"
#include <QDebug>
#include <QTableWidgetItem>
#include <QColor>
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 &param)
{
QList<QList<QString> > 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<QList<QString> > trends = m_UserData->GetTrends(param);
int rowCount = trends.count();
int columnCount = 0;
//更新到tableview中

@ -0,0 +1,28 @@
#ifndef TRENDWIDGET_H
#define TRENDWIDGET_H
#include <QWidget>
#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

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TrendWidget</class>
<widget class="QWidget" name="TrendWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>839</width>
<height>639</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTableWidget" name="tableWidget">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
Loading…
Cancel
Save