Commit 6dcbb47a by wuyang.zou

fix bug: 更新POS本地数据 收货信息部分数据 + Local Http Server 转移到线程中

parent d6a24b7d
......@@ -54,17 +54,29 @@ FlowControl::FlowControl()
connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo,Qt::BlockingQueuedConnection);
/***打开Sqlite数据库并登陆外卖插件***/
SimProcOrderDB::getInstance();
/***打开SqlServer POS打印汇总信息本地数据库***/
PrintSumBillPosDB::getInstance();
if( !PrintSumBillPosDB::getInstance().initPrintSumBillPosDB() ){
emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("尝试打开POS本地数据库失败"));
}
/*** 启动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 )
{
qDebug() << "reply" << QThread::currentThreadId();
QLOG_INFO()<< "[<<<<---FlowControl::Receive Simphony_Script Request:currentThreadId:--->>>>]" << QThread::currentThreadId();
// 回调发生在新的线程内,不是主线程。
/***解析FM外卖插件HTTP服务与Simphony_Script请求的会话连接是否断开: 会话连接未断开***/
//解析FM外卖插件HTTP服务与Simphony_Script请求的会话连接是否断开: 会话连接未断开
if(!session.isNull())
{
QString recvData = QString::fromUtf8(session->requestRawData());
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---Receive Simphony_Script Request: %1--->>>>]").arg(recvData);
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---Receive Simphony_Script Request recvData: %1--->>>>]").arg(recvData);
QJsonParseError jsonError;
QJsonObject recvObject;
QJsonObject replyObject;
......@@ -73,42 +85,41 @@ FlowControl::FlowControl()
QJsonObject data; //回复的内容json
int iscontinue =0;
recvObject = QJsonDocument::fromJson(recvData.toUtf8(), &jsonError).object();
/***解析Simphony_Script Request json格式: 解析失败***/
//解析Simphony_Script Request json格式: 解析失败
if(jsonError.error != QJsonParseError::NoError)
{
status = 0;
msg = jsonError.errorString();
}
/***解析Simphony_Script Request json格式: 解析成功***/
//解析Simphony_Script Request json格式: 解析成功
else {
/***解析:FM外卖插件为响应Simphony请求准备返回数据:准备返回数据成功***/
//解析:FM外卖插件为响应Simphony请求准备返回数据:准备返回数据成功
if(_ResponseSimphonyRequest(recvObject,data, msg))
{
status = 100;
}
/***解析:FM外卖插件为响应Simphony请求准备返回数据:准备返回数据失败***/
//解析:FM外卖插件为响应Simphony请求准备返回数据:准备返回数据失败
else{
status = 0;
}
/***解析:等待Simphony获取的有效订单列表是否为空: sim有效订单列表不为空***/
//解析:等待Simphony获取的有效订单列表是否为空: sim有效订单列表不为空
if(!m_simValidOrdersList.isEmpty())
{
iscontinue=1;
}
}
/***将FM外卖插件中的合法有效数据返回给上面Simphony_Script发过来的请求***/
//将FM外卖插件中的合法有效数据返回给上面Simphony_Script发过来的请求
replyObject = _PackHttpReplyJson(status, msg, data,iscontinue);
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件回应Simphony_Script拉单请求后的返回结果:--->>>>]") << replyObject;
/***??????????????????***/
session->replyJsonObject(replyObject);
}
/***解析FM外卖插件HTTP服务与Simphony_Script请求的会话连接是否断开: 会话连接断开***/
//解析FM外卖插件HTTP服务与Simphony_Script请求的会话连接是否断开: 会话连接断开
else{
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件Http服务与Simphony_Script请求会话断开连接:--->>>>]");
}
} );
/***FM外卖插件绑定启动HTTP服务的端口***/
//FM外卖插件绑定启动HTTP服务的端口
int port = ConfigManger::GetInstance().GetHttpServerPort();
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件Http服务监听端口:%1 :--->>>>]").arg(port);
if(m_tcpServerManage->listen( QHostAddress::Any, port))
......@@ -117,14 +128,9 @@ FlowControl::FlowControl()
}else{
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件Http服务 绑定端口失败:--->>>>]");
}
*/
/***打开Sqlite数据库并登陆外卖插件***/
SimProcOrderDB::getInstance();
/***打开SqlServer POS打印汇总信息本地数据库***/
PrintSumBillPosDB::getInstance();
if( !PrintSumBillPosDB::getInstance().initPrintSumBillPosDB() ){
emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("尝试打开POS本地数据库失败"));
}
_ClickOMSAssignArea();
m_loginTimer->start(20*1000);
}
......@@ -180,6 +186,7 @@ void FlowControl::_ClickOMSAssignArea()
void FlowControl::_ClickToLogin()
{
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---触发按钮点击事件:_ClickToLogin: m_bLoginResult:%1 m_simValidOrdersList.isEmpty():%2--->>>>>]").arg(m_bLoginResult).arg(m_simValidOrdersList.isEmpty());
if(!m_bLoginResult||!m_simValidOrdersList.isEmpty())
{
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---触发按钮点击事件:FM外卖插件20s后再次尝试登陆--->>>>]");
......@@ -210,6 +217,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
emit startRemind(0);
}
}
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis-> changeOrderStatus--->>>>]");
emit changeOrderStatus(orderObject);
}
/***<2>:FM插件维护的有效订单容器中存在此订单:更新订单容器中此订单的订单状态***/
......@@ -230,20 +238,25 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
{
emit startRemind(1);
}
if(SimProcOrderDB::getInstance().isPushedOrder(orderObject->id))
{
orderObject->isPush = true;
}
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis-> orderObject->isPush--->>>>]")<< orderObject->isPush;
if(SimProcOrderDB::getInstance().isRefundOrder(orderObject->id))
{
orderObject->isCancle = true;
}
QString posOrderCheckNo=m_orderIdToPosCheckNoMap.value(orderObject->id);
if(posOrderCheckNo.isEmpty())
{
SimProcOrderDB::getInstance().getPosOrderCheckNo(orderObject->id,posOrderCheckNo);
}
orderObject->posCheckNo=posOrderCheckNo;
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis-> orderObject->posCheckNo:--->>>>]")<<orderObject->posCheckNo;
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis-> orderObject->orderStatus:--->>>>]")<<orderObject->orderStatus;
switch (orderObject->orderStatus){
case OrderObject::NewOrder:
case OrderObject::Confirmed:
......@@ -262,6 +275,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 --->>>>]");
_ClickOMSAssignArea();
}
break;
......@@ -333,6 +349,11 @@ QString FlowControl::_GetCashierId()
return m_cashierId;
}
bool FlowControl::_SimValidOrdersListIsEmpty(){
return m_simValidOrdersList.empty();
}
bool FlowControl::_Login()
{
QString error;
......@@ -385,6 +406,7 @@ bool FlowControl::_Login()
QLOG_INFO() << QString("[<<<<---Login Retry--->>>>] %1 msec after login...").arg(VALUE_RELOGINTIME);
QTimer::singleShot(VALUE_RELOGINTIME, this, &FlowControl::_Login);
}
QLOG_INFO() << QString("[<<<<---Login--->>>>][m_bLoginResult:%1]")<<m_bLoginResult;
return result;
}
......
......@@ -9,6 +9,7 @@
#include "Network/billSocket.h"
#include "Model/orderObject.h"
#include "Model/dishesObject.h"
#include "LocalServer/loaclHttpServer.h"
#include "alertForm.h"
#include <QMap>
#include <JQHttpServer.h>
......@@ -31,6 +32,14 @@ public:
* */
QString _GetCashierId();
/* 功能:判断SIM有效订单队列list 是否为空;
* 参数:NULL
* 返回:SIM有效订单队列是否为空;
* */
bool _SimValidOrdersListIsEmpty();
//QStringList& _GetSimValidOrdersList();
private:
FlowControl();
FlowControl(FlowControl const&);
......@@ -79,7 +88,8 @@ private:
bool m_bLoginResult;
bool m_bOperateResult;
// HttpServer
JQHttpServer::TcpServerManage* m_tcpServerManage;
//JQHttpServer::TcpServerManage* m_tcpServerManage;
LoaclHttpServer* loaclHttpServer;
QMap<QString, QMultiMap<QString, dishesObject> >m_dishesMap;
//等待Simphony拉取的有效订单队列list[orderId]
......@@ -247,7 +257,7 @@ private slots:
* 参数:NULL
* 返回:Json对象
* */
QJsonObject _PackHttpReplyJson(const int status, const QString& msg, const QJsonObject& data, const int &iscontinue);
//QJsonObject _PackHttpReplyJson(const int status, const QString& msg, const QJsonObject& data, const int &iscontinue);
/**
*功能:定时清空订单Map里两天前的订单
*参数:无
......@@ -260,70 +270,70 @@ private slots:
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphonyRequest(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphonyRequest(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:01 -> 拉取订单]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony01Request(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphony01Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:02 -> 确认订单]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony02Request(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphony02Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:03 -> 取消订单]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony03Request(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphony03Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:04 -> 汇报订单Sim/POS产生的小票号]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony04Request(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphony04Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:05 -> simphony更新订单数据到POS本地数据库以以便POS打印小票及汇总单信息]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony05Request(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphony05Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:11 -> Sim/POS推送订单到FM插件]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony11Request(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphony11Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:12 -> Sim/POS推送门店营业状态]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony12Request(const QJsonObject &content, QJsonObject &data,QString &error);
//bool _ResponseSimphony12Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件响应Simphony请求时,如果外卖插件未登录则进行登陆;
*参数:1、请求json参数;2、返回错误信息;
*返回:是否登陆成功;
**/
bool _ResponseSimReqTryLogin(const QJsonObject &content, QString &error);
//bool _ResponseSimReqTryLogin(const QJsonObject &content, QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[查询FM插件第一条订单数据作为返回数据]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimReqFristOrderData(QJsonObject &data,QString &error, const QString &orderId);
//bool _ResponseSimReqFristOrderData(QJsonObject &data,QString &error, const QString &orderId);
// 单位转换
QString _Penny2Dollar(int penny);
......@@ -395,6 +405,86 @@ public slots:
* */
void onDailyReport();
/* 功能:获取Http返回Json数据
* 参数:NULL
* 返回:Json对象
* */
QJsonObject _PackHttpReplyJson(const int status, const QString& msg, const QJsonObject& data, const int &iscontinue);
/**
*功能:FM外卖插件为响应Simphony请求准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphonyRequest(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:01 -> 拉取订单]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony01Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:02 -> 确认订单]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony02Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:03 -> 取消订单]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony03Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:04 -> 汇报订单Sim/POS产生的小票号]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony04Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:05 -> simphony更新订单数据到POS本地数据库以以便POS打印小票及汇总单信息]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony05Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:11 -> Sim/POS推送订单到FM插件]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony11Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:12 -> Sim/POS推送门店营业状态]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony12Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件响应Simphony请求时,如果外卖插件未登录则进行登陆;
*参数:1、请求json参数;2、返回错误信息;
*返回:是否登陆成功;
**/
bool _ResponseSimReqTryLogin(const QJsonObject &content, QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[查询FM插件第一条订单数据作为返回数据]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimReqFristOrderData(QJsonObject &data,QString &error, const QString &orderId);
};
#endif // FLOWCONTROL_H
......@@ -3,6 +3,7 @@
#include "alertForm.h"
#include <QDateTime>
#include "Control/flowControl.h"
#include "preDefine.h"
PrintSumBillPosDB::PrintSumBillPosDB()
{
......@@ -57,28 +58,42 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj,const QString&
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->lastName); // --顾客-姓
query.addBindValue(QString(orderObj->firstName)); // --顾客-名
query.addBindValue(orderObj->customerSex); // --顾客-性别
query.addBindValue(orderObj->customerName); // --顾客-全名
QString temp_customerSex;
if( !orderObj->customerSex.compare(QString::fromLocal8Bit(FM_MALE)) || !orderObj->customerSex.compare(QString("Male")) ){
temp_customerSex = "Male";
}else if( !orderObj->customerSex.compare(QString::fromLocal8Bit(FM_FEMALE)) || !orderObj->customerSex.compare(QString("Female")) ){
temp_customerSex = "Female";
}else{ temp_customerSex = ""; }
query.addBindValue(temp_customerSex); // --顾客-性别
query.addBindValue(0); // --顾客-生日
QDateTime qdaTi = QDateTime::currentDateTimeUtc();
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --POS出小票时间
query.addBindValue(FlowControl::GetInstance()._GetCashierId()); // --订单处理者
query.addBindValue(""); // --变更订单时间 //??????????????????????????????????????????
query.addBindValue(""); // --变更订单作者 [*****后期更新*****]
query.addBindValue(orderObj->customerName); // --收货者-名 //??????????????????????????????????????????
query.addBindValue(orderObj->addressDetail); // --收货者-地址 //??????????????????????????????????????????
query.addBindValue(orderObj->phone); // --收货者-电话 //??????????????????????????????????????????
query.addBindValue(orderObj->consigneeName); // --收货者-人名
query.addBindValue(orderObj->addressDetail); // --收货者
query.addBindValue(orderObj->consigneePhone); // --收货者-电话
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->waybillId); // --物流编号
query.addBindValue(0); // --取票号 // [*****后期更新*****]
query.addBindValue(orderObj->pickupCode.length()==0?0:orderObj->pickupCode.toInt()); // --取餐号;
query.addBindValue(orderObj->riderPhone); // --配送者电话
query.addBindValue(orderObj->riderName); // -配送者名称
if(!query.exec())
{
QLOG_ERROR()<<"[<<<<---SqlServer Database:customer_info Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type());
QLOG_INFO()<<QString("INSERT INTO tb_msr_customer_info(chk_num, last_name, full_name, gender, "
"is_birthday, create_datetime, created_by, modify_datetime, modified_by, "
"accept_name, accept_address, accept_phone, order_id, "
"waybill_id, take_no, deliver_phone, deliver_name) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17)").arg(posCheckNo.toInt())
.arg(orderObj->lastName).arg(orderObj->customerName).arg(temp_customerSex)
.arg(0).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")).arg(FlowControl::GetInstance()._GetCashierId()).arg("").arg("")
.arg(orderObj->consigneeName).arg(orderObj->addressDetail).arg(orderObj->consigneePhone).arg(orderObj->id)
.arg(orderObj->waybillId).arg(orderObj->pickupCode.length()==0?0:orderObj->pickupCode.toInt()).arg(orderObj->riderPhone).arg(orderObj->riderName);
result = false;
}
else{
......
#include "loaclHttpServer.h"
#include "Control/flowControl.h"
#include "DTools/configManger.h"
#include "QsLog.h"
#include <QString>
LoaclHttpServer::LoaclHttpServer()
{
QLOG_INFO()<< QString::fromLocal8Bit("[<<<<---LoaclHttpServer::启动本地 Https Server [QThread]--->>>>]");
m_tcpServerManage = new JQHttpServer::TcpServerManage(10);
}
void LoaclHttpServer::run()
{
/*** 启动Http服务:用来响应Simphony_Script获取订单的请求***/
QLOG_INFO()<< "[<<<<---LoaclHttpServer::Receive Simphony_Script Request:m_tcpServerManage:--->>>>]" << m_tcpServerManage;
m_tcpServerManage->setHttpAcceptedCallback( [this]( const QPointer< JQHttpServer::Session > &session )
{
QLOG_INFO()<< "[<<<<---LoaclHttpServer::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(FlowControl::GetInstance()._ResponseSimphonyRequest(recvObject,data, msg))
{
status = 100;
}
/***解析:FM外卖插件为响应Simphony请求准备返回数据:准备返回数据失败***/
else{
status = 0;
}
/***解析:等待Simphony获取的有效订单列表是否为空: sim有效订单列表不为空***/
if(!FlowControl::GetInstance()._SimValidOrdersListIsEmpty())
{
iscontinue=1;
}
}
/***将FM外卖插件中的合法有效数据返回给上面Simphony_Script发过来的请求***/
replyObject = FlowControl::GetInstance()._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服务 绑定端口失败:--->>>>]");
}
}
void LoaclHttpServer::stop()
{
terminate();
wait();
}
#ifndef LOACLHTTPSERVER_H
#define LOACLHTTPSERVER_H
#include <QThread>
#include "Network/billSocket.h"
#include "Model/orderObject.h"
#include "Model/dishesObject.h"
#include "alertForm.h"
#include <QMap>
#include <JQHttpServer.h>
#include <QMutex>
#include <QDateTime>
#include <QJsonArray>
#include <QTimer>
#include <QPair>
#include <QMutex>
/*class:LoaclHttpServer 线程:接受客户端HTTP请求的服务*/
class LoaclHttpServer: public QThread
{
Q_OBJECT
public:
/* 功能: 接受客户端HTTP请求的服务的无参构造 [本地http服务]
* 参数:NULL
* 返回:NULL
* */
LoaclHttpServer();
private:
// HttpServer
JQHttpServer::TcpServerManage* m_tcpServerManage;
public:
/* 功能:本线程执行的具体代码功能;
* 参数:NULL
* 返回:NULL
* */
void run();
/* 功能:暂停本线程的清理任务;
* 参数:NULL
* 返回:NULL
* */
void stop();
};
#endif // LOACLHTTPSERVER_H
......@@ -14,6 +14,7 @@ class OrderObject : public QObject
Q_PROPERTY (QString orgOrderId READ getOrgOrderId WRITE setOrgOrderId)
Q_PROPERTY (QString waybillId READ getWaybillId WRITE setWaybillId)
Q_PROPERTY (QString watercourseId READ getWatercourseId WRITE setWatercourseId)
Q_PROPERTY (QString pickupCode READ getPickupCode WRITE setPickupCode)
Q_PROPERTY (QString customerId READ getCustomerId WRITE setCustomerId)
Q_PROPERTY (QString customerName READ getCustomerName WRITE setCustomerName)
Q_PROPERTY (QString phone READ getPhone WRITE setPhone)
......@@ -42,6 +43,8 @@ class OrderObject : public QObject
Q_PROPERTY (QString longitude READ getLongitude WRITE setLongitude)
Q_PROPERTY (QString latitude READ getLatitude WRITE setLatitude)
Q_PROPERTY (QString street READ getStreet WRITE setStreet)
Q_PROPERTY (QString consigneeName READ getConsigneeName WRITE setConsigneeName)
Q_PROPERTY (QString consigneePhone READ getConsigneePhone WRITE setConsigneePhone)
Q_PROPERTY (QString addressDetail READ getAddressDetail WRITE setAddressDetail)
Q_PROPERTY (QString posCheckNo READ getPosCheckNo WRITE setPosCheckNo)
Q_PROPERTY (int updateTime READ getUpdateTime WRITE setUpdateTime)
......@@ -83,7 +86,8 @@ public:
QString id; //编号
QString orgOrderId; //原始订单编号
QString waybillId; //运单号
QString watercourseId; //流水号(取餐号)
QString watercourseId; //流水号
QString pickupCode; //取餐号
QString customerId; //用户编号
QString customerName;//用户名称
QString posCheckNo; // POS小票号
......@@ -112,6 +116,8 @@ public:
QString longitude;
QString latitude;
QString street;
QString consigneeName; //收货人名
QString consigneePhone; //收货电话
QString addressDetail;
int orderIndex;
int updateTime;
......@@ -145,6 +151,9 @@ public:
inline QString getWatercourseId()const{return watercourseId;}
inline void setWatercourseId(const QString& v){watercourseId = v;}
inline QString getPickupCode()const{return pickupCode;}
inline void setPickupCode(const QString& v){pickupCode = v;}
inline QString getCustomerId()const{return customerId;}
inline void setCustomerId(const QString& v){customerId = v;}
......@@ -226,6 +235,12 @@ public:
inline QString getStreet()const{return street;}
inline void setStreet(const QString& v){street = v;}
inline QString getConsigneeName()const{return consigneeName;}
inline void setConsigneeName(const QString& v){consigneeName = v;}
inline QString getConsigneePhone()const{return consigneePhone;}
inline void setConsigneePhone(const QString& v){consigneePhone = v;}
inline QString getAddressDetail()const{return addressDetail;}
inline void setAddressDetail(const QString& v){addressDetail = v;}
......
......@@ -30,6 +30,7 @@ SOURCES += main.cpp\
alertForm.cpp \
DTools/configManger.cpp \
Control/flowControl.cpp \
LocalServer/loaclHttpServer.cpp \
Network/billSocket.cpp \
DTools/dataManger.cpp \
Model/orderObject.cpp \
......@@ -62,6 +63,7 @@ HEADERS += \
alertForm.h \
DTools/configManger.h \
Control/flowControl.h \
LocalServer/loaclHttpServer.h \
Network/billSocket.h \
DTools/dataManger.h \
Model/orderObject.h \
......
......@@ -123,6 +123,9 @@
#define OPERATIONNAME_REFUSEREFUND "拒绝"
#define OPERATIONNAME_REFUNDORDER "退单"
// 定义性别:
#define FM_MALE "男"
#define FM_FEMALE "女"
//接口地址
#define INI_INTERFACE_ILOGIN "login"
......
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