Commit c8dd9d79 by 李定达

1.移植50%

parent 5109f462
......@@ -20,11 +20,20 @@
#define JSON_KEY_STATUS "statusCode"
#define JSON_KEY_SERPBLICKEY "serverPublicKey"
#define JSON_KEY_CLIENTPRIKEY "clientPrivateKey"
#define JSON_KEY_REQTYPE "reqType"
#define VALUE_URL "all/url"
#define VALUE_HOST "all/host"
#define VALUE_TIMEOUT "all/timeout"
#define CFG_KEY "template"
#define TMP_JSON "json.ini"
#define DB_ORDER "order.db"
#define DB_ORDER "rollback.db"
#define DB_TABLE_NAME "orderlist"
#define USERCONFIG_NAME "sbkpay.ini"
#define MAX_ORDERID_LEN 200
#define SQL_KEY_ORDERID "orderid"
#define SQL_KET_CONTENT "content"
#endif
#include "fmnetwork.h"
#include <QTimer>
#include <QSettings>
#include <QEventLoop>
#include <QSslConfiguration>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QJsonDocument>
#include "tools.h"
#include "fmglobal.h"
#include "QsLog.h"
FMNetWork::FMNetWork(QObject *parent) : QObject(parent)
{
}
bool FMNetWork::HttpPost(QByteArray array, QString content, QString accept, 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;
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::SslV3);
QNetworkAccessManager manger;
QNetworkRequest request(url);
request.setSslConfiguration(config);
request.setRawHeader("Content-Type", content);
request.setRawHeader("Accept", accept);
request.setRawHeader("host", host);
request.setRawHeader("Authorization", "Basic dXBzLWNsaWVudDo2VGk4TjBXNzRyb1A=");
QNetworkReply* reply = manger.post(request, QJsonDocument(json).toJson(QJsonDocument::Compact));
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
connect(&manger, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
connect(reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), &loop, &QEventLoop::quit);
timer.start(timeout*1000);
loop.exec();
reply->deleteLater();
if(reply->error() != QNetworkReply::NoError)
{
error = QString::fromLocal8Bit("网络异常");
return false;
}
array = reply->readAll();
QLOG_INFO() << array;
return true;
}
......@@ -9,7 +9,7 @@ class FMNetWork : public QObject
public:
explicit FMNetWork(QObject *parent = 0);
void HttpPost(QString url, QStringList &headlist);
static bool HttpPost(QByteArray array, QString content, QString accept, int timeout = 60);
};
......
#include "rollback.h"
#include "fmglobal.h"
#include <QSqlQuery>
#include <QEventLoop>
#include <QJsonDocument>
#include <QTimer>
#include <QSettings>
#include <QJsonObject>
#include "tools.h"
#include "QsLog.h"
#include "cretopt.h"
RollBack::RollBack(QObject *parent) : QThread(parent)
{
......@@ -20,11 +28,62 @@ RollBack::~RollBack()
}
void RollBack::RollWiteQuery(QSqlQuery &query)
{
while(query.next())
{
QString parnetid = query.value(0).toString();
QString content = query.value(1).toString();
QJsonDocument jsonDocument = QJsonDocument::fromJson(content.toUtf8());
if( jsonDocument.isNull() )
{
QLOG_ERROR() << "content not json:" << rps;
_db->dlt(DB_TABLE_NAME, QString("%1='%2'").arg(SQL_KEY_ORDERID).arg(parnetid));
}
QJsonObject json = jsonDocument.object();
json.insert(JSON_KEY_REQTYPE, 3);
if(!CretOperate::GetSign(json))
{
QLOG_ERROR() << "get sign error";
continue;
}
}
}
void RollBack::run()
{
while(isInterruptionRequested())
{
QString path;
ToolS::GetPath(path);
int timeout = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_HOST).toInt();
do
{
QSqlQuery query;
if(!_db->find(DB_TABLE_NAME, query))
break;
RollWiteQuery(query);
}while(0);
QEventLoop loop;
QTimer timer;
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
timer.start(timeout*1000);
loop.exec();
}
}
......@@ -5,6 +5,8 @@
#include <QPointer>
#include "fmp_database.h"
class RollBack : public QThread
{
Q_OBJECT
......@@ -12,6 +14,8 @@ public:
RollBack(QObject *parent = 0);
~RollBack();
void RollWiteQuery(QSqlQuery &query);
void run();
private:
......
......@@ -6,12 +6,20 @@
#include <Windows.h>
#include <string>
#include <QString>
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
class ToolS
{
public:
static void GetPath(QString &path)
{
char tmppath[MAX_PATH] = {0};
GetProcPath(tmppath);
path = QString(tmppath);
}
static void GetProcPath(char * pathBuf)
{
int curPos;
......
......@@ -125,7 +125,7 @@ private:
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];
......
......@@ -4,7 +4,7 @@
#
#-------------------------------------------------
QT += core gui concurrent sql
QT += core gui concurrent sql network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2017-08-25T11:52:01. -->
<!-- Written by QtCreator 3.5.1, 2017-08-25T14:34:56. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
......
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