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
5c233792
Commit
5c233792
authored
Oct 19, 2017
by
NitefullWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 新会员功能基本实现。
parent
fa12d19d
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
217 additions
and
135 deletions
+217
-135
fmvip/database/dbop.cpp
+20
-5
fmvip/database/dbop.h
+3
-1
fmvip/global.h
+7
-1
fmvip/items/item.cpp
+4
-0
fmvip/items/order.cpp
+11
-44
fmvip/items/order.h
+6
-20
fmvip/task/fmtask.cpp
+8
-4
fmvip/task/taskfinal.cpp
+33
-21
fmvip/task/taskfinal.h
+1
-0
fmvip/task/taskfund.cpp
+1
-1
fmvip/task/taskothers.cpp
+2
-2
fmvip/task/taskpay.cpp
+21
-12
fmvip/task/taskpay.h
+1
-1
fmvip/task/taskrefund.cpp
+36
-9
fmvip/task/taskrefund.h
+2
-0
fmvip/windows/fmviprefund.cpp
+20
-6
fmvip/windows/fmviprefund.h
+3
-0
fmvip/windows/forms/fmviprefund.ui
+7
-0
tests/testitem/tst_testitem.cpp
+1
-1
tests/testplugin/tst_testplugin.cpp
+29
-6
version.h
+1
-1
No files found.
fmvip/database/dbop.cpp
View file @
5c233792
...
...
@@ -37,7 +37,7 @@ void DBOP::InserTable(const QString &tableName, const QString &transId, const QS
{
QVariantHash
hash
;
hash
[
PosProps
.
TransId
]
=
transId
;
hash
[
PosProps
.
Fm_id
]
=
fmId
;
hash
[
PosProps
.
Fm_
order_
id
]
=
fmId
;
hash
[
"reqData"
]
=
reqData
;
hash
[
"rspData"
]
=
rspData
;
Instance
()
->
_db
->
insert
(
tableName
,
hash
);
...
...
@@ -53,9 +53,9 @@ bool DBOP::CreateTable(const QString &tableName)
"[paid_amount] INT DEFAULT 0, "
"[undis_amount] INT DEFAULT 0, "
"[fm_open_id] VARCHAR(50), "
"[products] TEXT"
"[products] TEXT
,
"
"[settle] BOOL DEFAULT 0,"
"[storeInfo
Id] INTEGER
"
"[storeInfo
DBID] INTEGER DEFAULT 0
"
");"
;
QString
tablePaySql
=
"CREATE TABLE [Pay]("
"[id] INTEGER PRIMARY KEY autoincrement, "
...
...
@@ -67,7 +67,7 @@ bool DBOP::CreateTable(const QString &tableName)
"[account] VARCHAR(50), "
"[trans_id] VARCHAR(50), "
"[fm_trans_id] VARCHAR(50),"
"[orderDBID] INTEGER"
"[orderDBID] INTEGER
DEFAULT 0
"
");"
;
QString
tableStoreInfoSql
=
"CREATE TABLE [StoreInfo]("
"[id] INTEGER PRIMARY KEY autoincrement, "
...
...
@@ -219,7 +219,7 @@ QSharedPointer<FMItem::Pay> DBOP::GetPayByDBId(unsigned int DBID)
return
pay
;
}
void
DBOP
::
GetLastItem
(
Item
*
item
)
bool
DBOP
::
GetLastItem
(
Item
*
item
)
{
Q_ASSERT
(
item
!=
nullptr
);
...
...
@@ -231,6 +231,7 @@ void DBOP::GetLastItem(Item *item)
}
else
{
FMP_WARN
()
<<
"Dont't find last item in table: "
<<
item
->
ShortClassName
();
}
return
isOk
;
}
//template<typename T>
...
...
@@ -241,3 +242,17 @@ void DBOP::GetLastItem(Item *item)
// return itemPointer;
//}
bool
DBOP
::
GetItemByDBID
(
unsigned
int
DBID
,
Item
*
item
)
{
Q_ASSERT
(
item
!=
NULL
);
QSqlQuery
query
;
QString
condition
=
QString
(
"id == '%1'"
).
arg
(
DBID
);
bool
isOk
=
Instance
()
->
_db
->
find
(
item
->
ShortClassName
(),
query
,
QStringList
(),
condition
);
if
(
isOk
&&
query
.
next
())
{
item
->
SetPropertiesBySqlRecord
(
query
.
record
());
}
else
{
FMP_WARN
()
<<
"Don't find item by DBID: "
<<
DBID
;
}
return
isOk
;
}
fmvip/database/dbop.h
View file @
5c233792
...
...
@@ -37,10 +37,12 @@ public:
static
void
GetPayByDBId
(
unsigned
int
DBID
,
FMItem
::
Pay
*
pay
);
static
QSharedPointer
<
FMItem
::
Pay
>
GetPayByDBId
(
unsigned
int
DBID
);
static
void
GetLastItem
(
FMItem
::
Item
*
item
);
static
bool
GetLastItem
(
FMItem
::
Item
*
item
);
// template<typename T>
// static QSharedPointer<T> GetLastItem();
static
bool
GetItemByDBID
(
unsigned
int
DBID
,
FMItem
::
Item
*
item
);
private
:
DBOP
();
FMPDataBase
*
_db
;
...
...
fmvip/global.h
View file @
5c233792
...
...
@@ -75,6 +75,9 @@ struct PP{
Fm_cmd
=
"fm_cmd"
;
FM_Type
=
"FM_Type"
;
TransId
=
"trans_id"
;
OrderId
=
"order_id"
;
fmTransId
=
"fm_trans_id"
;
Fm_order_id
=
"fm_order_id"
;
Member_sign
=
"member_sign"
;
Account
=
"account"
;
Type_code
=
"type_code"
;
...
...
@@ -155,6 +158,9 @@ struct PP{
QString
Fm_cmd
;
QString
FM_Type
;
QString
TransId
;
QString
OrderId
;
QString
fmTransId
;
QString
Fm_order_id
;
QString
Member_sign
;
QString
Account
;
QString
Type_code
;
...
...
@@ -246,7 +252,7 @@ const PropsMap::value_type PropsMapPairs[] =
PropsMap
::
value_type
(
PosProps
.
TransId
,
"transId"
),
PropsMap
::
value_type
(
PosProps
.
Coupon
,
"couponCode"
),
PropsMap
::
value_type
(
PosProps
.
BussinessDate
,
"businessDate"
),
PropsMap
::
value_type
(
PosProps
.
Fm_id
,
"memberTransId"
),
PropsMap
::
value_type
(
PosProps
.
Fm_
order_
id
,
"memberTransId"
),
PropsMap
::
value_type
(
PosProps
.
Fm_open_id
,
"account"
),
PropsMap
::
value_type
(
PosProps
.
Account
,
"memberNo"
),
PropsMap
::
value_type
(
PosProps
.
CouponList
,
"coupon_list"
),
...
...
fmvip/items/item.cpp
View file @
5c233792
...
...
@@ -68,6 +68,10 @@ QJsonObject Item::toJson(QStringList keys, QJsonObject json)
{
if
(
keys
.
isEmpty
())
{
foreach
(
const
QString
&
property
,
this
->
PropertyNames
())
{
//! 跳过DBID属性,避免误设置item的数据库id
if
(
property
.
compare
(
"DBID"
)
==
0
)
{
continue
;
}
QVariant
value
=
this
->
property
(
property
.
toUtf8
().
data
());
json
[
property
]
=
QJsonValue
::
fromVariant
(
value
);
}
...
...
fmvip/items/order.cpp
View file @
5c233792
...
...
@@ -12,15 +12,12 @@ Order::Order(QObject *parent)
,
_orderAmount
(
0
)
,
_paidAmount
(
0
)
,
_undisAmount
(
0
)
,
_storeId
(
""
)
,
_posId
(
""
)
,
_operatorId
(
""
)
,
_businessDate
(
""
)
,
_fmOpenId
(
""
)
,
_payList
(
ItemList
())
,
_productList
(
ProductList
())
,
_productText
(
""
)
,
_settled
(
false
)
,
_storeInfoDBID
(
0
)
{
}
...
...
@@ -75,46 +72,6 @@ void Order::setUndisAmount(int undisAmount)
_undisAmount
=
undisAmount
;
}
QString
Order
::
storeId
()
const
{
return
_storeId
;
}
void
Order
::
setStoreId
(
const
QString
&
storeId
)
{
_storeId
=
storeId
;
}
QString
Order
::
posId
()
const
{
return
_posId
;
}
void
Order
::
setPosId
(
const
QString
&
posId
)
{
_posId
=
posId
;
}
QString
Order
::
operatorId
()
const
{
return
_operatorId
;
}
void
Order
::
setOperatorId
(
const
QString
&
operatorId
)
{
_operatorId
=
operatorId
;
}
QString
Order
::
businessDate
()
const
{
return
_businessDate
;
}
void
Order
::
setBusinessDate
(
const
QString
&
businessDate
)
{
_businessDate
=
businessDate
;
}
QString
Order
::
fmOpenId
()
const
{
return
_fmOpenId
;
...
...
@@ -164,3 +121,13 @@ void Order::setSettled(bool settled)
{
_settled
=
settled
;
}
int
Order
::
storeInfoDBID
()
const
{
return
_storeInfoDBID
;
}
void
Order
::
setStoreInfoDBID
(
int
storeInfoDBID
)
{
_storeInfoDBID
=
storeInfoDBID
;
}
fmvip/items/order.h
View file @
5c233792
...
...
@@ -22,13 +22,10 @@ namespace FMItem {
Q_PROPERTY
(
int
order_amount
READ
orderAmount
WRITE
setOrderAmount
)
Q_PROPERTY
(
int
paid_amount
READ
paidAmount
WRITE
setPaidAmount
)
Q_PROPERTY
(
int
undis_amount
READ
undisAmount
WRITE
setUndisAmount
)
Q_PROPERTY
(
QString
store_id
READ
storeId
WRITE
setStoreId
)
Q_PROPERTY
(
QString
pos_id
READ
posId
WRITE
setPosId
)
Q_PROPERTY
(
QString
operator_id
READ
operatorId
WRITE
setOperatorId
)
Q_PROPERTY
(
QString
business_date
READ
businessDate
WRITE
setBusinessDate
)
Q_PROPERTY
(
QString
fm_open_id
READ
fmOpenId
WRITE
setFmOpenId
)
Q_PROPERTY
(
QString
products
READ
productText
WRITE
setProductText
)
Q_PROPERTY
(
bool
settled
READ
settled
WRITE
setSettled
)
Q_PROPERTY
(
int
storeInfoDBID
READ
storeInfoDBID
WRITE
setStoreInfoDBID
)
// Q_PROPERTY(ItemList payList READ payList WRITE setPayList)
// Q_PROPERTY(ProductList productList READ productList WRITE setProductList)
public:
...
...
@@ -49,18 +46,6 @@ namespace FMItem {
int
undisAmount
()
const
;
void
setUndisAmount
(
int
undisAmount
);
QString
storeId
()
const
;
void
setStoreId
(
const
QString
&
storeId
);
QString
posId
()
const
;
void
setPosId
(
const
QString
&
posId
);
QString
operatorId
()
const
;
void
setOperatorId
(
const
QString
&
operatorId
);
QString
businessDate
()
const
;
void
setBusinessDate
(
const
QString
&
businessDate
);
QString
fmOpenId
()
const
;
void
setFmOpenId
(
const
QString
&
fmOpenId
);
...
...
@@ -76,6 +61,9 @@ namespace FMItem {
bool
settled
()
const
;
void
setSettled
(
bool
settled
);
int
storeInfoDBID
()
const
;
void
setStoreInfoDBID
(
int
storeInfoDBID
);
private
:
QString
_orderId
;
QString
_fmOrderId
;
...
...
@@ -83,16 +71,14 @@ namespace FMItem {
int
_paidAmount
;
int
_undisAmount
;
QString
_storeId
;
QString
_posId
;
QString
_operatorId
;
QString
_businessDate
;
QString
_fmOpenId
;
QString
_productText
;
bool
_settled
;
int
_storeInfoDBID
;
ItemList
_payList
;
ProductList
_productList
;
};
...
...
fmvip/task/fmtask.cpp
View file @
5c233792
...
...
@@ -252,10 +252,14 @@ bool FMTask::checkReqJson()
QJsonObject
optionalFieldObj
=
_checkJsonObj
[
PosProps
.
OptionalField
].
toObject
();
QStringList
checkKeys
=
mandatoryFieldObj
.
keys
()
+
optionalFieldObj
.
keys
();
foreach
(
const
QString
&
checkKey
,
checkKeys
)
{
if
(
!
posReqJsonObj
.
contains
(
checkKey
)
&&
mandatoryFieldObj
.
contains
(
checkKey
))
{
isOk
=
false
;
setError
(
FM_API_BADJSON
,
QString
::
fromLocal8Bit
(
"请求不合法,需要[%1]字段。"
).
arg
(
checkKey
));
break
;
if
(
!
posReqJsonObj
.
contains
(
checkKey
))
{
if
(
mandatoryFieldObj
.
contains
(
checkKey
))
{
isOk
=
false
;
setError
(
FM_API_BADJSON
,
QString
::
fromLocal8Bit
(
"请求不合法,需要[%1]字段。"
).
arg
(
checkKey
));
break
;
}
else
if
(
optionalFieldObj
.
contains
(
checkKey
))
{
break
;
}
}
QVariant
expectValue
;
...
...
fmvip/task/taskfinal.cpp
View file @
5c233792
...
...
@@ -7,6 +7,7 @@
#include "dbop.h"
#include "items/order.h"
#include "items/pay.h"
#include "items/storeinfo.h"
#include <QDateTime>
#include <QJsonDocument>
#include <QJsonArray>
...
...
@@ -24,27 +25,37 @@ TaskFinal::~TaskFinal()
delete
_order
;
}
void
TaskFinal
::
package
Server
Req
()
void
TaskFinal
::
package
POS
Req
()
{
QString
transId
=
getPosJsonValue
(
PosProps
.
Trans
Id
).
toString
();
DBOP
::
GetOrderByOrderId
(
trans
Id
,
_order
);
QString
orderId
=
getPosJsonValue
(
PosProps
.
Order
Id
).
toString
();
DBOP
::
GetOrderByOrderId
(
order
Id
,
_order
);
QStringList
keys
;
keys
<<
PosProps
.
OperatorId
<<
PosProps
.
PosId
<<
PosProps
.
StoreId
;
QMap
<
QString
,
QString
>
key2proMap
;
foreach
(
QString
key
,
keys
)
{
key2proMap
[
ServerProps
(
key
)]
=
key
;
FMItem
::
StoreInfo
storeInfo
;
bool
isOk
=
DBOP
::
GetLastItem
(
&
storeInfo
)
;
if
(
isOk
)
{
posReqJsonObj
=
storeInfo
.
toJson
(
QStringList
(),
posReqJsonObj
);
_order
->
setStoreInfoDBID
(
storeInfo
.
DBID
())
;
}
serverReqJsonObj
=
_order
->
toJson
(
key2proMap
,
serverReqJsonObj
);
}
void
TaskFinal
::
packageServerReq
()
{
QMap
<
QString
,
QString
>
key2proMap
;
QStringList
keys
;
QJsonObject
dataObj
;
keys
.
clear
();
keys
<<
PosProps
.
Fm_open_id
<<
PosProps
.
OrderAmount
<<
PosProps
.
PaidAmount
<<
PosProps
.
Fm_id
<<
PosProps
.
BussinessDate
<<
PosProps
.
TransId
;
keys
<<
PosProps
.
Fm_open_id
<<
PosProps
.
OrderAmount
<<
PosProps
.
PaidAmount
<<
PosProps
.
Fm_order_id
<<
PosProps
.
TransId
;
key2proMap
.
clear
();
foreach
(
QString
key
,
keys
)
{
key2proMap
[
ServerProps
(
key
)]
=
key
;
}
dataObj
=
_order
->
toJson
(
key2proMap
,
dataObj
);
dataObj
[
ServerProps
(
PosProps
.
TransId
)]
=
getPosJsonValue
(
PosProps
.
OrderId
);
FMItem
::
StoreInfo
storeInfo
;
bool
isOk
=
DBOP
::
GetItemByDBID
(
_order
->
storeInfoDBID
(),
&
storeInfo
);
if
(
isOk
)
{
dataObj
[
ServerProps
(
PosProps
.
BussinessDate
)]
=
storeInfo
.
businessDate
();
}
// Products
QString
productText
=
_order
->
productText
();
...
...
@@ -74,7 +85,7 @@ void TaskFinal::packageServerReq()
if
(
_order
->
orderAmount
()
>
_order
->
paidAmount
())
{
QSharedPointer
<
FMItem
::
Pay
>
cashPay
(
new
FMItem
::
Pay
());
cashPay
->
setPayId
(
"
0101
"
);
cashPay
->
setPayId
(
"
20005
"
);
cashPay
->
setPayAmount
(
_order
->
orderAmount
()
-
_order
->
paidAmount
());
cashPay
->
setTransId
(
_order
->
orderId
());
payList
.
append
(
cashPay
);
...
...
@@ -87,16 +98,12 @@ void TaskFinal::packageServerReq()
payObj
[
"thirdPayTransId"
]
=
it
->
data
()
->
fmTransId
();
QString
typeModeFlag
=
it
->
data
()
->
payId
();
if
(
typeModeFlag
==
"
0101
"
)
{
if
(
typeModeFlag
==
"
20005
"
)
{
//现金支付
payObj
[
"typeModeFlag"
]
=
"20005"
;
}
else
if
(
typeModeFlag
==
"
0103
"
)
{
}
else
if
(
typeModeFlag
==
"
20010
"
)
{
payObj
[
"typeModeFlag"
]
=
"20010"
;
}
else
if
(
typeModeFlag
==
"0301"
)
{
payObj
[
"typeModeFlag"
]
=
"10011"
;
}
else
if
(
typeModeFlag
==
"0302"
)
{
payObj
[
"typeModeFlag"
]
=
"10011"
;
}
else
if
(
typeModeFlag
==
"0303"
)
{
}
else
if
(
typeModeFlag
==
"10011"
)
{
payObj
[
"typeModeFlag"
]
=
"10011"
;
}
else
{
payObj
[
"typeModeFlag"
]
=
typeModeFlag
;
...
...
@@ -181,7 +188,7 @@ bool TaskFinal::sendToServer(bool isShowMsg)
setError
(
FM_API_SUCCESS
);
serverRspJsonObj
[
ServerProps
(
PosProps
.
StatusCode
)]
=
FM_API_SUCCESS
;
serverRspJsonObj
[
ServerProps
(
PosProps
.
Msg
)]
=
QString
::
fromLocal8Bit
(
"结算成功"
);
serverRspJsonObj
[
ServerProps
(
PosProps
.
Fm_id
)]
=
fm_id
;
serverRspJsonObj
[
ServerProps
(
PosProps
.
Fm_
order_
id
)]
=
fm_id
;
serverRspJsonObj
[
ServerProps
(
PosProps
.
Prompt
)]
=
1
;
serverRspJsonObj
[
ServerProps
(
PosProps
.
Print1
)]
=
""
;
serverRspJsonObj
[
ServerProps
(
PosProps
.
Print2
)]
=
""
;
...
...
@@ -201,7 +208,7 @@ void TaskFinal::packagePOSRsp()
std
::
vector
<
QString
>
p
;
p
.
push_back
(
PosProps
.
StatusCode
);
p
.
push_back
(
PosProps
.
Msg
);
p
.
push_back
(
PosProps
.
Fm_id
);
p
.
push_back
(
PosProps
.
Fm_
order_
id
);
p
.
push_back
(
PosProps
.
Print1
);
p
.
push_back
(
PosProps
.
Print2
);
foreach
(
auto
prop
,
p
)
...
...
@@ -209,6 +216,11 @@ void TaskFinal::packagePOSRsp()
posRspJsonObj
[
prop
]
=
getServerJsonValue
(
prop
);
}
posRspJsonObj
[
PosProps
.
Prompt
]
=
1
;
if
(
getServerJsonValue
(
PosProps
.
StatusCode
).
toInt
()
==
FM_API_SUCCESS
)
{
_order
->
setSettled
(
true
);
DBOP
::
Save
(
_order
);
}
}
QString
TaskFinal
::
backup
()
...
...
fmvip/task/taskfinal.h
View file @
5c233792
...
...
@@ -13,6 +13,7 @@ public:
explicit
TaskFinal
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
~
TaskFinal
();
void
packagePOSReq
();
void
packageServerReq
();
bool
sendToServer
(
bool
isShowMsg
=
true
);
void
packagePOSRsp
();
...
...
fmvip/task/taskfund.cpp
View file @
5c233792
...
...
@@ -43,7 +43,7 @@ void TaskFund::packagePOSRsp()
std
::
vector
<
QString
>
p
;
p
.
push_back
(
PosProps
.
StatusCode
);
p
.
push_back
(
PosProps
.
Msg
);
p
.
push_back
(
PosProps
.
Fm_id
);
p
.
push_back
(
PosProps
.
Fm_
order_
id
);
p
.
push_back
(
PosProps
.
Print
);
foreach
(
QString
prop
,
p
)
{
posRspJsonObj
[
prop
]
=
getServerJsonValue
(
prop
);
...
...
fmvip/task/taskothers.cpp
View file @
5c233792
...
...
@@ -83,8 +83,8 @@ TaskRefundOrder::TaskRefundOrder(QJsonObject &jsonObj, QObject *parent)
void
TaskRefundOrder
::
packageServerReq
()
{
QJsonObject
transData
;
transData
[
ServerProps
(
PosProps
.
Fm_
id
)]
=
getPosJsonValue
(
PosProps
.
Fm
_id
);
transData
[
ServerProps
(
PosProps
.
TransId
)]
=
getPosJsonValue
(
PosProps
.
Trans
Id
);
transData
[
ServerProps
(
PosProps
.
Fm_
order_id
)]
=
getPosJsonValue
(
PosProps
.
Fm_order
_id
);
transData
[
ServerProps
(
PosProps
.
OrderId
)]
=
getPosJsonValue
(
PosProps
.
Order
Id
);
serverReqJsonObj
[
"data"
]
=
transData
;
}
...
...
fmvip/task/taskpay.cpp
View file @
5c233792
...
...
@@ -7,6 +7,7 @@
#include "dbop.h"
#include "items/order.h"
#include "items/pay.h"
#include "items/storeinfo.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QCryptographicHash>
...
...
@@ -18,18 +19,21 @@ TaskPay::TaskPay(QJsonObject &jsonObj, Session *session, QObject *parent)
{
}
QByteArray
TaskPay
::
doTask
()
{
FMP_DEBUG
()
<<
__FUNCTION__
;
void
TaskPay
::
packagePOSReq
()
{
FMItem
::
StoreInfo
storeInfo
;
DBOP
::
GetLastItem
(
&
storeInfo
);
posReqJsonObj
=
storeInfo
.
toJson
(
QStringList
(),
posReqJsonObj
);
QString
fm_open_id_pos
=
getPosJsonValue
(
PosProps
.
Fm_open_id
).
toString
();
QString
fm_open_id_session
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
if
(
fm_open_id_session
==
""
||
fm_open_id_pos
!=
fm_open_id_session
||
session
()
->
data
(
PosProps
.
CanPay
).
toBool
()
==
false
)
{
preTask
=
new
TaskLogin
(
posReqJsonObj
,
_session
,
this
);
preTask
->
session
()
->
addData
(
PosProps
.
FM_Type
,
FM_Pay
);
QByteArray
loginRst
=
preTask
->
doTask
();
preTask
->
doTask
();
if
(
preTask
->
error
()
!=
FM_API_SUCCESS
)
{
return
loginRst
;
setError
(
preTask
->
error
())
;
}
this
->
_session
=
preTask
->
session
();
}
...
...
@@ -41,7 +45,6 @@ QByteArray TaskPay::doTask()
couponThread
=
new
TaskCouponThread
(
posReqJsonObj
,
_session
,
this
);
couponThread
->
start
();
connect
(
couponThread
,
SIGNAL
(
finished
(
Session
*
)),
SLOT
(
onGetCoupons
(
Session
*
)));
return
FMTask
::
doTask
();
}
void
TaskPay
::
onGetCoupons
(
Session
*
session
)
...
...
@@ -69,8 +72,8 @@ void TaskPay::packageServerReq()
QJsonObject
transData
;
transData
[
ServerProps
(
PosProps
.
TransId
)]
=
getPosJsonValue
(
PosProps
.
TransId
);
transData
[
ServerProps
(
PosProps
.
Fm_
id
)]
=
getPosJsonValue
(
PosProps
.
Fm
_id
);
transData
[
ServerProps
(
PosProps
.
Fm_id
)]
=
""
;
transData
[
ServerProps
(
PosProps
.
Fm_
order_id
)]
=
getPosJsonValue
(
PosProps
.
Fm_order
_id
);
transData
[
ServerProps
(
PosProps
.
Fm_
order_
id
)]
=
""
;
transData
[
ServerProps
(
PosProps
.
Fm_open_id
)]
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
QJsonArray
products
;
...
...
@@ -158,8 +161,9 @@ void TaskPay::packageServerReq()
void
TaskPay
::
packagePOSRsp
()
{
int
status
=
getServerJsonValue
(
PosProps
.
StatusCode
).
toInt
();
QString
orderId
=
getPosJsonValue
(
PosProps
.
OrderId
).
toString
();
QString
transId
=
getPosJsonValue
(
PosProps
.
TransId
).
toString
();
QString
fm
Id
=
getServerJsonValue
(
PosProps
.
Fm
_id
).
toString
();
QString
fm
_order_id
=
getServerJsonValue
(
PosProps
.
Fm_order
_id
).
toString
();
QString
fm_open_id
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
bool
isOk
=
(
status
==
FM_API_SUCCESS
);
...
...
@@ -169,14 +173,19 @@ void TaskPay::packagePOSRsp()
posRspJsonObj
[
PosProps
.
Prompt
]
=
0
;
posRspJsonObj
[
PosProps
.
Settlement
]
=
1
;
posRspJsonObj
[
PosProps
.
Fm_open_id
]
=
fm_open_id
;
posRspJsonObj
[
PosProps
.
Fm_
id
]
=
fmI
d
;
posRspJsonObj
[
PosProps
.
Fm_
order_id
]
=
fm_order_i
d
;
Order
*
order
=
new
Order
(
this
);
DBOP
::
GetOrderByOrderId
(
trans
Id
,
order
);
DBOP
::
GetOrderByOrderId
(
order
Id
,
order
);
// 如果订单是新的,则保存在数据库中
if
(
isOk
&&
order
->
isNew
())
{
order
->
SetPropertiesByJson
(
posReqJsonObj
);
order
->
SetPropertiesByJson
(
posRspJsonObj
);
FMItem
::
StoreInfo
storeInfo
;
DBOP
::
GetLastItem
(
&
storeInfo
);
order
->
setStoreInfoDBID
(
storeInfo
.
DBID
());
isOk
=
DBOP
::
Save
(
order
);
}
...
...
@@ -210,7 +219,7 @@ void TaskPay::packagePOSRsp()
pay
->
setTransId
(
transId
);
pay
->
setOrderDBID
(
order
->
DBID
());
pay
->
setAccount
(
fm_open_id
);
pay
->
setFmTransId
(
fm
Id
);
pay
->
setFmTransId
(
trans
Id
);
DBOP
::
Save
(
pay
);
order
->
setPaidAmount
(
order
->
paidAmount
()
+
amount
);
DBOP
::
Save
(
order
);
...
...
fmvip/task/taskpay.h
View file @
5c233792
...
...
@@ -11,8 +11,8 @@ class TaskPay : public FMTask
Q_OBJECT
public
:
explicit
TaskPay
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
QByteArray
doTask
();
void
packagePOSReq
();
void
setWindow
();
void
packageServerReq
();
void
packagePOSRsp
();
...
...
fmvip/task/taskrefund.cpp
View file @
5c233792
...
...
@@ -4,9 +4,11 @@
#include "items/item.h"
#include "items/order.h"
#include "items/pay.h"
#include "items/storeinfo.h"
#include "taskothers.h"
#include <QSharedPointer>
#include <QJsonDocument>
#include "fmmsgwnd.h"
TaskRefund
::
TaskRefund
(
QJsonObject
&
jsonObj
,
Session
*
session
,
QObject
*
parent
)
:
FMTask
(
jsonObj
,
FM_Refund
,
session
,
parent
)
...
...
@@ -19,20 +21,25 @@ TaskRefund::~TaskRefund()
}
void
TaskRefund
::
packagePOSReq
()
{
QString
orderId
=
getPosJsonValue
(
PosProps
.
OrderId
).
toString
();
session
()
->
addData
(
PosProps
.
OrderId
,
orderId
);
//! TODO 需要从其他数据库查询营业日、门店信息等。
FMItem
::
StoreInfo
storeInfo
;
bool
isOk
=
DBOP
::
GetLastItem
(
&
storeInfo
);
if
(
isOk
)
{
posReqJsonObj
=
storeInfo
.
toJson
(
QStringList
(),
posReqJsonObj
);
}
}
void
TaskRefund
::
setWindow
()
{
_window
=
new
FMVipRefund
();
connect
(
qobject_cast
<
FMVipRefund
*>
(
_window
),
&
FMVipRefund
::
refundPay
,
this
,
&
TaskRefund
::
onRefundPay
);
QString
fmId
=
getPosJsonValue
(
PosProps
.
Fm_id
).
toString
();
QString
transId
=
getPosJsonValue
(
PosProps
.
TransId
).
toString
();
session
()
->
addData
(
PosProps
.
Fm_id
,
fmId
);
session
()
->
addData
(
PosProps
.
TransId
,
transId
);
//! TODO 需要从其他数据库查询营业日、门店信息等。
auto
orderPointer
=
DBOP
::
GetOrderByOrderId
(
transId
);
posReqJsonObj
=
orderPointer
->
toJson
(
QStringList
(),
posReqJsonObj
);
connect
(
qobject_cast
<
FMVipRefund
*>
(
_window
),
&
FMVipRefund
::
refundOrder
,
this
,
&
TaskRefund
::
onRefundOrder
);
}
void
TaskRefund
::
packageServerReq
()
...
...
@@ -53,6 +60,7 @@ void TaskRefund::onRefundPay(int DBID)
posReqJsonObj
=
orderPointer
->
toJson
(
QStringList
(),
posReqJsonObj
);
posReqJsonObj
[
PosProps
.
TransId
]
=
orderPointer
->
orderId
();
TaskRefundPay
refundPay
(
posReqJsonObj
,
this
);
QByteArray
rspData
=
refundPay
.
doTask
();
...
...
@@ -71,3 +79,22 @@ void TaskRefund::onRefundPay(int DBID)
FMMsgWnd
::
FailureWnd
(
msg
,
_window
);
}
}
void
TaskRefund
::
onRefundOrder
(
int
DBID
)
{
QSharedPointer
<
FMItem
::
Order
>
orderPointer
=
DBOP
::
GetOrderByDBId
(
DBID
);
posReqJsonObj
[
PosProps
.
Fm_order_id
]
=
orderPointer
->
fmOrderId
();
posReqJsonObj
[
PosProps
.
OrderId
]
=
orderPointer
->
orderId
();
TaskRefundOrder
refundOrder
(
posReqJsonObj
,
this
);
QByteArray
rspData
=
refundOrder
.
doTask
();
QJsonObject
rspObj
=
QJsonDocument
::
fromJson
(
rspData
).
object
();
if
(
rspObj
[
PosProps
.
StatusCode
].
toInt
()
==
FM_API_SUCCESS
)
{
orderPointer
->
setPaidAmount
(
0
);
DBOP
::
Save
(
orderPointer
.
data
());
qobject_cast
<
FMVipRefund
*>
(
_window
)
->
refresh
();
}
else
{
QString
msg
=
searchJsonValue
(
rspObj
,
PosProps
.
Msg
).
toString
();
FMMsgWnd
::
FailureWnd
(
msg
,
_window
);
}
}
fmvip/task/taskrefund.h
View file @
5c233792
...
...
@@ -10,12 +10,14 @@ public:
~
TaskRefund
();
private
:
void
packagePOSReq
();
void
setWindow
()
override
;
void
packageServerReq
();
void
packagePOSRsp
();
private
:
void
onRefundPay
(
int
DBID
);
void
onRefundOrder
(
int
DBID
);
};
#endif // TASKREFUND_H
fmvip/windows/fmviprefund.cpp
View file @
5c233792
...
...
@@ -8,6 +8,7 @@
#include "dbop.h"
#include "items/order.h"
#include "items/pay.h"
#include "items/storeinfo.h"
FMVipRefund
::
FMVipRefund
(
QDialog
*
parent
)
:
FMVipWnd
(
parent
),
...
...
@@ -33,21 +34,29 @@ bool FMVipRefund::initWnd(Session *session)
ui
->
operator_label
->
setText
(
session
->
data
(
PosProps
.
OperatorId
).
toString
());
ui
->
bd_label
->
setText
(
session
->
data
(
PosProps
.
BussinessDate
).
toString
());
QString
transId
=
session
->
data
(
PosProps
.
TransId
).
toString
();
DBOP
::
GetOrderByOrderId
(
transId
,
order
);
QString
orderId
=
session
->
data
(
PosProps
.
OrderId
).
toString
();
DBOP
::
GetOrderByOrderId
(
orderId
,
order
);
FMItem
::
StoreInfo
storeInfo
;
DBOP
::
GetItemByDBID
(
order
->
storeInfoDBID
(),
&
storeInfo
);
if
(
order
->
isNew
())
{
ui
->
textEdit_order
->
setText
(
QString
::
fromLocal8Bit
(
"未找到
transId为 %1 的订单! "
).
arg
(
trans
Id
));
ui
->
textEdit_order
->
setText
(
QString
::
fromLocal8Bit
(
"未找到
orderId为 %1 的订单! "
).
arg
(
order
Id
));
}
else
{
QString
orderInfo
=
QString
::
fromLocal8Bit
(
"POS
流水
号:%1
\n
"
QString
orderInfo
=
QString
::
fromLocal8Bit
(
"POS
订单
号:%1
\n
"
"非码订单号:%2
\n
"
"订单总额:%3
\t
已付金额:%4
\n
"
"营业日:%5
\t
收银员:%6
\n
"
"门店号:%7
\t
POS号:%8
\n
"
)
.
arg
(
order
->
orderId
()).
arg
(
order
->
fmOrderId
())
.
arg
(
order
->
orderAmount
()
/
100.0
).
arg
(
order
->
paidAmount
()
/
100.0
)
.
arg
(
order
->
businessDate
()).
arg
(
order
->
operatorId
())
.
arg
(
order
->
storeId
()).
arg
(
order
->
posId
());
.
arg
(
storeInfo
.
businessDate
()).
arg
(
storeInfo
.
operatorId
())
.
arg
(
storeInfo
.
storeId
()).
arg
(
storeInfo
.
posId
());
if
(
order
->
settled
())
{
orderInfo
+=
QString
::
fromLocal8Bit
(
"订单已结算,可以退整单
\n
"
);
}
else
{
orderInfo
+=
QString
::
fromLocal8Bit
(
"订单还未结算,可以选择退某笔支付
\n
"
);
}
ui
->
textEdit_order
->
setText
(
orderInfo
);
pays
=
DBOP
::
GetPaysByOrderDBId
(
order
->
DBID
());
...
...
@@ -105,3 +114,8 @@ void FMVipRefund::refresh()
{
initWnd
(
this
->
session
());
}
void
FMVipRefund
::
on_btn_refund_order_clicked
()
{
emit
refundOrder
(
order
->
DBID
());
}
fmvip/windows/fmviprefund.h
View file @
5c233792
...
...
@@ -27,10 +27,13 @@ public:
signals
:
void
refundPay
(
int
);
void
refundOrder
(
int
);
private
slots
:
void
onBtnRefundClicked
();
void
on_btn_refund_order_clicked
();
private
:
Ui
::
FMVipRefund
*
ui
;
...
...
fmvip/windows/forms/fmviprefund.ui
View file @
5c233792
...
...
@@ -209,6 +209,13 @@
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"btn_refund_order"
>
<property
name=
"text"
>
<string>
退整单
</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
...
...
tests/testitem/tst_testitem.cpp
View file @
5c233792
...
...
@@ -156,7 +156,7 @@ void TestItem::test_PropertyNames_data()
QTest
::
newRow
(
"Item"
)
<<
gItem
<<
itemPNames
.
length
()
<<
itemPNames
;
orderPNames
<<
"objectName"
<<
"DBID"
<<
"order_id"
<<
"fm_order_id"
<<
"order_amount"
<<
"paid_amount"
<<
"undis_amount"
<<
"
store_id"
<<
"pos_id"
<<
"operator_id"
<<
"business_date"
<<
"fm_open_id"
<<
"products"
<<
"settled
"
;
<<
"
fm_open_id"
<<
"products"
<<
"settled"
<<
"storeInfoDBID
"
;
QTest
::
newRow
(
"Order"
)
<<
qobject_cast
<
Item
*>
(
gOrder
)
<<
orderPNames
.
length
()
<<
orderPNames
;
payPNames
<<
"objectName"
<<
"DBID"
<<
"pay_id"
<<
"pay_str"
<<
"pay_amount"
<<
"refund_amount"
<<
"dis_amount"
<<
"account"
<<
"trans_id"
<<
"fmTransId"
<<
"orderDBID"
;
...
...
tests/testplugin/tst_testplugin.cpp
View file @
5c233792
...
...
@@ -46,13 +46,36 @@ void TestPlugin::test_dotask_data()
{
QTest
::
addColumn
<
QByteArray
>
(
"reqData"
);
// QTest::newRow("Refund") << QByteArray("{\"fm_cmd\": 1004,\"trans_id\": \"12345
\"}");
// QTest::newRow("Refund not") << QByteArray("{\"fm_cmd\": 1004,\"trans_id\": \"123456
\"}");
// QTest::newRow("SetStoreInfo") << QByteArray("{\"fm_cmd\": 1000,\"store_id\": \"fm
9999\",\"pos_id\": \"1\",\"business_date\": \"20171016\",\"operator_id\": \"001\"}");
//
QTest::newRow("SetStoreInfo_need_posId") << QByteArray("{\"fm_cmd\": 1000,\"store_id\": \"fm9999\",\"pos_id\": \"\",\"business_date\": \"20171016\",\"operator_id\": \"001\"}");
//
QTest::newRow("SetStoreInfo_notnull_posId") << QByteArray("{\"fm_cmd\": 1000,\"store_id\": \"fm9999\",\"business_date\": \"20171016\",\"operator_id\": \"001\"}");
//
QTest::newRow("SetStoreInfo_error_type") << QByteArray("{\"fm_cmd\": 1000,\"store_id\": \"fm9999\",\"pos_id\": 1,\"business_date\": \"20171016\",\"operator_id\": \"001\"}");
QTest
::
newRow
(
"Refund"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1004,
\"
order_id
\"
:
\"
20171018001
\"
}"
);
QTest
::
newRow
(
"Refund not"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1004,
\"
order_id
\"
:
\"
12345
\"
}"
);
QTest
::
newRow
(
"SetStoreInfo"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1000,
\"
store_id
\"
:
\"
9
9999
\"
,
\"
pos_id
\"
:
\"
1
\"
,
\"
business_date
\"
:
\"
20171016
\"
,
\"
operator_id
\"
:
\"
001
\"
}"
);
QTest
::
newRow
(
"SetStoreInfo_need_posId"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1000,
\"
store_id
\"
:
\"
fm9999
\"
,
\"
pos_id
\"
:
\"\"
,
\"
business_date
\"
:
\"
20171016
\"
,
\"
operator_id
\"
:
\"
001
\"
}"
);
QTest
::
newRow
(
"SetStoreInfo_notnull_posId"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1000,
\"
store_id
\"
:
\"
fm9999
\"
,
\"
business_date
\"
:
\"
20171016
\"
,
\"
operator_id
\"
:
\"
001
\"
}"
);
QTest
::
newRow
(
"SetStoreInfo_error_type"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1000,
\"
store_id
\"
:
\"
fm9999
\"
,
\"
pos_id
\"
: 1,
\"
business_date
\"
:
\"
20171016
\"
,
\"
operator_id
\"
:
\"
001
\"
}"
);
QTest
::
newRow
(
"Login"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1001,
\"
member_sign
\"
:
\"
12345
\"
}"
);
QTest
::
newRow
(
"Pay"
)
<<
QByteArray
(
"{"
"
\"
fm_cmd
\"
: 1003,"
"
\"
order_amount
\"
:9000,"
"
\"
trans_amount
\"
: 8000,"
"
\"
undis_amount
\"
: 8000,"
"
\"
order_id
\"
:
\"
20171018001
\"
,"
"
\"
trans_id
\"
:
\"
100001
\"
,"
"
\"
products
\"
: ["
" {"
"
\"
pid
\"
:
\"
0079020
\"
,"
"
\"
name
\"
:
\"
测试商品1
\"
,"
"
\"
price
\"
: 1000,"
"
\"
consume_num
\"
: 1"
" },"
" { "
"
\"
pid
\"
:
\"
0077842
\"
,"
"
\"
name
\"
:
\"
测试商品2
\"
,"
"
\"
price
\"
: 8000,"
"
\"
consume_num
\"
: 2"
" }"
" ]"
"}"
);
QTest
::
newRow
(
"Order"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1007,
\"
order_id
\"
:
\"
20171018001
\"
}"
);
}
void
TestPlugin
::
test_dotask
()
...
...
version.h
View file @
5c233792
...
...
@@ -5,7 +5,7 @@
#define VER_MINOR 1
#define VER_REVISION 0
#define VER_BUILD 1
4
#define VER_BUILD 1
6
//! 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