Commit 941e58fa by wuyang.zou

<1> 远端PosAgent服务掉线,插件程序异常奔溃问题

<2> 美好咖啡订单标识
<3> 微信拼单昵称存储
<4> 高德-Curbside: 街送标识 & 制作时间实时刷新
parent d11860bf
......@@ -8,6 +8,7 @@
#include <QVariantMap>
#include <QJsonDocument>
#include <QSslSocket>
#include <qabstractsocket.h>
#include <QApplication>
#include <QHostInfo>
#include <QThread>
......@@ -22,14 +23,17 @@
#include "alertForm.h"
#define CLOSE_SOCKES(socket) do{ \
if(socket != NULL && socket->isOpen()){ \
socket->close(); \
#define CLOSE_SOCKES(socket) do{ \
if ( socket != NULL ) { \
if ( socket->isOpen() ) \
socket->close(); \
\
delete socket; \
socket = NULL; \
} \
} while(0)
#define DATAHEAD_INIT(head, mgc, ver, seq, cmd, serize, len) do{ \
head.magic = mgc; \
head.version = ver; \
......@@ -127,7 +131,7 @@ public:
//Socket Thread Recv Msg Entry
void threadStart();
void onFlowControlLoginSuccess( bool fcLoginResult, bool fcOpenTcpFlag, QString &storeId, QString &posIp, int &posPluginPort );
void onFlowControlLoginSuccess( bool fcLoginResult, bool fcOpenTcpFlag, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum );
signals:
void connected();
......@@ -151,6 +155,10 @@ public:
QString _storeId;
// Mac Address;
QString _macAddress;
// HostName;
QString _hostName;
// WorkStation Id POS工作站编号;
QString _workStationNum;
// Pos Local Machine IP;
QString _localIp;
// Pos Plugin Server Port;
......
......@@ -24,6 +24,7 @@
#include <DTools/pmsOrdersData.h>
#include <QHostInfo>
#include <DTools/qtRedisClient.h>
#include "SocketCommunicate.h"
FlowControl &FlowControl::GetInstance()
{
......@@ -163,8 +164,17 @@ bool FlowControl::_AppendOrderInfo2Redis(const OrderObject* orderObject) {
void FlowControl::_GetIpAddress()
{
/***已经验证:IP地址 优先取配置文件中的[IpAddress/ip];只有没有配置的情况才会根据主机名获取ipv4的IP地址,因此为保证IP的准确性,注释通过配置文件获取ip的代码***/
std::string tempMacAddress = "";
int getMacRet = MacTool::GetMacByAdaptersAddresses( tempMacAddress );
if ( !getMacRet) {
QLOG_ERROR() << "FlowControl::_GetIpAddress MacTool->GetMacByAdaptersAddresses Falied";
}
m_posMacAddress = tempMacAddress.c_str();
QString ipAddress;
QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
m_posHostName = info.hostName();
foreach(QHostAddress address,info.addresses()) {
if(address.protocol() == QAbstractSocket::IPv4Protocol) {
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress getFromLocalHostName:%1--->>>>]").arg(address.toString());
......@@ -172,11 +182,13 @@ void FlowControl::_GetIpAddress()
if(address.toString().length()>7 && address.toString()!= "127.0.0.1" && !(address.toString().contains("192.168."))
&& !(address.toString().contains("10.0.75.1") ) && !(address.toString().contains("172.") ) ) {
ipAddress=address.toString();
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real IpAddress:%1--->>>>]").arg(address.toString());
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real IpAddress: %1 hostName: %2 macAddress: %3 --->>>>]")
.arg(ipAddress).arg(m_posHostName).arg(m_posMacAddress);
break;
}
}
}
m_ipAddress = ipAddress;
m_ipPortAddress = ipAddress+QString(":")+QString::number(ConfigManger::GetInstance().GetHttpServerPort());
}
......@@ -495,6 +507,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject->inAdvanceTakemeal = 0;
orderObject->globalServiceType = 0;
orderObject->globalOrderType = 0;
orderObject->isGiftitForward = 0 ;
orderObject->FromJson(jsonObject);
orderObject->pushOrderType=0;
......@@ -519,11 +532,12 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
m_FmOrdersMap.insert(orderObject->id, orderObject);
QLOG_INFO() << QString("[<<<<---FmTakeout Valid Orders Map:Insert New Order[ OrderId: %1 OrderDesc: %2 OrderStatus: %3 "
" MakeStatus: %4 oldArriverAhead: %5 NewArriverAhead: %6 ]--->>>>]")
" MakeStatus: %4 oldArriverAhead: %5 NewArriverAhead: %6 expectDate: %7 reserveMakeTime: %8 remindTicketTime: %9 ]--->>>>]")
.arg(orderObject->id).arg( orderObject->getOrderStatusDec() ).arg(orderObject->orderStatus)
.arg(orderObject->makeStatus).arg(pmsArriveAheadFlag).arg(orderObject->inAdvanceTakemeal);
.arg(orderObject->makeStatus).arg(pmsArriveAheadFlag).arg(orderObject->inAdvanceTakemeal)
.arg(orderObject->expectDate).arg(orderObject->reserveMakeTime).arg(orderObject->remindTicketTime);
if(!pmsOrderStatusIsExistRet || !pmsMakeStatusIsExistRet || (pmsArriveAheadFlag != orderObject->inAdvanceTakemeal) ) {
if ( !pmsOrderStatusIsExistRet || !pmsMakeStatusIsExistRet || ( pmsArriveAheadFlag != orderObject->inAdvanceTakemeal ) || ( 3 == orderObject->inAdvanceTakemeal ) ) {
//程序刚启动+量大+ 异步也无碍 顾无需加锁;
m_simValidOrdersList.append(orderObject->id);
}
......@@ -537,15 +551,18 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
int oldArriverAhead = orderObject->inAdvanceTakemeal;
orderObject->FromJson(jsonObject);
QLOG_INFO() << QString("[<<<<---FmTakeout Valid Order Map:Update orderId:%1 OldStatus:%2: curStatus:%3 "
"OldMakeStatus:%4: makeStatus:%5 OldArriverAhead:%6: ArriverAhead:%7 ]--->>>>]")
QLOG_INFO() << QString("[<<<<---FmTakeout Valid Order Map:Update orderId:%1 OldStatus:%2 curStatus:%3 "
"OldMakeStatus:%4 makeStatus:%5 OldArriverAhead:%6 NewArriverAhead:%7 expectDate: %8 reserveMakeTime: %9 remindTicketTime: %10 ]--->>>>]")
.arg(orderObject->id).arg(oldStatus).arg(orderObject->orderStatus)
.arg(oldMakeStatus).arg(orderObject->makeStatus).arg(oldArriverAhead).arg(orderObject->inAdvanceTakemeal);
.arg(oldMakeStatus).arg(orderObject->makeStatus).arg(oldArriverAhead).arg(orderObject->inAdvanceTakemeal)
.arg(orderObject->expectDate).arg(orderObject->reserveMakeTime).arg(orderObject->remindTicketTime);
// 如果订单状态 或 制作状态 或 预约单提前到店 出现变化都需添加到队列;
if(oldStatus != orderObject->orderStatus || oldMakeStatus != orderObject->makeStatus || oldArriverAhead != orderObject->inAdvanceTakemeal) {
if(oldStatus != orderObject->orderStatus || oldMakeStatus != orderObject->makeStatus
|| ( oldArriverAhead != orderObject->inAdvanceTakemeal ) || ( 3 == orderObject->inAdvanceTakemeal ) ) {
bRetOrderUpdateMutex =m_OrderUpdateMutex.tryLock(VALUE_TRYLOCKMEMTIMEOUT);
if(!bRetOrderUpdateMutex) {
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 OrderStatus:%2 MakeStatus:%3 ArriverAhead:%4 Change m_OrderUpdateMutex.tryLock Failed --->>>>]")
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 OrderStatus:%2 MakeStatus:%3 ArriverAhead:%4 Changed, But m_OrderUpdateMutex.tryLock Failed --->>>>]")
.arg(orderObject->id).arg(orderObject->orderStatus).arg(orderObject->makeStatus).arg(orderObject->inAdvanceTakemeal);
} else {
m_waitUpdateOrderList.append(orderObject->id);
......@@ -561,7 +578,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
emit startRemind(REMIND_REQREFUND_ORDER);
}
switch (orderObject->orderStatus){
switch (orderObject->orderStatus) {
case OrderObject::NewOrder:
break;
case OrderObject::Confirmed:
......@@ -609,12 +626,13 @@ bool FlowControl::_GetStoreInfo()
}
void FlowControl::_GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, int &posPort){
void FlowControl::_GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum){
loginResult = m_bLoginResult;
openTcpChannel = m_openTcpChannel;
storeId = m_storeId;
posIp = m_ipAddress;
posPort = ConfigManger::GetInstance().GetHttpServerPort();
posHostName = m_posHostName;
posWorkStationNum = m_posWorkstationNum;
}
QString FlowControl::_GetCashierId()
......@@ -659,6 +677,12 @@ bool FlowControl::_Login()
sendJson = DataManger::GetInstance().GetLoginData(ConfigManger::GetInstance().GetPartnerId(),m_storeId,
m_password, m_posId, m_puginVersionComments,m_ipPortAddress,m_pmsMachineNo);
// 登录新增Pos相关属性字段;
sendJson.insert(JSON_POS_IP_ADDR, m_ipAddress);
sendJson.insert(JSON_POS_WORKS_NUM, m_posWorkstationNum);
sendJson.insert(JSON_POS_HOST_NAME, m_posHostName);
sendJson.insert(JSON_POS_MAC_ADDRESS, m_posMacAddress);
emit showAlert(AlertForm::LOADING, QString::fromLocal8Bit("正在登录......"));
QLOG_INFO() << QString("[<<<<---Login--->>>>][requestData:%1]")<<sendJson;
......@@ -742,8 +766,7 @@ bool FlowControl::_Login()
if ( m_bLoginResult && m_openTcpChannel ) {
QLOG_INFO() << QString("[<<<<---Login Success, Emit Signal To SocketCommunicate Begin Connect Tcp Socket --->>>>]");
int tmpPosPluginPort = ConfigManger::GetInstance().GetHttpServerPort();
emit doLoginSuccess(true, m_openTcpChannel, m_storeId, m_ipAddress, tmpPosPluginPort );
emit doLoginSuccess(true, m_openTcpChannel, m_storeId, m_ipAddress, m_posHostName, m_posWorkstationNum );
}
return result;
......@@ -930,6 +953,11 @@ bool FlowControl::_SendHeart()
m_puginVersionComments = ConfigManger::GetInstance().GetOrderServerUrl();
sendJson = DataManger::GetInstance().GetHeartData(m_password,m_posId,m_ipPortAddress,m_puginVersionComments,m_bLastHeartIsError,m_pmsMachineNo);
sendJson.insert(JSON_POS_IP_ADDR, m_ipAddress);
sendJson.insert(JSON_POS_WORKS_NUM, m_posWorkstationNum);
sendJson.insert(JSON_POS_HOST_NAME, m_posHostName);
sendJson.insert(JSON_POS_MAC_ADDRESS, m_posMacAddress);
QLOG_INFO() << QString("[<<<<---Send Heart--->>>>][requestData:%1]")<<sendJson;
QUrl TempQUrl = ConfigManger::GetInstance().GetLoginServerUrl()+
ConfigManger::GetInstance().GetInterfaceName(INI_INTERFACE_HEART);
......@@ -1442,7 +1470,11 @@ void FlowControl::_ReportOMSRecordOrderInfo()
sendJson.insert("storeId",RepOMSRecOrderIn->storeId);
sendJson.insert("remark",RepOMSRecOrderIn->remark);
sendJson.insert("checkNo",RepOMSRecOrderIn->checkNo);
sendJson.insert("ipAddress",m_ipAddress);
sendJson.insert(JSON_IP_ADDRESS, m_ipAddress);
sendJson.insert(JSON_POS_WORKS_NUM, m_posWorkstationNum);
sendJson.insert(JSON_POS_HOST_NAME, m_posHostName);
sendJson.insert(JSON_POS_MAC_ADDRESS, m_posMacAddress);
// sendJson.insert(JSON_POS_PLUGIN_VERSION, RepOMSRecOrderIn->posPluginVersion);
sendJson.insert(JSON_PMSMACHINENO,m_pmsMachineNo);
QString orderNoTemp = RepOMSRecOrderIn->orderNo;
......
......@@ -30,7 +30,7 @@ public:
* 参数: 1. 是否登录成功; 2.门店号; 3.PosPluginIp; 4.PosPlugin Port;
* 返回: Void;
* */
void _GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, int &posPort);
void _GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum);
/* 功能:获取收银员ID
......@@ -100,6 +100,9 @@ private:
QString m_storeId;
QString m_ipAddress = ""; // 门店POS的 IP 地址
QString m_ipPortAddress; // 门店POS的 IP+端口 地址
QString m_posHostName; // Pos 主机名;
QString m_posMacAddress; // Pos Mac地址;
QString m_posWorkstationNum; // Pos 工作站编号
QString m_pmsMachineNo; // 标志PMS 系统插件程序所在机器编号
QString m_password;
QString m_puginVersionComments;
......@@ -180,7 +183,7 @@ signals:
// void doLogin();
// http门店POS登录成功后 发送信号给 SocketCommunicate;
void doLoginSuccess(bool loginResult,bool openTcpFlag, QString &storeId, QString &posIp, int &posPort);
void doLoginSuccess(bool loginResult,bool openTcpFlag, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum);
/* 功能:隐藏通知窗口
......
......@@ -203,13 +203,14 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
"address_detail, consignee_name ,first_name,last_name,consignee_phone, delivery_price,delivery_discount,delivery_time, order_estimation,make_finish_time,"
"is_package, last_pay_time, address_latitude, address_longitude, oms_msrno, consumer_birthday, cancel_reason, confirm_time,customer_id,customer_gender,"
"way_bill_id,store_id,store_name,store_address,store_street, pos_id, lang, ext_info, rider_phone, rider_name, "
"displateform_fee, make_status, make_source, make_device_id,reserve_type, appointed_time,appointed_remind_template,sub_store_id,global_order_type,global_service_type ) "
"displateform_fee, make_status, make_source, make_device_id,reserve_type, appointed_time,appointed_remind_template,sub_store_id, "
"global_order_type,global_service_type,platform_source ) "
"VALUES(?, ?, ?, ?, ?,?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?,"
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" );
query.addBindValue(orderObj->id); // --非码OMS订单号
query.addBindValue(orderObj->id); // --非码OMS订单号
......@@ -278,10 +279,14 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
query.addBindValue(orderObj->makeSource); // --提供制作状态来源
query.addBindValue(orderObj->makeDeviceId); // --提供制作状态设备ID
// 与 oms协定此块业务出现 歧异 故在此处转换; 【与PMS协定: businessType 10 预约;20 WSG;30 拼团】
// 与 oms协定此块业务出现 歧异 故在此处转换; 【与PMS协定: businessType -> 10: 预约; 20: WSG-用星说: 21: WSG-美好咖啡; 30: 拼团】
int tempBusinessType = orderObj->businessType.toInt();
if ( "WSG-MOD" == orderObj->channel && "4" == orderObj->platformSource)
tempBusinessType = 20;
if ( "WSG-MOD" == orderObj->channel && "4" == orderObj->platformSource) {
if ( 1 == orderObj->isGiftitForward )
tempBusinessType = 21;
else
tempBusinessType = 20;
}
if ( 7 == orderObj->orderType || 11 == orderObj->orderType )
tempBusinessType = 10;
else if (8 == orderObj->orderType) {
......@@ -294,6 +299,7 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
query.addBindValue(orderObj->subStoreId); // --母子门店的子门店编号;
query.addBindValue( orderObj->globalOrderType ); // --全链路订单类型
query.addBindValue( orderObj->globalServiceType); // --全链路服务类型
query.addBindValue( orderObj->platformSource); // --平台来源枚举值
if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::insertOrderData:Insert Order Error--->>>>]"<<query.lastError().text()
......@@ -307,10 +313,10 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
"last_pay_time, address_latitude, address_longitude, oms_msrno, consumer_birthday, cancel_reason, "
"confirm_time,customer_id,customer_gender,way_bill_id,store_id,store_name,store_address,store_street, "
"pos_id, lang, ext_info, rider_phone, rider_name, displateform_fee, make_status, make_source, make_device_id,"
" reserve_type, appointed_time,appointed_remind_template,sub_store_id,global_order_type,global_service_type) "
" reserve_type, appointed_time,appointed_remind_template,sub_store_id,global_order_type,global_service_type,platform_source ) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, "
"%21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40,"
"%41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54,%55,%56,%57,%58,%59,%60)")
"%41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54,%55,%56,%57,%58,%59,%60,%61)")
.arg(orderObj->id).arg(orderObj->id).arg(orderObj->orderStatus).arg(updateTimeString).arg(orderObj->channel)
.arg(orderObj->orderType).arg(tempOrderTypeId)
.arg(orderObj->pickupCode).arg(orderObj->totalPrice * 0.01).arg(orderObj->productPrice * 0.01).arg(orderObj->orderDiscount * 0.01)
......@@ -325,7 +331,7 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
.arg("").arg(orderObj->lang).arg(orderObj->memo).arg(orderObj->riderPhone).arg(orderObj->riderName)
.arg(orderObj->disPlateformFee * 0.01).arg(orderObj->makeStatus).arg(orderObj->makeSource).arg(orderObj->makeDeviceId)
.arg( tempBusinessType ).arg(orderObj->expectDate).arg( QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime )
.arg(orderObj->subStoreId).arg(orderObj->globalOrderType).arg(orderObj->globalServiceType);
.arg(orderObj->subStoreId).arg(orderObj->globalOrderType).arg(orderObj->globalServiceType).arg(orderObj->platformSource);
} else {
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertOrderData:Insert OrderId %1 Into PMS Order Success--->>>>]").arg(orderObj->id);
......@@ -441,7 +447,8 @@ bool PmsOrdersData::insertProductData(const QList<dishesObject*> proList, const
query.addBindValue(dishesObjectTemp->promotionSku); // --主商品优惠sku
query.addBindValue(dishesObjectTemp->packagePrice * 0.01); // --主商品打包价格
query.addBindValue(dishesObjectTemp->defaultImage); // --主商品默认图片
query.addBindValue(dishesObjectTemp->userName); // --主商品-Owner 拼单人;
// (默认主商品的拼单人 拆字) 拆口令分配的字 |#| 拼单人昵称 例:"世" |#| "Kernel(邹伍洋)" 分割符为: "|#|"
query.addBindValue(dishesObjectTemp->userName + ( dishesObjectTemp->wechatName.length() ? "|#|" + dishesObjectTemp->wechatName : "" ) ); // 拆字 + 微信昵称
if(!query.exec()) {
QLOG_ERROR()<<QString("[<<<<---PmsOrdersData::insertProductData:Insert OrderId %1 Product code:%2 Failed --->>>>]")
......@@ -455,7 +462,7 @@ bool PmsOrdersData::insertProductData(const QList<dishesObject*> proList, const
.arg("").arg(dishesObjectTemp->qty).arg(0).arg(dishesObjectTemp->specId).arg(dishesObjectTemp->specName)
.arg("").arg(dishesObjectTemp->price * 0.01).arg(dishesObjectTemp->promotionName).arg(dishesObjectTemp->promotionPrice * 0.01)
.arg(dishesObjectTemp->promotionQty).arg(dishesObjectTemp->promotionSku).arg(dishesObjectTemp->packagePrice * 0.01).arg("")
.arg(dishesObjectTemp->userName);
.arg(dishesObjectTemp->userName + ( dishesObjectTemp->wechatName.length() ? "|#|" + dishesObjectTemp->wechatName : "" ) );
} else {
ProInIdRef = query.lastInsertId().toString();
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertOrderProductData:Insert OrderId %1 Product Success code:%2 increaseId:%3--->>>>]")
......@@ -742,6 +749,7 @@ bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderSta
// 需要对应转换并更新: order_type_id;
int tempOrderTypeId = convertPosServiceTypeId( orderObj, orderObj->orderStatus);
// 预约时间 & 街送小票时间 & 车牌号 & 隐私号 PCS 使用不到, 故没有进行更新.
query.prepare(QString("update orders set order_status=%1,order_type_id=%2, global_service_type=%3, global_order_type=%4, make_status='%5',"
" make_source='%6', make_device_id='%7', appointed_remind_template ='%8' where order_id='%9'")
.arg( QString::number(OrderStatus), QString::number(tempOrderTypeId), QString::number(orderObj->globalServiceType),
......
......@@ -33,6 +33,7 @@ class dishesObject : public QObject
Q_PROPERTY (int starPromotionPrice READ getStarPromotionPrice WRITE setStarPromotionPrice)
Q_PROPERTY (QString userName READ getUserName WRITE setUserName)
Q_PROPERTY (QString wechatName READ getWechatName WRITE setWechatName)
public:
explicit dishesObject(QObject *parent = 0):QObject(parent){}
......@@ -64,6 +65,7 @@ public:
int starPromotionQty = 0;
int starPromotionPrice = 0;
QString userName = "";
QString wechatName = "" ; // 拼单-微信昵称;
QList<dishesObject*> sub_products;
......@@ -139,6 +141,9 @@ protected:
inline QString getUserName(){ return userName; }
inline void setUserName(const QString& v){ userName = v; }
inline QString getWechatName(){ return wechatName; }
inline void setWechatName(const QString& v){ wechatName = v; }
};
#endif // DISHESOBJECT_H
......@@ -146,15 +146,18 @@ QString OrderObject::getChannelName()
}
}
}else if("WSG-MOD" == channel ){
if (7 == orderType ) {
return QString::fromLocal8Bit("预-WSG");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼-WSG");
} else if ( "MT-MOD" == channel ) {
if ( 7 == orderType ) {
return QString::fromLocal8Bit("预-美团-当日");
} else if ( 11 == orderType ) {
return QString::fromLocal8Bit("预-美团-隔日");
} else {
return QString::fromLocal8Bit("微信用星说");
return QString::fromLocal8Bit("美团-MOD");
}
} else if("WSG-MOD" == channel ) { // 兼容渠道名称不统一问题
return QString::fromLocal8Bit("微信用星说");
}else if("ELE" == channel){
if ( 7 == orderType ) {
return QString::fromLocal8Bit("预-饿了么-当日");
......@@ -168,11 +171,17 @@ QString OrderObject::getChannelName()
if (4 == orderType ) {
return QString::fromLocal8Bit("星-自测");
} else if ( 7 == orderType ) {
if ( "8" == platformSource ) {
return QString::fromLocal8Bit("预-街送");
}
return QString::fromLocal8Bit("预-MOP-当日");
} else if ( 11 == orderType ) {
return QString::fromLocal8Bit("预-MOP-隔日");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼-MOP");
} else if (10 == orderType) {
return QString::fromLocal8Bit("星时刻");
} else {
if ( "5" == platformSource ) {
return QString::fromLocal8Bit("口碑-MOP");
......@@ -181,6 +190,9 @@ QString OrderObject::getChannelName()
}
}
} else if ( "EC-MOP" == channel ){
return QString::fromLocal8Bit("电商MOP");
}else{
return QString::fromLocal8Bit("未知");
}
......
......@@ -97,6 +97,13 @@ class OrderObject : public QObject
Q_PROPERTY (QString subStoreId READ getSubStoreId WRITE setSubStoreId)
Q_PROPERTY (int globalServiceType READ getGlobalServiceType WRITE setGlobalServiceType)
Q_PROPERTY (int globalOrderType READ getGlobalOrderType WRITE setGlobalOrderType)
Q_PROPERTY (int isGiftitForward READ getIsGiftitForward WRITE setIsGiftitForward )
Q_PROPERTY (QString remindTicketTime READ getRemindTicketTime WRITE setRemindTicketTime )
Q_PROPERTY (QString carNumber READ getCarNumber WRITE setCarNumber)
Q_PROPERTY (QString privacyPhone READ getPrivacyPhone WRITE setPrivacyPhone)
public:
OrderObject(QObject *parent=0)
:QObject(parent){}
......@@ -171,7 +178,7 @@ public:
int orderIndex = 0;
int updateTime = 0;
QString customerSex = ""; //用户性别 1-男; 2-女
QString platformSource = ""; //订单平台来源:1 app; 2 ele; 3 ors; 4 WeChat; 5 口碑;
QString platformSource = ""; //订单平台来源:1 app; 2 ele; 3 ors; 4 WeChat; 5 口碑; 6:? 7:? 8:Curbside-高德
int needInvoice = 0;
int deliveryPrice = 0; // 配送费
int deliveryDiscount = 0; // 配送费折扣
......@@ -204,6 +211,11 @@ public:
int forwardPosStatus = 0; // 正向单入机状态: 0:未知 1: 成功 2:失败;
int negativePosStatus = 0; // 负向单同上;
int isGiftitForward; // 1: 美好咖啡 ; 0: 普通wsg;
QString remindTicketTime; // 提醒小票时间
QString carNumber; // 车牌号
QString privacyPhone; // 隐私号
int deliveryStatus = 0;
int payStatus = 0;
int refundStatus = 0;
......@@ -470,6 +482,19 @@ public:
inline int getGlobalOrderType()const{return globalOrderType;}
inline void setGlobalOrderType(const int& v){globalOrderType = v;}
inline int getIsGiftitForward()const{return isGiftitForward;}
inline void setIsGiftitForward(const int& v){isGiftitForward = v;}
inline QString getRemindTicketTime()const{return remindTicketTime;}
inline void setRemindTicketTime(const QString& v){remindTicketTime = v;}
inline QString getCarNumber()const{return carNumber;}
inline void setCarNumber(const QString& v){carNumber = v;}
inline QString getPrivacyPhone()const{return privacyPhone;}
inline void setPrivacyPhone(const QString& v){privacyPhone = v;}
};
#endif // ORDEROBJECT_H
......@@ -99,8 +99,8 @@ public:
QLOG_ERROR()<<QString("RSASignWithSHA1 GetPEMKey() Failed");
return 0;
}
QLOG_INFO()<<"RSASignWithSHA1 GetPEMFormatKey(): "<< tmpPrivateKey<< "\n";
QLOG_INFO()<<"RSASignWithSHA1 GetPEMFormatKey(), End ------------------------ ";
// QLOG_INFO()<<"RSASignWithSHA1 GetPEMFormatKey(): "<< tmpPrivateKey<< "\n";
QLOG_INFO()<<"RSASignWithSHA1 GetPEMFormatKey(), Finished ------------------------ ";
OpenSSL_add_all_algorithms();
......@@ -351,7 +351,7 @@ public:
}
QLOG_INFO()<< " AESDecode debase64() Success inLen: "<< inLen << " tmpRstLen: " << strlen( (char *)tmpRst ) << " outMaxlen: "<<outMaxlen
<< " base64Length: " <<base64Length << " inBytes: "<<QString(QLatin1String( (char *)inBytes))
<<" tmpRst (Hex): "<< QByteArray( (char *)tmpRst ).toHex()<<" tmpRst (Base64): "<< QByteArray( (char *)tmpRst ).toBase64();
<<" tmpRst (Hex): "<< QByteArray( (char *)tmpRst ).toHex(); // <<" tmpRst (Base64): "<< QByteArray( (char *)tmpRst ).toBase64();
// 初始化......
EVP_CIPHER_CTX ctx;
......@@ -374,7 +374,7 @@ public:
QLOG_ERROR()<< " AESDecode EVP_DecryptUpdate() Failed , iOutLen: "<<iOutLen << " base64Length: "<< base64Length;
return 0;
}
QLOG_INFO()<< " AESDecode EVP_DecryptUpdate() Success " << " iOutLen: " << iOutLen<<" outBytes: "<<QString(QLatin1String( (char *)outBytes));
QLOG_INFO()<< " AESDecode EVP_DecryptUpdate() Success " << " iOutLen: " << iOutLen; // <<" outBytes: "<<QString(QLatin1String( (char *)outBytes));
// 完成解密......
if(!EVP_DecryptFinal_ex(&ctx, (unsigned char *)(outBytes + iOutLen), &tmpDecryptLen))
......@@ -385,7 +385,7 @@ public:
return 0;
}
QLOG_INFO()<< " AESDecode EVP_DecryptFinal_ex() Success outBytes+iOutLen: "<< QString( (char*)(outBytes+iOutLen) )
<< " tmpDecryptLen: " << tmpDecryptLen << " outBytes: " <<QString(QLatin1String( (char *)outBytes));
<< " tmpDecryptLen: " << tmpDecryptLen; // << " outBytes: " <<QString(QLatin1String( (char *)outBytes));
EVP_CIPHER_CTX_cleanup(&ctx);
......
......@@ -23,7 +23,10 @@ DetailForm::DetailForm(QWidget *parent) :
DetailForm::~DetailForm()
{
QLOG_INFO() << QString("[<<<<---DetailForm::~DetailForm: begin--->>>>]");
delete ui;
// New 时指定了父类对象指针;
QLOG_INFO() << QString("[<<<<---DetailForm::~DetailForm: end--->>>>]");
}
void DetailForm::InitData(OrderObject *orderObject)
......@@ -47,6 +50,7 @@ void DetailForm::InitData(OrderObject *orderObject)
//订单完成后,送达时间需要更新为 finishTime
QString deliveryFinishTime = "";
if (OrderObject::Finished == orderObject->orderStatus) {
deliveryFinishTime = (orderObject->finishTime.isEmpty() || 0==orderObject->finishTime.length() )? QString::fromLocal8Bit("已经送达") : orderObject->finishTime;
} else if (OrderObject::Refunded == orderObject->orderStatus) {
......@@ -54,9 +58,11 @@ void DetailForm::InitData(OrderObject *orderObject)
} else {
deliveryFinishTime = orderObject->deliveryTime;
}
if (7 == orderObject->orderType || 11 == orderObject->orderType ) {
deliveryFinishTime = deliveryFinishTime + QString::fromLocal8Bit("预约时间: ") + orderObject->expectDate;
deliveryFinishTime = deliveryFinishTime + QString::fromLocal8Bit(" 预约时间: ") + orderObject->expectDate;
}
ui->detailLab2->setText(deliveryFinishTime);
QLOG_INFO() << QString("[<<<<---DetailForm::InitData ui->detailLab2->setText --->>>>]");
......@@ -257,6 +263,11 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailBtn2->hide();
}
//星巴克:电商-MOP 需要显示退单按钮(便于 当日退 / 跨日退);
if ( "EC-MOP" == orderObject->channel && OrderObject::Refunded != orderObject->orderStatus ) {
ui->detailBtn2->show();
}
//订单入机失败 [销售单 / 退货单] 需要显示 重新录单 按钮 方便店员再次触发录单;
if(OrderObject::SimExceptSale == orderObject->orderStatus || OrderObject::SimExceptRefund == orderObject->orderStatus) {
ui->detailBtn0->show();
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 4,2021,9,7
PRODUCTVERSION 4,2021,9,7
FILEVERSION 4,2021,12,10
PRODUCTVERSION 4,2021,12,10
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -31,8 +31,8 @@ VS_VERSION_INFO VERSIONINFO
VALUE "OriginalFilename", "PmsPlugin.exe"
VALUE "ProductName", "PMS Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "4.2021.9.7"
VALUE "FileVersion", "4.2021.9.7"
VALUE "ProductVersion", "4.2021.12.10"
VALUE "FileVersion", "4.2021.12.10"
//*************************************************************************//
END
END
......
......@@ -223,7 +223,8 @@ void MainForm::on_mainBtnHide_clicked()
hide();
ui->mainEdtSearch->clear();
m_padForm->hide();
if(m_detailForm){
if(m_detailForm && m_detailForm->isVisible() ) {
QLOG_INFO() << QString("[<<<<---MainForm::on_mainBtnHide_clicked: m_detailForm=--->>>>]")<< m_detailForm;
m_detailForm->hide();
}
emit showFloatForm();
......
......@@ -15,7 +15,7 @@
//#define APP_VERSION "4.2020.8.10"
//#define APP_VERSION "4.2021.1.8"
//#define APP_VERSION "4.2021.5.10"
#define APP_VERSION "4.2021.9.7"
#define APP_VERSION "4.2021.12.10"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号
#define SERVER_PASSWORD "posoperator@freemud.cn"
......@@ -71,12 +71,17 @@
#define JSON_MOPSTORESTS "mopStoreStatus"
#define JSON_PASSWORD "password"
#define JSON_IPADDRESS "iPAddress"
#define JSON_IP_ADDRESS "ipAddress"
#define JSON_MACHINECODE "machineCode"
#define JSON_PMSMACHINENO "pmsMachineNo"
#define JSON_PARTNERID "partnerId"
#define JSON_ORGCODE "orgCode"
#define JSON_POSNO "posNo"
#define JSON_POS_IP_ADDR "posIp"
#define JSON_POS_WORKS_NUM "decouplePosNo"
#define JSON_POS_HOST_NAME "posHostName"
#define JSON_POS_MAC_ADDRESS "posMacAddress"
#define JSON_STORENAME "StoreName"
#define JSON_OPEN_TCP_CHANNEL "openTcpChannel"
#define JSON_USERID "userId"
......@@ -152,6 +157,8 @@
#define JSON_TCP_STA_RST "ok"
#define JSON_TCP_STA_CODE "code"
#define JSON_TCP_DEVICE_ID "deviceId"
#define JSON_TCP_DEVICE_HOST_NAME "deviceHostName"
#define JSON_TCP_DEVICE_WORKS_NUM "deviceWorkStationNum"
#define JSON_TCP_DEVICE_IP "deviceIp"
#define JSON_TCP_DEVICE_PORT "devicePort"
#define JSON_TCP_DEVICE_TYPE "deviceType"
......@@ -163,6 +170,8 @@
#define SOCKET_POST_TIMEOUT 30000
// 长连接Get请求超时 设置为 10s
#define SOCKET_GET_TIMEOUT 10000
// 长连接 向 POS Agent Server 发送心跳时间间隔(单位: 秒);
#define SOCKET_HEARTBEAT_INTERVAL 80
// ssl证书相关宏;
#define DES3_KEY_SIZE 24
......
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