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
zhenfei.zhang
fmp_vip
Commits
5b8f71e5
Commit
5b8f71e5
authored
Mar 01, 2018
by
xiaoqing.gu
Browse files
Options
Browse Files
Download
Plain Diff
1. 拉取代码。
parents
cef05731
3434814d
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
147 additions
and
57 deletions
+147
-57
fmvip/db/database.h
+10
-11
fmvip/db/item.cpp
+17
-4
fmvip/db/item.h
+23
-20
fmvip/task/taskfinal.cpp
+2
-2
fmvip/task/taskqrpay.cpp
+9
-10
fmvip/task/taskqrrefund.cpp
+9
-9
fmvip/windows/forms/fmviporder.ui
+11
-0
tests/autotest/tst_db_query.h
+65
-0
version.h
+1
-1
No files found.
fmvip/db/database.h
View file @
5b8f71e5
...
...
@@ -12,6 +12,12 @@
#include "item.h"
#include <QDebug>
#if defined(FM_TEST)
#define DBFileName "Test.db"
#else
#define DBFileName "FreemudPOS.db"
#endif
#if defined(DATABASE_MYSQL)
# include <odb/mysql/database.hxx>
#elif defined(DATABASE_SQLITE)
...
...
@@ -142,7 +148,7 @@ public:
private
:
DBConnect
()
:
_dbName
(
"Test.db"
)
_dbName
(
DBFileName
)
{
_db_pointer
=
std
::
make_shared
<
odb
::
sqlite
::
database
>
(
_dbName
,
SQLITE_OPEN_READWRITE
|
SQLITE_OPEN_CREATE
);
OpenDatabase
();
...
...
@@ -162,24 +168,17 @@ inline std::shared_ptr<odb::database> DBSP() {
inline
QSharedPointer
<
StoreInfo
>
GetLastStoreInfo
()
{
QSharedPointer
<
StoreInfo
>
storeInfoP
(
new
StoreInfo
())
;
QSharedPointer
<
StoreInfo
>
storeInfoP
;
try
{
odb
::
transaction
t
(
DBSP
()
->
begin
());
odb
::
result
<
StoreInfo
_last
>
sl
(
DBSP
()
->
query
<
StoreInfo_last
>
(
));
odb
::
result
<
StoreInfo
>
sl
(
DBSP
()
->
query
<
StoreInfo
>
(
"order by id desc limit 0,1"
));
if
(
!
sl
.
empty
())
{
storeInfoP
->
setId
(
sl
.
begin
()
->
_id
);
storeInfoP
->
setStoreId
(
sl
.
begin
()
->
_storeId
);
storeInfoP
->
setPosId
(
sl
.
begin
()
->
_posId
);
storeInfoP
->
setBusinessDate
(
sl
.
begin
()
->
_businessDate
);
storeInfoP
->
setOperatorId
(
sl
.
begin
()
->
_operatorId
);
}
else
{
storeInfoP
.
clear
();
storeInfoP
=
sl
.
begin
().
load
();
}
t
.
commit
();
}
catch
(
const
odb
::
exception
&
e
)
{
storeInfoP
.
clear
();
qDebug
()
<<
"Exception: Get last store info: "
<<
e
.
what
();
}
return
storeInfoP
;
...
...
fmvip/db/item.cpp
View file @
5b8f71e5
#include "item.h"
#include "database.h"
namespace
DB
{
Item
::
Item
()
...
...
@@ -123,21 +123,34 @@ void Order::setRefunded(bool refunded)
_refunded
=
refunded
;
}
PayList
&
Order
::
payList
()
Lazy
PayList
&
Order
::
payList
()
{
return
_payList
;
}
const
PayList
&
Order
::
payList
()
const
const
Lazy
PayList
&
Order
::
payList
()
const
{
return
_payList
;
}
void
Order
::
setPayList
(
const
PayList
&
payList
)
void
Order
::
setPayList
(
const
Lazy
PayList
&
payList
)
{
_payList
=
payList
;
}
PayList
Order
::
getCanRefundPatList
()
{
PayList
canRefundPays
;
for
(
LazyPayList
::
iterator
it
(
_payList
.
begin
());
it
!=
_payList
.
end
();
it
++
)
{
QLazySharedPointer
<
Pay
>&
lsp
(
*
it
);
auto
sp
=
lsp
.
load
();
if
(
sp
->
payAmount
()
>
sp
->
refundAmount
())
{
canRefundPays
.
append
(
sp
);
}
}
return
canRefundPays
;
}
QLazySharedPointer
<
StoreInfo
>
&
Order
::
storeInfo
()
{
return
_storeInfo
;
...
...
fmvip/db/item.h
View file @
5b8f71e5
...
...
@@ -24,7 +24,8 @@ class Order;
class
Pay
;
class
StoreInfo
;
typedef
QList
<
QLazySharedPointer
<
Pay
>
>
PayList
;
typedef
QList
<
QLazySharedPointer
<
Pay
>
>
LazyPayList
;
typedef
QList
<
QSharedPointer
<
Pay
>
>
PayList
;
// 可为空
#pragma db value(int) null
...
...
@@ -81,9 +82,11 @@ public:
bool
refunded
()
const
;
void
setRefunded
(
bool
refunded
);
PayList
&
payList
();
const
PayList
&
payList
()
const
;
void
setPayList
(
const
PayList
&
payList
);
LazyPayList
&
payList
();
const
LazyPayList
&
payList
()
const
;
void
setPayList
(
const
LazyPayList
&
payList
);
PayList
getCanRefundPatList
();
QLazySharedPointer
<
StoreInfo
>
&
storeInfo
();
const
QLazySharedPointer
<
StoreInfo
>
&
storeInfo
()
const
;
...
...
@@ -112,7 +115,7 @@ private:
bool
_refunded
;
#pragma db inverse(_order)
PayList
_payList
;
Lazy
PayList
_payList
;
#pragma db not_null
QLazySharedPointer
<
StoreInfo
>
_storeInfo
;
...
...
@@ -218,21 +221,21 @@ private:
QString
_businessDate
;
};
#pragma db view object(StoreInfo) \
query((?) + "order by id desc limit 0,1")
struct
StoreInfo_last
{
#pragma db column(StoreInfo::_id)
unsigned
long
_id
;
#pragma db column(StoreInfo::_storeId)
QString
_storeId
;
#pragma db column(StoreInfo::_posId)
QString
_posId
;
#pragma db column(StoreInfo::_operatorId)
QString
_operatorId
;
#pragma db column(StoreInfo::_businessDate)
QString
_businessDate
;
};
//
#pragma db view object(StoreInfo) \
//
query((?) + "order by id desc limit 0,1")
//
struct StoreInfo_last
//
{
//
#pragma db column(StoreInfo::_id)
//
unsigned long _id;
//
#pragma db column(StoreInfo::_storeId)
//
QString _storeId;
//
#pragma db column(StoreInfo::_posId)
//
QString _posId;
//
#pragma db column(StoreInfo::_operatorId)
//
QString _operatorId;
//
#pragma db column(StoreInfo::_businessDate)
//
QString _businessDate;
//
};
}
...
...
fmvip/task/taskfinal.cpp
View file @
5b8f71e5
...
...
@@ -168,11 +168,11 @@ void TaskFinal::packageServerReq()
DBSP
()
->
reload
<
Order
>
(
_order
);
// 从数据库读取支付信息
PayList
payList
=
_order
->
payList
();
Lazy
PayList
payList
=
_order
->
payList
();
// 转成服务端需要的payArray
QJsonArray
payArray
;
for
(
PayList
::
const_iterator
it
=
payList
.
constBegin
();
it
!=
payList
.
constEnd
();
it
++
)
{
for
(
Lazy
PayList
::
const_iterator
it
=
payList
.
constBegin
();
it
!=
payList
.
constEnd
();
it
++
)
{
QJsonObject
payObj
;
payObj
[
ServerProps
(
PosProps
.
Amount
)]
=
it
->
load
()
->
payAmount
();
payObj
[
ServerProps
(
PosProps
.
TransId
)]
=
it
->
load
()
->
transId
();
...
...
fmvip/task/taskqrpay.cpp
View file @
5b8f71e5
...
...
@@ -20,7 +20,7 @@ void TaskQRPay::packagePOSReq()
QSharedPointer
<
StoreInfo
>
storeInfo
=
GetLastStoreInfo
();
QSharedPointer
<
Order
>
_order
;
QSharedPointer
<
Order
>
_order
(
new
Order
())
;
try
{
// _transactionPay.reset(DBSP()->begin());
transaction
t
(
DBSP
()
->
begin
());
...
...
@@ -29,7 +29,7 @@ void TaskQRPay::packagePOSReq()
odb
::
result
<
Order
>
r
=
DBSP
()
->
query
<
Order
>
(
query
<
Order
>::
orderId
==
orderId
);
if
(
r
.
empty
())
{
QSharedPointer
<
StoreInfo
>
transStoreInfo
;
QSharedPointer
<
StoreInfo
>
transStoreInfo
(
new
StoreInfo
())
;
transStoreInfo
->
setStoreId
(
getPosJsonValue
(
PosProps
.
StoreId
).
toString
());
transStoreInfo
->
setPosId
(
getPosJsonValue
(
PosProps
.
PosId
).
toString
());
transStoreInfo
->
setBusinessDate
(
getPosJsonValue
(
PosProps
.
BusinessDate
).
toString
());
...
...
@@ -41,7 +41,7 @@ void TaskQRPay::packagePOSReq()
_order
->
setStoreInfo
(
storeInfo
);
}
_order
->
setOrderId
(
getPosJsonValue
(
PosProps
.
OrderId
).
toString
()
);
_order
->
setOrderId
(
orderId
);
_order
->
setOrderAmount
(
getPosJsonValue
(
PosProps
.
OrderAmount
).
toInt
());
_order
->
setUndisAmount
(
getPosJsonValue
(
PosProps
.
UndisAmount
).
toInt
());
...
...
@@ -50,8 +50,6 @@ void TaskQRPay::packagePOSReq()
_order
->
setProductText
(
productText
);
DBSP
()
->
persist
(
_order
);
t
.
commit
();
}
else
{
_order
=
DBSP
()
->
load
<
Order
>
(
r
.
begin
()
->
id
());
...
...
@@ -62,7 +60,9 @@ void TaskQRPay::packagePOSReq()
setError
(
FM_API_ERROR
,
info
);
return
;
}
_order
->
setOrderAmount
(
getPosJsonValue
(
PosProps
.
OrderAmount
).
toInt
());
//! 目前接口中支付时OrderAmount可能和会员的不同,暂时不修改订单金额。
// _order->setOrderAmount(getPosJsonValue(PosProps.OrderAmount).toInt());
_order
->
setUndisAmount
(
getPosJsonValue
(
PosProps
.
UndisAmount
).
toInt
());
QJsonArray
productArray
=
getPosJsonValue
(
PosProps
.
Products
).
toArray
();
...
...
@@ -96,11 +96,10 @@ void TaskQRPay::packagePOSReq()
_order
->
setPaidAmount
(
_order
->
paidAmount
()
+
pay
->
payAmount
());
}
}
DBSP
()
->
update
(
_order
);
t
.
commit
();
DBSP
()
->
update
(
_order
);
t
.
commit
();
}
}
catch
(
const
odb
::
exception
&
e
)
{
QString
info
=
QString
::
fromLocal8Bit
(
"存储支付信息时异常:%1"
).
arg
(
e
.
what
());
FMP_ERROR
()
<<
info
;
...
...
fmvip/task/taskqrrefund.cpp
View file @
5b8f71e5
...
...
@@ -34,20 +34,20 @@ void TaskQRRefund::packagePOSReq()
}
else
{
_order
=
DBSP
()
->
load
<
Order
>
(
r
.
begin
()
->
id
());
// 检查订单是否已结算
if
(
_order
->
settled
())
{
QString
info
=
QString
::
fromLocal8Bit
(
"订单已结算,不能再进行支付
."
);
FMP_ERROR
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
return
;
}
//
// 检查订单是否已结算
//
if(_order->settled()) {
// QString info = QString::fromLocal8Bit("订单已结算,不能进行退款
.");
//
FMP_ERROR() << info;
//
setError(FM_API_ERROR, info);
//
return;
//
}
}
QSharedPointer
<
Pay
>
refundPay
;
PayList
pays
=
_order
->
payList
();
Lazy
PayList
pays
=
_order
->
payList
();
foreach
(
auto
payLazyPointer
,
pays
)
{
//! WARNING: 临时的找第三方支付的方法
if
(
payLazyPointer
.
load
()
->
t
ransId
()
!=
orderId
)
{
if
(
payLazyPointer
.
load
()
->
t
hirdTransId
()
!=
""
)
{
refundPay
=
payLazyPointer
.
getEager
();
break
;
}
...
...
fmvip/windows/forms/fmviporder.ui
View file @
5b8f71e5
...
...
@@ -1073,6 +1073,17 @@ font: 13px "微软雅黑";
</layout>
</widget>
<layoutdefault
spacing=
"6"
margin=
"11"
/>
<tabstops>
<tabstop>
pay_edit
</tabstop>
<tabstop>
pay_btn
</tabstop>
<tabstop>
coupon_page
</tabstop>
<tabstop>
coupon_prev_btn
</tabstop>
<tabstop>
coupon_next_btn
</tabstop>
<tabstop>
close_btn
</tabstop>
<tabstop>
pay_key
</tabstop>
<tabstop>
score_edit
</tabstop>
<tabstop>
score_key
</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>
tests/autotest/tst_db_query.h
View file @
5b8f71e5
...
...
@@ -43,6 +43,29 @@ TEST_F(TestDBQuery, Load)
}
}
TEST_F
(
TestDBQuery
,
QueryAll
)
{
try
{
transaction
t
(
DBSP
()
->
begin
());
result
<
Order
>
r
(
DBSP
()
->
query
<
Order
>
());
ASSERT_FALSE
(
r
.
empty
());
QSharedPointer
<
Order
>
firstOrder
=
r
.
begin
().
load
();
EXPECT_EQ
(
firstOrder
->
id
(),
1
);
for
(
result
<
Order
>::
iterator
it
(
r
.
begin
());
it
!=
r
.
end
();
++
it
)
{
EXPECT_NE
(
it
->
orderId
(),
""
);
}
t
.
commit
();
}
catch
(
const
odb
::
exception
&
e
)
{
FAIL
()
<<
"Exception: "
<<
e
.
what
()
<<
std
::
endl
;
}
}
TEST_F
(
TestDBQuery
,
Query
)
{
try
{
...
...
@@ -103,4 +126,46 @@ TEST_F(TestDBQuery, T_GetLastStoreInfo)
EXPECT_EQ
(
newLastSi
->
businessDate
(),
newSi
.
businessDate
());
}
TEST_F
(
TestDBQuery
,
GetCanRefund
)
{
try
{
odb
::
transaction
t
(
DBSP
()
->
begin
());
QSharedPointer
<
StoreInfo
>
storeInfo
(
new
StoreInfo
);
storeInfo
->
setStoreId
(
"99999"
);
DBSP
()
->
persist
(
storeInfo
);
ASSERT_NE
(
storeInfo
->
id
(),
1
);
QSharedPointer
<
Order
>
order
(
new
Order
());
order
->
setOrderAmount
(
500
);
order
->
setPaidAmount
(
350
);
order
->
setStoreInfo
(
storeInfo
);
DBSP
()
->
persist
(
order
);
ASSERT_NE
(
order
->
id
(),
1
);
// 插入5个支付,其中一个已经全部退款
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
QSharedPointer
<
Pay
>
pay
(
new
Pay
());
pay
->
setOrder
(
order
);
pay
->
setPayAmount
(
100
);
if
(
i
==
0
)
{
pay
->
setRefundAmount
(
100
);
}
else
if
(
i
==
1
)
{
pay
->
setRefundAmount
(
50
);
}
DBSP
()
->
persist
(
pay
);
ASSERT_NE
(
pay
->
id
(),
1
);
}
DBSP
()
->
reload
(
order
);
ASSERT_EQ
(
order
->
payList
().
size
(),
5
);
PayList
pays
=
order
->
getCanRefundPatList
();
ASSERT_EQ
(
pays
.
size
(),
4
);
EXPECT_EQ
(
pays
.
first
()
->
refundAmount
(),
50
);
t
.
commit
();
}
catch
(
const
odb
::
exception
&
e
)
{
FAIL
()
<<
"Exception: "
<<
e
.
what
()
<<
std
::
endl
;
}
}
#endif // TST_DB_QUERY_H
version.h
View file @
5b8f71e5
...
...
@@ -5,7 +5,7 @@
#define VER_MINOR 1
#define VER_REVISION 0
#define VER_BUILD
49
#define VER_BUILD
52
//! Convert version numbers to string
#define _STR(S) #S
...
...
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