Commit d0b8fbed by wuyang.zou

fix Redis Server offline ,then recover, then use,then main pthread dump

check order object data right
parent 52084c97
...@@ -165,7 +165,7 @@ void FlowControl::_TestInsertOrderData(){ ...@@ -165,7 +165,7 @@ void FlowControl::_TestInsertOrderData(){
bool FlowControl::_AppendOrderInfo2Redis(const OrderObject* orderObject) { bool FlowControl::_AppendOrderInfo2Redis(const OrderObject* orderObject) {
QLOG_INFO() << QString("[<<<<---FlowControl:: _AppendOrderInfo2Redis() orderId:%1 Begin --->>>>]").arg(orderObject->id); QLOG_INFO() << QString("[<<<<---FlowControl:: _AppendOrderInfo2Redis() orderId:%1 Begin...... --->>>>]").arg(orderObject->id);
return QtRedisClient::getInstance().pushOrder2Redis(orderObject); return QtRedisClient::getInstance().pushOrder2Redis(orderObject);
} }
...@@ -499,6 +499,10 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -499,6 +499,10 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
{ {
OrderObject *orderObject = nullptr; OrderObject *orderObject = nullptr;
bool bRetOrderUpdateMutex = false; bool bRetOrderUpdateMutex = false;
if ( ! jsonObject.contains(JSON_ID) ) {
QLOG_ERROR() << QString("[<<<<---FlowControl::_OrderAnalysis: Json Object No Has Import Key -> OrderId , JsonObject Is Illegal , Abandon This Object --->>>>]") << jsonObject;
return ;
}
orderObject = m_FmOrdersMap.value(jsonObject[JSON_ID].toString()); orderObject = m_FmOrdersMap.value(jsonObject[JSON_ID].toString());
/***<1>:FM插件维护的有效订单容器中不存在此订单:整合数据并插入到此订单容器中 ***/ /***<1>:FM插件维护的有效订单容器中不存在此订单:整合数据并插入到此订单容器中 ***/
if(orderObject == nullptr) if(orderObject == nullptr)
...@@ -925,8 +929,7 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe ...@@ -925,8 +929,7 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe
QUrl TempQUrl = url; QUrl TempQUrl = url;
m_pullOrderSocket->SetUrl(TempQUrl); m_pullOrderSocket->SetUrl(TempQUrl);
result = m_pullOrderSocket->GetRequest(recvJson, error); result = m_pullOrderSocket->GetRequest(recvJson, error);
QLOG_INFO() << QString("[<<<<---Pull Order Detail Finsh--->>>>][result:%1][msg:%2]") QLOG_INFO() << QString("[<<<<---Pull Order Detail Finsh--->>>>][result:%1][msg:%2]").arg(result).arg(error)<<recvJson;
.arg(result).arg(error)<<recvJson;
if(!result) { if(!result) {
if ( !skipErrorDisplay ) { if ( !skipErrorDisplay ) {
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>")); emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
......
...@@ -249,8 +249,14 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef) ...@@ -249,8 +249,14 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
query.addBindValue(orderObj->consigneePhone); // --收货者名称 query.addBindValue(orderObj->consigneePhone); // --收货者名称
query.addBindValue(orderObj->deliveryPrice * 0.01); // --配送费 query.addBindValue(orderObj->deliveryPrice * 0.01); // --配送费
query.addBindValue(orderObj->deliveryDiscount * 0.01); // --配送费折扣 query.addBindValue(orderObj->deliveryDiscount * 0.01); // --配送费折扣
if ( orderObj->deliveryTime.isEmpty() ) {
orderObj->deliveryTime = QString("1970-01-01 00:00:00");
}
query.addBindValue(orderObj->deliveryTime); // --订单预计送达时间 query.addBindValue(orderObj->deliveryTime); // --订单预计送达时间
query.addBindValue(orderObj->estimation); // --订单预计制作时间 estimation; query.addBindValue(orderObj->estimation); // --订单预计制作时间 estimation;
if ( orderObj->finishTime.isEmpty() ) {
orderObj->finishTime = QString("1970-01-01 00:00:00");
}
query.addBindValue(orderObj->finishTime); // --订单预计完成时间 makeFinishDate; query.addBindValue(orderObj->finishTime); // --订单预计完成时间 makeFinishDate;
query.addBindValue(orderObj->isPackage); // --订单是否打包; query.addBindValue(orderObj->isPackage); // --订单是否打包;
query.addBindValue(""); // --最后支付时间 lastPayTime; query.addBindValue(""); // --最后支付时间 lastPayTime;
...@@ -259,6 +265,9 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef) ...@@ -259,6 +265,9 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
query.addBindValue(orderObj->msr_no); // --MSR 卡号; query.addBindValue(orderObj->msr_no); // --MSR 卡号;
query.addBindValue(""); // --消费者生日 birthday; query.addBindValue(""); // --消费者生日 birthday;
query.addBindValue(orderObj->cancelReason); // --取消原因 cancelReason; query.addBindValue(orderObj->cancelReason); // --取消原因 cancelReason;
if ( orderObj->confirmTime.isEmpty() ) {
orderObj->confirmTime = QString("1970-01-01 00:00:00");
}
query.addBindValue(orderObj->confirmTime); // --确认订单时间 confirmTime; query.addBindValue(orderObj->confirmTime); // --确认订单时间 confirmTime;
query.addBindValue(orderObj->customerId); // --消费者ID; query.addBindValue(orderObj->customerId); // --消费者ID;
QString temp_customerSex = ""; QString temp_customerSex = "";
...@@ -300,6 +309,9 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef) ...@@ -300,6 +309,9 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
} }
query.addBindValue( tempBusinessType ); // --订单业务类型 query.addBindValue( tempBusinessType ); // --订单业务类型
if ( orderObj->expectDate.isEmpty() ) {
orderObj->expectDate = QString("1970-01-01 00:00:00");
}
query.addBindValue(orderObj->expectDate); // --订单预约时间 query.addBindValue(orderObj->expectDate); // --订单预约时间
query.addBindValue( QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime ); // --订单预约提醒模板 query.addBindValue( QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime ); // --订单预约提醒模板
query.addBindValue(orderObj->subStoreId); // --母子门店的子门店编号; query.addBindValue(orderObj->subStoreId); // --母子门店的子门店编号;
......
...@@ -50,15 +50,23 @@ bool QtRedisClient::initQtRedisClient(){ ...@@ -50,15 +50,23 @@ bool QtRedisClient::initQtRedisClient(){
if ( m_pRedisConnectOperat->isConnected() || m_pRedisConnectOperat->connect() ) { if ( m_pRedisConnectOperat->isConnected() || m_pRedisConnectOperat->connect() ) {
QLOG_INFO()<<"[<<<<---QtRedisClient:: initQtRedisClient Connect Redis Success --->>>>]"; QLOG_INFO()<<"[<<<<---QtRedisClient:: initQtRedisClient Connect Redis Success --->>>>]";
} else { } else {
while ( 1 ) { int retryCount = 0;
QLOG_INFO()<<"[<<<<---QtRedisClient:: initQtRedisClient Connect Redis Failed, Sleep 5s Then Retry Connect... --->>>>]"; while ( retryCount < 3 ) {
Sleep(5*1000); QLOG_INFO()<<QString("[<<<<---QtRedisClient:: initQtRedisClient Connect Redis Failed, Sleep 1 s RetryCount: %1 (MaxCount=3), Then Retry Connect... --->>>>]").arg(retryCount+1);
Sleep(1*1000);
if ( m_pRedisConnectOperat->connect() ) if ( m_pRedisConnectOperat->connect() )
break; break;
else else {
retryCount++;
continue; continue;
} }
}
if ( retryCount < 3 ) {
QLOG_INFO()<<"[<<<<---QtRedisClient:: initQtRedisClient Connect Redis Success --->>>>]"; QLOG_INFO()<<"[<<<<---QtRedisClient:: initQtRedisClient Connect Redis Success --->>>>]";
} else {
QLOG_INFO()<<"[<<<<---QtRedisClient:: initQtRedisClient Connect Redis Until The Last Failed--->>>>]";
return initRedisRet;
}
} }
} catch ( const RedisClient::Connection::Exception& e ) { } catch ( const RedisClient::Connection::Exception& e ) {
QLOG_ERROR() << "QtRedisClient::initQtRedisClient Connect Redis Occur Exception:" << e.what(); QLOG_ERROR() << "QtRedisClient::initQtRedisClient Connect Redis Occur Exception:" << e.what();
...@@ -126,6 +134,8 @@ bool QtRedisClient::pushOrder2Redis(const OrderObject* orderObj ){ ...@@ -126,6 +134,8 @@ bool QtRedisClient::pushOrder2Redis(const OrderObject* orderObj ){
QJsonDocument orderStatusDoc = QJsonDocument(orderStatusObj); QJsonDocument orderStatusDoc = QJsonDocument(orderStatusObj);
cmdString.append(orderStatusDoc.toJson()); cmdString.append(orderStatusDoc.toJson());
QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1 Begin...... --->>>>]").arg(orderObj->id);
if ( !m_pRedisConnectOperat ) { if ( !m_pRedisConnectOperat ) {
QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1 m_pRedisConnectOperat Pointer Is Null, Wait Retry Init --->>>>]").arg(orderObj->id); QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1 m_pRedisConnectOperat Pointer Is Null, Wait Retry Init --->>>>]").arg(orderObj->id);
return bPushOrderSuc; return bPushOrderSuc;
...@@ -137,8 +147,15 @@ bool QtRedisClient::pushOrder2Redis(const OrderObject* orderObj ){ ...@@ -137,8 +147,15 @@ bool QtRedisClient::pushOrder2Redis(const OrderObject* orderObj ){
try { try {
auto result = m_pRedisConnectOperat->command(cmdString); auto result = m_pRedisConnectOperat->command(cmdString);
if ( result.results().size() ) {
QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1, Command Run Status:--->>>>]").arg(orderObj->id)
<<" Finished: "<< result.isFinished() << " Running: "<< result.isRunning() << " Paused: "<< result.isPaused() ;
} else {
return bPushOrderSuc;
}
QVariant val = result.result().value(); QVariant val = result.result().value();
if(val.toInt()) { if ( val.toInt() ) {
QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1 ; orderStatus:%2 ; ret:%3 Success--->>>>]").arg(orderObj->id).arg(orderObj->orderStatus).arg(val.toString()); QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1 ; orderStatus:%2 ; ret:%3 Success--->>>>]").arg(orderObj->id).arg(orderObj->orderStatus).arg(val.toString());
QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1 Redis Context:%2--->>>>]").arg(orderObj->id).arg( QString(orderStatusDoc.toJson()) ); QLOG_INFO() << QString("[<<<<---QtRedisClient::pushOrder2Redis orderId:%1 Redis Context:%2--->>>>]").arg(orderObj->id).arg( QString(orderStatusDoc.toJson()) );
bPushOrderSuc = true; bPushOrderSuc = true;
......
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