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
dc432b83
Commit
dc432b83
authored
Aug 31, 2017
by
李定达
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.修复支付成功取消交易按钮亦然显示bug;2.数据库操作分离;3.冲正功能测试完成
parent
7a65671d
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
127 additions
and
84 deletions
+127
-84
sbkpay/DataProcess/fmnetwork.cpp
+4
-5
sbkpay/DataProcess/fmnetwork.h
+1
-1
sbkpay/DataProcess/fmp_database.cpp
+44
-17
sbkpay/DataProcess/fmp_database.h
+11
-0
sbkpay/DataProcess/rollback.cpp
+43
-44
sbkpay/DataProcess/rollback.h
+4
-4
sbkpay/control.cpp
+1
-0
sbkpay/global.h
+2
-0
sbkpay/hostwidget.cpp
+1
-0
sbkpay/main.cpp
+8
-3
sbkpay/rspfactory.h
+1
-1
sbkpay/sbkpay.pro.user
+7
-9
No files found.
sbkpay/DataProcess/fmnetwork.cpp
View file @
dc432b83
...
...
@@ -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
(
"
h
ost"
,
host
.
toUtf8
());
request
.
setRawHeader
(
"
H
ost"
,
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
;
}
...
...
sbkpay/DataProcess/fmnetwork.h
View file @
dc432b83
...
...
@@ -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
);
};
...
...
sbkpay/DataProcess/fmp_database.cpp
View file @
dc432b83
...
...
@@ -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
=
tmp
query
.
exec
(
sql
);
bool
flag
=
query
.
exec
(
sql
);
if
(
!
flag
)
QLOG_WARN
()
<<
tmpquery
.
lastError
();
query
=
tmpquery
;
_db
.
close
();
return
flag
;
}
...
...
sbkpay/DataProcess/fmp_database.h
View file @
dc432b83
...
...
@@ -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
sbkpay/DataProcess/rollback.cpp
View file @
dc432b83
...
...
@@ -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
(
QSql
Database
&
_db
,
QSql
Query
&
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
;
Q
tConcurrent
::
run
(
[
this
,
parnetid
,
data
]()
{
QByteArray
array
;
Q
String
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
);
...
...
sbkpay/DataProcess/rollback.h
View file @
dc432b83
...
...
@@ -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
(
QSql
Database
&
_db
,
QSql
Query
&
query
);
void
run
();
private
:
FMPDataBase
*
_db
;
//
FMPDataBase *_db;
QSemaphore
_spr
;
};
...
...
sbkpay/control.cpp
View file @
dc432b83
...
...
@@ -39,6 +39,7 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
QLOG_INFO
()
<<
"creat table : "
<<
sql
;
_db
->
Init
();
_db
->
creat
(
sql
);
InitModel
();
...
...
sbkpay/global.h
View file @
dc432b83
#ifndef GLOBAL
#define GLOBAL
#define EXE_ROLLBACK "rollback.dll"
#define MAX_BUF_LEN 25600
#define MAX_CHILED_LEN 256
#define MAX_PRINT_LEN 12800
...
...
sbkpay/hostwidget.cpp
View file @
dc432b83
...
...
@@ -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
);
...
...
sbkpay/main.cpp
View file @
dc432b83
#
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
);
}
...
...
sbkpay/rspfactory.h
View file @
dc432b83
...
...
@@ -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
].
to
String
().
to
Int
();
int
merchantDiscount
=
json
[
JSON_KEY_MERDISCOUNT
].
toInt
();
int
platformDiscount
=
json
[
JSON_KEY_PLTDISCOUNT
].
toInt
();
int
userAmount
=
transAmount
-
merchantDiscount
-
platformDiscount
;
...
...
sbkpay/sbkpay.pro.user
View file @
dc432b83
<?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>
...
...
zhenfei.zhang
@zhenfei.zhang
mentioned in commit
ea4053dc
Jan 03, 2018
mentioned in commit
ea4053dc
mentioned in commit ea4053dc480995756028bf6971cfc9eb0fa945d8
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