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
Expand all
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
This diff is collapsed.
Click to expand it.
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