Commit 93d9bb7f by wuyang.zou

fix bug: 网络断网导致插件 注册到 服务端 ip 127.0.0.1;

银联支付 在插件上退单 导致 订单入机挂载 交易流水不正确;
parent 6d726341
......@@ -71,8 +71,6 @@ FlowControl::FlowControl()
connect(this,&FlowControl::doRefundOrder,this,&FlowControl::_RefundOrder,Qt::BlockingQueuedConnection);
connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo,Qt::BlockingQueuedConnection);
//获取POS机的 [IP地址] + [IP+PORT地址] -> 更新到成员变量:m_ipAddress, m_ipPortAddress;
_GetIpAddress();
/***打开Sql server express 数据库并登陆外卖插件***/
SimProcOrderDB::getInstance();
m_initSimProcOrderDBRet = SimProcOrderDB::getInstance().initSimProcOrderDB();
......@@ -174,10 +172,12 @@ void FlowControl::_GetIpAddress()
QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
foreach(QHostAddress address,info.addresses()) {
if(address.protocol() == QAbstractSocket::IPv4Protocol) {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_GetIpAddress getFromLocalHostName:%1--->>>>]").arg(address.toString());
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress getFromLocalHostName:%1--->>>>]").arg(address.toString());
//1.1.1.1 > length > 7
if(address.toString().length()>7) {
if(address.toString().length()>7 && address.toString()!= "127.0.0.1" ) {
ipAddress=address.toString();
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real ipAddress:%1--->>>>]").arg(ipAddress);
break;
}
}
}
......@@ -711,6 +711,10 @@ bool FlowControl::_Login()
QJsonObject sendJson;
QJsonObject recvJson;
//获取POS机的 [IP地址] + [IP+PORT地址] -> 更新到成员变量:m_ipAddress, m_ipPortAddress;
//必须在登录请求的时候才能去实时获取POS的IP地址;否则可能会出现 127.0.0.1的情况出现;
_GetIpAddress();
sendJson = DataManger::GetInstance().GetLoginData(ConfigManger::GetInstance().GetPartnerId(),m_storeId,
m_password, m_posId, m_cashierId,m_ipPortAddress);
emit showAlert(AlertForm::LOADING, QString::fromLocal8Bit("正在登录......"));
......@@ -2525,7 +2529,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
else if("MOD" == orderObject->channel) {
tempOrderType = 9;
tempOrderPayType = 84;
//星巴克App端支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付;
//星巴克App端支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付; 8:IStore订单; 9:银联支付(=3);
if(4 == orderObject->payWay){
tempSbkAppPayType = 14 ;
//svc卡支付时传交易流水号协定:
......@@ -2540,10 +2544,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}else if(2 == orderObject->payWay){
tempSbkAppPayType = 77;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
}else if(3 == orderObject->payWay){
tempSbkAppPayType = 79; // 79对应POS机中对应的是 baidu;因此后续上银联需要更新此 值;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
//防止后期 MOD 使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元现金支付方式结单;
//防止后期 MOD 使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元支付方式结单;
//插件传给Simphony扩展程序时支付方式=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机;
}else if(5 == orderObject->payWay || 7 == orderObject->payWay){
tempOrderPayType = 1;
}else{
......@@ -2554,7 +2556,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
else if("MOP" == orderObject->channel){
tempOrderType = 18;
tempOrderPayType = 84;
//星巴克App端支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付;
//星巴克App端支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付; 8:IStore订单; 9:银联支付(=3);
if(4 == orderObject->payWay){
tempSbkAppPayType = 14 ;
//svc卡支付时传交易流水号协定:
......@@ -2569,10 +2571,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}else if(2 == orderObject->payWay){
tempSbkAppPayType = 77;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
}else if(3 == orderObject->payWay){
tempSbkAppPayType = 79; // 79对应POS机中对应的是 baidu;因此后续上银联需要更新此 值;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
//针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元现金支付方式结单;
//针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元支付方式结单;
//插件传给Simphony扩展程序时支付方式=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机;
}else if(5 == orderObject->payWay || 7 == orderObject->payWay){
tempOrderPayType = 1;
}else{
......@@ -2593,7 +2593,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}else if("STC" == orderObject->channel){
tempOrderType = 25;
tempOrderPayType = 84;
//星巴克 自提柜 端支付方式(类似星巴克App): 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付;
//星巴克 自提柜 端支付方式(类似星巴克App): 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付; 8:IStore订单; 9:银联支付(=3);
if(4 == orderObject->payWay){
tempSbkAppPayType = 14 ;
//svc卡支付时传交易流水号协定:
......@@ -2608,10 +2608,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}else if(2 == orderObject->payWay){
tempSbkAppPayType = 77;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
}else if(3 == orderObject->payWay){
tempSbkAppPayType = 79; // 79对应POS机中对应的是 baidu;因此后续上银联需要更新此 值;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
//防止后期 MOD 使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元现金支付方式结单;
//防止后期 MOD 使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元支付方式结单;
//插件传给Simphony扩展程序时支付方式=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机;
}else if(5 == orderObject->payWay || 7 == orderObject->payWay){
tempOrderPayType = 1;
}else{
......@@ -2633,7 +2631,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}else if("ORS" == orderObject->channel && !orderObject->appointmentDayFlag ){
tempOrderType = 23;
tempOrderPayType = 84;
//预约系统 支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付;
//预约系统 支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付; 8:IStore订单; 9:银联支付(=3);
if(4 == orderObject->payWay){
tempSbkAppPayType = 14 ;
//svc卡支付时传交易流水号协定:
......@@ -2648,10 +2646,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}else if(2 == orderObject->payWay){
tempSbkAppPayType = 77;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
}else if(3 == orderObject->payWay){
tempSbkAppPayType = 79; // 79对应POS机中对应的是 baidu;因此后续上银联需要更新此 值;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
//针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元现金支付方式结单;
//针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元支付方式结单;
//插件传给Simphony扩展程序时支付方式=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机;
}else if(5 == orderObject->payWay || 7 == orderObject->payWay){
tempOrderPayType = 1;
}else{
......@@ -2680,8 +2676,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
m_simValidOrdersList.removeOne(orderObject->id);
m_OrderEntryMutex.unlock();
m_bFloatFromLockSt = false; //解锁悬浮框的锁定状态=false;
//无需显示mainFrom主界面;//但必须解锁之前锁定的悬浮框;
emit doUnLockFloatFrom();
emit doUnLockFloatFrom(); //无需显示mainFrom主界面;//但必须解锁之前锁定的悬浮框;
return true;
} else if("MOD" == orderObject->channel) {
tempOrderType = 17;
......@@ -2691,7 +2686,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
} else if("ORS" == orderObject->channel) {
tempOrderType = 24;
tempOrderPayType = 84;
//预约系统 支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付;
//预约系统 支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付; 8:IStore订单; 9:银联支付(=3);
if(4 == orderObject->payWay){
tempSbkAppPayType = 14 ;
//svc卡支付时传交易流水号协定:
......@@ -2706,10 +2701,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}else if(2 == orderObject->payWay){
tempSbkAppPayType = 77;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
}else if(3 == orderObject->payWay){
tempSbkAppPayType = 79; // 79对应POS机中对应的是 baidu;因此后续上银联需要更新此 值;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0");
//针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元现金支付方式结单;
//针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元支付方式结单;
//插件传给Simphony扩展程序时支付方式=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机;
}else if(5 == orderObject->payWay || 7 == orderObject->payWay){
tempOrderPayType = 1;
}
......@@ -2790,6 +2783,15 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
//【①默认属性:code中含有Default字符串(不区分大小写)+ ②code中以非数字开头 + ③商品数量是0】 直接跳过;
QString tempCodeLeftHead = dish->code.left(1);
if (dish->code.contains("Default",Qt::CaseInsensitive) || (tempCodeLeftHead<QString('0')||tempCodeLeftHead>QString('9')) || !dish->qty ) {
if( tempCodeLeftHead<QString('0') || tempCodeLeftHead>QString('9') ) {
error = QString::fromLocal8Bit("This Order Has PosKey Is Combo Error");
m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne(orderObject->id);
m_OrderEntryMutex.unlock();
m_bFloatFromLockSt = false; //解锁悬浮框的锁定标志;
emit doUnLockFloatFrom(); //解锁悬浮框锁定
return true;
}
continue;
}
/**********************************************************************************/
......@@ -2932,7 +2934,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
tCakeCoupProductDiscObj.insert("original_price", coupon->consumeDiscountAmount);
products.push_back(tCakeCoupProductDiscObj);
}
//针对蛋糕券:在商品列表尾部需要新增 MenuItem:9107829 【测试蛋糕入机后,确认不需要在添加这个sku:“----” 】 -----;
//针对蛋糕券:在商品列表尾部需要新增 MenuItem:9107829 【测试蛋糕入机后,确认不需要在添加这个sku:“----” 】;
}
//开头已经新增一条【MOD:84 0元支付方式外】
//**********************************整合预约券信息-end*****************************************//
......@@ -2946,7 +2948,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
//如果是ELEME的istore 订单,需要额外录入一个标志IStore订单: 8==orderObject->payWay
//如果是App银联支付的多笔支付方式;也必须额外录入一条84的支付方式;
if(0==i){
/**** orderObject->payWay: 8 ->IStore渠道订单(87:istore 0元支付方式); 9 ->App银联支付标志(84:MOD 0元支付方式) ****/
/**** orderObject->payWay: 8 ->IStore渠道订单(87:istore 0元支付方式); 3/9 ->App银联支付标志(84:MOD 0元支付方式) ****/
if( 8 == orderObject->payWay ) {
QJsonObject tIStoreOrderPayFlagObj;
tIStoreOrderPayFlagObj.insert("couponSeq",QString::number(0) ) ; //支付方式的序号
......@@ -2956,7 +2958,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
tIStoreOrderPayFlagObj.insert("payMethodId",QString("87"));
tIStoreOrderPayFlagObj.insert("consumeFactAmount",0);
payments.push_back(tIStoreOrderPayFlagObj);
} else if( 9 == orderObject->payWay ) {
} else if( 9 == orderObject->payWay || 3 == orderObject->payWay ) {
QJsonObject tStarbAppOrderPayFlagObj;
tStarbAppOrderPayFlagObj.insert("couponSeq",QString::number(0) ) ; //支付方式的序号
tStarbAppOrderPayFlagObj.insert("couponType",QString("0"));
......@@ -2968,23 +2970,23 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
}
}
tPaymentObj.insert("couponSeq",QString::number(i+1) ) ; //券的序号
tPaymentObj.insert("couponCode",payment->paymentFmId); //准确的券号码;例: 7019380051100056143 目前最长 19位长度;
// 准确的券号码;例: 7019380051100056143 目前最长 19位长度; //退货订单: 需要录入 refundFmId;
// App银联支付: 最多存在两条相同 Upp FmId 的交易支付记录;
// 但是IStore渠道的多笔SVC不同交易Upp FmId 将仍会是bug 【后台退单(OK); + 插件上退单(bug);】;
if( 9 == orderObject->payWay || 3 == orderObject->payWay ) {
if(OrderObject::Refunded == orderObject->orderStatus ||OrderObject::SimExceptRefund == orderObject->orderStatus){
tPaymentObj.insert("couponCode",orderObject->refundFmId.isEmpty()?QString("0"):orderObject->refundFmId);
} else {
tPaymentObj.insert("couponCode",payment->paymentFmId);
}
} else {
//准确的券号码;例: 7019380051100056143 目前最长 19位长度;
tPaymentObj.insert("couponCode",payment->paymentFmId);
}
tPaymentObj.insert("couponType",QString("0"));
tPaymentObj.insert("payMethodId",payment->payMethodId); //券支付方式: 15纸质卷 16电子卷 ;
tPaymentObj.insert("consumeFactAmount",payment->paymentMoney/100); //券实际支付金额 (单位:元);
payments.push_back(tPaymentObj);
//针对IStore只能在录入完所有支付方式后,才能录入ELEME 单号(因为金额不确定);
if( orderObject->paymentList.count()-1 == i && 8 == orderObject->payWay) {
QJsonObject tElemeOrderPayFlagObj;
tElemeOrderPayFlagObj.insert("couponSeq",QString::number(0) ) ; //支付方式的序号
tElemeOrderPayFlagObj.insert("couponType",QString("0"));
//存放eleme订单号(运单号)(防止存不下,自动截取后24位): couponCode目前最长19位长度;DLL设置24长度;
tElemeOrderPayFlagObj.insert("couponCode",orderObject->thirdPartyOrderId.right(24));
tElemeOrderPayFlagObj.insert("payMethodId",QString("83"));
tElemeOrderPayFlagObj.insert("consumeFactAmount",-1);
payments.push_back(tElemeOrderPayFlagObj);
}
}
//**********************************整合多支付方式信息-end*****************************************//
......
......@@ -245,8 +245,10 @@ void FloatForm::RefreshStoreStatus(int eleStoreStatus, int modStoreStatus,int mo
this->ui->Mod2Lable->move(70, 36); // 在 Mod1Lable 基础上 x+4; y-4;
if(1 == modStoreStatus){
this->ui->Mod2Lable->setPixmap(QPixmap(":StoreOn.png"));
}else{
}else if(2 == modStoreStatus){
this->ui->Mod2Lable->setPixmap(QPixmap(":StoreOff.png"));
}else {
this->ui->Mod2Lable->setPixmap(QPixmap(":StoreDef.png"));
}
//准备Eleme门店营业状态Label;
......@@ -257,8 +259,10 @@ void FloatForm::RefreshStoreStatus(int eleStoreStatus, int modStoreStatus,int mo
this->ui->Eleme2Lable->move(70, 62); // x 与 Mod1Lable 对齐; y-4;
if(1 == eleStoreStatus){
this->ui->Eleme2Lable->setPixmap(QPixmap(":StoreOn.png"));
}else{
}else if(2 == eleStoreStatus){
this->ui->Eleme2Lable->setPixmap(QPixmap(":StoreOff.png"));
} else {
this->ui->Eleme2Lable->setPixmap(QPixmap(":StoreDef.png"));
}
//准备Mop门店营业状态Label;
......@@ -269,8 +273,10 @@ void FloatForm::RefreshStoreStatus(int eleStoreStatus, int modStoreStatus,int mo
this->ui->Mop2Lable->move(70, 88); // x 与 Mod1Lable 对齐; y-4;
if(1 == mopStoreStatus){
this->ui->Mop2Lable->setPixmap(QPixmap(":StoreOn.png"));
}else{
} else if(2 == mopStoreStatus) {
this->ui->Mop2Lable->setPixmap(QPixmap(":StoreOff.png"));
} else {
this->ui->Mop2Lable->setPixmap(QPixmap(":StoreDef.png"));
}
//准备订单管理状态Label;
......
......@@ -119,7 +119,7 @@ public slots:
* 参数:1 [ele开关店状态] 2[MOD开关店状态] 3[MOP开关店状态]
* 返回:NULL
* */
void RefreshStoreStatus(int eleStoreStatus=1, int modStoreStatus=1,int mopStoreStatus=1);
void RefreshStoreStatus(int eleStoreStatus=0, int modStoreStatus=0,int mopStoreStatus=0);
/* 功能:新订单到POS更新悬浮框显示;
* 参数:1 [是否存在新订单]
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 2,2019,528,1
PRODUCTVERSION 2,2019,528,1
FILEVERSION 2,2019,729,1
PRODUCTVERSION 2,2019,729,1
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -31,8 +31,8 @@ VS_VERSION_INFO VERSIONINFO
VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2019.528.1"
VALUE "FileVersion", "2.2019.528.1"
VALUE "ProductVersion", "2.2019.729.1"
VALUE "FileVersion", "2.2019.729.1"
//*************************************************************************//
END
END
......
......@@ -20,7 +20,8 @@
//#define APP_VERSION "2.2019.410.1"
//#define APP_VERSION "2.2019.422.1"
//#define APP_VERSION "2.2019.520.1"
#define APP_VERSION "2.2019.528.1"
//#define APP_VERSION "2.2019.528.1"
#define APP_VERSION "2.2019.729.1"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号
......
......@@ -43,5 +43,6 @@
<file>MopTitle.png</file>
<file>StoreOff.png</file>
<file>StoreOn.png</file>
<file>StoreDef.png</file>
</qresource>
</RCC>
\ No newline at end of file
No preview for this file type
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