Commit ea4053dc by NitefullWind

1. 整合master分支 [dc432b83] 代码。

parent 12471395
......@@ -11,7 +11,8 @@
#define CFG_FILE_NAME "fmclient.cfg"
#define RBG_FILE_NAME "fmclient.rbk"
#define DES3_KEY "DDDDEEEE45LPODDCXZZLKDDO"
#define DES3_KEY "ABCD@#9876DFSAAWKLDEOPDD"
//#define DES3_KEY "DDDDEEEE45LPODDCXZZLKDDO"
#define DES3_KEY_PRT "1JG23G12Y12V123G123F1DI1"
#define CRET_FILE_NAME "client.p12"
#define JSON_KEY_ONLY "partnerOrderId"
......
......@@ -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;
};
......
......@@ -43,6 +43,7 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
QLOG_INFO() << "creat table : " << sql;
_db->Init();
_db->creat(sql);
InitModel();
......@@ -292,14 +293,14 @@ bool Control::HttpPost(QString url, QByteArray &outdata, const QByteArray &indat
if(_isinterrupt)
{
error = QString::fromLocal8Bit("交易或操作被撤销");
error = QString::fromLocal8Bit("收款被取消");
return false;
}
if(reply->error() != QNetworkReply::NoError)
{
error = QString::fromLocal8Bit("网络异常,无法获取签名");
error = QString::fromLocal8Bit("网络异常,获取服务端返回数据失败");
QLOG_INFO() << reply->errorString() << "Contents: " << reply->readAll();
return false;
}
......@@ -308,7 +309,7 @@ bool Control::HttpPost(QString url, QByteArray &outdata, const QByteArray &indat
if(outdata.isEmpty())
{
error = QString::fromLocal8Bit("网络异常,无法获取签名");
error = QString::fromLocal8Bit("网络异常,获取服务端返回数据为空");
QLOG_INFO() << reply->errorString() << "Contents: " << reply->readAll();
return false;
}
......
#ifndef GLOBAL
#define GLOBAL
#define EXE_ROLLBACK "rollback.dll"
#define MAX_BUF_LEN 25600
#define MAX_CHILED_LEN 256
#define MAX_PRINT_LEN 12800
......
......@@ -35,7 +35,9 @@ HostWidget::HostWidget(QWidget *parent) :
connect(&_intertime, &QTimer::timeout, this, [this](){
if(!_need_exit)
{
// ui->btn_pay_exitint->show();
if(_posType != SPCC) {
ui->btn_pay_exitint->show();
}
}
});
......@@ -152,8 +154,8 @@ void HostWidget::ShowPayWidget()
}
else
{
ui->label_pay_title->setText(QString::fromLocal8Bit("支付宝退款中..."));
emit RequestWithType(refund, list);
// ui->label_pay_title->setText(QString::fromLocal8Bit("支付宝退款中..."));
// emit RequestWithType(refund, list);
}
}else
......@@ -406,6 +408,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);
......@@ -419,8 +422,9 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
ui->label_pay_title->setText(QString::fromLocal8Bit("支付成功"));
ui->label_pay_time->setPixmap(QPixmap(":res/success.png"));
} else {
ui->label_pay_title->setText(QString::fromLocal8Bit("支付失败"));
ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
// ui->label_pay_title->setText(QString::fromLocal8Bit("支付失败"));
// ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
emit Exits();
}
return ;
}
......@@ -442,8 +446,9 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
ui->label_pay_title->setText(QString::fromLocal8Bit("退款成功"));
ui->label_pay_time->setPixmap(QPixmap(":res/success.png"));
} else {
ui->label_pay_title->setText(QString::fromLocal8Bit("退款失败"));
ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
// ui->label_pay_title->setText(QString::fromLocal8Bit("退款失败"));
// ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
emit Exits();
}
return ;
}
......
......@@ -1490,7 +1490,7 @@ QHeaderView::section{
}</string>
</property>
<property name="text">
<string>撤销交易</string>
<string>取消收款</string>
</property>
</widget>
</item>
......
......@@ -157,7 +157,7 @@ private:
json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20));
json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6));
json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6));
json.insert(JSON_KEY_TRANSID, FMTool::GetString((const void *)&(request.CashTraceNo), 6));
json.insert(JSON_KEY_REFUNDID, FMTool::GetString((const void *)&(request.CashTraceNo), 6));
json.insert(JSON_KEY_BUSINESSDATE, FMTool::GetString((const void *)&(request.BusinessDay), 8));
json.insert(JSON_KEY_FMID, list[0]);
json.insert(JSON_KEY_REFUNDAMOUT, FMTool::GetString((const void *)&(request.Amount), 12).toInt());
......
......@@ -73,8 +73,13 @@ BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/
*ch = '\0';
}
QString path = QString::fromLocal8Bit(mod);
path = path.replace("\\", "/");
QApplication::addLibraryPath(path);
QByteArray val = qgetenv("PATH");
val += ";";
val += mod;
qputenv("PATH", val);
QDir::setCurrent(path);
FMPSettings setting;
QString configPath = setting.GetValue(CONFIG_ALL_PATH, "C:\\Freemud\\").toString();
......@@ -121,9 +126,10 @@ extern "C" __declspec(dllexport) void Start(const char *indata, char *outdata)
static RollBack rollback;
Control control(&win);
control.Start(indata, outdata);
if(!rollback.isRunning())
rollback.start();
control.Start(indata, outdata);
}
......@@ -369,7 +375,7 @@ int main(int argc, char *argv[])
AlipayRequest req;
FMTool::SetString(req.BusinessDay, 8 , QString("20170909"));
FMTool::SetString(req.TransType, 2 , QString("10"));
FMTool::SetString(req.TransType, 2 , QString("30"));
FMTool::SetString(req.PlatNo, 4, QString("1443"));
FMTool::SetString(req.TransTime, 6, QString("130301"));
FMTool::SetString(req.StoreNo, 20 , QString("17607"));
......@@ -378,7 +384,7 @@ int main(int argc, char *argv[])
FMTool::SetString(req.CashTraceNo, 6 , QString("16723"));
FMTool::SetString(req.OriginTrace, 64 , QString(""));
FMTool::SetString(req.Amount, 12, QString("1"));
FMTool::SetString(req.Reserved1, 48 , QString("1365670843098735894422"));
FMTool::SetString(req.Reserved1, 48 , QString("1367623098735894422"));
req.item_line_qty[0] = '2';
req.item_line_qty[1] = ' ';
......
......@@ -165,14 +165,14 @@ 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;
QString number;
if(json[JSON_KEY_STATUSCODE].toInt() != 100)
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
{
struct EFTItem *item = (struct EFTItem *)response.EFT_Detail_information[0];
......@@ -245,7 +245,7 @@ private:
static bool GetFindResponse(AlipayResponse &response, const QJsonObject &json)
{
return true;
return false;
}
static bool GetFindResponse(QJsonObject &response, const QJsonObject &json)
......
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