Commit b668bd81 by wuyang.zou

fix buf : 完成退货功能

parent e0e185f3
......@@ -67,7 +67,7 @@ FlowControl::FlowControl()
loaclHttpServer->run();
_ClickOMSAssignArea();
m_loginTimer->start(20*1000);
m_loginTimer->start(10*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); // 平台承担优惠金额
......
......@@ -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对象
......
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