Commit 239d50c9 by wuyang.zou

fix bug: 新增 OrderOriginType 和 OrderPayTape 数据传递到 Simpyhony

parent e6b9aba4
......@@ -65,71 +65,6 @@ FlowControl::FlowControl()
/*** 启动Http服务:用来响应Simphony_Script获取订单的请求***/
loaclHttpServer = new LoaclHttpServer();
loaclHttpServer->run();
/*
m_tcpServerManage = new JQHttpServer::TcpServerManage(10);
QLOG_INFO()<< "[<<<<---FlowControl::Receive Simphony_Script Request:m_tcpServerManage:--->>>>]" << m_tcpServerManage;
m_tcpServerManage->setHttpAcceptedCallback( [this]( const QPointer< JQHttpServer::Session > &session )
{
QLOG_INFO()<< "[<<<<---FlowControl::Receive Simphony_Script Request:currentThreadId:--->>>>]" << QThread::currentThreadId();
// 回调发生在新的线程内,不是主线程。
//解析FM外卖插件HTTP服务与Simphony_Script请求的会话连接是否断开: 会话连接未断开
if(!session.isNull())
{
QString recvData = QString::fromUtf8(session->requestRawData());
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---Receive Simphony_Script Request recvData: %1--->>>>]").arg(recvData);
QJsonParseError jsonError;
QJsonObject recvObject;
QJsonObject replyObject;
int status; //解析json结果
QString msg;
QJsonObject data; //回复的内容json
int iscontinue =0;
recvObject = QJsonDocument::fromJson(recvData.toUtf8(), &jsonError).object();
//解析Simphony_Script Request json格式: 解析失败
if(jsonError.error != QJsonParseError::NoError)
{
status = 0;
msg = jsonError.errorString();
}
//解析Simphony_Script Request json格式: 解析成功
else {
//解析:FM外卖插件为响应Simphony请求准备返回数据:准备返回数据成功
if(_ResponseSimphonyRequest(recvObject,data, msg))
{
status = 100;
}
//解析:FM外卖插件为响应Simphony请求准备返回数据:准备返回数据失败
else{
status = 0;
}
//解析:等待Simphony获取的有效订单列表是否为空: sim有效订单列表不为空
if(!m_simValidOrdersList.isEmpty())
{
iscontinue=1;
}
}
//将FM外卖插件中的合法有效数据返回给上面Simphony_Script发过来的请求
replyObject = _PackHttpReplyJson(status, msg, data,iscontinue);
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件回应Simphony_Script拉单请求后的返回结果:--->>>>]") << replyObject;
session->replyJsonObject(replyObject);
}
//解析FM外卖插件HTTP服务与Simphony_Script请求的会话连接是否断开: 会话连接断开
else{
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件Http服务与Simphony_Script请求会话断开连接:--->>>>]");
}
} );
//FM外卖插件绑定启动HTTP服务的端口
int port = ConfigManger::GetInstance().GetHttpServerPort();
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件Http服务监听端口:%1 :--->>>>]").arg(port);
if(m_tcpServerManage->listen( QHostAddress::Any, port))
{
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件Http服务 绑定端口成功:--->>>>]");
}else{
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件Http服务 绑定端口失败:--->>>>]");
}
*/
_ClickOMSAssignArea();
m_loginTimer->start(20*1000);
......@@ -259,21 +194,6 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis-> orderObject->orderStatus:--->>>>]")<<orderObject->orderStatus;
switch (orderObject->orderStatus){
case OrderObject::NewOrder:
if(!orderObject->isPush)
{
orderObject->pushOrderType = 1;
orderObject->pushOrderTimes = 0;
m_OrderEntryMutex.lock();
if(!m_simValidOrdersList.contains(orderObject->id))
{
m_simValidOrdersList.append(orderObject->id);
}
m_OrderEntryMutex.unlock();
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:NewOrder m_simValidOrdersList.num:%1 --->>>>]")<< m_simValidOrdersList.count();
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:NewOrder m_simValidOrdersList:%1 --->>>>]")<< m_simValidOrdersList;
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:NewOrder _ClickOMSAssignArea --->>>>]");
_ConfirmOrder(orderObject->id); //新单过来后自动接单;
}
break;
case OrderObject::Confirmed:
if(!orderObject->isPush)
......@@ -307,9 +227,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
m_simValidOrdersList.append(orderObject->id);
}
m_OrderEntryMutex.unlock();
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis->m_simValidOrdersList.num:%1 --->>>>]")<< m_simValidOrdersList.count();
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis->m_simValidOrdersList:%1 --->>>>]")<< m_simValidOrdersList;
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis->_ClickOMSAssignArea --->>>>]");
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:RequestRefund m_simValidOrdersList.num:%1 --->>>>]")<< m_simValidOrdersList.count();
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:RequestRefund m_simValidOrdersList:%1 --->>>>]")<< m_simValidOrdersList;
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:RequestRefund _ClickOMSAssignArea --->>>>]");
_ClickOMSAssignArea();
}
break;
......@@ -338,8 +258,11 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
{
m_simValidOrdersList.append(orderObject->id);
}
_ClickOMSAssignArea();
m_OrderEntryMutex.unlock();
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:Cancled m_simValidOrdersList.num:%1 --->>>>]")<< m_simValidOrdersList.count();
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:Cancled m_simValidOrdersList:%1 --->>>>]")<< m_simValidOrdersList;
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:Cancled _ClickOMSAssignArea --->>>>]");
_ClickOMSAssignArea();
}
/***case:校验此订单push到POS后的小票号是否空:[POS已模拟点单但未返回小票号]***/
//else{未处理}
......@@ -1434,6 +1357,32 @@ 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;
// 转换成星巴克规定的订单类型;
if(3 == orderObject->getOrderType()){
tempOrderType = 12;
tempOrderPayType = 21;
}
// OMS提供的数据://订单渠道: 1 星巴克APP 2饿了么APP 3 客诉单;
else if(1 == orderObject->channel.toInt()){
tempOrderType = 9;
tempOrderPayType = 84;
}else if(2 == orderObject->channel.toInt()){
tempOrderType = 11;
tempOrderPayType = 83;
}else if(3 == orderObject->channel.toInt()){
tempOrderType = 12;
tempOrderPayType = 21;
}else if(4 == orderObject->channel.toInt()){
tempOrderType = 11;
tempOrderPayType = 83;
}
tempOrderType = 11;
tempOrderPayType = 83;
*/
cObj.insert("orderOriginType", 11);
cObj.insert("orderPayType", 83);
cObj.insert("retSyncOrderPrintInfo",retSyncOrderPrintInfo); //同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败]
cObj.insert("paid_trans_id",orderId);
cObj.insert("pos_sale_id", posCheckNo);
......@@ -1572,6 +1521,30 @@ 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;
// 转换成星巴克规定的订单类型;
if(3 == orderObject->getOrderType()){
tempOrderType = 12;
tempOrderPayType = 21;
}
// OMS提供的数据://订单渠道: 1 星巴克APP 2饿了么APP 3 客诉单;
else if(1 == orderObject->channel.toInt()){
tempOrderType = 9;
tempOrderPayType = 84;
}else if(2 == orderObject->channel.toInt()){
tempOrderType = 11;
tempOrderPayType = 83;
}else if(3 == orderObject->channel.toInt()){
tempOrderType = 12;
tempOrderPayType = 21;
}else if(4 == orderObject->channel.toInt()){
tempOrderType = 11;
tempOrderPayType = 83;
}
tempOrderType = 11;
tempOrderPayType = 83;
cObj.insert("orderOriginType", tempOrderType);
cObj.insert("orderPayType", tempOrderPayType);
cObj.insert("pos_sale_id", orderObject->posCheckNo);
cObj.insert("order_status",orderObject->orderStatus);//订单的状态
cObj.insert("pay_ebcode", orderObject->channel);
......@@ -1607,17 +1580,23 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
{
QJsonObject tObj;
dishesObject* dish=orderObject->proList.at(i);
if (orderObject->proList.at(i)->code.contains("Default",Qt::CaseSensitive)){
continue;
}
tObj.insert("consume_num", orderObject->proList.at(i)->qty);
tObj.insert("pid", orderObject->proList.at(i)->code);
tObj.insert("original_price", orderObject->proList.at(i)->price);
// begin 整合子商品开始;
QJsonArray subProduct;
QJsonObject sObj;
// 处理原始的配料信息;
if(!dish->sub_products.isEmpty())
{
QJsonArray subProduct;
for(int j=0; j < dish->sub_products.count(); j++)
{
QJsonObject sObj;
dishesObject* subDish=dish->sub_products.at(j);
if(!subDish->code.isEmpty())
if(!subDish->code.isEmpty() && !subDish->code.contains("Default",Qt::CaseSensitive) )
{
sObj.insert("consume_num", subDish->qty);
sObj.insert("pid", subDish->code);
......@@ -1625,8 +1604,18 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
subProduct.insert(0, sObj);
}
}
tObj.insert("sub_products",subProduct);
}
// 处理商品的属性(热 -> 特别热)的额外配料信息;
if(orderObject->proList.at(i)->options.length()){
sObj.insert("consume_num", 1);
sObj.insert("pid", orderObject->proList.at(i)->options);
sObj.insert("original_price", 0);
subProduct.insert(0, sObj);
}
// 汇总插入子商品[sub_products];
if(subProduct.size()){
tObj.insert("sub_products",subProduct);
} // end 整合子商品结束;
products.insert(i, tObj);
}
rObj.insert("products", products);
......
......@@ -15,6 +15,7 @@ class dishesObject : public QObject
Q_PROPERTY (int packagePrice READ getpackagePrice WRITE setpackagePrice)
Q_PROPERTY (int qty READ getqty WRITE setqty)
Q_PROPERTY (int price READ getprice WRITE setprice)
Q_PROPERTY (QString options READ getoptions WRITE setoptions)
public:
explicit dishesObject(QObject *parent = 0):QObject(parent){}
......@@ -29,6 +30,7 @@ public:
int qty;
int packagePrice;
int price;
QString options;
QList<dishesObject*> sub_products;
protected:
......@@ -44,6 +46,9 @@ protected:
inline int getprice(){ return price; }
inline void setprice(const int& v){ price = v; }
inline QString getoptions(){ return options; }
inline void setoptions(const QString& v){ options = v; }
inline int getpackagePrice(){ return packagePrice; }
inline void setpackagePrice(const int& v){ packagePrice = v; }
......
......@@ -72,8 +72,8 @@ QString OrderObject::getChannelName()
switch(value)
{
case 1:return QString::fromLocal8Bit("星巴克");
case 2:return QString::fromLocal8Bit("百度外卖");
case 3:return QString::fromLocal8Bit("饿了么");
case 2:return QString::fromLocal8Bit("饿了么");
case 3:return QString::fromLocal8Bit("客诉单"); //百度外卖
deafult: return QString::fromLocal8Bit("未知");
}
return QString::fromLocal8Bit("未知");
......
......@@ -11,6 +11,7 @@ class OrderObject : public QObject
Q_PROPERTY (QString id READ getId WRITE setId)
Q_PROPERTY (int orderType READ getOrderType WRITE setOrderType)
Q_PROPERTY (QString orgOrderId READ getOrgOrderId WRITE setOrgOrderId)
Q_PROPERTY (QString waybillId READ getWaybillId WRITE setWaybillId)
Q_PROPERTY (QString watercourseId READ getWatercourseId WRITE setWatercourseId)
......@@ -84,6 +85,7 @@ public:
QString id; //编号
int orderType; //订单类型: 用来区分是 正常订单(1) 预订单(2) 还是 客诉单:3 (星巴克定义客诉单的类型:12);
QString orgOrderId; //原始订单编号
QString waybillId; //运单号
QString watercourseId; //流水号
......@@ -96,7 +98,7 @@ public:
QString storeId;
QString storeName;
QString storeAddress;
QString channel;
QString channel; //订单渠道: 1 星巴克APP 2饿了么APP 3 客诉单;
QString payWay;
QString deliveryTime; //配送时间
QString riderName; //骑手名
......@@ -142,6 +144,9 @@ public:
inline QString getId()const{return id;}
inline void setId(const QString& v){id = v;}
inline int getOrderType()const{return orderType;}
inline void setOrderType(const int& v){orderType = v;}
inline QString getOrgOrderId()const{return orgOrderId;}
inline void setOrgOrderId(const QString& v){orgOrderId = v;}
......
......@@ -143,6 +143,7 @@ void DetailForm::onOperaBtnClicked()
// }
// else if(pBtn->text()=="退单")
// {
m_refuseForm->SetOrderInfo(m_orderObject);
m_refuseForm->show();
if(m_refuseForm->exec()==QDialog::Accepted)
{
......
......@@ -58,7 +58,8 @@ void RefuseForm::on_reason2_toggled(bool checked)
if(QDialog::Accepted == m_refDishesForm->exec())
{
ui->refuseBtnOk->setEnabled(true);
m_reasonCode="菜品已售完";
//m_reasonCode=
m_reasonStr=QString::fromLocal8Bit("菜品已售完");
on_refuseBtnOk_clicked();
}else
{
......
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