Commit 6bed3d8d by NitefullWind

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

parent a7ea91b5
......@@ -56,6 +56,11 @@ bool FMBackup::createTable(const QString &dbname)
QSqlQuery query(_db);
// 创建表
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;
}
......@@ -77,13 +82,18 @@ bool FMBackup::removeReqData(const int &id)
{
QSqlQuery query(_db);
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;
}
QSqlQuery FMBackup::reqDataQuery() const
{
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;
}
......@@ -7,7 +7,7 @@ FMLoading::FMLoading(QDialog *parent) :
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint);
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_TranslucentBackground, true);
movie = new QMovie(":/loading.gif");
......
......@@ -204,6 +204,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj)
if(status != 100) {
_vindow->resetWnd();
FMMsgWnd::FailureWnd(rspObj["msg"].toString());
return;
}
// 成功,且是最后一步,则弹出认证信息
......@@ -225,6 +226,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj)
}
isLogin = false;
_vindow->deleteLater();
qDebug() << "delete...";
}
QJsonDocument rspDoc(rspObj);
......
......@@ -5,6 +5,8 @@
#include <QJsonArray>
#include <QCryptographicHash>
#include <QDateTime>
#include <QEventLoop>
#include <QTimer>
#include "backup/fmbackup.h"
#include <QDebug>
......@@ -23,7 +25,6 @@ FMVipForward::FMVipForward(QObject *parent) : QObject(parent)
{
_urlStr = _cfg.GetTransUrlFormat();
_sessionDataList = QString("operator_id,pos_id,business_date").split(",");
connect(&_nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(onServerFinished(QNetworkReply*)));
}
FMVipForward::~FMVipForward()
......@@ -92,10 +93,9 @@ void FMVipForward::request(const QJsonObject &reqJob)
if (reqJob["reqType"]== FM_VIP_FINAL) {
if( trans["codeAmount"].toInt()==0 &&
trans["scoreAmount"].toInt()==0 &&
trans["coupons"].toArray().isEmpty() )
trans["coupons"].toArray().isEmpty() ) {
_needBackupData = reqData;
} else {
_needBackupData = "";
}
}
qDebug() << "向服务器发送 ===>\n" << json;
......@@ -105,18 +105,37 @@ void FMVipForward::request(const QJsonObject &reqJob)
_req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
_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;
if(reply->error() != QNetworkReply::NoError) {
if(reply->error() != QNetworkReply::NoError || isTimeOut == true) {
// 如果有需要备份的请求数据,则直接返回成功
if (!_needBackupData.isEmpty()) {
FMBackup::instance()->insertReqData(_req.url().toString(), _needBackupData);
_needBackupData.clear();
posObj["statusCode"] = 100;
posObj["msg"] = "结算成功";
posObj["prompt"] = 1;
......@@ -125,6 +144,9 @@ void FMVipForward::onServerFinished(QNetworkReply *reply)
} else {
posObj["statusCode"] = 404;
posObj["msg"] = reply->errorString();
if (isTimeOut) {
posObj["msg"] = "向非码服务器请求超时";
}
}
} else {
......
......@@ -109,7 +109,7 @@ private:
signals:
void serverResponsed(const QJsonObject& rspData);
private slots:
void onServerFinished(QNetworkReply *reply);
void onServerFinished(QNetworkReply *reply, bool isTimeOut);
};
#endif // FMVIPFORWARD_H
......@@ -53,6 +53,6 @@ void FMVipFund::on_fund_btn_clicked()
ui->fund_btn->setEnabled(false);
emit doPost();
setIsBusy(true);
emit doPost();
}
......@@ -2,6 +2,7 @@
#include "ui_fmviplogin.h"
#include "fmvippanel.h"
#include <QFile>
#include <QMutex>
#include "fmvipforward.h"
#include "fmloading.h"
......@@ -59,8 +60,8 @@ void FMVipLogin::on_login_btn_clicked()
ui->login_btn->setEnabled(false);
ui->login_edit->setEnabled(false);
emit doPost();
setIsBusy(true);
emit doPost();
}
void FMVipLogin::resetWnd()
......
......@@ -68,8 +68,8 @@ void FMVipOrder::on_pay_btn_clicked()
ui->pay_btn->setEnabled(false);
ui->pay_chk->setEnabled(false);
emit doPost();
setIsBusy(true);
emit doPost();
}
void FMVipOrder::on_pay_chk_clicked(bool checked)
......
......@@ -64,7 +64,7 @@ void FMVipWnd::setIsBusy(const bool isBusy)
{
if(isBusy)
{
loadingWindow->exec();
loadingWindow->show();
}else{
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