| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include "sncdatabase.h"
- #include "WSSSO.h"
- #include "wscube.h"
- #include "respgetsysaccount.h"
- #include "respgetsysparam.h"
- #include "respgetmfsysparam.h"
- #include "dialogbindsystem.h"
- #include "respgetservertime.h"
- #include "respencrypt.h"
- #include "respssoheartbeat.h"
- #include "dialogabout.h"
- #include "dialoglogin.h"
- #include "dialogregister.h"
- MainWindow::MainWindow(bool istest, QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"MainWindow Creating.";
- ui->setupUi(this);
- setStartMode(istest);
- initVariables();
- initUI();
- //updateSSOSrvParam();
- //updateCubeSrvParam();
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"MainWindow Created.";
- }
- void MainWindow::initVariables()
- {
- int intervals = SNCDataBase::getSrvParam("sso").value("heartBeatTime","30").toInt();
- if(intervals==0)
- {
- intervals = 30;
- }
- m_timer = new QTimer();
- connect(m_timer,SIGNAL(timeout()),this,SLOT(onTimeOut()));
- m_timer->start(intervals * 1000);
- m_ssoManage = 0;
- m_iscloseing = false;
- m_formCube = new FormCube();
- m_formRiddle = new FormRiddle();
- connect(m_formRiddle,SIGNAL(buttonLoginClick()),this,SLOT(onPushButtonLoginClick()));
- m_formSHUNSHI = new FormNumCheck();
- connect(m_formSHUNSHI,SIGNAL(buttonLoginClick()),this,SLOT(onPushButtonLoginClick()));
- m_formSHUNSHI->setClientID("sskh");
- m_formZxsh = new FormZxsh();
- connect(m_formZxsh,SIGNAL(buttonLoginClick()),this,SLOT(onPushButtonLoginClick()));
- m_formMINGYUAN = new FormNumCheck();
- connect(m_formMINGYUAN,SIGNAL(buttonLoginClick()),this,SLOT(onPushButtonLoginClick()));
- m_formMINGYUAN->setClientID("mykh");
- m_formWool = new FormWool();
- connect(m_formWool,SIGNAL(buttonLoginClick()),this,SLOT(onPushButtonLoginClick()));
- m_labelAppVersion = new QLabel(" 主程序版本:"+SNCDataBase::getAppVersion2()+" ");
- m_labelSegVersion = new ClickLabel();
- m_labelSegVersion->setText(" 号段版本:正在检查更新...");
- connect(m_labelSegVersion,SIGNAL(clicked()),this,SLOT(onSegNewVersionFound()));
- m_labelWelcome = new QLabel("欢迎您,请");
- m_widgetAccount = new QWidget();
- m_layout = new QHBoxLayout();
- m_spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- m_buttonGroup = new QButtonGroup();
- QStringList btnNames;
- btnNames<<"号码魔方"<<"实号快检"<<"实号快‘拣’"<<"智能号码检测"<<"关于";
- //btnNames<<"号码魔方"<<"实号快检"<<"实号快‘拣’"<<"智能号码检测"<<"防薅羊毛检测"<<"关于";
- QStringList btnIcons;
- //btnIcons<<":/snc.png"<<":/riddle.png"<<":/zxsh.png"
- // <<":/shunshi.png"<<":/wool.png"<<":/about.png";
- btnIcons<<":/snc.png"<<":/riddle.png"<<":/zxsh.png"
- <<":/shunshi.png"<<":/about.png";
- for(int i=0;i<btnNames.size();i++)
- {
- QToolButton *button = new QToolButton();
- button->setIcon(QIcon(btnIcons.at(i)));
- //button->setText(btnNames.at(i));
- button->setText(QString::fromLocal8Bit(btnNames.at(i).toLocal8Bit())); //mod by wzx 解决中文出现乱码问题
- button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- button->setCheckable(true);
- button->setMinimumWidth(120);
- button->setMaximumWidth(120);
- ui->toolBar->addWidget(button);
- connect(button,SIGNAL(clicked()),this,SLOT(onToolButtonClick()));
- m_toolButtons.append(button);
- if(i<=5)
- m_buttonGroup->addButton(button);
- }
- m_pushButtonLogin = new QPushButton("登录");
- m_pushButtonReg = new QPushButton("用户注册");
- m_pushButtonAccount = new QPushButton("账户信息");
- m_pushButtonLogout = new QPushButton("注销");
- m_dialogUpdate = new DialogUpdateSeg(this);
- connect(m_dialogUpdate,SIGNAL(segUpdated()),this,SLOT(onSegUpdated()));
- connect(m_dialogUpdate,SIGNAL(segNewVersionFound()),this,SLOT(onSegNewVersionFound()));
- connect(m_pushButtonLogin,SIGNAL(clicked()),this,SLOT(onPushButtonLoginClick()));
- connect(m_pushButtonReg,SIGNAL(clicked()),this,SLOT(onPushButtonRegClick()));
- connect(m_pushButtonLogout,SIGNAL(clicked()),this,SLOT(onPushButtonLogoutClick()));
- connect(m_pushButtonAccount,SIGNAL(clicked()),this,SLOT(onPushButtonAccountClick()));
- connect(m_dialogUpdate,SIGNAL(segUpdated()),m_formSHUNSHI,SLOT(onSyncResume()));
- connect(m_dialogUpdate,SIGNAL(segNewVersionFound()),m_formSHUNSHI,SLOT(onSyncPause()));
- connect(m_dialogUpdate,SIGNAL(segUpdated()),m_formMINGYUAN,SLOT(onSyncResume()));
- connect(m_dialogUpdate,SIGNAL(segNewVersionFound()),m_formMINGYUAN,SLOT(onSyncPause()));
- connect(m_dialogUpdate,SIGNAL(segUpdated()),m_formRiddle,SLOT(onSyncResume()));
- connect(m_dialogUpdate,SIGNAL(segNewVersionFound()),m_formRiddle,SLOT(onSyncPause()));
- connect(m_dialogUpdate,SIGNAL(segUpdated()),m_formWool,SLOT(onSyncResume()));
- connect(m_dialogUpdate,SIGNAL(segNewVersionFound()),m_formWool,SLOT(onSyncPause()));
- m_autoLogin = new AutoLogin();
- connect(m_autoLogin,SIGNAL(autoLoginOK(QMap<QString,QString>)),this,SLOT(onAutoLoginOK(QMap<QString,QString>)));
- m_autoLogin->start();
- //modify by xxw on 2014-10-19 for performance and dynamic
- m_autodownload = new AutoDownload();
- m_autodownload->setMode(m_istest);
- m_autodownload->start();
- }
- void MainWindow::initUI()
- {
- ui->verticalLayout->addWidget(m_formCube);
- ui->verticalLayout->addWidget(m_formSHUNSHI);
- ui->verticalLayout->addWidget(m_formMINGYUAN);
- ui->verticalLayout->addWidget(m_formZxsh);
- ui->verticalLayout->addWidget(m_formRiddle);
- ui->verticalLayout->addWidget(m_formWool);
- ui->verticalLayout->setSpacing(0);
- ui->statusBar->setLayoutDirection(Qt::RightToLeft);
- ui->statusBar->addWidget(m_labelAppVersion);
- ui->statusBar->addWidget(m_labelSegVersion);
- m_labelWelcome->setAlignment(Qt::AlignRight|Qt::AlignCenter);
- m_labelWelcome->setStyleSheet("QLabel{;font:12px;font-weight: bold;}");
- m_widgetAccount->setMinimumWidth(280);
- ui->toolBar->addWidget(m_widgetAccount);
- m_widgetAccount->setLayout(m_layout);
- m_layout->addItem(m_spacer);
- m_layout->addWidget(m_labelWelcome);
- m_layout->addWidget(m_pushButtonLogin);
- m_layout->addWidget(m_pushButtonReg);
- m_layout->addWidget(m_pushButtonLogout);
- m_layout->addWidget(m_pushButtonAccount);
- m_pushButtonLogin->setProperty("class","txt-green-bold");
- m_pushButtonReg->setProperty("class","txt-green-bold");
- m_pushButtonAccount->setProperty("class","txt-green-bold");
- m_pushButtonLogout->setProperty("class","txt-green-bold");
- m_pushButtonLogin->setVisible(true);
- m_pushButtonReg->setVisible(true);
- m_pushButtonLogout->setVisible(false);
- m_pushButtonAccount->setVisible(false);
- m_pushButtonLogin->setCursor(Qt::PointingHandCursor);
- m_pushButtonReg->setCursor(Qt::PointingHandCursor);
- m_pushButtonAccount->setCursor(Qt::PointingHandCursor);
- m_pushButtonLogout->setCursor(Qt::PointingHandCursor);
- m_formCube->show();
- m_formSHUNSHI->hide();
- m_formMINGYUAN->hide();
- m_formRiddle->hide();
- m_formZxsh->hide();
- m_formWool->hide();
- m_toolButtons[0]->setChecked(true);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"MainWindow Destroyed.";
- }
- void MainWindow::onSegNewVersionFound()
- {
- m_dialogUpdate->show();
- m_dialogUpdate->updateSegment();
- }
- void MainWindow::logout()
- {
- m_labelWelcome->setText("欢迎您,请");
- m_pushButtonLogin->setVisible(true);
- m_pushButtonReg->setVisible(true);
- m_pushButtonLogout->setVisible(false);
- m_pushButtonAccount->setVisible(false);
- QMap<QString,QString> nothing;
- m_formRiddle->setAccountInfo(nothing);
- m_formZxsh->setAccountInfo(nothing);
- m_formSHUNSHI->setAccountInfo(nothing);
- m_formMINGYUAN->setAccountInfo(nothing);
- m_formWool->setAccountInfo(nothing);
- WSSSO sso;
- QString src = "mf-" + SNCDataBase::getAppVersion();
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"SSO Logout:"<<sso.userLogout(m_ssoHash,src,SNCDataBase::getAppHash());
- m_ssoHash = "";
- m_accountInfo.clear();
- }
- void MainWindow::onSegUpdated()
- {
- m_labelSegVersion->setText(" 号段版本:<font color=red>"+SNCDataBase::getSegVersion()+"</font> ");
- }
- void MainWindow::showUpdateDialog()
- {
- m_dialogUpdate->show();
- }
- void MainWindow::closeEvent(QCloseEvent *event)
- {
- if(m_iscloseing)
- {
- event->ignore();
- qDebug()<<"closing";
- return;
- }
- m_iscloseing = true;
- QSplashScreen *splash = new QSplashScreen;
- QString splashname = QDir::tempPath()+"/speednumcube/splash.jpg";
- QPixmap pixmap(splashname);
- if(pixmap.height()>100 && pixmap.width()>100)
- {
- splash->setPixmap(pixmap);
- }
- else
- {
- splash->setPixmap(QPixmap(SNCDataBase::getSplashImageName()));
- }
- splash->setEnabled(false);
- splash->show();
- if(!m_ssoHash.isEmpty())
- {
- splash->showMessage(QObject::tr("正在关闭服务..."),Qt::AlignRight | Qt::AlignTop,SNCDataBase::getSplashTextColor());
- m_formRiddle->stopService();
- m_formSHUNSHI->stopService();
- m_formMINGYUAN->stopService();
- splash->showMessage(QObject::tr("正在注销..."),Qt::AlignRight | Qt::AlignTop,SNCDataBase::getSplashTextColor());
- logout();
- }
- splash->showMessage(QObject::tr("正在关闭..."),Qt::AlignRight | Qt::AlignTop,SNCDataBase::getSplashTextColor());
- m_autoLogin->wait();
- m_timer->stop();
- delete m_autoLogin;
- delete m_timer;
- delete m_dialogUpdate;
- delete m_formCube;
- delete m_formSHUNSHI;
- delete m_formMINGYUAN;
- delete m_formRiddle;
- delete m_formZxsh;
- delete m_formWool;
- delete m_buttonGroup;
- for(int i=0;i<m_toolButtons.size();i++)
- {
- delete m_toolButtons[i];
- }
- delete m_pushButtonLogin;
- delete m_pushButtonReg;
- delete m_pushButtonAccount;
- delete m_pushButtonLogout;
- delete splash;
- event->accept();
- }
- void MainWindow::setStartMode(bool istest)
- {
- m_istest = istest;
- }
- void MainWindow::onAccountInfoUpdated(QMap<QString, QString> shunshi, QMap<QString, QString> mingyuan)
- {
- if(m_ssoManage)
- {
- m_ssoManage->wait();
- delete m_ssoManage;
- }
- shunshi.insert("ssohash",m_ssoHash);
- mingyuan.insert("ssohash",m_ssoHash);
- m_formSHUNSHI->setAccountInfo(shunshi);
- m_formMINGYUAN->setAccountInfo(mingyuan);
- }
- void MainWindow::onSSOLoginSucceed(QMap<QString, QString> info)
- {
- m_accountInfo = info;
- m_ssoHash = info.value("ssohash");
- m_labelWelcome->setText("欢迎您,"+info.value("usercode"));
- m_pushButtonLogin->setVisible(false);
- m_pushButtonReg->setVisible(false);
- m_pushButtonLogout->setVisible(true);
- m_pushButtonAccount->setVisible(true);
- m_ssoManage = new SSOManage(m_ssoHash);
- //add by xxw on 2015-3-23 为了实现自动登录后 能够切换界面
- if(m_formSHUNSHI->isVisible()||m_formMINGYUAN->isVisible())
- {
- m_formSHUNSHI->hide();
- m_formMINGYUAN->hide();
- QString corp = SNCDataBase::getDefaultNumchkCorp();
- if(corp=="shunshi"||corp.isEmpty())
- m_formSHUNSHI->show();
- else
- m_formMINGYUAN->show();
- }
- connect(m_ssoManage,SIGNAL(accountInfoUpdated(QMap<QString,QString>,QMap<QString,QString>)),
- this,SLOT(onAccountInfoUpdated(QMap<QString,QString>,QMap<QString,QString>)));
- m_ssoManage->start();
- m_formRiddle->setAccountInfo(m_accountInfo);
- m_formZxsh->setAccountInfo(m_accountInfo);
- m_formWool->setAccountInfo(m_accountInfo);
- }
- void MainWindow::onAutoLoginOK(QMap<QString,QString> accountInfo)
- {
- onSSOLoginSucceed(accountInfo);
- }
- void MainWindow::onTimeOut()
- {
- if(m_ssoHash.isEmpty())
- return ;
- QString apphash = SNCDataBase::getAppHash();
- QString src = "mf-"+SNCDataBase::getAppVersion();
- WSSSO client;
- QString json = client.heartBeat(m_ssoHash,src,m_refreshStamp,apphash);
- if(!json.isEmpty()){
- RespSSOHeartBeat response(json);
- int rtCode = response.getRtnCode();
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"SSO HeartBeat:"<<response.getRtnCode();
- if(rtCode == 0)
- {
- if(!m_iscloseing)
- {
- QMessageBox::critical(this,"提示","您的登陆凭据已经失效,系统自动下线!",QMessageBox::Ok);
- logout();
- }
- }
- else if(rtCode == -1)
- {
- QMessageBox::critical(this,"提示","您已经在别处登录,系统自动下线!",QMessageBox::Ok);
- logout();
- }
- else if(rtCode == 1)
- {
- QString refreshParam = response.getRefreshParam();
- m_refreshStamp = response.getRefreshStamp();
- if(refreshParam.left(1)=="1")
- {
- m_formRiddle->updateUserState();
- }
- }
- }
- }
- void MainWindow::onToolButtonClick()
- {
- QToolButton *btn = qobject_cast<QToolButton*>(sender());
- QString name = btn->text();
- if(name=="关于")
- {
- DialogAbout about;
- about.exec();
- btn->setChecked(false);
- }
- else
- {
- m_formCube->hide();
- m_formSHUNSHI->hide();
- m_formMINGYUAN->hide();
- m_formRiddle->hide();
- m_formZxsh->hide();
- m_formWool->hide();
- if(name=="号码魔方")
- {
- m_formCube->show();
- }
- else if(name=="实号快检")
- {
- m_formRiddle->show();
- }
- else if(name=="实号快‘拣’")
- {
- m_formZxsh->show();
- }
- else if(name=="智能号码检测")
- {
- QString corp = SNCDataBase::getDefaultNumchkCorp();
- if(corp=="shunshi"||corp.isEmpty())
- m_formSHUNSHI->show();
- else
- m_formMINGYUAN->show();
- }
- else if(name=="防薅羊毛检测")
- {
- m_formWool->show();
- }
- }
- }
- void MainWindow::onPushButtonLoginClick()
- {
- DialogLogin dialogLogin(this);
- connect(&dialogLogin,SIGNAL(ssoLoginSucceed(QMap<QString,QString>)),this,SLOT(onSSOLoginSucceed(QMap<QString,QString>)));
- dialogLogin.exec();
- }
- void MainWindow::onPushButtonRegClick()
- {
- DialogRegister dialog(this);
- dialog.exec();
- }
- void MainWindow::onPushButtonLogoutClick()
- {
- if(QMessageBox::Yes !=QMessageBox::question(NULL,"确认","是否注销?",QMessageBox::Yes,QMessageBox::No))
- {
- return ;
- }
- m_formRiddle->stopService();
- m_formSHUNSHI->stopService();
- m_formMINGYUAN->stopService();
- logout();
- }
- void MainWindow::onPushButtonAccountClick()
- {
- WSSSO sso;
- QString json = sso.encrypt(m_ssoHash);
- RespEncrypt resp1(json);
- QString data = resp1.getEncryptData();
- json = sso.getServerTime();
- RespGetServerTime resp2(json);
- QString authCode;
- QByteArray ba;
- QString str = SNCDataBase::getAuthCodeUrl().arg(resp2.getServerTime().mid(0,16));
- ba = QCryptographicHash::hash ( str.toAscii(), QCryptographicHash::Md5 );
- authCode.append(ba.toHex());
- QString url = SNCDataBase::getSSOAccountUrl() + "?s=mf&r="+authCode+"&u="+data+"&p=index";
- QDesktopServices::openUrl(QUrl(url));
- }
- //void MainWindow::updateCubeSrvParam()
- //{
- // QString src = "mf-" + SNCDataBase::getAppVersion();
- // QString authCode;
- // QByteArray ba;
- // QString str = src + SNCDataBase::getAuthCodeSyspara();
- // ba = QCryptographicHash::hash ( str.toAscii(), QCryptographicHash::Md5 );
- // authCode.append(ba.toHex());
- // WSCube cube;
- // QString json2 = cube.getSysParam(src,authCode);
- // if(!json2.isEmpty())
- // {
- // RespGetMfSysParam response2(json2);
- // qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- // <<"WSCube.getSysParam"<<response2.getRtnCode();
- // SNCDataBase::updateSrvParam("cube",response2.getRs());
- // }
- //}
- //void MainWindow::updateSSOSrvParam()
- //{
- // QString src = "mf-" + SNCDataBase::getAppVersion();
- // QString authCode;
- // QByteArray ba;
- // QString str = src + SNCDataBase::getAuthCodeSeg();
- // ba = QCryptographicHash::hash ( str.toAscii(), QCryptographicHash::Md5 );
- // authCode.append(ba.toHex());
- // WSSSO interface;
- // QString json = interface.getSysParam(src,authCode);
- // if(!json.isEmpty())
- // {
- // RespGetSysParam response(json);
- // qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- // <<"WSSSO.getSysParam"<<response.getRtnCode();
- // SNCDataBase::updateSrvParam("sso",response.getRs());
- // }
- //}
|