Commit dc432b83 by 李定达

1.修复支付成功取消交易按钮亦然显示bug;2.数据库操作分离;3.冲正功能测试完成

parent 7a65671d
......@@ -18,20 +18,18 @@ FMNetWork::FMNetWork(QObject *parent) : QObject(parent)
}
bool FMNetWork::HttpPost(QString url, QByteArray outdata, const QByteArray &indata, QString content, QString accept, QString &error, int timeout)
bool FMNetWork::HttpPost(QString url, QByteArray &outdata, const QByteArray &indata, QString content, QString accept, QString &error, int timeout)
{
QString path;
ToolS::GetPath(path);
//QString url = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_URL).toString();
QString host = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_HOST).toString();
QEventLoop loop;
QTimer timer;
QSslConfiguration config;
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::SslV3);
QNetworkAccessManager manger;
QNetworkRequest request(url);
......@@ -40,7 +38,7 @@ bool FMNetWork::HttpPost(QString url, QByteArray outdata, const QByteArray &inda
request.setRawHeader("Content-Type", content.toUtf8());
request.setRawHeader("Accept", accept.toUtf8());
request.setRawHeader("host", host.toUtf8());
request.setRawHeader("Host", host.toUtf8());
request.setRawHeader("Authorization", "Basic dXBzLWNsaWVudDo2VGk4TjBXNzRyb1A=");
......@@ -57,6 +55,7 @@ bool FMNetWork::HttpPost(QString url, QByteArray outdata, const QByteArray &inda
if(reply->error() != QNetworkReply::NoError)
{
QLOG_ERROR() << reply->errorString();
error = QString::fromLocal8Bit("网络异常");
return false;
}
......
......@@ -10,7 +10,7 @@ class FMNetWork : public QObject
public:
explicit FMNetWork(QObject *parent = 0);
static bool HttpPost(QString url, QByteArray outdata, const QByteArray &indata, QString content, QString accept, QString &error = QString(), int timeout = 60);
static bool HttpPost(QString url, QByteArray &outdata, const QByteArray &indata, QString content, QString accept, QString &error = QString(), int timeout = 60);
};
......
......@@ -7,23 +7,32 @@
#include <QSqlQueryModel>
#include "QsLog.h"
FMPDataBase::FMPDataBase(QString dbname, QString connectname, QObject *parent) : QObject(parent)
{
_db = QSqlDatabase::addDatabase("QSQLITE", connectname);
_db.setDatabaseName(dbname);
_isopen = _db.open();
_dbname = dbname;
_connectname = connectname;
}
void FMPDataBase::Init()
{
_db = QSqlDatabase::addDatabase("QSQLITE", _connectname);
_db.setDatabaseName(_dbname);
}
FMPDataBase::~FMPDataBase()
{
if(_isopen)
if(_db.isOpen())
_db.close();
}
bool FMPDataBase::creat(QString sql)
{
if(!_isopen)
return false;
if(!_db.isOpen())
qDebug()<< "----" <<_db.open();
qDebug() << _db.lastError().type() << _db.lastError().text();
QSqlQuery query(_db);
......@@ -32,17 +41,23 @@ bool FMPDataBase::creat(QString sql)
if(!flag)
QLOG_WARN() << query.lastError();
_db.close();
return flag;
}
bool FMPDataBase::dlt(QString table, QString condition)
{
if(!_isopen)
return false;
if(!_db.isOpen())
qDebug()<< "----" <<_db.open();
qDebug() << _db.lastError().type() << _db.lastError().text();
QString sql = QString("delete from %1 where %2").arg(table, condition);
qDebug() << "55555555555555555555555555555" <<sql;
QLOG_INFO() << "delete sql " << sql;
QSqlQuery query(_db);
......@@ -51,13 +66,15 @@ bool FMPDataBase::dlt(QString table, QString condition)
if(!flag)
QLOG_WARN() << query.lastError();
_db.close();
return flag;
}
bool FMPDataBase::insert(QString table, QVariantHash data)
{
if(!_isopen)
return false;
if(!_db.isOpen())
qDebug()<< "----" <<_db.open();
QString sql;
QStringList columnnamelist;
......@@ -75,19 +92,21 @@ bool FMPDataBase::insert(QString table, QVariantHash data)
QLOG_WARN() << "inset sql : " << sql;
qDebug() << "inset sql : " << sql;
bool flag = query.exec(sql);
if(!flag)
QLOG_WARN() << query.lastError();
_db.close();
return flag;
}
bool FMPDataBase::update(QString table, QVariantHash data, QString condition)
{
if(!_isopen)
return false;
if(!_db.isOpen())
qDebug()<< "----" <<_db.open();
QString sql;
......@@ -107,13 +126,19 @@ bool FMPDataBase::update(QString table, QVariantHash data, QString condition)
if(!flag)
QLOG_WARN() << query.lastError();
_db.close();
return flag;
}
bool FMPDataBase::find(QString table, QSqlQuery &query, QStringList keylist, QString condition)
{
if(!_isopen)
return false;
if(!_db.isOpen())
qDebug()<< "----" <<_db.open();
qDebug() << _db.lastError().type() << _db.lastError().text();
QSqlQuery tmpquery(_db);
......@@ -130,13 +155,15 @@ bool FMPDataBase::find(QString table, QSqlQuery &query, QStringList keylist, QSt
QLOG_INFO() << "find sql : " << sql;
bool flag = tmpquery.exec(sql);
bool flag = query.exec(sql);
if(!flag)
QLOG_WARN() << tmpquery.lastError();
query = tmpquery;
_db.close();
return flag;
}
......
......@@ -3,6 +3,8 @@
#include <QObject>
#include <QSqlDatabase>
#include <QMutex>
class FMPLoggerInterface;
class QSqlQuery;
......@@ -28,8 +30,12 @@ public:
QSqlDatabase getDb() const;
void Init();
private:
bool exist(QString table);
bool getSql(QString table, QVariantHash data, QString &sql);
......@@ -40,7 +46,12 @@ private:
QSqlDatabase _db;
QString _dbname;
QString _connectname;
bool _isopen;
};
#endif // FMP_DATABASE_H
......@@ -6,6 +6,9 @@
#include <QTimer>
#include <QSettings>
#include <QJsonObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include "tools.h"
#include "QsLog.h"
#include "cretopt.h"
......@@ -14,13 +17,7 @@
RollBack::RollBack(QObject *parent) : QThread(parent)
{
QString path;
ToolS::GetPath(path);
qDebug() << "++++++++++++++++++++++++++++" << path;
_db = new FMPDataBase(path + DB_ORDER, QString("rollback"));
_spr.release(10);
//_db = new FMPDataBase(path + DB_ORDER, QString("rollback"));
}
RollBack::~RollBack()
......@@ -28,15 +25,15 @@ RollBack::~RollBack()
requestInterruption();
wait();
if(_db != NULL)
{
delete _db;
_db = NULL;
}
// if(_db != NULL)
// {
// delete _db;
// _db = NULL;
// }
}
void RollBack::RollWiteQuery(QSqlQuery &query)
void RollBack::RollWiteQuery(QSqlDatabase &_db, QSqlQuery &query)
{
while(query.next())
{
......@@ -47,8 +44,9 @@ void RollBack::RollWiteQuery(QSqlQuery &query)
if( jsonDocument.isNull() )
{
QLOG_ERROR() << "content not json:" << content;
_db->dlt(DB_TABLE_NAME, QString("%1='%2'").arg(SQL_KEY_ORDERID).arg(parnetid));
QString sql = QString("delete from orderlist where orderid='%1'").arg(parnetid);
QLOG_ERROR() << sql;
query.exec(sql);
}
QJsonObject json = jsonDocument.object();
......@@ -65,45 +63,41 @@ void RollBack::RollWiteQuery(QSqlQuery &query)
QByteArray data = QJsonDocument(json).toJson(QJsonDocument::Compact);
_spr.acquire();
QByteArray array;
QtConcurrent::run( [this, parnetid, data]()
{
QByteArray array;
QString path;
QString error;
ToolS::GetPath(path);
QString path;
QString error;
ToolS::GetPath(path);
qDebug() << "*****************************" << path;
qDebug() << "*****************************" << path;
QString url = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_URL).toString();
QString url = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_URL).toString();
QLOG_INFO() << "roll back server url : " << url;
if(FMNetWork::HttpPost(url, array, data, "application/json;charset=utf-8","application/json", error, 25))
{
QString path;
ToolS::GetPath(path);
FMPDataBase db(path + "\\" + DB_ORDER, QString("curr") + QString::number((int)QThread::currentThreadId()));
db.dlt(DB_TABLE_NAME, QString("%1='%2'").arg(SQL_KEY_ORDERID).arg(parnetid));
}
if(FMNetWork::HttpPost(url, array, data, "application/json;charset=utf-8","application/json", error, 12))
{
QString sql = QString("delete from orderlist where orderid='%1'").arg(parnetid);
QLOG_ERROR() << sql;
query.exec(sql);
}
QLOG_WARN() << QThread::currentThreadId() << ":" << array;
QLOG_WARN() << "rollback resulte " << QThread::currentThreadId() << ":" << array;
this->_spr.release();
});
}
}
void RollBack::run()
{
while(!isInterruptionRequested())
{
QString path;
ToolS::GetPath(path);
QString path;
ToolS::GetPath(path);
qDebug() << "======================" << path;
QSqlDatabase _db = QSqlDatabase::addDatabase("QSQLITE", QString("backup"));
_db.setDatabaseName(path + DB_ORDER);
_db.open();
while(!isInterruptionRequested())
{
int timeout = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_TIMEOUT).toInt();
if(timeout == 0)
......@@ -111,12 +105,17 @@ void RollBack::run()
do
{
QSqlQuery query;
QSqlQuery query(_db);
QLOG_WARN() << "find sql : " << "select * from orderlist";
bool flag = query.exec("select * from orderlist");
if(!flag)
QLOG_WARN() << query.lastError();
if(!_db->find(DB_TABLE_NAME, query))
break;
RollWiteQuery(query);
RollWiteQuery(_db, query);
}while(0);
......
......@@ -4,9 +4,9 @@
#include <QThread>
#include <QPointer>
#include <QSemaphore>
#include "fmp_database.h"
class QSqlDatabase;
class QSqlQuery;
class RollBack : public QThread
{
......@@ -15,12 +15,12 @@ public:
RollBack(QObject *parent = 0);
~RollBack();
void RollWiteQuery(QSqlQuery &query);
void RollWiteQuery(QSqlDatabase &_db, QSqlQuery &query);
void run();
private:
FMPDataBase *_db;
//FMPDataBase *_db;
QSemaphore _spr;
};
......
......@@ -39,6 +39,7 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
QLOG_INFO() << "creat table : " << sql;
_db->Init();
_db->creat(sql);
InitModel();
......
#ifndef GLOBAL
#define GLOBAL
#define EXE_ROLLBACK "rollback.dll"
#define MAX_BUF_LEN 25600
#define MAX_CHILED_LEN 256
#define MAX_PRINT_LEN 12800
......
......@@ -334,6 +334,7 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
{
_need_exit = true;
_label_pay_timer->stop();
ui->btn_pay_exitint->hide();
ui->label_pay_time_load->setVisible(false);
ui->label_pay_money->setVisible(true);
ui->label_pay_money->setText(message);
......
#ifdef SBKDLL
#include "DataProcess/tools.h"
#include "DataProcess/rollback.h"
#include <qwinwidget.h>
#include <QMessageBox>
#include <windows.h>
#include "control.h"
......@@ -15,6 +13,7 @@
#include "rspfactory.h"
#include <QDir>
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
......@@ -71,12 +70,18 @@ extern "C" __declspec(dllexport) void Start(const char *indata, char *outdata)
QsLogging::DestinationPtr consleDest(QsLogging::DestinationFactory::MakeDebugOutputDestination());
logger.addDestination(consleDest);
// QByteArray rollback;
// rollback = QByteArray(path) + EXE_ROLLBACK;
// WinExec(rollback.data(), SW_HIDE);
static RollBack rollback;
Control control(&win);
control.Start(indata, outdata);
if(!rollback.isRunning())
rollback.start();
control.Start(indata, outdata);
}
......
......@@ -118,7 +118,7 @@ private:
FMTool::SetString(response.CardTraceNo, 40, json[JSON_KEY_FMID].toString());
FMTool::SetString(response.NeedPrint, 2, QString("01"));
int transAmount = json[JSON_KET_CLIENTREF].toInt();
int transAmount = json[JSON_KET_CLIENTREF].toString().toInt();
int merchantDiscount = json[JSON_KEY_MERDISCOUNT].toInt();
int platformDiscount = json[JSON_KEY_PLTDISCOUNT].toInt();
int userAmount = transAmount - merchantDiscount - platformDiscount;
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2017-08-28T01:14:35. -->
<!-- Written by QtCreator 3.5.1, 2017-08-31T18:35:35. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
......@@ -61,7 +61,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.55.win32_msvc2010_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
......@@ -226,14 +226,12 @@
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">sbkpay</value>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">自定义执行档</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/gitcode/sbkpay/sbkpay/sbkpay.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">sbkpay.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
......
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