Commit 25a8e50e by NitefullWind

1. 新增网络不通畅时返回一个虚拟fm_id。 2. 修复_needBackupData没有及时清空导致下次请求出错问题。

parent 056628f6
......@@ -55,7 +55,7 @@ bool FMBackup::createTable(const QString &dbname)
_db.open();
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 autoincrement, url varchar(200), req text)");
qDebug() << "创建数据库:" << dbname;
if (!isOk) {
......@@ -64,15 +64,33 @@ bool FMBackup::createTable(const QString &dbname)
return isOk;
}
bool FMBackup::insertReqData(const QString url, const QString &reqData)
int FMBackup::insertNewRow()
{
if(!_db.isOpen()) {
connect();
}
QSqlQuery query(_db);
bool isOk = query.exec(QString("insert into tbl_req('url','req') values('%1','%2')")
bool isOk = query.exec(QString("insert into tbl_req('url','req') values('','');"));
isOk &= query.exec("select last_insert_rowid();");
int id = -1;
if(isOk && query.next()) {
id = query.record().value(0).toInt();
}
return id;
}
bool FMBackup::updateReqData(const int id, const QString url, const QString &reqData)
{
if(!_db.isOpen()) {
connect();
}
QSqlQuery query(_db);
bool isOk = query.exec(QString("update tbl_req set url = '%1', req='%2' where id=%3")
.arg(url)
.arg(reqData));
.arg(reqData)
.arg(id));
qDebug() << "备份数据:" << reqData;
if (!isOk) {
......@@ -100,3 +118,11 @@ QSqlQuery FMBackup::reqDataQuery() const
}
return query;
}
bool FMBackup::reset()
{
QSqlQuery query(_db);
bool isOk = query.exec("VACUUM");
qDebug() << "数据库重置: " << isOk;
return isOk;
}
......@@ -7,9 +7,11 @@ class FMBackup
{
public:
static FMBackup* instance();
bool insertReqData(const QString url, const QString &reqData);
bool updateReqData(const int id, const QString url, const QString &reqData);
bool removeReqData(const int &id);
int insertNewRow();
QSqlQuery reqDataQuery() const;
bool reset();
private:
FMBackup();
static FMBackup* _instance;
......
......@@ -43,9 +43,10 @@ void ReSend::trySend()
// 如果发送失败则不再继续发送
if(!isSuccess) {
break;
}
} else {
FMBackup::instance()->removeReqData(id);
}
}
}
void ReSend::run()
......
......@@ -88,8 +88,6 @@ INT FMVipDispatcher::_ParseRequest(LPSTR data)
BOOL FMVipDispatcher::_GetResponse(LPSTR &rsp, UINT &len)
{
qDebug() << __FUNCTION__;
mutex.lock();
if(_serverRspData.isEmpty())
{
......@@ -177,8 +175,6 @@ void FMVipDispatcher::onResponse(const QByteArray &rsp)
void FMVipDispatcher::onFinished()
{
qDebug() << __FUNCTION__;
if(_windowReturn == -1){
_serverRspData = Err_WindowClose;
serverIsBusy.wakeAll();
......
......@@ -96,7 +96,7 @@ void FMVipForward::request(const QJsonObject &reqJob)
if( trans["codeAmount"].toInt()==0 &&
trans["scoreAmount"].toInt()==0 &&
trans["coupons"].toArray().isEmpty() ) {
_needBackupData = reqData;
_needBackupReqJob = reqJob;
}
}
......@@ -135,11 +135,21 @@ void FMVipForward::onServerFinished(QNetworkReply *reply, bool isTimeOut)
if(reply->error() != QNetworkReply::NoError || isTimeOut == true) {
// 如果有需要备份的请求数据,则直接返回成功
if (!_needBackupData.isEmpty()) {
FMBackup::instance()->insertReqData(_req.url().toString(), _needBackupData);
_needBackupData.clear();
if (!_needBackupReqJob.isEmpty()) {
int newId = FMBackup::instance()->insertNewRow();
QString uuid = QString("E%1%2%3%4")
.arg(_needBackupReqJob["storeId"].toString())
.arg(_needBackupReqJob["stationId"].toString().toInt(), 2, 10, QChar('0'))
.arg(QDateTime::currentDateTime().toString("yyMMdd"))
.arg(newId, 5, 10, QChar('0'));
_needBackupReqJob["memberTransId"] = uuid;
QJsonDocument jdoc(_needBackupReqJob);
FMBackup::instance()->updateReqData(newId, _req.url().toString(), jdoc.toJson(QJsonDocument::Compact));
posObj["statusCode"] = 100;
posObj["msg"] = "结算成功";
posObj["fm_id"] = uuid;
posObj["prompt"] = 1;
posObj["print1"] = "";
posObj["print2"] = "";
......@@ -212,7 +222,7 @@ void FMVipForward::onServerFinished(QNetworkReply *reply, bool isTimeOut)
}
}
}
_needBackupReqJob = QJsonObject();
emit serverResponsed(posObj);
}
......
......@@ -105,7 +105,7 @@ private:
QMap<QString, QVariant> _sessionDataMap;
QStringList _sessionDataList;
QString _needBackupData;
QJsonObject _needBackupReqJob;
signals:
void serverResponsed(const QJsonObject& rspData);
private slots:
......
......@@ -32,7 +32,6 @@ FMVipLogin::FMVipLogin(bool isMustPayCode, QDialog *parent) :
FMVipLogin::~FMVipLogin()
{
qDebug() << __FUNCTION__;
delete ui;
}
......
......@@ -85,8 +85,6 @@ int FMVipWnd::exec()
QRect rc = w.availableGeometry();
setGeometry((rc.width() - width()) / 2, (rc.height() - height()) / 2, width(), height());
qDebug() << QString("rc(%1, %2), w(%3, %4)").arg(rc.width()).arg(rc.height()).arg(w.width()).arg(w.height());
return QDialog::exec();
}
......
......@@ -85,7 +85,5 @@ int main(int argc, char *argv[])
w.show();
w.hide();
qDebug() << "v1.17 (2016-10-28 14:40)";
return a.exec();
}
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