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
6dcbb47a
Commit
6dcbb47a
authored
Jul 03, 2018
by
wuyang.zou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug: 更新POS本地数据 收货信息部分数据 + Local Http Server 转移到线程中
parent
d6a24b7d
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
318 additions
and
40 deletions
+318
-40
fmTakeout/Control/flowControl.cpp
+41
-19
fmTakeout/Control/flowControl.h
+102
-12
fmTakeout/DTools/printSumBillPosDB.cpp
+23
-8
fmTakeout/LocalServer/loaclHttpServer.cpp
+84
-0
fmTakeout/LocalServer/loaclHttpServer.h
+47
-0
fmTakeout/Model/orderObject.h
+16
-1
fmTakeout/fmTakeout.pro
+2
-0
fmTakeout/preDefine.h
+3
-0
No files found.
fmTakeout/Control/flowControl.cpp
View file @
6dcbb47a
...
...
@@ -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
;
}
...
...
fmTakeout/Control/flowControl.h
View file @
6dcbb47a
...
...
@@ -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
fmTakeout/DTools/printSumBillPosDB.cpp
View file @
6dcbb47a
...
...
@@ -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
{
...
...
fmTakeout/LocalServer/loaclHttpServer.cpp
0 → 100644
View file @
6dcbb47a
#
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
();
}
fmTakeout/LocalServer/loaclHttpServer.h
0 → 100644
View file @
6dcbb47a
#
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
fmTakeout/Model/orderObject.h
View file @
6dcbb47a
...
...
@@ -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
;}
...
...
fmTakeout/fmTakeout.pro
View file @
6dcbb47a
...
...
@@ -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
\
...
...
fmTakeout/preDefine.h
View file @
6dcbb47a
...
...
@@ -123,6 +123,9 @@
#define OPERATIONNAME_REFUSEREFUND "拒绝"
#define OPERATIONNAME_REFUNDORDER "退单"
// 定义性别:
#define FM_MALE "男"
#define FM_FEMALE "女"
//接口地址
#define INI_INTERFACE_ILOGIN "login"
...
...
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