Commit b668bd81 by wuyang.zou

fix buf : 完成退货功能

parent e0e185f3
...@@ -67,7 +67,7 @@ FlowControl::FlowControl() ...@@ -67,7 +67,7 @@ FlowControl::FlowControl()
loaclHttpServer->run(); loaclHttpServer->run();
_ClickOMSAssignArea(); _ClickOMSAssignArea();
m_loginTimer->start(20*1000); m_loginTimer->start(10*1000);
} }
...@@ -183,7 +183,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -183,7 +183,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
{ {
orderObject->isCancle = true; 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()) if(posOrderCheckNo.isEmpty())
{ {
...@@ -636,6 +638,31 @@ bool FlowControl::_RefuseOrder(const QString &orderId, int refuseCode,const QStr ...@@ -636,6 +638,31 @@ bool FlowControl::_RefuseOrder(const QString &orderId, int refuseCode,const QStr
int oldStatus = orderObject->orderStatus; int oldStatus = orderObject->orderStatus;
orderObject->orderStatus = recvJson[JSON_STATUS].toInt(); orderObject->orderStatus = recvJson[JSON_STATUS].toInt();
emit changeOrderStatus(orderObject, oldStatus); 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 ...@@ -820,7 +847,34 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
OrderObject* orderObject = m_FmOrdersMap.value(orderId); OrderObject* orderObject = m_FmOrdersMap.value(orderId);
int oldOrderStatus = orderObject->orderStatus; int oldOrderStatus = orderObject->orderStatus;
orderObject->orderStatus = orderStatus; orderObject->orderStatus = orderStatus;
emit changeOrderStatus(orderObject, oldOrderStatus); 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 else
{ {
...@@ -1160,76 +1214,10 @@ bool FlowControl::_ResponseSimphony01Request(const QJsonObject &content, QJsonOb ...@@ -1160,76 +1214,10 @@ bool FlowControl::_ResponseSimphony01Request(const QJsonObject &content, QJsonOb
bool FlowControl::_ResponseSimphony02Request(const QJsonObject &content, QJsonObject &data, QString &error) bool FlowControl::_ResponseSimphony02Request(const QJsonObject &content, QJsonObject &data, QString &error)
{ {
return true; 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) bool FlowControl::_ResponseSimphony03Request(const QJsonObject &content, QJsonObject &data, QString &error)
{ {
return true; 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) bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonObject &data, QString &error)
{ {
...@@ -1260,7 +1248,6 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb ...@@ -1260,7 +1248,6 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
if(m_simValidOrdersList.contains(orderId)) if(m_simValidOrdersList.contains(orderId))
{ {
if(order_p->pushOrderType==1) if(order_p->pushOrderType==1)
{ {
SimProcOrderDB::getInstance().updatePushOrderStatus(orderId,1); SimProcOrderDB::getInstance().updatePushOrderStatus(orderId,1);
...@@ -1311,23 +1298,32 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb ...@@ -1311,23 +1298,32 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
QString posCheckNo=content["posSaleId"].toString(); QString posCheckNo=content["posSaleId"].toString();
if(posCheckNo.isEmpty()) if(posCheckNo.isEmpty())
{ {
posCheckNo=m_orderIdToPosCheckNoMap.value(orderId); error=QString::fromLocal8Bit("%1订单请求对应的小票号不能为空").arg(orderId);
return false;
} }
if(!posCheckNo.isEmpty()&&!orderId.isEmpty()) 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){ if (!order_p){
QLOG_ERROR()<<QString::fromLocal8Bit("[<<<<---%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2--->>>>]").arg(orderId).arg(m_FmOrdersMap.size()); QLOG_ERROR()<<QString::fromLocal8Bit("[<<<<---%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2--->>>>]").arg(orderId).arg(m_FmOrdersMap.size());
result=false; result=false;
error=QString::fromLocal8Bit("%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2").arg(orderId).arg(m_FmOrdersMap.size()); error=QString::fromLocal8Bit("%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2").arg(orderId).arg(m_FmOrdersMap.size());
return result; 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)) if(m_simValidOrdersList.contains(orderId))
{ {
...@@ -1366,30 +1362,30 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb ...@@ -1366,30 +1362,30 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
rObj.insert("fm_ver", "1.0"); rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002"); cObj.insert("pay_id", "002");
cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖")); cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖"));
/* int tempOrderType,tempOrderPayType;
int tempOrderType = 11 ,tempOrderPayType = 83;
// 转换成星巴克规定的订单类型; // 转换成星巴克规定的订单类型;
if(3 == orderObject->getOrderType()){ //星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单;
if(3 == order_p->getOrderType()){
tempOrderType = 12; tempOrderType = 12;
tempOrderPayType = 21; tempOrderPayType = 21;
} }
// OMS提供的数据://订单渠道: 1 星巴克APP 2饿了么APP 3 客诉单; // OMS提供的数据://订单渠道: 星巴克APP,百度外卖,饿了么APP,美团外卖 ;
else if(1 == orderObject->channel.toInt()){ else if("MOD" == order_p->channel){
tempOrderType = 9; tempOrderType = 9;
tempOrderPayType = 84; tempOrderPayType = 84;
}else if(2 == orderObject->channel.toInt()){ }else if("BAIDU" == order_p->channel){
tempOrderType = 11; tempOrderType = 11;
tempOrderPayType = 83; tempOrderPayType = 83;
}else if(3 == orderObject->channel.toInt()){ }else if("ELE" == order_p->channel){
tempOrderType = 12; tempOrderType = 11;
tempOrderPayType = 21; tempOrderPayType = 83;
}else if(4 == orderObject->channel.toInt()){ }else if("MEITUAN" == order_p->channel){
tempOrderType = 11;
tempOrderPayType = 83;
}else{
tempOrderType = 11; tempOrderType = 11;
tempOrderPayType = 83; tempOrderPayType = 83;
} }
tempOrderType = 11;
tempOrderPayType = 83;
*/
cObj.insert("orderOriginType", 11); cObj.insert("orderOriginType", 11);
cObj.insert("orderPayType", 83); cObj.insert("orderPayType", 83);
cObj.insert("retSyncOrderPrintInfo",retSyncOrderPrintInfo); //同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败] cObj.insert("retSyncOrderPrintInfo",retSyncOrderPrintInfo); //同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败]
...@@ -1397,8 +1393,14 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb ...@@ -1397,8 +1393,14 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
cObj.insert("pos_sale_id", posCheckNo); cObj.insert("pos_sale_id", posCheckNo);
cObj.insert("products_fee", order_p->productPrice); // 商品金额 cObj.insert("products_fee", order_p->productPrice); // 商品金额
cObj.insert("discount_fee", 0); // 优惠总额 cObj.insert("discount_fee", 0); // 优惠总额
QString temp_MSR_NO = (order_p->msr_no.length()==0)?order_p->customerId:order_p->msr_no; //只有星巴克App 才挂MSR的虚拟卡号;第三方App MSR_NO='-1';
temp_MSR_NO = (temp_MSR_NO.length()==0)?QString::fromLocal8Bit("no_MsrNo_no_CustomerId"):temp_MSR_NO; 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卡号 cObj.insert("msr_card_no",temp_MSR_NO) ; // MSR卡号
rObj.insert("pay_id", cObj); rObj.insert("pay_id", cObj);
data = rObj; data = rObj;
...@@ -1530,28 +1532,35 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro ...@@ -1530,28 +1532,35 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
rObj.insert("fm_ver", "1.0"); rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002"); cObj.insert("pay_id", "002");
cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖")); cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖"));
int tempOrderType = 11 ,tempOrderPayType = 83; int tempOrderType,tempOrderPayType;
// 转换成星巴克规定的订单类型; // 转换成星巴克规定的订单类型;
//星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单;
if(3 == orderObject->getOrderType()){ if(3 == orderObject->getOrderType()){
tempOrderType = 12; tempOrderType = 12;
tempOrderPayType = 21; tempOrderPayType = 21;
} }
// OMS提供的数据://订单渠道: 1 星巴克APP 2饿了么APP 3 客诉单; // OMS提供的数据://订单渠道: 星巴克APP,百度外卖,饿了么APP,美团外卖 ;
else if(1 == orderObject->channel.toInt()){ else if("MOD" == orderObject->channel){
tempOrderType = 9; tempOrderType = 9;
tempOrderPayType = 84; tempOrderPayType = 84;
}else if(2 == orderObject->channel.toInt()){ }else if("BAIDU" == orderObject->channel){
tempOrderType = 11; tempOrderType = 11;
tempOrderPayType = 83; tempOrderPayType = 83;
}else if(3 == orderObject->channel.toInt()){ }else if("ELE" == orderObject->channel){
tempOrderType = 12; tempOrderType = 11;
tempOrderPayType = 21; tempOrderPayType = 83;
}else if(4 == orderObject->channel.toInt()){ }else if("MEITUAN" == orderObject->channel){
tempOrderType = 11;
tempOrderPayType = 83;
}else{
tempOrderType = 11; tempOrderType = 11;
tempOrderPayType = 83; tempOrderPayType = 83;
} }
tempOrderType = 11; // 如果是退单,更新订单的来源类型;
tempOrderPayType = 83; if(orderObject->isCancle)
{
tempOrderType = 13;
}
cObj.insert("orderOriginType", tempOrderType); cObj.insert("orderOriginType", tempOrderType);
cObj.insert("orderPayType", tempOrderPayType); cObj.insert("orderPayType", tempOrderPayType);
cObj.insert("pos_sale_id", orderObject->posCheckNo); cObj.insert("pos_sale_id", orderObject->posCheckNo);
...@@ -1572,8 +1581,14 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro ...@@ -1572,8 +1581,14 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
cObj.insert("service_fee", /*orderObject->service_fee*/0); // 平台佣金 cObj.insert("service_fee", /*orderObject->service_fee*/0); // 平台佣金
cObj.insert("discount_fee", /*orderObject->discount_fee*/0); // 优惠总额 cObj.insert("discount_fee", /*orderObject->discount_fee*/0); // 优惠总额
cObj.insert("dis_shop_fee", /*orderObject->dis_shop_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; //只有星巴克App 才挂MSR的虚拟卡号;第三方App MSR_NO='-1';
temp_MSR_NO = (temp_MSR_NO.length()==0)?QString::fromLocal8Bit("no_MsrNo_no_CustomerId"):temp_MSR_NO; 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("msr_card_no", temp_MSR_NO); // MSR卡号
cObj.insert("retSyncOrderPrintInfo",0); // 同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败; 默认:0] cObj.insert("retSyncOrderPrintInfo",0); // 同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败; 默认:0]
cObj.insert("dis_platform_fee", /*orderObject->dis_platform_fee*/0); // 平台承担优惠金额 cObj.insert("dis_platform_fee", /*orderObject->dis_platform_fee*/0); // 平台承担优惠金额
......
...@@ -94,7 +94,7 @@ private: ...@@ -94,7 +94,7 @@ private:
QMap<QString, QMultiMap<QString, dishesObject> >m_dishesMap; QMap<QString, QMultiMap<QString, dishesObject> >m_dishesMap;
//等待Simphony拉取的有效订单队列list[orderId] //等待Simphony拉取的有效订单队列list[orderId]
QStringList m_simValidOrdersList; QStringList m_simValidOrdersList;
//订单号与pos短号映射 //订单号与pos短号映射:[可能同时存在两种状态:1:新单记录;2:退单记录;但是小票号就存一个;]
QMap<QString,QString> m_orderIdToPosCheckNoMap; QMap<QString,QString> m_orderIdToPosCheckNoMap;
//记录当前订单操作 //记录当前订单操作
QMap<QString, int> m_orderOperatePair; QMap<QString, int> m_orderOperatePair;
...@@ -406,9 +406,6 @@ public slots: ...@@ -406,9 +406,6 @@ public slots:
void onDailyReport(); void onDailyReport();
/* 功能:获取Http返回Json数据 /* 功能:获取Http返回Json数据
* 参数:NULL * 参数:NULL
* 返回:Json对象 * 返回:Json对象
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment