Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
takeout_sbk
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
yunpeng.song
takeout_sbk
Commits
b668bd81
Commit
b668bd81
authored
Jul 11, 2018
by
wuyang.zou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix buf : 完成退货功能
parent
e0e185f3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
119 additions
and
107 deletions
+119
-107
fmTakeout/Control/flowControl.cpp
+118
-103
fmTakeout/Control/flowControl.h
+1
-4
No files found.
fmTakeout/Control/flowControl.cpp
View file @
b668bd81
...
...
@@ -67,7 +67,7 @@ FlowControl::FlowControl()
loaclHttpServer
->
run
();
_ClickOMSAssignArea
();
m_loginTimer
->
start
(
2
0
*
1000
);
m_loginTimer
->
start
(
1
0
*
1000
);
}
...
...
@@ -183,7 +183,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
{
orderObject
->
isCancle
=
true
;
}
QString
posOrderCheckNo
=
m_orderIdToPosCheckNoMap
.
value
(
orderObject
->
id
);
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->isCancle--->>>>]"
)
<<
orderObject
->
isCancle
;
QString
posOrderCheckNo
=
m_orderIdToPosCheckNoMap
.
value
(
orderObject
->
id
);
if
(
posOrderCheckNo
.
isEmpty
())
{
...
...
@@ -636,6 +638,31 @@ bool FlowControl::_RefuseOrder(const QString &orderId, int refuseCode,const QStr
int
oldStatus
=
orderObject
->
orderStatus
;
orderObject
->
orderStatus
=
recvJson
[
JSON_STATUS
].
toInt
();
emit
changeOrderStatus
(
orderObject
,
oldStatus
);
//取消订单后,将此订单加入到simphony 模拟点单列表中;
if
(
OrderObject
::
Cancled
==
orderObject
->
orderStatus
){
if
(
!
orderObject
->
isCancle
)
{
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还没有模拟点单),则需要直接向现存在Sim有效队列中的记录移除;
m_OrderEntryMutex
.
lock
();
if
(
!
m_simValidOrdersList
.
contains
(
orderObject
->
id
))
{
m_simValidOrdersList
.
insert
(
0
,
orderObject
->
id
);
}
else
{
if
(
!
PrintSumBillPosDB
::
getInstance
().
isOrderSumBillExist
(
orderObject
->
id
)){
m_simValidOrdersList
.
removeOne
(
orderObject
->
id
);
}
}
orderObject
->
isCancle
=
true
;
orderObject
->
pushOrderType
==
0
;
m_OrderEntryMutex
.
unlock
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefuseOrder: m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefuseOrder: m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefuseOrder: _ClickOMSAssignArea --->>>>]"
);
_ClickOMSAssignArea
();
}
}
}
}
...
...
@@ -820,7 +847,34 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
OrderObject
*
orderObject
=
m_FmOrdersMap
.
value
(
orderId
);
int
oldOrderStatus
=
orderObject
->
orderStatus
;
orderObject
->
orderStatus
=
orderStatus
;
emit
changeOrderStatus
(
orderObject
,
oldOrderStatus
);
//退货订单,将此订单添加到simphony 模拟点单列表中;
if
(
OrderObject
::
Refunded
==
orderObject
->
orderStatus
){
if
(
!
orderObject
->
isCancle
)
{
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还没有模拟点单),则需要直接向现存在Sim有效队列中的记录移除;
m_OrderEntryMutex
.
lock
();
if
(
!
m_simValidOrdersList
.
contains
(
orderObject
->
id
))
{
m_simValidOrdersList
.
insert
(
0
,
orderObject
->
id
);
}
else
{
if
(
!
PrintSumBillPosDB
::
getInstance
().
isOrderSumBillExist
(
orderObject
->
id
)){
m_simValidOrdersList
.
removeOne
(
orderObject
->
id
);
}
}
orderObject
->
isCancle
=
true
;
orderObject
->
pushOrderType
==
0
;
m_OrderEntryMutex
.
unlock
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: _ClickOMSAssignArea --->>>>]"
);
_ClickOMSAssignArea
();
}
}
}
else
{
...
...
@@ -1160,76 +1214,10 @@ bool FlowControl::_ResponseSimphony01Request(const QJsonObject &content, QJsonOb
bool
FlowControl
::
_ResponseSimphony02Request
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
)
{
return
true
;
//TODO
/*QLOG_INFO()<<__FUNCTION__;
bool result = true;
if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString();
if(m_FmOrdersMap.contains(orderId))
{
emit doStartOperateTimer();
emit doConfirmOrder(orderId);
orderOperation.orderId=orderId;
orderOperation.operation=1;
semaphore.acquire(1);
if(m_bOperateResult)
{
error=QString::fromLocal8Bit("接单成功");
}
else{
error=QString::fromLocal8Bit("响应超时");
}
result=m_bOperateResult;
semaphore.release(1);
}
else{
result=false;
error=QString::fromLocal8Bit("订单不存在");
}
}
else{
result=false;
error=QString::fromLocal8Bit("请求参数错误");
}
return result;*/
}
bool
FlowControl
::
_ResponseSimphony03Request
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
)
{
return
true
;
//TODO
/*QLOG_INFO()<<__FUNCTION__;
bool result = true;
if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString();
if(m_FmOrdersMap.contains(orderId))
{
emit doStartOperateTimer();
emit doRefundOrder(orderId,-1,QString::fromLocal8Bit("同意退款"));
orderOperation.orderId=orderId;
orderOperation.operation=0;
semaphore.acquire(1);
if(m_bOperateResult)
{
error=QString::fromLocal8Bit("取消成功");
}
else{
error=QString::fromLocal8Bit("响应超时");
}
result=m_bOperateResult;
memset(&orderOperation,0, sizeof(orderOperation));
semaphore.release(1);
}
else{
result=false;
error=QString::fromLocal8Bit("订单不存在");
}
}
else{
result=false;
error=QString::fromLocal8Bit("请求参数错误");
}
return result;*/
}
bool
FlowControl
::
_ResponseSimphony04Request
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
)
{
...
...
@@ -1260,7 +1248,6 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
if
(
m_simValidOrdersList
.
contains
(
orderId
))
{
if
(
order_p
->
pushOrderType
==
1
)
{
SimProcOrderDB
::
getInstance
().
updatePushOrderStatus
(
orderId
,
1
);
...
...
@@ -1311,23 +1298,32 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
QString
posCheckNo
=
content
[
"posSaleId"
].
toString
();
if
(
posCheckNo
.
isEmpty
())
{
posCheckNo
=
m_orderIdToPosCheckNoMap
.
value
(
orderId
);
error
=
QString
::
fromLocal8Bit
(
"%1订单请求对应的小票号不能为空"
).
arg
(
orderId
);
return
false
;
}
if
(
!
posCheckNo
.
isEmpty
()
&&!
orderId
.
isEmpty
())
{
if
(
!
m_orderIdToPosCheckNoMap
.
contains
(
orderId
))
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Simphony_Script请求[05:返回小票号,同时更新POS本地数据库打印] %1订单已经成功推送给simphony:--->>>>]"
).
arg
(
orderId
);
m_orderIdToPosCheckNoMap
.
insert
(
orderId
,
posCheckNo
);
}
OrderObject
*
order_p
=
m_FmOrdersMap
.
value
(
orderId
);
OrderObject
*
order_p
=
m_FmOrdersMap
.
value
(
orderId
);
if
(
!
order_p
){
QLOG_ERROR
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2--->>>>]"
).
arg
(
orderId
).
arg
(
m_FmOrdersMap
.
size
());
result
=
false
;
error
=
QString
::
fromLocal8Bit
(
"%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2"
).
arg
(
orderId
).
arg
(
m_FmOrdersMap
.
size
());
return
result
;
}
//更新小票号;
if
(
!
m_orderIdToPosCheckNoMap
.
contains
(
orderId
))
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Simphony_Script请求[05:返回小票号,同时更新POS本地数据库打印] %1订单已经成功推送给simphony:--->>>>]"
).
arg
(
orderId
);
m_orderIdToPosCheckNoMap
.
insert
(
orderId
,
posCheckNo
);
}
else
{
if
(
OrderObject
::
Refunded
==
order_p
->
orderStatus
||
OrderObject
::
Cancled
==
order_p
->
orderStatus
){
if
(
posCheckNo
!=
m_orderIdToPosCheckNoMap
.
value
(
order_p
->
id
)){
m_orderIdToPosCheckNoMap
.
remove
(
order_p
->
id
);
m_orderIdToPosCheckNoMap
.
insert
(
orderId
,
posCheckNo
);
}
}
}
if
(
m_simValidOrdersList
.
contains
(
orderId
))
{
...
...
@@ -1366,30 +1362,30 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
rObj
.
insert
(
"fm_ver"
,
"1.0"
);
cObj
.
insert
(
"pay_id"
,
"002"
);
cObj
.
insert
(
"pay_str"
,
QString
::
fromLocal8Bit
(
"非码外卖"
));
/*
int tempOrderType = 11 ,tempOrderPayType = 83;
int
tempOrderType
,
tempOrderPayType
;
// 转换成星巴克规定的订单类型;
if(3 == orderObject->getOrderType()){
//星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单;
if
(
3
==
order_p
->
getOrderType
()){
tempOrderType
=
12
;
tempOrderPayType
=
21
;
}
// OMS提供的数据://订单渠道:
1 星巴克APP 2饿了么APP 3 客诉单
;
else if(
1 == orderObject->channel.toInt()
){
// OMS提供的数据://订单渠道:
星巴克APP,百度外卖,饿了么APP,美团外卖
;
else
if
(
"MOD"
==
order_p
->
channel
){
tempOrderType
=
9
;
tempOrderPayType
=
84
;
}else if(
2 == orderObject->channel.toInt()
){
}
else
if
(
"BAIDU"
==
order_p
->
channel
){
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}else if(3 == orderObject->channel.toInt()){
tempOrderType = 12;
tempOrderPayType = 21;
}else if(4 == orderObject->channel.toInt()){
}
else
if
(
"ELE"
==
order_p
->
channel
){
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}
else
if
(
"MEITUAN"
==
order_p
->
channel
){
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}
else
{
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}
tempOrderType = 11;
tempOrderPayType = 83;
*/
cObj
.
insert
(
"orderOriginType"
,
11
);
cObj
.
insert
(
"orderPayType"
,
83
);
cObj
.
insert
(
"retSyncOrderPrintInfo"
,
retSyncOrderPrintInfo
);
//同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败]
...
...
@@ -1397,8 +1393,14 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
cObj
.
insert
(
"pos_sale_id"
,
posCheckNo
);
cObj
.
insert
(
"products_fee"
,
order_p
->
productPrice
);
// 商品金额
cObj
.
insert
(
"discount_fee"
,
0
);
// 优惠总额
QString
temp_MSR_NO
=
(
order_p
->
msr_no
.
length
()
==
0
)
?
order_p
->
customerId
:
order_p
->
msr_no
;
temp_MSR_NO
=
(
temp_MSR_NO
.
length
()
==
0
)
?
QString
::
fromLocal8Bit
(
"no_MsrNo_no_CustomerId"
)
:
temp_MSR_NO
;
//只有星巴克App 才挂MSR的虚拟卡号;第三方App MSR_NO='-1';
QString
temp_MSR_NO
;
if
(
"MOD"
==
order_p
->
channel
){
temp_MSR_NO
=
(
order_p
->
msr_no
.
length
()
==
0
)
?
order_p
->
customerId
:
order_p
->
msr_no
;
temp_MSR_NO
=
(
temp_MSR_NO
.
length
()
==
0
)
?
QString
::
fromLocal8Bit
(
"no_MsrNo_no_CustomerId"
)
:
temp_MSR_NO
;
}
else
{
temp_MSR_NO
=
"-1"
;
}
cObj
.
insert
(
"msr_card_no"
,
temp_MSR_NO
)
;
// MSR卡号
rObj
.
insert
(
"pay_id"
,
cObj
);
data
=
rObj
;
...
...
@@ -1530,28 +1532,35 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
rObj
.
insert
(
"fm_ver"
,
"1.0"
);
cObj
.
insert
(
"pay_id"
,
"002"
);
cObj
.
insert
(
"pay_str"
,
QString
::
fromLocal8Bit
(
"非码外卖"
));
int
tempOrderType
=
11
,
tempOrderPayType
=
83
;
int
tempOrderType
,
tempOrderPayType
;
// 转换成星巴克规定的订单类型;
//星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单;
if
(
3
==
orderObject
->
getOrderType
()){
tempOrderType
=
12
;
tempOrderPayType
=
21
;
}
// OMS提供的数据://订单渠道:
1 星巴克APP 2饿了么APP 3 客诉单
;
else
if
(
1
==
orderObject
->
channel
.
toInt
()
){
// OMS提供的数据://订单渠道:
星巴克APP,百度外卖,饿了么APP,美团外卖
;
else
if
(
"MOD"
==
orderObject
->
channel
){
tempOrderType
=
9
;
tempOrderPayType
=
84
;
}
else
if
(
2
==
orderObject
->
channel
.
toInt
()
){
}
else
if
(
"BAIDU"
==
orderObject
->
channel
){
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}
else
if
(
3
==
orderObject
->
channel
.
toInt
()){
tempOrderType
=
12
;
tempOrderPayType
=
21
;
}
else
if
(
4
==
orderObject
->
channel
.
toInt
()){
}
else
if
(
"ELE"
==
orderObject
->
channel
){
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}
else
if
(
"MEITUAN"
==
orderObject
->
channel
){
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}
else
{
tempOrderType
=
11
;
tempOrderPayType
=
83
;
}
tempOrderType
=
11
;
tempOrderPayType
=
83
;
// 如果是退单,更新订单的来源类型;
if
(
orderObject
->
isCancle
)
{
tempOrderType
=
13
;
}
cObj
.
insert
(
"orderOriginType"
,
tempOrderType
);
cObj
.
insert
(
"orderPayType"
,
tempOrderPayType
);
cObj
.
insert
(
"pos_sale_id"
,
orderObject
->
posCheckNo
);
...
...
@@ -1572,8 +1581,14 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
cObj
.
insert
(
"service_fee"
,
/*orderObject->service_fee*/
0
);
// 平台佣金
cObj
.
insert
(
"discount_fee"
,
/*orderObject->discount_fee*/
0
);
// 优惠总额
cObj
.
insert
(
"dis_shop_fee"
,
/*orderObject->dis_shop_fee*/
0
);
// 商家承担优惠金额
QString
temp_MSR_NO
=
(
orderObject
->
msr_no
.
length
()
==
0
)
?
orderObject
->
customerId
:
orderObject
->
msr_no
;
temp_MSR_NO
=
(
temp_MSR_NO
.
length
()
==
0
)
?
QString
::
fromLocal8Bit
(
"no_MsrNo_no_CustomerId"
)
:
temp_MSR_NO
;
//只有星巴克App 才挂MSR的虚拟卡号;第三方App MSR_NO='-1';
QString
temp_MSR_NO
;
if
(
"MOD"
==
orderObject
->
channel
){
temp_MSR_NO
=
(
orderObject
->
msr_no
.
length
()
==
0
)
?
orderObject
->
customerId
:
orderObject
->
msr_no
;
temp_MSR_NO
=
(
temp_MSR_NO
.
length
()
==
0
)
?
QString
::
fromLocal8Bit
(
"no_MsrNo_no_CustomerId"
)
:
temp_MSR_NO
;
}
else
{
temp_MSR_NO
=
"-1"
;
}
cObj
.
insert
(
"msr_card_no"
,
temp_MSR_NO
);
// MSR卡号
cObj
.
insert
(
"retSyncOrderPrintInfo"
,
0
);
// 同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败; 默认:0]
cObj
.
insert
(
"dis_platform_fee"
,
/*orderObject->dis_platform_fee*/
0
);
// 平台承担优惠金额
...
...
fmTakeout/Control/flowControl.h
View file @
b668bd81
...
...
@@ -94,7 +94,7 @@ private:
QMap
<
QString
,
QMultiMap
<
QString
,
dishesObject
>
>
m_dishesMap
;
//等待Simphony拉取的有效订单队列list[orderId]
QStringList
m_simValidOrdersList
;
//订单号与pos短号映射
//订单号与pos短号映射
:[可能同时存在两种状态:1:新单记录;2:退单记录;但是小票号就存一个;]
QMap
<
QString
,
QString
>
m_orderIdToPosCheckNoMap
;
//记录当前订单操作
QMap
<
QString
,
int
>
m_orderOperatePair
;
...
...
@@ -406,9 +406,6 @@ public slots:
void
onDailyReport
();
/* 功能:获取Http返回Json数据
* 参数:NULL
* 返回:Json对象
...
...
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