Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmp_vip
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
xiaojing.zhang
fmp_vip
Commits
81769bfc
Commit
81769bfc
authored
Jan 31, 2018
by
NitefullWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 修改非码支付退款等。
parent
62e0fa72
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
191 additions
and
109 deletions
+191
-109
fmvip/db/database.h
+2
-2
fmvip/db/item.cpp
+9
-0
fmvip/db/item.h
+2
-0
fmvip/task/taskfund.cpp
+20
-17
fmvip/task/taskqrpay.cpp
+91
-53
fmvip/task/taskqrrefund.cpp
+66
-36
fmvip/task/taskrefund.cpp
+1
-1
No files found.
fmvip/db/database.h
View file @
81769bfc
...
@@ -3,8 +3,8 @@
...
@@ -3,8 +3,8 @@
#include <string>
#include <string>
#include <memory> // std::auto_ptr
#include <memory> // std::auto_ptr
#include <cstdlib> // std::exit
//
#include <cstdlib> // std::exit
#include <iostream>
//
#include <iostream>
#include <fstream>
#include <fstream>
#include <odb/database.hxx>
#include <odb/database.hxx>
...
...
fmvip/db/item.cpp
View file @
81769bfc
...
@@ -359,5 +359,14 @@ void StoreInfo::setId(unsigned long id)
...
@@ -359,5 +359,14 @@ void StoreInfo::setId(unsigned long id)
_id
=
id
;
_id
=
id
;
}
}
bool
StoreInfo
::
isEqual
(
const
StoreInfo
&
other
)
{
bool
isOk
=
((
this
->
storeId
()
==
other
.
storeId
())
&&
(
this
->
posId
()
==
other
.
posId
())
&&
(
this
->
businessDate
()
==
other
.
businessDate
())
&&
(
this
->
operatorId
()
==
other
.
operatorId
()));
return
isOk
;
}
}
}
fmvip/db/item.h
View file @
81769bfc
...
@@ -202,6 +202,8 @@ public:
...
@@ -202,6 +202,8 @@ public:
unsigned
long
id
()
const
;
unsigned
long
id
()
const
;
void
setId
(
unsigned
long
id
);
void
setId
(
unsigned
long
id
);
bool
isEqual
(
const
StoreInfo
&
other
);
private
:
private
:
friend
class
odb
::
access
;
friend
class
odb
::
access
;
...
...
fmvip/task/taskfund.cpp
View file @
81769bfc
#
include
"taskfund.h"
#
include
"taskfund.h"
#include "fmvipfund.h"
#include "fmvipfund.h"
#include "tasklogin.h"
#include "tasklogin.h"
//#include "items/storeinfo.h"
#include "database.h"
//#include "dbop.h"
using
namespace
DB
;
TaskFund
::
TaskFund
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
TaskFund
::
TaskFund
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
:
FMTask
(
jsonObj
,
FM_Fund
,
0
,
parent
)
:
FMTask
(
jsonObj
,
FM_Fund
,
0
,
parent
)
...
@@ -12,23 +13,25 @@ TaskFund::TaskFund(QJsonObject &jsonObj, QObject *parent)
...
@@ -12,23 +13,25 @@ TaskFund::TaskFund(QJsonObject &jsonObj, QObject *parent)
void
TaskFund
::
packagePOSReq
()
void
TaskFund
::
packagePOSReq
()
{
{
// FMItem::StoreInfo storeInfo;
QSharedPointer
<
StoreInfo
>
storeInfo
=
GetLastStoreInfo
();
// bool isOk = DBOP::GetLastItem(&storeInfo);
if
(
storeInfo
==
nullptr
)
{
// if(!isOk) {
QString
info
=
QString
::
fromLocal8Bit
(
"未设置门店信息,不能进行充值."
);
// QString info = QString::fromLocal8Bit("未设置门店信息,不能进行充值.");
setError
(
FM_API_ERROR
,
info
);
// FMP_WARN() << info;
return
;
// setError(FM_API_ERROR, info);
}
// return;
// }
// posReqJsonObj = storeInfo.toJson(QStringList(), posReqJsonObj);
posReqJsonObj
[
PosProps
.
StoreId
]
=
storeInfo
->
storeId
();
posReqJsonObj
[
PosProps
.
PosId
]
=
storeInfo
->
posId
();
posReqJsonObj
[
PosProps
.
BusinessDate
]
=
storeInfo
->
businessDate
();
posReqJsonObj
[
PosProps
.
OperatorId
]
=
storeInfo
->
operatorId
();
// preTask = new TaskLogin(posReqJsonObj, _session, this);
// preTask->session()->addData(PosProps.FM_Type, FM_Fund);
preTask
=
new
TaskLogin
(
posReqJsonObj
,
_session
,
this
);
// preTask->doTask();
preTask
->
session
()
->
addData
(
PosProps
.
FM_Type
,
FM_Fund
);
// if(preTask->error() != FM_API_SUCCESS) {
preTask
->
doTask
();
// this->setError(preTask->error(), preTask->errorString());
if
(
preTask
->
error
()
!=
FM_API_SUCCESS
)
{
// }
this
->
setError
(
preTask
->
error
(),
preTask
->
errorString
());
}
}
}
void
TaskFund
::
setWindow
()
void
TaskFund
::
setWindow
()
...
...
fmvip/task/taskqrpay.cpp
View file @
81769bfc
#
include
"taskqrpay.h"
#
include
"taskqrpay.h"
//#include "items/order.h"
#include "database.h"
//#include "items/pay.h"
//#include "items/storeinfo.h"
//#include "dbop.h"
#include <QJsonDocument>
#include <QJsonDocument>
#undef StartService
using
namespace
DB
;
TaskQRPay
::
TaskQRPay
(
QJsonObject
&
jsonObj
,
FMPePayInterface
*
epay
,
Session
*
session
,
QObject
*
parent
)
TaskQRPay
::
TaskQRPay
(
QJsonObject
&
jsonObj
,
FMPePayInterface
*
epay
,
Session
*
session
,
QObject
*
parent
)
:
FMTaskSimple
(
jsonObj
,
FM_QR_Pay
,
session
,
parent
)
,
:
FMTaskSimple
(
jsonObj
,
FM_QR_Pay
,
session
,
parent
)
,
_epay
(
epay
)
_epay
(
epay
)
...
@@ -14,55 +15,92 @@ TaskQRPay::TaskQRPay(QJsonObject &jsonObj, FMPePayInterface *epay, Session *sess
...
@@ -14,55 +15,92 @@ TaskQRPay::TaskQRPay(QJsonObject &jsonObj, FMPePayInterface *epay, Session *sess
void
TaskQRPay
::
packagePOSReq
()
void
TaskQRPay
::
packagePOSReq
()
{
{
// //! WARNING: 现在接口支付传来的POS订单号是transId
//! WARNING: 现在接口支付传来的POS订单号是transId
// QString orderId = getPosJsonValue(PosProps.TransId).toString();
QString
orderId
=
getPosJsonValue
(
PosProps
.
TransId
).
toString
();
// FMItem::Order *order = new FMItem::Order();
// DBOP::GetOrderByOrderId(orderId, order);
QSharedPointer
<
StoreInfo
>
storeInfo
=
GetLastStoreInfo
();
// if(order->settled()) {
QSharedPointer
<
Order
>
_order
;
// QString info = QString::fromLocal8Bit("订单已结算,不能再进行支付.");
try
{
// FMP_WARN() << info;
// _transactionPay.reset(DBSP()->begin());
// setError(FM_API_ERROR, info);
transaction
t
(
DBSP
()
->
begin
());
// return;
// }
// 检查订单是否已存在
odb
::
result
<
Order
>
r
=
DBSP
()
->
query
<
Order
>
(
query
<
Order
>::
orderId
==
orderId
);
// if(order->isNew()) {
// order->SetPropertiesByJson(posReqJsonObj);
if
(
r
.
empty
())
{
// order->setOrderId(orderId);
QSharedPointer
<
StoreInfo
>
transStoreInfo
;
// DBOP::Save(order);
transStoreInfo
->
setStoreId
(
getPosJsonValue
(
PosProps
.
StoreId
).
toString
());
// }
transStoreInfo
->
setPosId
(
getPosJsonValue
(
PosProps
.
PosId
).
toString
());
transStoreInfo
->
setBusinessDate
(
getPosJsonValue
(
PosProps
.
BusinessDate
).
toString
());
// QByteArray reqData = QJsonDocument(posReqJsonObj).toJson(QJsonDocument::Compact);
transStoreInfo
->
setOperatorId
(
getPosJsonValue
(
PosProps
.
OperatorId
).
toString
());
// _epay->DockPayRequest(reqData);
if
(
storeInfo
==
nullptr
||
!
storeInfo
->
isEqual
(
*
transStoreInfo
))
{
// _epay->StartService();
DBSP
()
->
persist
(
transStoreInfo
);
// QByteArray rspData = _epay->DockPayRespond();
_order
->
setStoreInfo
(
transStoreInfo
);
// _epay->StopService();
}
else
{
// QJsonDocument json = QJsonDocument::fromJson(rspData);
_order
->
setStoreInfo
(
storeInfo
);
// posRspJsonObj = json.object();
}
// if(posRspJsonObj["statusCode"] == FM_API_SUCCESS) {
_order
->
setOrderId
(
getPosJsonValue
(
PosProps
.
OrderId
).
toString
());
// QJsonArray payIds = posRspJsonObj["pay_ids"].toArray();
_order
->
setOrderAmount
(
getPosJsonValue
(
PosProps
.
OrderAmount
).
toInt
());
// foreach (QJsonValue payValue, payIds) {
_order
->
setUndisAmount
(
getPosJsonValue
(
PosProps
.
UndisAmount
).
toInt
());
// QJsonObject payObj = payValue.toObject();
// FMItem::Pay *pay = new FMItem::Pay();
QJsonObject
productObj
=
getPosJsonValue
(
PosProps
.
Products
).
toObject
();
// pay->setPayId(payObj["pay_id"].toString());
QString
productText
=
QJsonDocument
(
productObj
).
toJson
(
QJsonDocument
::
Compact
);
// pay->setPayStr(payObj["pay_str"].toString());
_order
->
setProductText
(
productText
);
// pay->setPayAmount(posRspJsonObj["paid_total_amount"].toInt());
// pay->setAccount(payObj["pay_account"].toString());
DBSP
()
->
persist
(
_order
);
// pay->setTransId(posReqJsonObj["trans_id"].toString());
// pay->setFmTransId(posRspJsonObj["fm_id"].toString());
t
.
commit
();
// pay->setThirdTransId(posRspJsonObj["fm_transId"].toString());
}
else
{
// pay->setOrderDBID(order->DBID());
_order
=
DBSP
()
->
load
<
Order
>
(
r
.
begin
()
->
id
());
// bool isOk = DBOP::Save(pay);
// if(isOk) {
// 检查订单是否已结算
// order->setPaidAmount(order->paidAmount()+pay->payAmount());
if
(
_order
->
settled
())
{
// }
QString
info
=
QString
::
fromLocal8Bit
(
"订单已结算,不能再进行支付."
);
// delete pay;
FMP_ERROR
()
<<
info
;
// }
setError
(
FM_API_ERROR
,
info
);
// }
return
;
}
// DBOP::Save(order);
}
// delete order;
QByteArray
reqData
=
QJsonDocument
(
posReqJsonObj
).
toJson
(
QJsonDocument
::
Compact
);
_epay
->
DockPayRequest
(
reqData
);
_epay
->
StartService
();
QByteArray
rspData
=
_epay
->
DockPayRespond
();
_epay
->
StopService
();
QJsonDocument
json
=
QJsonDocument
::
fromJson
(
rspData
);
posRspJsonObj
=
json
.
object
();
if
(
posRspJsonObj
[
"statusCode"
]
==
FM_API_SUCCESS
)
{
QJsonArray
payIds
=
posRspJsonObj
[
"pay_ids"
].
toArray
();
foreach
(
QJsonValue
payValue
,
payIds
)
{
QJsonObject
payObj
=
payValue
.
toObject
();
QSharedPointer
<
Pay
>
pay
(
new
Pay
());
pay
->
setPayId
(
payObj
[
"pay_id"
].
toString
());
pay
->
setPayStr
(
payObj
[
"pay_str"
].
toString
());
pay
->
setPayAmount
(
posRspJsonObj
[
"paid_total_amount"
].
toInt
());
pay
->
setAccount
(
payObj
[
"pay_account"
].
toString
());
pay
->
setTransId
(
posReqJsonObj
[
"trans_id"
].
toString
());
pay
->
setFmTransId
(
posRspJsonObj
[
"fm_id"
].
toString
());
pay
->
setThirdTransId
(
posRspJsonObj
[
"fm_transId"
].
toString
());
pay
->
setOrder
(
_order
);
DBSP
()
->
persist
(
pay
);
_order
->
setPaidAmount
(
_order
->
paidAmount
()
+
pay
->
payAmount
());
}
}
DBSP
()
->
persist
(
_order
);
t
.
commit
();
}
catch
(
const
odb
::
exception
&
e
)
{
QString
info
=
QString
::
fromLocal8Bit
(
"存储支付信息时异常:%1"
).
arg
(
e
.
what
());
FMP_ERROR
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
return
;
}
}
}
void
TaskQRPay
::
packagePOSRsp
()
void
TaskQRPay
::
packagePOSRsp
()
...
...
fmvip/task/taskqrrefund.cpp
View file @
81769bfc
#
include
"taskqrrefund.h"
#
include
"taskqrrefund.h"
//#include "items/order.h"
#include "database.h"
//#include "items/pay.h"
//#include "items/storeinfo.h"
//#include "dbop.h"
#include <QJsonDocument>
#include <QJsonDocument>
#undef StartService
using
namespace
DB
;
TaskQRRefund
::
TaskQRRefund
(
QJsonObject
&
jsonObj
,
FMPePayInterface
*
epay
,
Session
*
session
,
QObject
*
parent
)
TaskQRRefund
::
TaskQRRefund
(
QJsonObject
&
jsonObj
,
FMPePayInterface
*
epay
,
Session
*
session
,
QObject
*
parent
)
:
FMTaskSimple
(
jsonObj
,
FM_QR_Refund
,
session
,
parent
)
,
:
FMTaskSimple
(
jsonObj
,
FM_QR_Refund
,
session
,
parent
)
,
_epay
(
epay
)
_epay
(
epay
)
...
@@ -15,38 +16,67 @@ TaskQRRefund::TaskQRRefund(QJsonObject &jsonObj, FMPePayInterface *epay, Session
...
@@ -15,38 +16,67 @@ TaskQRRefund::TaskQRRefund(QJsonObject &jsonObj, FMPePayInterface *epay, Session
void
TaskQRRefund
::
packagePOSReq
()
void
TaskQRRefund
::
packagePOSReq
()
{
{
//! WARNING: 现在接口支付传来的POS订单号是transId
//! WARNING: 现在接口支付传来的POS订单号是transId
// QString orderId = getPosJsonValue(PosProps.TransId).toString();
QString
orderId
=
getPosJsonValue
(
PosProps
.
TransId
).
toString
();
// FMItem::Order *order = new FMItem::Order();
// DBOP::GetOrderByOrderId(orderId, order);
QSharedPointer
<
Order
>
_order
;
// QSharedPointer<FMItem::Pay> refundPay;
try
{
// QList<QSharedPointer<FMItem::Pay> > pays = DBOP::GetPaysByOrderDBId(order->DBID());
// _transactionPay.reset(DBSP()->begin());
// foreach (QSharedPointer<FMItem::Pay> payPointer, pays) {
transaction
t
(
DBSP
()
->
begin
());
// //! WARNING: 临时的找第三方支付的方法
// 检查订单是否已存在
// if(payPointer->transId() == orderId) {
odb
::
result
<
Order
>
r
=
DBSP
()
->
query
<
Order
>
(
query
<
Order
>::
orderId
==
orderId
);
// refundPay = payPointer;
// break;
if
(
r
.
empty
())
{
// }
QString
info
=
QString
::
fromLocal8Bit
(
"未找到订单信息,不能进行退款."
);
// }
FMP_ERROR
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
// QByteArray reqData = QJsonDocument(posReqJsonObj).toJson(QJsonDocument::Compact);
return
;
// _epay->DockRefundRequest(reqData);
}
else
{
// _epay->StartService();
_order
=
DBSP
()
->
load
<
Order
>
(
r
.
begin
()
->
id
());
// QByteArray rspData = _epay->DockRefundRespond();
// _epay->StopService();
// 检查订单是否已结算
// QJsonDocument json = QJsonDocument::fromJson(rspData);
if
(
_order
->
settled
())
{
// posRspJsonObj = json.object();
QString
info
=
QString
::
fromLocal8Bit
(
"订单已结算,不能再进行支付."
);
FMP_ERROR
()
<<
info
;
// if(posRspJsonObj["statusCode"] == FM_API_SUCCESS && refundPay!=nullptr) {
setError
(
FM_API_ERROR
,
info
);
// refundPay->setRefundAmount(refundPay->payAmount());
return
;
// bool isOk = DBOP::Save(refundPay.data());
}
// if(isOk) {
}
// order->setPaidAmount(order->paidAmount()-refundPay->refundAmount());
// }
QSharedPointer
<
Pay
>
refundPay
;
// }
PayList
pays
=
_order
->
payList
();
foreach
(
auto
payLazyPointer
,
pays
)
{
// DBOP::Save(order);
//! WARNING: 临时的找第三方支付的方法
// delete order;
if
(
payLazyPointer
.
load
()
->
transId
()
!=
orderId
)
{
refundPay
=
payLazyPointer
.
getEager
();
break
;
}
}
QByteArray
reqData
=
QJsonDocument
(
posReqJsonObj
).
toJson
(
QJsonDocument
::
Compact
);
_epay
->
DockRefundRequest
(
reqData
);
_epay
->
StartService
();
QByteArray
rspData
=
_epay
->
DockRefundRespond
();
_epay
->
StopService
();
QJsonDocument
json
=
QJsonDocument
::
fromJson
(
rspData
);
posRspJsonObj
=
json
.
object
();
if
(
posRspJsonObj
[
"statusCode"
]
==
FM_API_SUCCESS
&&
refundPay
!=
nullptr
)
{
refundPay
->
setRefundAmount
(
refundPay
->
payAmount
());
DBSP
()
->
persist
(
refundPay
);
_order
->
setPaidAmount
(
_order
->
paidAmount
()
-
refundPay
->
refundAmount
());
}
DBSP
()
->
persist
(
_order
);
t
.
commit
();
}
catch
(
const
odb
::
exception
&
e
)
{
QString
info
=
QString
::
fromLocal8Bit
(
"存储退款信息时异常:%1"
).
arg
(
e
.
what
());
FMP_ERROR
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
return
;
}
}
}
void
TaskQRRefund
::
packagePOSRsp
()
void
TaskQRRefund
::
packagePOSRsp
()
...
...
fmvip/task/taskrefund.cpp
View file @
81769bfc
...
@@ -26,7 +26,7 @@ void TaskRefund::packagePOSReq()
...
@@ -26,7 +26,7 @@ void TaskRefund::packagePOSReq()
QSharedPointer
<
StoreInfo
>
storeInfo
=
GetLastStoreInfo
();
QSharedPointer
<
StoreInfo
>
storeInfo
=
GetLastStoreInfo
();
if
(
storeInfo
==
nullptr
)
{
if
(
storeInfo
==
nullptr
)
{
QString
info
=
QString
::
fromLocal8Bit
(
"未设置门店信息,不能进行
支付
."
);
QString
info
=
QString
::
fromLocal8Bit
(
"未设置门店信息,不能进行
退款
."
);
setError
(
FM_API_ERROR
,
info
);
setError
(
FM_API_ERROR
,
info
);
return
;
return
;
}
}
...
...
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