Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmp_epay
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
fmp_epay
Commits
c03b2439
Commit
c03b2439
authored
Jul 28, 2017
by
NitefullWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 修复按Alt+F4关闭窗口后卡死问题。 2. 按Ecs可关闭窗口。
parent
68b29731
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
70 additions
and
52 deletions
+70
-52
fmp_epay_p.cpp
+55
-45
fmp_epay_p.h
+3
-3
fmp_epayview_dialog.cpp
+8
-2
fmp_epayview_dialog.h
+2
-0
fmp_epayview_dialog.ui
+1
-1
fmp_epayview_wait.cpp
+1
-1
No files found.
fmp_epay_p.cpp
View file @
c03b2439
...
...
@@ -2,7 +2,6 @@
#include <QDateTime>
#include <fmp_settings_i.h>
#include <QCoreApplication>
#include <ctkPluginContext.h>
#include <ctkServiceReference.h>
#include "fmp_epay_p.h"
#include "fmp_epay_def.h"
...
...
@@ -28,62 +27,41 @@
#include <fmp_home_i.h>
unsigned
int
FMPePayPrivate
::
s_ClientReqCount
=
10000
;
FMPePayPrivate
::
FMPePayPrivate
(
FMPePay
*
parent
)
:
q_ptr
(
parent
),
_payDialog
(
nullptr
),
_setting
(
nullptr
),
_network
(
nullptr
),
_model
(
nullptr
),
_db
(
nullptr
),
_watcher
(
nullptr
),
_reverse_flag
(
false
),
_is_api
(
false
)
_is_api
(
false
),
_api_abort
(
false
)
{
FMPLoggerInterface
::
InitContext
(
q_ptr
->
_ctx
);
_watcher
=
new
QFutureWatcher
<
QByteArray
>
();
connect
(
_watcher
,
SIGNAL
(
finished
()
),
this
,
SLOT
(
witedata
()
)
);
}
FMPePayPrivate
::~
FMPePayPrivate
()
{
if
(
_watcher
!=
nullptr
){
delete
_watcher
;
}
if
(
_payDialog
!=
nullptr
)
{
delete
_payDialog
;
_payDialog
=
nullptr
;
}
if
(
_model
!=
nullptr
){
delete
_model
;
}
if
(
_db
!=
nullptr
){
delete
_db
;
}
Uninit
();
}
void
FMPePayPrivate
::
Uninit
()
{
if
(
_is_api
&&
_
origin
_response
.
isEmpty
())
{
if
(
_is_api
&&
_
docked
_response
.
isEmpty
())
{
QJsonParseError
err
;
QByteArray
json
=
"{
\"
statusCode
\"
:106,
\"
msg
\"
:
\"\347\252\227\345\217\243\345\267\262\345\205\263\351\227\255\357\274\214\344\272\244\346\230\223\345\217\226\346\266\210\"
,
\"
prompt
\"
:0}"
;
QJsonDocument
d
=
QJsonDocument
::
fromJson
(
json
,
&
err
);
_origin_response
=
d
.
object
();
_docked_response
=
d
.
object
();
_api_abort
=
true
;
emit
apiError
();
QEventLoop
evt
;
connect
(
this
,
SIGNAL
(
apiFinish
()),
&
evt
,
SLOT
(
quit
()));
evt
.
exec
();
}
else
if
(
_is_api
)
{
else
if
(
_is_api
){
_api_abort
=
true
;
emit
apiError
();
QEventLoop
evt
;
connect
(
this
,
SIGNAL
(
apiFinish
()),
&
evt
,
SLOT
(
quit
()));
evt
.
exec
();
}
Q_Q
(
FMPePay
);
...
...
@@ -117,11 +95,6 @@ void FMPePayPrivate::Init()
clearorder
();
if
(
_network
==
nullptr
)
{
_network
=
q
->
GetService
<
FMPNetworkInterface
>
(
q
->
_ctx
);
}
if
(
_db
==
nullptr
)
{
_db
=
new
FMPDataBase
(
q
->
_databasename
);
...
...
@@ -158,8 +131,6 @@ void FMPePayPrivate::Init()
_model
->
setEditStrategy
(
QSqlTableModel
::
OnManualSubmit
);
}
if
(
_payDialog
==
nullptr
)
{
QVariantHash
hash
;
_setting
=
q
->
GetService
<
FMPSettingsInterface
>
(
q
->
_ctx
);
...
...
@@ -214,8 +185,12 @@ void FMPePayPrivate::Init()
hash
[
"products"
]
=
products
;
}
if
(
_payDialog
==
nullptr
)
{
_payDialog
=
new
FMPPayDialog
(
this
,
hash
);
}
else
{
_payDialog
->
setBasicInfo
(
hash
);
}
_payDialog
->
show
();
}
...
...
@@ -247,6 +222,7 @@ QSqlTableModel *FMPePayPrivate::model() const
void
FMPePayPrivate
::
DockPayRequest
(
const
QByteArray
&
json
)
{
_is_api
=
true
;
_api_abort
=
false
;
_origin_request
=
QJsonDocument
::
fromJson
(
json
).
object
();
}
...
...
@@ -263,11 +239,13 @@ void FMPePayPrivate::DockPayRequest(const QByteArray &json)
QByteArray
FMPePayPrivate
::
DockPayRespond
()
{
QByteArray
json
=
"{
\"
statusCode
\"
:106,
\"
msg
\"
:
\"\347\252\227\345\217\243\345\267\262\345\205\263\351\227\255\357\274\214\344\272\244\346\230\223\345\217\226\346\266\210\"
,
\"
prompt
\"
:0}"
;
QEventLoop
evt
;
connect
(
this
,
SIGNAL
(
finished
(
QJsonObject
)),
&
evt
,
SLOT
(
quit
()));
connect
(
this
,
SIGNAL
(
apiError
()),
&
evt
,
SLOT
(
quit
()));
evt
.
exec
();
if
(
!
_api_abort
)
{
_docked_response
=
QJsonObject
();
_docked_response
[
FMP_EPAY_STATUSCODE
]
=
_origin_response
[
FMP_EPAY_STATUSCODE
];
_docked_response
[
FMP_EPAY_ERRORMSG
]
=
_origin_response
.
contains
(
"msg"
)
?
_origin_response
[
FMP_EPAY_ERRORMSG
]
:
QJsonValue
(
""
);
...
...
@@ -296,7 +274,12 @@ QByteArray FMPePayPrivate::DockPayRespond()
}
_origin_response
=
QJsonObject
();
QByteArray
json
=
QJsonDocument
(
_docked_response
).
toJson
();
json
=
QJsonDocument
(
_docked_response
).
toJson
();
}
if
(
_is_api
)
{
Uninit
();
}
return
json
;
}
...
...
@@ -304,18 +287,20 @@ QByteArray FMPePayPrivate::DockPayRespond()
void
FMPePayPrivate
::
DockRefundRequest
(
const
QByteArray
&
json
)
{
_is_api
=
true
;
_api_abort
=
false
;
_origin_request
=
QJsonDocument
::
fromJson
(
json
).
object
();
}
QByteArray
FMPePayPrivate
::
DockRefundRespond
()
{
QByteArray
json
=
"{
\"
statusCode
\"
:106,
\"
msg
\"
:
\"\347\252\227\345\217\243\345\267\262\345\205\263\351\227\255\357\274\214\344\272\244\346\230\223\345\217\226\346\266\210\"
,
\"
prompt
\"
:0}"
;
QEventLoop
evt
;
connect
(
this
,
SIGNAL
(
finished
(
QJsonObject
)),
&
evt
,
SLOT
(
quit
()));
connect
(
this
,
SIGNAL
(
apiError
()),
&
evt
,
SLOT
(
quit
()));
evt
.
exec
();
QByteArray
json
;
//!
if
(
!
_api_abort
)
{
_docked_response
=
QJsonObject
();
_docked_response
[
"statusCode"
]
=
_origin_response
[
"statusCode"
];
if
(
_origin_response
.
contains
(
"msg"
))
{
...
...
@@ -326,8 +311,12 @@ QByteArray FMPePayPrivate::DockRefundRespond()
}
_origin_response
=
QJsonObject
();
json
=
QJsonDocument
(
_docked_response
).
toJson
();
}
if
(
_is_api
)
{
Uninit
();
}
emit
apiFinish
();
return
json
;
}
...
...
@@ -341,12 +330,20 @@ void FMPePayPrivate::ControlPayJson(QString sum, QString code)
if
(
_reverse_flag
)
{
emit
error
(
QString
::
fromLocal8Bit
(
"网络连接异常(冲正...)"
));
_origin_response
[
"statusCode"
]
=
104
;
_origin_response
[
"msg"
]
=
QString
::
fromLocal8Bit
(
"网络连接异常"
);
_origin_response
[
"prompt"
]
=
0
;
emit
apiError
();
return
;
}
if
(
!
GetPayJson
(
sum
,
code
))
{
emit
error
(
QString
::
fromLocal8Bit
(
"获取门店信息失败"
));
_origin_response
[
"statusCode"
]
=
109
;
_origin_response
[
"msg"
]
=
QString
::
fromLocal8Bit
(
"获取门店信息失败"
);
_origin_response
[
"prompt"
]
=
0
;
emit
apiError
();
return
;
}
...
...
@@ -357,8 +354,9 @@ void FMPePayPrivate::ControlPayJson(QString sum, QString code)
if
(
!
HttpPost
(
outjson
,
_docked_request
,
errors
,
q
->
_time_out
))
{
emit
error
(
errors
);
_origin_response
=
outjson
;
emit
error
(
errors
);
emit
apiError
();
}
else
{
...
...
@@ -529,6 +527,10 @@ void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
bool
dock_success
=
false
;
if
(
_reverse_flag
)
{
emit
error
(
QString
::
fromLocal8Bit
(
"网络连接异常(冲正...)"
));
_origin_response
[
"statusCode"
]
=
104
;
_origin_response
[
"msg"
]
=
QString
::
fromLocal8Bit
(
"网络连接异常"
);
_origin_response
[
"prompt"
]
=
0
;
emit
apiError
();
return
;
}
...
...
@@ -537,7 +539,11 @@ void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
QJsonObject
t
=
trans
;
if
(
!
payTransId
.
isEmpty
())
{
if
(
!
_db
->
find
(
q
->
_table
,
query
,
keylist
,
QString
(
QString
(
SQL_KEY_PAYTRANSID
)
+
" = '%1'"
).
arg
(
payTransId
))
||
!
query
.
next
())
{
_origin_response
[
"statusCode"
]
=
108
;
_origin_response
[
"msg"
]
=
QString
::
fromLocal8Bit
(
"交易记录不存在"
);
_origin_response
[
"prompt"
]
=
0
;
emit
error
(
QString
::
fromLocal8Bit
(
"交易记录不存在"
));
emit
apiError
();
return
;
}
else
{
...
...
@@ -548,6 +554,10 @@ void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
if
(
!
GetRefundJson
(
t
))
{
emit
error
(
QString
::
fromLocal8Bit
(
"获取门店信息失败"
));
_origin_response
[
"statusCode"
]
=
109
;
_origin_response
[
"msg"
]
=
QString
::
fromLocal8Bit
(
"获取门店信息失败"
);
_origin_response
[
"prompt"
]
=
0
;
emit
apiError
();
return
;
}
...
...
@@ -640,7 +650,7 @@ bool FMPePayPrivate::GetPayJson(const QString& sum, const QString& code)
transaction
.
insert
(
FMP_EPAY_TRANSTRACTION_CODE
,
code
);
if
(
_is_api
)
{
QJsonObject
origin_trans
=
_origin_request
[
"transactions"
].
toObject
();
transaction
[
FMP_EPAY_TRANSTRACTION_AMOUNT
]
=
origin_trans
[
"order_amount"
]
;
transaction
[
FMP_EPAY_TRANSTRACTION_AMOUNT
]
=
(
int
)(
origin_trans
[
"order_amount"
].
toDouble
()
+
0.005
)
;
QJsonArray
pos_products
=
_origin_request
[
"products"
].
toArray
();
QJsonArray
products
;
int
i
=
1
;
...
...
@@ -697,17 +707,17 @@ bool FMPePayPrivate::GetRefundJson(const QJsonObject &trans)
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_FMID
,
trans
[
FMP_JKEY_FM_ORDERID
]);
if
(
_is_api
)
{
QJsonObject
orig_trans
=
_origin_request
[
"transactions"
].
toObject
();
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_AMOUNT
,
(
int
)
orig_trans
[
"refund_amount"
].
toDouble
(
));
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_AMOUNT
,
(
int
)
(
orig_trans
[
"refund_amount"
].
toDouble
()
+
0.005
));
}
else
{
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_AMOUNT
,
(
int
)
trans
[
FMP_JKEY_REFUND_AMOUNT
].
toDouble
(
));
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_AMOUNT
,
(
int
)
(
trans
[
FMP_JKEY_REFUND_AMOUNT
].
toDouble
()
+
0.005
));
}
_docked_request
.
insert
(
FMP_EPAY_TRANSID
,
QDateTime
::
currentDateTime
().
toString
(
"yyyyMMddhhmmsszzz"
));
}
else
{
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_EBCODE
,
trans
[
FMP_JKEY_PAY_EBCODE
]);
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_TRANSID
,
trans
[
FMP_JKEY_PAY_TRANSID
]);
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_AMOUNT
,
(
int
)
trans
[
FMP_JKEY_REFUND_AMOUNT
].
toDouble
(
));
transaction
.
insert
(
FMP_EPAY_REFUND_TRANSTRACTION_AMOUNT
,
(
int
)
(
trans
[
FMP_JKEY_REFUND_AMOUNT
].
toDouble
()
+
0.005
));
_docked_request
.
insert
(
FMP_EPAY_TRANSID
,
trans
[
FMP_JKEY_POS_TRANSID
]);
}
...
...
fmp_epay_p.h
View file @
c03b2439
...
...
@@ -4,7 +4,9 @@
#include "fmp_epay.h"
#include <QObject>
#include <QFuture>
#include <QFutureWatcher>
#include <QJsonObject>
#include <QEventLoop>
class
FMPPayDialog
;
class
FMPSettingsInterface
;
...
...
@@ -59,7 +61,6 @@ private:
void
clearorder
();
signals
:
void
apiError
();
void
apiFinish
();
void
error
(
QString
errormsg
);
void
finished
(
QJsonObject
json
);
...
...
@@ -74,8 +75,6 @@ public:
FMPSettingsInterface
*
_setting
;
FMPNetworkInterface
*
_network
;
private
:
QJsonObject
_origin_request
;
QJsonObject
_docked_request
;
...
...
@@ -83,6 +82,7 @@ private:
QJsonObject
_docked_response
;
bool
_is_api
;
bool
_api_abort
;
bool
_reverse_flag
;
static
unsigned
int
s_ClientReqCount
;
...
...
fmp_epayview_dialog.cpp
View file @
c03b2439
...
...
@@ -92,7 +92,6 @@ FMPPayDialog::FMPPayDialog(FMPePayPrivate *control, QVariantHash basicinfo, QWid
connect
(
_control
,
&
FMPePayPrivate
::
error
,
this
,
&
FMPPayDialog
::
showErrorMsg
);
connect
(
_control
,
&
FMPePayPrivate
::
finished
,
this
,
&
FMPPayDialog
::
showSuccessMsg
);
ui
->
lineedit_num
->
setFocus
();
_current_LineEdit
=
ui
->
lineedit_num
;
...
...
@@ -314,7 +313,7 @@ void FMPPayDialog::onSelectionChanged(QModelIndex idx)
void
FMPPayDialog
::
keyPressEvent
(
QKeyEvent
*
e
)
{
return
QDialog
::
keyPressEvent
(
e
);
}
void
FMPPayDialog
::
mousePressEvent
(
QMouseEvent
*
event
)
...
...
@@ -570,6 +569,7 @@ void FMPPayDialog::onBtnConfirmClicked()
{
_wait
=
new
FMPPayWait
(
this
);
_wait
->
setModal
(
true
);
_wait
->
setFocus
();
}
...
...
@@ -587,6 +587,7 @@ void FMPPayDialog::onBtnConfirmClicked()
ui
->
lineedit_code_refund
->
clear
();
_wait
->
SetContent
(
FMPPayWait
::
ERRORS
,
QString
::
fromLocal8Bit
(
"金额或条码错误
\n
请重新输入"
));
_wait
->
show
();
_current_LineEdit
->
setFocus
();
return
;
}
...
...
@@ -607,6 +608,7 @@ void FMPPayDialog::onBtnConfirmClicked()
}
_wait
->
show
();
_current_LineEdit
->
setFocus
();
}
...
...
@@ -622,6 +624,10 @@ void FMPPayDialog::on_btn_clear_clicked()
}
}
void
FMPPayDialog
::
reject
()
{
on_btn_close_clicked
();
}
void
FMPPayDialog
::
on_btn_close_clicked
()
{
...
...
fmp_epayview_dialog.h
View file @
c03b2439
...
...
@@ -50,6 +50,7 @@ public slots:
void
setBasicInfo
(
QVariantHash
basicinfo
);
protected
:
void
keyPressEvent
(
QKeyEvent
*
);
void
mousePressEvent
(
QMouseEvent
*
);
...
...
@@ -83,6 +84,7 @@ private slots:
void
on_lineEdit_textChanged
(
const
QString
&
arg1
);
void
reject
();
public
:
void
setPayView
();
...
...
fmp_epayview_dialog.ui
View file @
c03b2439
...
...
@@ -2841,9 +2841,9 @@ QHeaderView::section {
</layout>
</widget>
<zorder>
wdg_success_main
</zorder>
<zorder>
wdg_pay_main
</zorder>
<zorder>
wdg_refund_main
</zorder>
<zorder>
wdg_query_main
</zorder>
<zorder>
wdg_pay_main
</zorder>
</widget>
</item>
<item>
...
...
fmp_epayview_wait.cpp
View file @
c03b2439
...
...
@@ -13,7 +13,7 @@ FMPPayWait::FMPPayWait(QWidget *parent) : QDialog(parent), ui(new Ui::FMPPayWait
ui
->
widget
->
setWindowOpacity
(
1
);
setGeometry
(
parent
->
geometry
());
this
->
move
(
parent
->
pos
());
setWindowFlags
(
Qt
::
FramelessWindowHint
|
Qt
::
Tool
);
setWindowFlags
(
windowFlags
()
|
Qt
::
FramelessWindowHint
|
Qt
::
WindowStaysOnTopHint
);
connect
(
ui
->
btn_confirm
,
&
QPushButton
::
clicked
,
this
,
&
FMPPayWait
::
accept
);
...
...
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