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
e3950090
Commit
e3950090
authored
Dec 25, 2019
by
wuyang.zou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix some bug;
rebuild ssl lib; tag:4.2019.1225.1
parent
656314a7
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
206 additions
and
32 deletions
+206
-32
ReadMe.md
+34
-0
fmTakeout/Control/flowControl.cpp
+12
-3
fmTakeout/DTools/configManger.cpp
+21
-0
fmTakeout/DTools/configManger.h
+9
-0
fmTakeout/DTools/dataManger.cpp
+5
-2
fmTakeout/DTools/dataManger.h
+2
-2
fmTakeout/DTools/pmsGetStoreConfig.cpp
+8
-2
fmTakeout/DTools/pmsGetStoreConfig.h
+3
-0
fmTakeout/DTools/pmsOrdersData.cpp
+72
-14
fmTakeout/DTools/pmsOrdersData.h
+4
-1
fmTakeout/DTools/qtRedisClient.cpp
+5
-1
fmTakeout/DTools/qtRedisClient.h
+4
-0
fmTakeout/DTools/simProcOrderDB.cpp
+5
-1
fmTakeout/fmTakeout.rc
+5
-5
fmTakeout/main.cpp
+15
-0
fmTakeout/preDefine.h
+2
-1
No files found.
ReadMe.md
0 → 100644
View file @
e3950090
# StarBucks Pms Plugin
## 目录
*
[
背景介绍
](
#背景介绍
)
*
[
开发
](
#开发
)
*
[
使用说明
](
#使用说明
)
*
[
其他
](
#其他
)
<a
name=
"背景介绍"
></a>
## 背景介绍
*功能*
:为 Starbucks 生产管理系统 PMS, 同步线上订单到PMS本地数据库中
<br/>
*意义*
:是帮助PMS集成 门店全部渠道的全部订单 不可或缺的功能;
<a
name=
"开发说明"
></a>
## 开发
*
【开发】 为了集成 QRedis,把编译器版本提升至 MSVC2015, 使用 Qt 5.9.8, 使用Qt Create 4.8.2;
<br/>
*
【编译】
<br/>
<1>
QRedis 是使用源码集成到项目中,需要注意仓库地址版本,特别注意存在submodule;
<br/>
<2>
插件使用了https 通信协议,代码中 使能 QSslConfiguration,故需要使用MSVC2015 编译 Openssl源码,得到两个库文件(libeay32.dll , ssleay32.dll),放置与该插件应用目录下;
<br/>
<3>
本次插件也使用了 MYSQL 数据库,故需要使用 源码编译 Mysql数据库连接动态库: libmysql.dll
<br/>
*
【测试】
<br/>
<1>
功能等同 PosPlugin:显示门店营业状态,展示订单,心跳检查,网络状态展示,同步订单,自测订单,部分渠道退单等功能;
<br/>
<2>
特别功能:插订单数据到 PMS 本地数据库,通过 RedisList 进行消息同步;
<br/>
*
【git repo】仓库地址:git@scm.starbucks.com:china/delivery-postakeout.git
分支:pmsDevelop
<br/>
<a
name=
"使用说明"
></a>
## 使用说明
同POS插件;
fmTakeout/Control/flowControl.cpp
View file @
e3950090
...
...
@@ -665,6 +665,7 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe
// 拉取订单详情接口: 新增 渠道 参数
url
.
append
(
QString
(
"&"
)
+
JSON_CHANNEL
+
QString
(
"="
)
+
channel
);
url
.
append
(
QString
(
"&"
)
+
JSON_POSIPADDRESS
+
QString
(
"="
)
+
m_ipPortAddress
);
url
.
append
(
QString
(
"&"
)
+
JSON_PMSMACHINENO
+
QString
(
"="
)
+
m_pmsMachineNo
);
QLOG_INFO
()
<<
QString
(
"[<<<<---Pull Order Detail--->>>>][requestUrl:]"
)
<<
url
;
QUrl
TempQUrl
=
url
;
m_pullOrderSocket
->
SetUrl
(
TempQUrl
);
...
...
@@ -673,6 +674,8 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe
.
arg
(
result
).
arg
(
error
)
<<
recvJson
;
if
(
!
result
)
{
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#ff0000'>网络不稳定,正在重试</font>"
));
// refresh gui defaultStoreStatus;
emit
doUpdateStoreStatus
(
0
,
0
,
0
);
}
else
{
qDebug
()
<<
recvJson
;
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"正常"
));
...
...
@@ -708,7 +711,7 @@ bool FlowControl::_PullOrderList(const int &pageSize, const int &pageNo)
QJsonObject
sendJson
;
QJsonObject
recvJson
;
int
ordertotalSum
;
sendJson
=
DataManger
::
GetInstance
().
GetPullOrderListData
(
pageNo
,
pageSize
);
sendJson
=
DataManger
::
GetInstance
().
GetPullOrderListData
(
pageNo
,
pageSize
,
m_pmsMachineNo
);
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_PullOrderList: Pull Order List--->>>>][requestData:]"
)
<<
sendJson
;
if
(
ConfigManger
::
GetInstance
().
GetOrderSslConfig
())
{
...
...
@@ -728,6 +731,8 @@ bool FlowControl::_PullOrderList(const int &pageSize, const int &pageNo)
.
arg
(
result
).
arg
(
error
)
<<
recvJson
;
if
(
!
result
)
{
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#ff0000'>网络不稳定,正在重试</font>"
));
// refresh gui defaultStoreStatus;
emit
doUpdateStoreStatus
(
0
,
0
,
0
);
}
else
{
qDebug
()
<<
recvJson
;
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"正常"
));
...
...
@@ -776,7 +781,7 @@ bool FlowControl::_SendHeart()
QJsonObject
recvJson
;
m_puginVersionComments
=
ConfigManger
::
GetInstance
().
GetOrderServerUrl
();
sendJson
=
DataManger
::
GetInstance
().
GetHeartData
(
m_password
,
m_posId
,
m_ipPortAddress
,
m_puginVersionComments
,
m_bLastHeartIsError
);
sendJson
=
DataManger
::
GetInstance
().
GetHeartData
(
m_password
,
m_posId
,
m_ipPortAddress
,
m_puginVersionComments
,
m_bLastHeartIsError
,
m_pmsMachineNo
);
QLOG_INFO
()
<<
QString
(
"[<<<<---Send Heart--->>>>][requestData:%1]"
)
<<
sendJson
;
QUrl
TempQUrl
=
ConfigManger
::
GetInstance
().
GetLoginServerUrl
()
+
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_HEART
);
...
...
@@ -788,6 +793,8 @@ bool FlowControl::_SendHeart()
{
m_bLastHeartIsError
=
true
;
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#ff0000'>网络不稳定,正在重试</font>"
));
// refresh gui defaultStoreStatus;
emit
doUpdateStoreStatus
(
0
,
0
,
0
);
}
else
{
QLOG_INFO
()
<<
QString
(
"[<<<<---Send Heart Finish: code:%1--->>>>]"
).
arg
(
recvJson
[
JSON_LOGINCODE
].
toInt
());
...
...
@@ -796,6 +803,8 @@ bool FlowControl::_SendHeart()
result
=
false
;
m_bLastHeartIsError
=
true
;
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#ff0000'>网络不稳定,正在重试</font>"
));
// refresh gui defaultStoreStatus;
emit
doUpdateStoreStatus
(
0
,
0
,
0
);
}
else
{
result
=
true
;
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#f5f5f5'>正常</font>"
));
...
...
@@ -2962,7 +2971,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
QString
FlowControl
::
_Penny2Dollar
(
int
penny
)
{
double
dollar
=
(
double
)
penny
/
100
;
double
dollar
=
static_cast
<
double
>
(
penny
/
100
)
;
return
QString
::
number
(
dollar
,
'f'
,
1
);
}
...
...
fmTakeout/DTools/configManger.cpp
View file @
e3950090
...
...
@@ -165,6 +165,27 @@ int ConfigManger::GetLoginSslConfig()
return
m_config
->
value
(
"SSLConfig/login"
).
toInt
();
}
QString
ConfigManger
::
GetMysqlIpConfig
()
{
return
m_config
->
value
(
"MysqlConfig/ip"
).
toString
();
}
QString
ConfigManger
::
GetMysqlPasswordConfig
()
{
return
m_config
->
value
(
"MysqlConfig/password"
).
toString
();
}
QString
ConfigManger
::
GetRedisIpConfig
()
{
return
m_config
->
value
(
"RedisConfig/ip"
).
toString
();
}
QString
ConfigManger
::
GetRedisPasswordConfig
()
{
return
m_config
->
value
(
"RedisConfig/password"
).
toString
();
}
int
ConfigManger
::
GetOrderSslConfig
()
{
return
m_config
->
value
(
"SSLConfig/order"
).
toInt
();
...
...
fmTakeout/DTools/configManger.h
View file @
e3950090
...
...
@@ -134,6 +134,15 @@ public:
int
GetLoginSslConfig
();
int
GetOrderSslConfig
();
// Get Mysql IP & Password Config;
QString
GetMysqlIpConfig
();
QString
GetMysqlPasswordConfig
();
// Get Redis IP & Password Config;
QString
GetRedisIpConfig
();
QString
GetRedisPasswordConfig
();
private
:
ConfigManger
();
ConfigManger
(
ConfigManger
const
&
);
...
...
fmTakeout/DTools/dataManger.cpp
View file @
e3950090
...
...
@@ -60,7 +60,7 @@ QJsonObject DataManger::GetLoginData(const QString &partnerId, const QString &st
QJsonObject
DataManger
::
GetHeartData
(
const
QString
&
password
,
const
QString
&
stationId
,
const
QString
&
ipAddress
,
const
QString
&
versionComments
,
const
bool
lastHeartIsError
)
const
bool
lastHeartIsError
,
const
QString
&
pmsMachineNo
)
{
QJsonObject
rObj
;
rObj
.
insert
(
JSON_IPADDRESS
,
ipAddress
);
...
...
@@ -70,6 +70,7 @@ QJsonObject DataManger::GetHeartData(const QString &password,const QString &stat
rObj
.
insert
(
JSON_MACHINECODE
,
stationId
);
rObj
.
insert
(
JSON_PLUGINVERSION
,
APP_VERSION
);
rObj
.
insert
(
JSON_PLUGINVERSIONCOMMENTS
,
versionComments
);
rObj
.
insert
(
JSON_PMSMACHINENO
,
pmsMachineNo
);
if
(
lastHeartIsError
){
rObj
.
insert
(
JSON_SYNCSTORESTATUS
,
1
);
}
else
{
...
...
@@ -78,7 +79,7 @@ QJsonObject DataManger::GetHeartData(const QString &password,const QString &stat
return
rObj
;
}
QJsonObject
DataManger
::
GetPullOrderListData
(
const
int
&
pageNumber
,
const
int
&
pageSize
)
QJsonObject
DataManger
::
GetPullOrderListData
(
const
int
&
pageNumber
,
const
int
&
pageSize
,
const
QString
&
pmsMachineNo
)
{
QJsonObject
rObj
;
rObj
.
insert
(
JSON_PAGENUMBER
,
pageNumber
);
...
...
@@ -86,6 +87,8 @@ QJsonObject DataManger::GetPullOrderListData(const int& pageNumber, const int& p
rObj
.
insert
(
JSON_SHOPCODE
,
m_storeId
);
rObj
.
insert
(
JSON_POSIPADDRESS
,
QString
(
"http://"
)
+
m_posIpAddress
);
rObj
.
insert
(
JSON_CHANNEL
,
QString
(
"ALL"
));
rObj
.
insert
(
JSON_PMSMACHINENO
,
pmsMachineNo
);
//rObj.insert(JSON_AUTOCONFIRM, autoconfirm);
return
rObj
;
}
...
...
fmTakeout/DTools/dataManger.h
View file @
e3950090
...
...
@@ -44,12 +44,12 @@ public:
* 返回:登录数据
* */
QJsonObject
GetHeartData
(
const
QString
&
password
,
const
QString
&
stationId
,
const
QString
&
ipAddress
,
const
QString
&
versionComments
,
const
bool
lastHeartIsError
);
const
QString
&
versionComments
,
const
bool
lastHeartIsError
,
const
QString
&
pmsMachineNo
);
/* 功能:获取拉取订单数据
* 参数:[1]时间戳
* 返回:登录数据
* */
QJsonObject
GetPullOrderListData
(
const
int
&
pageNumber
=
1
,
const
int
&
pageSize
=
1000
);
QJsonObject
GetPullOrderListData
(
const
int
&
pageNumber
=
1
,
const
int
&
pageSize
=
1000
,
const
QString
&
pmsMachineNo
=
"001"
);
/* 功能:获取拉取配送员数据
* 参数:[1]门店号[2]渠道代码
* 返回:登录数据
...
...
fmTakeout/DTools/pmsGetStoreConfig.cpp
View file @
e3950090
#include "pmsGetStoreConfig.h"
#include "QsLog.h"
#include "DTools/configManger.h"
PmsGetStoreConfig
::
PmsGetStoreConfig
()
{
QLOG_INFO
()
<<
"[<<<<---PmsGetStoreConfig:: ConStructure PMS Get Store Config DataBase--->>>>]"
;
...
...
@@ -10,12 +12,16 @@ bool PmsGetStoreConfig::initPmsStoreConfigDB() {
m_sqlDb
=
QSqlDatabase
::
addDatabase
(
"QMYSQL"
,
"PmsGetStoreConfig"
);
//数据库驱动类型为Mysql
if
(
m_sqlDb
.
isValid
()){
QLOG_INFO
()
<<
"[<<<<---PmsGetStoreConfig driver is valid--->>>>]"
;
m_sqlDb
.
setHostName
(
"192.168.99.100"
);
//连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
m_sqlDbIp
=
ConfigManger
::
GetInstance
().
GetMysqlIpConfig
();
m_sqlDbPassword
=
ConfigManger
::
GetInstance
().
GetMysqlPasswordConfig
();
m_sqlDb
.
setHostName
(
m_sqlDbIp
.
length
()
?
m_sqlDbIp
:
"127.0.0.1"
);
//连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
//m_sqlDb.setHostName("localhost"); // 本地测试;
m_sqlDb
.
setPort
(
3306
);
//连接数据库端口号,与设置一致
m_sqlDb
.
setDatabaseName
(
"pms"
);
//连接数据库名,与设置一致
m_sqlDb
.
setUserName
(
"oms"
);
//数据库用户名,与设置一致
m_sqlDb
.
setPassword
(
"starbucks@oms"
);
m_sqlDb
.
setPassword
(
m_sqlDbPassword
.
length
()
?
m_sqlDbPassword
:
"starbucks@oms"
);
if
(
!
m_sqlDb
.
open
())
{
//打开数据库
QLOG_ERROR
()
<<
"[<<<<---PmsGetStoreConfig Open Database error:--->>>>]"
<<
m_sqlDb
.
lastError
().
text
();
...
...
fmTakeout/DTools/pmsGetStoreConfig.h
View file @
e3950090
...
...
@@ -37,6 +37,9 @@ private:
PmsGetStoreConfig
&
operator
=
(
PmsGetStoreConfig
const
&
);
QSqlDatabase
m_sqlDb
;
QString
m_sqlDbIp
;
QString
m_sqlDbPassword
;
signals
:
public
slots
:
...
...
fmTakeout/DTools/pmsOrdersData.cpp
View file @
e3950090
...
...
@@ -3,6 +3,7 @@
#include "alertForm.h"
#include <QDateTime>
#include "Control/flowControl.h"
#include "DTools/configManger.h"
PmsOrdersData
::
PmsOrdersData
()
{
QLOG_INFO
()
<<
"[<<<<---PmsOrdersData:: Structure PMS Orders Table--->>>>]"
;
...
...
@@ -14,12 +15,15 @@ bool PmsOrdersData::initPmsOrdersData() {
if
(
m_sqlDb
.
isValid
()
)
{
QLOG_INFO
()
<<
"[<<<<---PmsOrdersData driver is valid--->>>>]"
;
m_sqlDb
.
setHostName
(
"192.168.99.100"
);
//连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
m_sqlDbIp
=
ConfigManger
::
GetInstance
().
GetMysqlIpConfig
();
m_sqlDbPassword
=
ConfigManger
::
GetInstance
().
GetMysqlPasswordConfig
();
m_sqlDb
.
setHostName
(
m_sqlDbIp
.
length
()
?
m_sqlDbIp
:
"127.0.0.1"
);
//连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
//m_sqlDb.setHostName("localhost"); //本地测试;
m_sqlDb
.
setPort
(
3306
);
//连接数据库端口号,与设置一致
m_sqlDb
.
setDatabaseName
(
"pms"
);
//连接数据库名,与设置一致
m_sqlDb
.
setUserName
(
"oms"
);
//数据库用户名,与设置一致
m_sqlDb
.
setPassword
(
"starbucks@oms"
);
m_sqlDb
.
setPassword
(
m_sqlDbPassword
.
length
()
?
m_sqlDbPassword
:
"starbucks@oms"
);
if
(
!
m_sqlDb
.
open
())
{
//打开数据库
QLOG_ERROR
()
<<
"[<<<<---PmsOrdersData Open Database error:--->>>>]"
<<
m_sqlDb
.
lastError
().
text
();
...
...
@@ -206,9 +210,18 @@ bool PmsOrdersData::insertProductData(const QList<dishesObject*> proList, const
bool
insertProRet
=
false
;
bool
insertSubProRet
=
false
;
int
insertProSucNum
=
0
;
int
availProNum
=
0
;
// Skip Some Invalid Products;
QString
MainProOptions
=
""
;
if
(
proList
.
count
())
{
foreach
(
dishesObject
*
dishesObjectTemp
,
proList
){
QString
tempCodeLeftHead
=
dishesObjectTemp
->
code
.
left
(
1
);
if
(
dishesObjectTemp
->
code
.
contains
(
"Default"
,
Qt
::
CaseInsensitive
)
||
(
tempCodeLeftHead
<
QString
(
'0'
)
||
tempCodeLeftHead
>
QString
(
'9'
))
||
!
dishesObjectTemp
->
qty
){
continue
;
}
++
availProNum
;
QSqlQuery
query
(
m_sqlDb
);
query
.
prepare
(
"INSERT INTO order_items(order_id,product_id, product_code, product_name, en_product_name, product_qty, item_total,"
"spec_id, spec_name, en_spec_name, price, promotion_name, promotion_price, promotion_qty, promotion_sku,"
...
...
@@ -248,23 +261,31 @@ bool PmsOrdersData::insertProductData(const QList<dishesObject*> proList, const
QLOG_INFO
()
<<
QString
(
"[<<<<---PmsOrdersData::insertOrderProductData:Insert OrderId %1 Product Success code:%2 increaseId:%3--->>>>]"
)
.
arg
(
OrderId
).
arg
(
dishesObjectTemp
->
code
).
arg
(
ProInIdRef
);
QString
SubProInIdRef
;
//插入配料商品数据;
if
(
dishesObjectTemp
->
sub_products
.
count
()
)
{
insertSubProRet
=
insertSubProductData
(
dishesObjectTemp
->
sub_products
,
ProInIdRef
,
SubProInIdRef
);
//插入配料商品数据+Special Hot / Cold;
MainProOptions
=
dishesObjectTemp
->
options
;
if
(
dishesObjectTemp
->
sub_products
.
count
()
||
!
MainProOptions
.
isEmpty
()
)
{
insertSubProRet
=
insertSubProductData
(
dishesObjectTemp
->
sub_products
,
MainProOptions
,
ProInIdRef
,
SubProInIdRef
);
if
(
insertSubProRet
){
insertProSucNum
++
;
}
else
{
// insertSubProductData occurred Error And Faild Need Return False Immediately;
insertProRet
=
false
;
QLOG_ERROR
()
<<
QString
(
"[<<<<---PmsOrdersData::insertSubProductData: Insert MainProduct code:%1's SubProduct Failed --->>>>]"
).
arg
(
dishesObjectTemp
->
code
);
return
insertProRet
;
}
}
else
{
insertProSucNum
++
;
}
}
}
}
else
{
QLOG_INFO
()
<<
QString
(
"[<<<<---PmsOrdersData::insertProductData OrderId %1 Has No Products--->>>>]"
).
arg
(
OrderId
);
}
if
(
insertProSucNum
==
proList
.
count
()){
if
(
insertProSucNum
==
availProNum
){
insertProRet
=
true
;
}
return
insertProRet
;
}
...
...
@@ -275,10 +296,10 @@ bool PmsOrdersData::deleteProductData(OrderObject* orderObj) {
bool
delSubProductFailRet
=
false
;
int
id
=
0
;
QSqlQuery
query
(
m_sqlDb
);
query
.
prepare
(
QString
(
"select id from order
s
_items where order_id='%1'"
).
arg
(
orderObj
->
id
));
query
.
prepare
(
QString
(
"select id from order_items where order_id='%1'"
).
arg
(
orderObj
->
id
));
if
(
!
query
.
exec
())
{
QLOG_ERROR
()
<<
query
.
lastError
().
text
()
<<
"[<<<<---PmsOrdersData::deleteProductData"
" select id from order
s
_items Failed orderId:--->>>>]"
<<
orderObj
->
id
;
" select id from order_items Failed orderId:--->>>>]"
<<
orderObj
->
id
;
delSubProductFailRet
=
true
;
delProductFailRet
=
true
;
}
else
{
...
...
@@ -293,10 +314,10 @@ bool PmsOrdersData::deleteProductData(OrderObject* orderObj) {
}
}
//批量删除主商品;
query
.
prepare
(
QString
(
"delete from order
s
_items where order_id='%1'"
).
arg
(
orderObj
->
id
)
);
query
.
prepare
(
QString
(
"delete from order_items where order_id='%1'"
).
arg
(
orderObj
->
id
)
);
if
(
!
query
.
exec
())
{
QLOG_ERROR
()
<<
query
.
lastError
().
text
()
<<
QString
(
"[<<<<---PmsOrdersData::deleteProductData"
" delete from order
s
_items where order_id='%1' Failed--->>>>]"
).
arg
(
orderObj
->
id
);
" delete from order_items where order_id='%1' Failed--->>>>]"
).
arg
(
orderObj
->
id
);
delProductFailRet
=
true
;
}
}
...
...
@@ -311,11 +332,21 @@ bool PmsOrdersData::deleteProductData(OrderObject* orderObj) {
}
//此函数将会在 insertProductData 函数中调用;顾无需加锁 否则 会导致死锁;
bool
PmsOrdersData
::
insertSubProductData
(
const
QList
<
dishesObject
*>
sub_products
,
const
QString
&
ProInIdRef
,
QString
&
SubProInIdRef
)
{
bool
PmsOrdersData
::
insertSubProductData
(
const
QList
<
dishesObject
*>
sub_products
,
const
QString
&
MainProOptions
,
const
QString
&
ProInIdRef
,
QString
&
SubProInIdRef
)
{
bool
insertSubProRet
=
false
;
int
insertSubProSucNum
=
0
;
int
availSubProNum
=
0
;
// Skip Some Invalid Sub Products;
if
(
sub_products
.
count
())
{
foreach
(
dishesObject
*
subDishesObjectTemp
,
sub_products
){
QString
tempSubCodeLeftHead
=
subDishesObjectTemp
->
code
.
left
(
1
);
if
(
subDishesObjectTemp
->
code
.
contains
(
"Default"
,
Qt
::
CaseInsensitive
)
||
(
tempSubCodeLeftHead
<
QString
(
'0'
)
||
tempSubCodeLeftHead
>
QString
(
'9'
))
||
!
subDishesObjectTemp
->
qty
){
continue
;
}
++
availSubProNum
;
QSqlQuery
query
(
m_sqlDb
);
query
.
prepare
(
"INSERT INTO order_item_condiments(item_id,condiment_id, condiment_code, condiment_name, en_condiment_name,"
" price, condimen_total, sequence, qty ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"
);
...
...
@@ -339,8 +370,9 @@ bool PmsOrdersData::insertSubProductData(const QList<dishesObject*> sub_products
.
arg
(
subDishesObjectTemp
->
enProductName
).
arg
(
subDishesObjectTemp
->
price
*
0.01
).
arg
(
0
).
arg
(
subDishesObjectTemp
->
sequence
).
arg
(
subDishesObjectTemp
->
qty
);
}
else
{
SubProInIdRef
=
query
.
lastInsertId
().
toString
();
QLOG_INFO
()
<<
QString
(
"[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 subProduct Success code:%2 increaseId:%3--->>>>]"
)
.
arg
(
ProInIdRef
).
arg
(
subDishesObjectTemp
->
code
).
arg
(
SubProInIdRef
);
QLOG_INFO
()
<<
QString
(
"[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 subProduct Success code:%2 SubProInIdRef:%3"
" increaseId:%4--->>>>]"
)
.
arg
(
ProInIdRef
).
arg
(
subDishesObjectTemp
->
code
).
arg
(
SubProInIdRef
).
arg
(
query
.
lastInsertId
().
toString
()
);
insertSubProSucNum
++
;
}
}
...
...
@@ -348,7 +380,33 @@ bool PmsOrdersData::insertSubProductData(const QList<dishesObject*> sub_products
QLOG_INFO
()
<<
QString
(
"[<<<<---PmsOrdersData::insertSubProductData ProInIdRef:%1 Has No subProducts--->>>>]"
).
arg
(
ProInIdRef
);
}
if
(
insertSubProSucNum
==
sub_products
.
count
()){
//Special Insert MainProOptions;
if
(
!
MainProOptions
.
isEmpty
()
)
{
++
availSubProNum
;
QSqlQuery
query
(
m_sqlDb
);
query
.
prepare
(
"INSERT INTO order_item_condiments(item_id, condiment_code , price, condimen_total , qty ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"
);
query
.
addBindValue
(
ProInIdRef
.
toInt
());
// --主商品自增编号
query
.
addBindValue
(
MainProOptions
);
// --子商品code
query
.
addBindValue
(
0
);
// --子商品价格
query
.
addBindValue
(
0
);
// --子商品应收价格 dishesObjectTemp->totalQuantityPrice ????????
query
.
addBindValue
(
1
);
// --子商品数量
if
(
!
query
.
exec
())
{
QLOG_ERROR
()
<<
QString
(
"[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 MainProOptions code:%2 Failed --->>>>]"
)
.
arg
(
ProInIdRef
).
arg
(
MainProOptions
)
<<
query
.
lastError
().
text
()
<<
QString
::
number
(
query
.
lastError
().
type
());
QLOG_ERROR
()
<<
QString
(
"INSERT INTO order_item_condiments(item_id, condiment_code , price, condimen_total , qty ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"
)
.
arg
(
ProInIdRef
.
toInt
()).
arg
(
MainProOptions
).
arg
(
0
).
arg
(
0
).
arg
(
1
);
}
else
{
SubProInIdRef
=
query
.
lastInsertId
().
toString
();
QLOG_INFO
()
<<
QString
(
"[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 MainProOptions Success code:%2 SubProInIdRef:%3"
" increaseId:%4--->>>>]"
)
.
arg
(
ProInIdRef
).
arg
(
MainProOptions
).
arg
(
SubProInIdRef
).
arg
(
query
.
lastInsertId
().
toString
()
);
insertSubProSucNum
++
;
}
}
if
(
insertSubProSucNum
==
availSubProNum
){
insertSubProRet
=
true
;
}
return
insertSubProRet
;
...
...
fmTakeout/DTools/pmsOrdersData.h
View file @
e3950090
...
...
@@ -57,7 +57,7 @@ public:
*参数:[1]订单对象指针 [2]返回插入成功后的自增序号;
*返回:true操作成功,false失败
**/
bool
insertSubProductData
(
const
QList
<
dishesObject
*>
sub_products
,
const
QString
&
ProInIdRef
,
QString
&
SubProInIdRef
);
bool
insertSubProductData
(
const
QList
<
dishesObject
*>
sub_products
,
const
QString
&
MainProOptions
,
const
QString
&
ProInIdRef
,
QString
&
SubProInIdRef
);
/**
*功能: 根据订单ID 更新 数据库中 Order 订单状态信息;
...
...
@@ -89,6 +89,9 @@ private:
PmsOrdersData
&
operator
=
(
PmsOrdersData
const
&
);
QSqlDatabase
m_sqlDb
;
QString
m_sqlDbIp
;
QString
m_sqlDbPassword
;
signals
:
public
slots
:
...
...
fmTakeout/DTools/qtRedisClient.cpp
View file @
e3950090
#include "qtRedisClient.h"
#include "QsLog.h"
#include "DTools/configManger.h"
QtRedisClient
::
QtRedisClient
()
{
QLOG_INFO
()
<<
"[<<<<---QtRedisClient:: ConStructure Redis Begin --->>>>]"
;
initRedisClient
();
m_RedisConnectCnf
.
setHost
(
"192.168.99.100"
);
m_redisIp
=
ConfigManger
::
GetInstance
().
GetRedisIpConfig
();
//m_redisPassword = ConfigManger::GetInstance().GetRedisPasswordConfig();
m_RedisConnectCnf
.
setHost
(
m_redisIp
.
length
()
?
m_redisIp
:
"127.0.0.1"
);
//m_RedisConnectCnf.setHost("127.0.0.1"); //本地测试;
m_RedisConnectCnf
.
setPort
(
6379
);
//m_RedisConnectCnf.setAuth("123456"); //本地测试;
...
...
fmTakeout/DTools/qtRedisClient.h
View file @
e3950090
...
...
@@ -45,6 +45,10 @@ private:
RedisClient
::
ConnectionConfig
m_RedisConnectCnf
;
RedisClient
::
Connection
*
m_pRedisConnectOperat
=
nullptr
;
QString
m_redisIp
;
QString
m_redisPassword
;
signals
:
public
slots
:
...
...
fmTakeout/DTools/simProcOrderDB.cpp
View file @
e3950090
...
...
@@ -26,11 +26,15 @@ bool SimProcOrderDB::initSimProcOrderDB(){
m_sqlDb.setUserName("sa"); //登录用户
m_sqlDb.setPassword("SIM29@123");
*/
m_sqlDb
.
setHostName
(
"192.168.99.100"
);
//连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
//PMS No Use;
/*
m_sqlDb.setHostName("127.0.0.1"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
m_sqlDb.setPort(3306); //连接数据库端口号,与设置一致
m_sqlDb.setDatabaseName("pms"); //连接数据库名,与设置一致
m_sqlDb.setUserName("oms"); //数据库用户名,与设置一致
m_sqlDb.setPassword("starbucks@oms"); //数据库密码,与设置一致
*/
if
(
!
m_sqlDb
.
open
())
{
//打开数据库
QLOG_ERROR
()
<<
"[<<<<---SimProcOrderDB:: Open Database error:--->>>>]"
<<
m_sqlDb
.
lastError
().
text
();
...
...
fmTakeout/fmTakeout.rc
View file @
e3950090
...
...
@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 4,2019,1
031
,1
PRODUCTVERSION 4,2019,1
031
,1
FILEVERSION 4,2019,1
225
,1
PRODUCTVERSION 4,2019,1
225
,1
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
...
...
@@ -27,12 +27,12 @@ VS_VERSION_INFO VERSIONINFO
VALUE "CompanyName", "ShangHai.Freemud Co., Ltd."
VALUE "FileDescription", "PMS Plugin Application"
VALUE "InternalName", "PmsPlugin.exe"
VALUE "LegalCopyright", "Copyright (C)2013-20
19
"
VALUE "LegalCopyright", "Copyright (C)2013-20
20
"
VALUE "OriginalFilename", "PmsPlugin.exe"
VALUE "ProductName", "PMS Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "4.2019.1
031
.1"
VALUE "FileVersion", "4.2019.1
031
.1"
VALUE "ProductVersion", "4.2019.1
225
.1"
VALUE "FileVersion", "4.2019.1
225
.1"
//*************************************************************************//
END
END
...
...
fmTakeout/main.cpp
View file @
e3950090
...
...
@@ -50,6 +50,18 @@ void LoadTheme(const QString& theme)
qssFile
.
close
();
}
void
FixAppEnvirment
()
{
QString
curEnvPath
=
QProcessEnvironment
::
systemEnvironment
().
value
(
"PATH"
);
QString
dstEnvPath
;
dstEnvPath
.
append
(
g_appDir
);
dstEnvPath
.
append
(
curEnvPath
);
if
(
!
dstEnvPath
.
isEmpty
()
)
{
QLOG_INFO
()
<<
QString
(
"Current path env::%s"
).
arg
(
dstEnvPath
);
}
else
{
QLOG_INFO
()
<<
QString
(
"Current path env is empty"
);
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
#ifdef Q_OS_WIN
...
...
@@ -73,6 +85,9 @@ int main(int argc, char *argv[])
// 初始化日志
InitLogger
();
// 修正环境变量;
// FixAppEnvirment();
// 加载主题
LoadTheme
(
APP_THEME
);
...
...
fmTakeout/preDefine.h
View file @
e3950090
...
...
@@ -5,7 +5,8 @@
#define APP_THEME "deaufult"
#define APP_VERSION "4.2019.1031.1"
//#define APP_VERSION "4.2019.1031.1"
#define APP_VERSION "4.2019.1225.1"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号
#define SERVER_PASSWORD "posoperator@freemud.cn"
...
...
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