Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sbkpay
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhenfei.zhang
sbkpay
Commits
5f164e4d
Commit
5f164e4d
authored
Sep 15, 2017
by
李定达
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.修改数据库操作统一到rollback线程
parent
d0285615
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
123 additions
and
34 deletions
+123
-34
sbkpay/DataProcess/rollback.cpp
+64
-7
sbkpay/DataProcess/rollback.h
+11
-1
sbkpay/control.cpp
+45
-23
sbkpay/control.h
+2
-2
sbkpay/sbkpay.pro.user
+1
-1
No files found.
sbkpay/DataProcess/rollback.cpp
View file @
5f164e4d
...
...
@@ -8,6 +8,7 @@
#include <QJsonObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMap>
#include <QSqlError>
#include "tools.h"
#include "QsLog.h"
...
...
@@ -15,9 +16,12 @@
#include "fmnetwork.h"
#include <QtConcurrent>
QMap
<
QString
,
QString
>
RollBack
::
s_rollorder
;
QMutex
RollBack
::
s_rollorder_lock
;
RollBack
::
RollBack
(
QObject
*
parent
)
:
QThread
(
parent
)
{
//_db = new FMPDataBase(path + DB_ORDER, QString("rollback"));
}
RollBack
::~
RollBack
()
...
...
@@ -55,11 +59,11 @@ void RollBack::RollWiteQuery(QSqlDatabase &_db, QSqlQuery &query)
if
(
!
CretOperate
::
GetSign
(
json
))
{
QLOG_ERROR
()
<<
"get sign error"
;
QLOG_ERROR
()
<<
"
rollback : "
<<
"
get sign error"
;
continue
;
}
QLOG_INFO
()
<<
json
;
QLOG_INFO
()
<<
"rollback : "
<<
json
;
QByteArray
data
=
QJsonDocument
(
json
).
toJson
(
QJsonDocument
::
Compact
);
...
...
@@ -73,7 +77,7 @@ void RollBack::RollWiteQuery(QSqlDatabase &_db, QSqlQuery &query)
QString
url
=
QSettings
(
path
+
"
\\
"
+
USERCONFIG_NAME
,
QSettings
::
IniFormat
).
value
(
VALUE_URL
).
toString
();
QLOG_INFO
()
<<
"roll back server url : "
<<
url
;
QLOG_INFO
()
<<
"roll
back : "
<<
"roll
back server url : "
<<
url
;
if
(
FMNetWork
::
HttpPost
(
url
,
array
,
data
,
"application/json;charset=utf-8"
,
"application/json"
,
error
,
12
))
{
...
...
@@ -84,7 +88,7 @@ void RollBack::RollWiteQuery(QSqlDatabase &_db, QSqlQuery &query)
}
QLOG_WARN
()
<<
"rollback resulte "
<<
QThread
::
currentThreadId
()
<<
":"
<<
array
;
QLOG_WARN
()
<<
"rollback
: "
<<
"rollback
resulte "
<<
QThread
::
currentThreadId
()
<<
":"
<<
array
;
}
}
...
...
@@ -108,13 +112,15 @@ void RollBack::run()
_db
.
open
();
QSqlQuery
query
(
_db
);
InsertRollOrder
(
query
);
query
.
clear
();
QLOG_WARN
()
<<
"find sql : "
<<
"select * from orderlist"
;
QLOG_WARN
()
<<
"
rollback : "
<<
"
find sql : "
<<
"select * from orderlist"
;
bool
flag
=
query
.
exec
(
"select * from orderlist"
);
if
(
!
flag
)
QLOG_WARN
()
<<
query
.
lastError
();
QLOG_WARN
()
<<
"rollback : "
<<
query
.
lastError
();
RollWiteQuery
(
_db
,
query
);
...
...
@@ -131,3 +137,54 @@ void RollBack::run()
loop
.
exec
();
}
}
void
RollBack
::
InsertRollOrder
(
QSqlQuery
&
query
)
{
QMap
<
QString
,
QString
>
tmporder
=
s_rollorder
;
QMap
<
QString
,
QString
>::
Iterator
it
;
QLOG_INFO
()
<<
"rollback : "
<<
"roll order map "
<<
tmporder
;
for
(
it
=
tmporder
.
begin
();
it
!=
tmporder
.
end
();
++
it
)
{
if
(
!
it
.
key
().
isEmpty
())
{
QString
sql
=
QString
(
"insert into %1 ( 'orderid', 'content') values ('%2', '%3')"
).
arg
(
DB_TABLE_NAME
).
arg
(
it
.
key
()).
arg
(
it
.
value
());
QLOG_INFO
()
<<
"rollback : "
<<
"insert sql "
<<
sql
;
if
(
!
query
.
exec
(
sql
))
{
QLOG_ERROR
()
<<
"rollback : "
<<
query
.
lastError
()
<<
query
.
lastError
().
text
();
}
else
{
s_rollorder_lock
.
lock
();
s_rollorder
.
remove
(
it
.
key
());
s_rollorder_lock
.
unlock
();
}
}
else
{
QLOG_ERROR
()
<<
"rollback : "
<<
"rollorder error "
<<
it
.
key
()
<<
it
.
value
();
}
}
s_rollorder_lock
.
lock
();
if
(
s_rollorder
.
size
()
>
300
)
{
QLOG_WARN
()
<<
"rollback : "
<<
"map size big clean : "
<<
s_rollorder
.
size
();
s_rollorder
.
clear
();
}
s_rollorder_lock
.
unlock
();
}
void
RollBack
::
SetRollOrder
(
QString
orderid
,
QString
request
)
{
QLOG_INFO
()
<<
"rollback : "
<<
"new roll order "
<<
orderid
<<
request
;
s_rollorder_lock
.
lock
();
s_rollorder
.
insert
(
orderid
,
request
);
s_rollorder_lock
.
unlock
();
}
sbkpay/DataProcess/rollback.h
View file @
5f164e4d
#ifndef ROLLBACK_H
#define ROLLBACK_H
#include <QString>
#include <QMAp>
#include <QMutex>
#include <QThread>
#include <QPointer>
#include <QSemaphore>
...
...
@@ -19,9 +22,16 @@ public:
void
run
();
static
void
SetRollOrder
(
QString
orderid
,
QString
request
);
private
:
void
InsertRollOrder
(
QSqlQuery
&
query
);
private
:
//FMPDataBase *_db;
QSemaphore
_spr
;
//QSemaphore _spr;
static
QMap
<
QString
,
QString
>
s_rollorder
;
static
QMutex
s_rollorder_lock
;
};
#endif // ROLLBACK_H
sbkpay/control.cpp
View file @
5f164e4d
...
...
@@ -13,6 +13,8 @@
#include <QFont>
#include <QFontDatabase>
#include <QApplication>
#include <QSqlError>
#include <QSqlQuery>
#include <QSslSocket>
#include <QSslConfiguration>
#include <QNetworkAccessManager>
...
...
@@ -20,6 +22,7 @@
#include <QNetworkRequest>
#include <QJsonDocument>
#include <Windows.h>
#include "DataProcess/rollback.h"
#include "DataProcess/tools.h"
#include "DataProcess/cretopt.h"
#include "DataProcess/fmnetwork.h"
...
...
@@ -28,30 +31,44 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
{
QString
path
;
ToolS
::
GetPath
(
path
);
QSqlDatabase
db
=
QSqlDatabase
::
addDatabase
(
"QSQLITE"
,
QString
(
"creat"
));
db
.
setDatabaseName
(
path
+
DB_ORDER
);
db
.
open
();
_isinterrupt
=
false
;
_db
=
new
FMPDataBase
(
path
+
DB_ORDER
,
QString
(
"writeorder"
));
if
(
db
.
isOpen
())
{
QSqlQuery
query
(
db
);
QString
sql
=
QString
(
"create table "
)
+
DB_TABLE_NAME
+
" ("
"orderid varchar(60) primary key, "
"content text"
")"
;
bool
flag
=
query
.
exec
(
sql
);
QString
sql
=
QString
(
"create table "
)
+
DB_TABLE_NAME
+
" ("
"orderid varchar(60) primary key, "
"content text"
")"
;
if
(
!
flag
)
QLOG_WARN
()
<<
query
.
lastError
();
QLOG_INFO
()
<<
"creat table : "
<<
sql
;
db
.
close
();
}
else
{
QLOG_ERROR
()
<<
"----"
<<
db
.
open
();
QLOG_ERROR
()
<<
db
.
lastError
().
type
()
<<
db
.
lastError
().
text
();
}
_db
->
Init
();
_db
->
creat
(
sql
);
_isinterrupt
=
false
;
InitModel
();
}
Control
::~
Control
()
{
if
(
_db
!=
NULL
)
{
delete
_db
;
_db
=
NULL
;
}
//
if(_db != NULL)
//
{
//
delete _db;
//
_db = NULL;
//
}
}
void
Control
::
Start
(
const
char
*
indata
,
char
*
outdata
)
...
...
@@ -159,12 +176,14 @@ bool Control::SendMessageToPayMent(const QJsonObject &json, QByteArray &outdata,
//如果没有点击取消支付按钮直接写数据库异步冲正
if
(
json
.
contains
(
JSON_KEY_REQTYPE
)
&&
json
[
JSON_KEY_REQTYPE
].
toInt
()
==
72
)
{
QVariantHash
hash
;
//
QVariantHash hash;
hash
.
insert
(
SQL_KEY_ORDERID
,
json
[
JSON_KEY_PARTORDERID
].
toString
());
hash
.
insert
(
SQL_KET_CONTENT
,
QString
(
data
));
//
hash.insert(SQL_KEY_ORDERID, json[JSON_KEY_PARTORDERID].toString());
//
hash.insert(SQL_KET_CONTENT, QString(data));
_db
->
insert
(
DB_TABLE_NAME
,
hash
);
// _db->insert(DB_TABLE_NAME, hash);
RollBack
::
SetRollOrder
(
json
[
JSON_KEY_PARTORDERID
].
toString
(),
QString
(
data
));
}
}
...
...
@@ -447,14 +466,17 @@ void Control::Request(ReqType type, QStringList list)
SetResPonseWithMessage
(
"23"
,
QString
::
fromLocal8Bit
(
"支付取消成功.如已扣款将会自动返还"
));
else
{
QVariantHash
hash
;
// QVariantHash hash;
// hash.insert(SQL_KEY_ORDERID, json[JSON_KEY_PARTORDERID].toString());
// hash.insert(SQL_KET_CONTENT, QString(tmpdata));
// QLOG_ERROR() << "roll back faile , move request to database : " << json;
hash
.
insert
(
SQL_KEY_ORDERID
,
json
[
JSON_KEY_PARTORDERID
].
toString
());
hash
.
insert
(
SQL_KET_CONTENT
,
QString
(
tmpdata
));
// _db->insert(DB_TABLE_NAME, hash);
QLOG_ERROR
()
<<
"roll back faile , move request to database : "
<<
json
;
RollBack
::
SetRollOrder
(
json
[
JSON_KEY_PARTORDERID
].
toString
(),
QString
(
tmpdata
))
;
_db
->
insert
(
DB_TABLE_NAME
,
hash
);
SetResPonseWithMessage
(
"23"
,
QString
::
fromLocal8Bit
(
"支付取消成功.如已扣款将会自动返还"
));
}
...
...
sbkpay/control.h
View file @
5f164e4d
...
...
@@ -3,7 +3,7 @@
#include "requestmodel.h"
#include "hostwidget.h"
#include "DataProcess/fmp_database.h"
//
#include "DataProcess/fmp_database.h"
#include <QObject>
#include <QApplication>
#include <QLibrary>
...
...
@@ -68,7 +68,7 @@ private:
bool
_isinterrupt
;
FMPDataBase
*
_db
;
//
FMPDataBase *_db;
};
...
...
sbkpay/sbkpay.pro.user
View file @
5f164e4d
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2017-09-1
4T11:59:12
. -->
<!-- Written by QtCreator 3.5.1, 2017-09-1
5T17:36:09
. -->
<qtcreator>
<data>
<variable>
EnvironmentId
</variable>
...
...
zhenfei.zhang
@zhenfei.zhang
mentioned in commit
ec1ef79f
Jan 03, 2018
mentioned in commit
ec1ef79f
mentioned in commit ec1ef79f84e5d439b0dde6d6bcbc7a5c498a8ce8
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment