Commit 6bed3d8d by NitefullWind

1. 使用定时器处理网络超时。 2. 数据库备份打印更多错误信息。

parent a7ea91b5
...@@ -56,6 +56,11 @@ bool FMBackup::createTable(const QString &dbname) ...@@ -56,6 +56,11 @@ bool FMBackup::createTable(const QString &dbname)
QSqlQuery query(_db); QSqlQuery query(_db);
// 创建表 // 创建表
bool isOk = query.exec("create table tbl_req(id integer primary key, url varchar(100), req text)"); bool isOk = query.exec("create table tbl_req(id integer primary key, url varchar(100), req text)");
qDebug() << "创建数据库:" << dbname;
if (!isOk) {
qDebug() << "创建数据库失败:" << query.lastError().text();
}
return isOk; return isOk;
} }
...@@ -77,13 +82,18 @@ bool FMBackup::removeReqData(const int &id) ...@@ -77,13 +82,18 @@ bool FMBackup::removeReqData(const int &id)
{ {
QSqlQuery query(_db); QSqlQuery query(_db);
bool isOk = query.exec(QString("delete from tbl_req where id==%1").arg(id)); bool isOk = query.exec(QString("delete from tbl_req where id==%1").arg(id));
isOk = query.exec("VACUUM"); if(!isOk) {
qDebug() << "删除数据时出现错误:" << query.lastError().text();
}
return isOk; return isOk;
} }
QSqlQuery FMBackup::reqDataQuery() const QSqlQuery FMBackup::reqDataQuery() const
{ {
QSqlQuery query(_db); QSqlQuery query(_db);
query.exec("select * from tbl_req"); bool isOk = query.exec("select * from tbl_req");
if(!isOk) {
qDebug() << "查询数据时出现错误:" << query.lastError().text();
}
return query; return query;
} }
...@@ -7,7 +7,7 @@ FMLoading::FMLoading(QDialog *parent) : ...@@ -7,7 +7,7 @@ FMLoading::FMLoading(QDialog *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint); setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_TranslucentBackground, true); setAttribute(Qt::WA_TranslucentBackground, true);
movie = new QMovie(":/loading.gif"); movie = new QMovie(":/loading.gif");
......
...@@ -204,6 +204,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj) ...@@ -204,6 +204,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj)
if(status != 100) { if(status != 100) {
_vindow->resetWnd(); _vindow->resetWnd();
FMMsgWnd::FailureWnd(rspObj["msg"].toString()); FMMsgWnd::FailureWnd(rspObj["msg"].toString());
return; return;
} }
// 成功,且是最后一步,则弹出认证信息 // 成功,且是最后一步,则弹出认证信息
...@@ -225,6 +226,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj) ...@@ -225,6 +226,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj)
} }
isLogin = false; isLogin = false;
_vindow->deleteLater(); _vindow->deleteLater();
qDebug() << "delete...";
} }
QJsonDocument rspDoc(rspObj); QJsonDocument rspDoc(rspObj);
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#include <QJsonArray> #include <QJsonArray>
#include <QCryptographicHash> #include <QCryptographicHash>
#include <QDateTime> #include <QDateTime>
#include <QEventLoop>
#include <QTimer>
#include "backup/fmbackup.h" #include "backup/fmbackup.h"
#include <QDebug> #include <QDebug>
...@@ -23,7 +25,6 @@ FMVipForward::FMVipForward(QObject *parent) : QObject(parent) ...@@ -23,7 +25,6 @@ FMVipForward::FMVipForward(QObject *parent) : QObject(parent)
{ {
_urlStr = _cfg.GetTransUrlFormat(); _urlStr = _cfg.GetTransUrlFormat();
_sessionDataList = QString("operator_id,pos_id,business_date").split(","); _sessionDataList = QString("operator_id,pos_id,business_date").split(",");
connect(&_nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(onServerFinished(QNetworkReply*)));
} }
FMVipForward::~FMVipForward() FMVipForward::~FMVipForward()
...@@ -92,10 +93,9 @@ void FMVipForward::request(const QJsonObject &reqJob) ...@@ -92,10 +93,9 @@ void FMVipForward::request(const QJsonObject &reqJob)
if (reqJob["reqType"]== FM_VIP_FINAL) { if (reqJob["reqType"]== FM_VIP_FINAL) {
if( trans["codeAmount"].toInt()==0 && if( trans["codeAmount"].toInt()==0 &&
trans["scoreAmount"].toInt()==0 && trans["scoreAmount"].toInt()==0 &&
trans["coupons"].toArray().isEmpty() ) trans["coupons"].toArray().isEmpty() ) {
_needBackupData = reqData; _needBackupData = reqData;
} else { }
_needBackupData = "";
} }
qDebug() << "向服务器发送 ===>\n" << json; qDebug() << "向服务器发送 ===>\n" << json;
...@@ -105,18 +105,37 @@ void FMVipForward::request(const QJsonObject &reqJob) ...@@ -105,18 +105,37 @@ void FMVipForward::request(const QJsonObject &reqJob)
_req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); _req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
_req.setHeader(QNetworkRequest::ContentLengthHeader, reqData.length()); _req.setHeader(QNetworkRequest::ContentLengthHeader, reqData.length());
_nam.post(_req, reqData); auto reply = _nam.post(_req, reqData);
// 使用定时器处理超时
QEventLoop loop;
connect(&_nam, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));
QTimer timer;
timer.setSingleShot(true);
connect(&timer, SIGNAL(timeout()),&loop,SLOT(quit()));
timer.start(1000 * 30);
loop.exec();
if(timer.isActive())
{
timer.stop();
onServerFinished(reply, false);
}else{
//超时
qDebug() << "定时器超时";
onServerFinished(reply, true);
}
} }
void FMVipForward::onServerFinished(QNetworkReply *reply) void FMVipForward::onServerFinished(QNetworkReply *reply, bool isTimeOut)
{ {
QJsonObject posObj; QJsonObject posObj;
if(reply->error() != QNetworkReply::NoError) { if(reply->error() != QNetworkReply::NoError || isTimeOut == true) {
// 如果有需要备份的请求数据,则直接返回成功 // 如果有需要备份的请求数据,则直接返回成功
if (!_needBackupData.isEmpty()) { if (!_needBackupData.isEmpty()) {
FMBackup::instance()->insertReqData(_req.url().toString(), _needBackupData); FMBackup::instance()->insertReqData(_req.url().toString(), _needBackupData);
_needBackupData.clear();
posObj["statusCode"] = 100; posObj["statusCode"] = 100;
posObj["msg"] = "结算成功"; posObj["msg"] = "结算成功";
posObj["prompt"] = 1; posObj["prompt"] = 1;
...@@ -125,6 +144,9 @@ void FMVipForward::onServerFinished(QNetworkReply *reply) ...@@ -125,6 +144,9 @@ void FMVipForward::onServerFinished(QNetworkReply *reply)
} else { } else {
posObj["statusCode"] = 404; posObj["statusCode"] = 404;
posObj["msg"] = reply->errorString(); posObj["msg"] = reply->errorString();
if (isTimeOut) {
posObj["msg"] = "向非码服务器请求超时";
}
} }
} else { } else {
......
...@@ -109,7 +109,7 @@ private: ...@@ -109,7 +109,7 @@ private:
signals: signals:
void serverResponsed(const QJsonObject& rspData); void serverResponsed(const QJsonObject& rspData);
private slots: private slots:
void onServerFinished(QNetworkReply *reply); void onServerFinished(QNetworkReply *reply, bool isTimeOut);
}; };
#endif // FMVIPFORWARD_H #endif // FMVIPFORWARD_H
...@@ -53,6 +53,6 @@ void FMVipFund::on_fund_btn_clicked() ...@@ -53,6 +53,6 @@ void FMVipFund::on_fund_btn_clicked()
ui->fund_btn->setEnabled(false); ui->fund_btn->setEnabled(false);
emit doPost();
setIsBusy(true); setIsBusy(true);
emit doPost();
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include "ui_fmviplogin.h" #include "ui_fmviplogin.h"
#include "fmvippanel.h" #include "fmvippanel.h"
#include <QFile> #include <QFile>
#include <QMutex>
#include "fmvipforward.h" #include "fmvipforward.h"
#include "fmloading.h" #include "fmloading.h"
...@@ -59,8 +60,8 @@ void FMVipLogin::on_login_btn_clicked() ...@@ -59,8 +60,8 @@ void FMVipLogin::on_login_btn_clicked()
ui->login_btn->setEnabled(false); ui->login_btn->setEnabled(false);
ui->login_edit->setEnabled(false); ui->login_edit->setEnabled(false);
emit doPost();
setIsBusy(true); setIsBusy(true);
emit doPost();
} }
void FMVipLogin::resetWnd() void FMVipLogin::resetWnd()
......
...@@ -68,8 +68,8 @@ void FMVipOrder::on_pay_btn_clicked() ...@@ -68,8 +68,8 @@ void FMVipOrder::on_pay_btn_clicked()
ui->pay_btn->setEnabled(false); ui->pay_btn->setEnabled(false);
ui->pay_chk->setEnabled(false); ui->pay_chk->setEnabled(false);
emit doPost();
setIsBusy(true); setIsBusy(true);
emit doPost();
} }
void FMVipOrder::on_pay_chk_clicked(bool checked) void FMVipOrder::on_pay_chk_clicked(bool checked)
......
...@@ -64,7 +64,7 @@ void FMVipWnd::setIsBusy(const bool isBusy) ...@@ -64,7 +64,7 @@ void FMVipWnd::setIsBusy(const bool isBusy)
{ {
if(isBusy) if(isBusy)
{ {
loadingWindow->exec(); loadingWindow->show();
}else{ }else{
loadingWindow->hide(); loadingWindow->hide();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment