Commit e3950090 by wuyang.zou

fix some bug;

rebuild ssl lib;
 tag:4.2019.1225.1
parent 656314a7
# 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插件;
......@@ -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);
}
......
......@@ -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();
......
......@@ -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&);
......
......@@ -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;
}
......
......@@ -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]渠道代码
* 返回:登录数据
......
#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();
......
......@@ -37,6 +37,9 @@ private:
PmsGetStoreConfig& operator=(PmsGetStoreConfig const&);
QSqlDatabase m_sqlDb;
QString m_sqlDbIp;
QString m_sqlDbPassword;
signals:
public slots:
......
......@@ -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:
......
#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"); //本地测试;
......
......@@ -45,6 +45,10 @@ private:
RedisClient::ConnectionConfig m_RedisConnectCnf;
RedisClient::Connection* m_pRedisConnectOperat = nullptr;
QString m_redisIp;
QString m_redisPassword;
signals:
public slots:
......
......@@ -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();
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 4,2019,1031,1
PRODUCTVERSION 4,2019,1031,1
FILEVERSION 4,2019,1225,1
PRODUCTVERSION 4,2019,1225,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-2019"
VALUE "LegalCopyright", "Copyright (C)2013-2020"
VALUE "OriginalFilename", "PmsPlugin.exe"
VALUE "ProductName", "PMS Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "4.2019.1031.1"
VALUE "FileVersion", "4.2019.1031.1"
VALUE "ProductVersion", "4.2019.1225.1"
VALUE "FileVersion", "4.2019.1225.1"
//*************************************************************************//
END
END
......
......@@ -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);
......
......@@ -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"
......
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