diff --git a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj index 9644f87..977209b 100644 --- a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj +++ b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj @@ -17,6 +17,7 @@ + @@ -44,6 +45,7 @@ + diff --git a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters index b2ccef6..b77c246 100644 --- a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters +++ b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters @@ -80,6 +80,9 @@ {f51a3f4d-ff6f-4590-b123-b61afde72f0a} + + {7f951e1f-a198-4833-bbec-853de77c8cfe} + @@ -127,6 +130,9 @@ 数据\数据结构\用户信息 + + 数据\全局对象 + @@ -196,5 +202,8 @@ 数据\数据结构\用户信息 + + 数据\全局对象 + \ No newline at end of file diff --git a/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.cpp b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.cpp new file mode 100644 index 0000000..96da209 --- /dev/null +++ b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.cpp @@ -0,0 +1,4 @@ + +#include "AppParameters.h" + +UserInfo * pStaffInfo = nullptr; \ No newline at end of file diff --git a/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.h b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.h new file mode 100644 index 0000000..c6e545b --- /dev/null +++ b/代码/cpp/car_dealer_util/source/Data/AppParameters/AppParameters.h @@ -0,0 +1,7 @@ + +#pragma once + +#include +#include "../Datastructure/UserInfo/UserInfo.h" + +extern UserInfo * pStaffInfo; diff --git a/代码/cpp/car_dealer_util/source/Data/AppParameters/全局变量目录.txt b/代码/cpp/car_dealer_util/source/Data/AppParameters/全局变量目录.txt new file mode 100644 index 0000000..e69de29 diff --git a/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp b/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp index 8cd624c..5866219 100644 --- a/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp +++ b/代码/cpp/car_dealer_util/source/Data/query/query_user.cpp @@ -21,12 +21,12 @@ UserInfo queryUserInfo( const string & userName, int returnCode = 0; - otext szSqlQueryStaff[] = + string sqlQueryStaff = "SELECT a.staff_p13, a.staff_name, b.staff_post \n" "FROM staff_info a, \n" "staff_post_code b \n" "WHERE a.staff_post_code = b.staff_post_code \n" - "AND a.staff_p13 = :p13 "; + "AND a.staff_p13 = :p13"; returnCode = OCI_Initialize( l_error_handler, nullptr, OCI_ENV_DEFAULT ); @@ -56,16 +56,16 @@ UserInfo queryUserInfo( const string & userName, { pStmt = OCI_StatementCreate( pConn ); + OCI_Prepare(pStmt, sqlQueryStaff.c_str()); OCI_AllowRebinding( pStmt, true ); - OCI_Prepare( pStmt, szSqlQueryStaff ); - OCI_BindString( pStmt, ":p13", const_cast(staffP13.c_str()), staffP13.size() ); + OCI_Execute( pStmt ); - + pResult = OCI_GetResultset( pStmt ); //检查结果集,如果没有返回,则说明没有此用户 - if ( OCI_FetchFirst( pResult ) == false ) + if ( OCI_FetchNext( pResult ) == false ) { throw runtime_error( "用户不存在!" ); } diff --git a/代码/cpp/car_dealer_util/source/Data/query/query_user.h b/代码/cpp/car_dealer_util/source/Data/query/query_user.h index aa0c5f8..85c05f2 100644 --- a/代码/cpp/car_dealer_util/source/Data/query/query_user.h +++ b/代码/cpp/car_dealer_util/source/Data/query/query_user.h @@ -2,4 +2,9 @@ #pragma once #include +#include "../Datastructure/UserInfo/UserInfo.h" +UserInfo queryUserInfo( const std::string & userName, + const std::string & password, + const std::string & tnsName, + const std::string & staffP13 ); diff --git a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp index 5f90b80..7205f8f 100644 --- a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp +++ b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.cpp @@ -1,5 +1,12 @@ -#include "QLoginDialog.h" +#include +#include "QLoginDialog.h" #include "../../system/system_util.h" +#include "../../data/Datastructure/UserInfo/UserInfo.h" +#include "../../data/query/query_user.h" +#include "../../data/AppParameters/AppParameters.h" +#include + +using namespace std; QLoginDialog::QLoginDialog( QWidget * parent ) : QDialog( parent ) @@ -24,26 +31,40 @@ void QLoginDialog::initData() { returnCode = EXIT; - systemUserName = QString::fromStdWString(getUserName()); + systemUserName = QString::fromStdWString( getUserName() ); } void QLoginDialog::initSignal() { - connect(ui.pButtonOK, SIGNAL(clicked()), this, SLOT(onOK())); - connect(ui.pButtonExit, SIGNAL(clicked()), this, SLOT(onExit())); + connect( ui.pButtonOK, SIGNAL( clicked() ), this, SLOT( onOK() ) ); + connect( ui.pButtonExit, SIGNAL( clicked() ), this, SLOT( onExit() ) ); } void QLoginDialog::initWidgets() { setLayout( ui.pLayoutMain ); - ui.pEditSystemUserName->setText(systemUserName); + ui.pEditSystemUserName->setText( systemUserName ); + + try + { + queryStaffInfo( systemUserName ); + } + catch ( runtime_error & error ) + { + //如果出现异常,就不让用户继续登录 + QMessageBox::critical( nullptr, + "错误,请联系管理员!", + QString::fromLocal8Bit( error.what() ) ); + + ui.pButtonOK->setEnabled( false ); + } } void QLoginDialog::onOK() { returnCode = OK; - + this->close(); } @@ -53,3 +74,19 @@ void QLoginDialog::onExit() this->close(); } + +void QLoginDialog::queryStaffInfo( const QString & systemUserName ) +{ + string userName = "car_dealer"; + string password = "cpic123456"; + string tnsName = "xmcx1"; + + string staffP13 = systemUserName.toLocal8Bit(); + + UserInfo && info = queryUserInfo( userName, + password, + tnsName, + staffP13 ); + + pStaffInfo = new UserInfo( info ); +} diff --git a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h index b119ddb..b244a53 100644 --- a/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h +++ b/代码/cpp/car_dealer_util/source/widgets/LoginWidget/QLoginDialog.h @@ -27,6 +27,9 @@ protected Q_SLOTS: void onOK(); void onExit(); +private: + void queryStaffInfo( const QString & systemUserName ); + private: Ui::QLoginDialog ui; ReturnCode returnCode;