Commit b3ac26ab by xiaoqing.gu

第三方配送信息展示开发完成

parent f614c7cd
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
#include "event/posevent.h" #include "event/posevent.h"
#include "QsLog.h" #include "QsLog.h"
#include <QJsonArray> #include <QJsonArray>
#include "model/posorderpool.h"
DriverInfoGetWork::DriverInfoGetWork(WorkObject *parent) : WorkObject(parent) DriverInfoGetWork::DriverInfoGetWork(WorkObject *parent) : WorkObject(parent)
{ {
_isgetorder = false;
FMApplication::subscibeEvent(this, PosEvent::s_get_order_status); FMApplication::subscibeEvent(this, PosEvent::s_get_order_status);
FMApplication::subscibeEvent(this, PosEvent::s_token_change); FMApplication::subscibeEvent(this, PosEvent::s_token_change);
...@@ -36,7 +36,10 @@ bool DriverInfoGetWork::event(QEvent *e) ...@@ -36,7 +36,10 @@ bool DriverInfoGetWork::event(QEvent *e)
QLOG_DEBUG() << "DriverInfoGetWork::event::PosEvent::s_get_order_status:" << isgetorder; QLOG_DEBUG() << "DriverInfoGetWork::event::PosEvent::s_get_order_status:" << isgetorder;
_isgetorder = isgetorder; if(isgetorder)
{
emit quitGetWork();
}
return true; return true;
} }
...@@ -93,12 +96,11 @@ void DriverInfoGetWork::workstart() ...@@ -93,12 +96,11 @@ void DriverInfoGetWork::workstart()
loop.exec(); loop.exec();
} }
if(_isgetorder)
{
QEventLoop loop; QEventLoop loop;
connect(this, &DriverInfoGetWork::quit, &loop, &QEventLoop::quit); connect(this, &DriverInfoGetWork::quitGetWork, &loop, &QEventLoop::quit);
loop.exec(); loop.exec();
}
QLOG_DEBUG() << "DriverInfoGetWork::workstart loop start"; QLOG_DEBUG() << "DriverInfoGetWork::workstart loop start";
...@@ -186,7 +188,10 @@ bool DriverInfoGetWork::praseRecvJson(QJsonObject &json) ...@@ -186,7 +188,10 @@ bool DriverInfoGetWork::praseRecvJson(QJsonObject &json)
map.insert(JSON_ORDERID, driverInfo["order_id"].toString()); map.insert(JSON_ORDERID, driverInfo["order_id"].toString());
map.insert("rider_name", driverInfo["rider_name"].toString()); map.insert("rider_name", driverInfo["rider_name"].toString());
map.insert("rider_phone", driverInfo["rider_phone"].toString()); map.insert("rider_phone", driverInfo["rider_phone"].toString());
POSTEVENTTYPE(PosEvent::s_get_driver_info,map,QVariantMap); POSTEVENTTYPE(PosEvent::s_get_driver_info,map,QVariantMap);
} }
return true; return true;
} }
...@@ -27,6 +27,8 @@ public: ...@@ -27,6 +27,8 @@ public:
signals: signals:
void quitwork(); void quitwork();
void quitGetWork();
public slots: public slots:
void workstart(); void workstart();
...@@ -43,7 +45,6 @@ private: ...@@ -43,7 +45,6 @@ private:
QString _url; QString _url;
bool _isgetorder;
}; };
class GetDriverInfoDataProcess class GetDriverInfoDataProcess
......
...@@ -357,6 +357,8 @@ void OrderPushWork::heartBeatTcpService() ...@@ -357,6 +357,8 @@ void OrderPushWork::heartBeatTcpService()
QByteArray msgdata = _socket->read(reallen); QByteArray msgdata = _socket->read(reallen);
QLOG_ERROR() << "HeartBeat Msg : " << msgdata.data();
checkMsgData(msgdata); checkMsgData(msgdata);
QByteArray data; QByteArray data;
...@@ -387,7 +389,7 @@ void OrderPushWork::heartBeatTcpService() ...@@ -387,7 +389,7 @@ void OrderPushWork::heartBeatTcpService()
continue; continue;
} }
else if(cmd == COMMAND_LOGIN_REQ) else if(cmd == COMMAND_LOGIN_RESP)
{ {
quint32 reallen = 0; quint32 reallen = 0;
...@@ -439,8 +441,22 @@ bool OrderPushWork::checkMsgData(const QByteArray &msgdata) ...@@ -439,8 +441,22 @@ bool OrderPushWork::checkMsgData(const QByteArray &msgdata)
QLOG_INFO() << "recv order info : " << msgdata; QLOG_INFO() << "recv order info : " << msgdata;
//接口未能完善 //接口未能完善
//推送新订单事件 // QByteArray array = "{\"type\":1,\"content\":{\"oid\":\"139410923248945720\",\"deliveryStatus\":2}}";
DEFAULTPOSTEVENT(PosEvent::s_need_get_order, QString::fromUtf8(msgdata));
//解析收到的消息,deliveryStatus字段为2时推送拉取骑手信息事件
QJsonDocument document = QJsonDocument::fromJson(msgdata);
QJsonObject object = document.object();
QJsonObject content = object["content"].toObject();
if(content.contains("deliveryStatus") && content["deliveryStatus"].toInt() == 2)
{
//推送拉取骑手信息事件
DEFAULTPOSTEVENT(PosEvent::s_need_get_driver_info, QString::fromUtf8(msgdata));
}
else
{
//推送新订单事件
DEFAULTPOSTEVENT(PosEvent::s_need_get_order, QString::fromUtf8(msgdata));
}
return false; return false;
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <WinSock.h> #include <WinSock.h>
#include "preDefine.h" #include "preDefine.h"
#include "workobject.h" #include "workobject.h"
#include "QsLog.h"
#define CLOSESOCKES(socket) do{ \ #define CLOSESOCKES(socket) do{ \
if(socket != NULL && socket->isOpen()){ \ if(socket != NULL && socket->isOpen()){ \
...@@ -309,6 +310,8 @@ private: ...@@ -309,6 +310,8 @@ private:
if(data.size() < sizeof(Data_Head)) if(data.size() < sizeof(Data_Head))
return false; return false;
QLOG_ERROR() << "getHeadCMD::data: " << data.toHex();
Data_Head head = {0}; Data_Head head = {0};
memcpy(&head, data.data(), sizeof(Data_Head)); memcpy(&head, data.data(), sizeof(Data_Head));
......
...@@ -277,6 +277,8 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun ...@@ -277,6 +277,8 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
Order_Info tmpinfo = s_order_pool[key]; Order_Info tmpinfo = s_order_pool[key];
Order_Info info = s_order_pool[key]; Order_Info info = s_order_pool[key];
QLOG_DEBUG() << "TryChangeOrderStatus" << info.order_status << order_status << info.order_refund << refundstatus << info.rider_name << info.rider_phone;
if(info.order_status != order_status || info.order_refund != refundstatus) if(info.order_status != order_status || info.order_refund != refundstatus)
{ {
if(info.order_status != order_status) if(info.order_status != order_status)
...@@ -295,6 +297,8 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun ...@@ -295,6 +297,8 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
QLOG_DEBUG() << "+++++++++++++++++++++++++++" << info.order_status; QLOG_DEBUG() << "+++++++++++++++++++++++++++" << info.order_status;
QLOG_DEBUG() << "+++++++++++++++++++++++++++" << order_status << refundstatus; QLOG_DEBUG() << "+++++++++++++++++++++++++++" << order_status << refundstatus;
info.rider_name = tmpinfo.rider_name;
info.rider_phone = tmpinfo.rider_phone;
info.order_change_time = QDateTime::currentDateTime().toTime_t(); info.order_change_time = QDateTime::currentDateTime().toTime_t();
s_order_pool.insert(key, info); s_order_pool.insert(key, info);
...@@ -438,6 +442,8 @@ bool PosOrderPool::GetDriverInfo(QString key, QString &rider_name, QString &ride ...@@ -438,6 +442,8 @@ bool PosOrderPool::GetDriverInfo(QString key, QString &rider_name, QString &ride
rider_phone = info.rider_phone; rider_phone = info.rider_phone;
QLOG_DEBUG() << "GetDriverInfo" << key << rider_name << rider_phone;
return true; return true;
} }
...@@ -452,6 +458,8 @@ bool PosOrderPool::GetDriverStatus(QString key, int &status) ...@@ -452,6 +458,8 @@ bool PosOrderPool::GetDriverStatus(QString key, int &status)
status = info.driver_order_status; status = info.driver_order_status;
QLOG_DEBUG() << "status:" << status << info.driver_order_status << info.rider_name << info.rider_phone;
return true; return true;
} }
...@@ -493,12 +501,17 @@ bool PosOrderPool::TryChangeOrderRemindStatus(QString key, int order_remind_stat ...@@ -493,12 +501,17 @@ bool PosOrderPool::TryChangeOrderRemindStatus(QString key, int order_remind_stat
return true; return true;
} }
bool PosOrderPool::TryChangeDriverInfo(QString key, QVariantMap &map) bool PosOrderPool::TryChangeDriverInfo(QString &key, QVariantMap &map)
{ {
QMutexLocker loker(&s_mutex); QMutexLocker loker(&s_mutex);
QLOG_DEBUG() << "s_order_pool:" << key << s_order_pool.keys();
if(!s_order_pool.contains(key)) if(!s_order_pool.contains(key))
{
QLOG_DEBUG() << "TryChangeDriverInfo failed!";
return false; return false;
}
Order_Info info = s_order_pool[key]; Order_Info info = s_order_pool[key];
...@@ -511,6 +524,8 @@ bool PosOrderPool::TryChangeDriverInfo(QString key, QVariantMap &map) ...@@ -511,6 +524,8 @@ bool PosOrderPool::TryChangeDriverInfo(QString key, QVariantMap &map)
info.rider_phone = map["rider_phone"].toString(); info.rider_phone = map["rider_phone"].toString();
s_order_pool.insert(key, info); s_order_pool.insert(key, info);
QLOG_DEBUG() << "s_order_pool::KEY" << s_order_pool[key].driver_order_status;
// DEFAULTPOSTEVENT(PosEvent::s_driver_order_status, key); // DEFAULTPOSTEVENT(PosEvent::s_driver_order_status, key);
QVariantMap map; QVariantMap map;
...@@ -729,6 +744,8 @@ bool PosOrderPool::event(QEvent *e) ...@@ -729,6 +744,8 @@ bool PosOrderPool::event(QEvent *e)
GETEVENTINFO(info,e,QVariantMap); GETEVENTINFO(info,e,QVariantMap);
QLOG_DEBUG() << "info map:" <<info;
if(!info.contains(EVENT_KEY_ORDERID) || !info.contains(EVENT_KEY_MSG)) if(!info.contains(EVENT_KEY_ORDERID) || !info.contains(EVENT_KEY_MSG))
return true; return true;
...@@ -776,6 +793,8 @@ bool PosOrderPool::event(QEvent *e) ...@@ -776,6 +793,8 @@ bool PosOrderPool::event(QEvent *e)
GETEVENTINFO(map,e,QVariantMap); GETEVENTINFO(map,e,QVariantMap);
QLOG_DEBUG() << "GETEVENTINFO(map,e,QVariantMap)" << map;
TryChangeDriverInfo(map[JSON_ORDERID].toString(), map); TryChangeDriverInfo(map[JSON_ORDERID].toString(), map);
return true; return true;
......
...@@ -40,6 +40,9 @@ ...@@ -40,6 +40,9 @@
info.order_print_status = oldorder.order_print_status; \ info.order_print_status = oldorder.order_print_status; \
info.order_change_time = QDateTime::currentDateTime().toTime_t(); \ info.order_change_time = QDateTime::currentDateTime().toTime_t(); \
info.reserved1 = oldorder.reserved1; \ info.reserved1 = oldorder.reserved1; \
info.driver_order_status = oldorder.driver_order_status; \
info.rider_name = oldorder.rider_name; \
info.rider_phone = oldorder.rider_phone; \
} while (0) } while (0)
#define INITORDERINFO(neworder, info) do { \ #define INITORDERINFO(neworder, info) do { \
...@@ -256,7 +259,7 @@ private: ...@@ -256,7 +259,7 @@ private:
static bool TryChangeOrderRemindStatus(QString key, int order_remind_status); static bool TryChangeOrderRemindStatus(QString key, int order_remind_status);
//修改骑手接单状态 //修改骑手接单状态
static bool TryChangeDriverInfo(QString key, QVariantMap &map); static bool TryChangeDriverInfo(QString &key, QVariantMap &map);
static void removeOrderInfo(QString key); static void removeOrderInfo(QString key);
......
...@@ -815,6 +815,7 @@ void NewMainForm::SetChecked(QPushButton *btn) ...@@ -815,6 +815,7 @@ void NewMainForm::SetChecked(QPushButton *btn)
void NewMainForm::UpdateTableWidget(OrderObject &orderObject) void NewMainForm::UpdateTableWidget(OrderObject &orderObject)
{ {
QLOG_DEBUG() << "UpdateTableWidget";
QTableWidget *table = ui->newmaintablewidget_order; QTableWidget *table = ui->newmaintablewidget_order;
for(int i=0; i<table->rowCount(); i++) for(int i=0; i<table->rowCount(); i++)
{ {
...@@ -824,7 +825,7 @@ void NewMainForm::UpdateTableWidget(OrderObject &orderObject) ...@@ -824,7 +825,7 @@ void NewMainForm::UpdateTableWidget(OrderObject &orderObject)
if(orderObject.order_id.compare(pwd->order_id()) == 0) if(orderObject.order_id.compare(pwd->order_id()) == 0)
{ {
int driver_status; int driver_status = 0;
PosOrderPool::GetDriverStatus(orderObject.order_id, driver_status); PosOrderPool::GetDriverStatus(orderObject.order_id, driver_status);
QString channelName; QString channelName;
getOrderChannelName(&orderObject,channelName); getOrderChannelName(&orderObject,channelName);
...@@ -903,7 +904,7 @@ void NewMainForm::getOrderChannelName(OrderObject *order, QString &channelname) ...@@ -903,7 +904,7 @@ void NewMainForm::getOrderChannelName(OrderObject *order, QString &channelname)
void NewMainForm::InsertTableWidget(OrderObject &orderObject) void NewMainForm::InsertTableWidget(OrderObject &orderObject)
{ {
QLOG_DEBUG() << "InsertTableWidget";
QTableWidget *table = ui->newmaintablewidget_order; QTableWidget *table = ui->newmaintablewidget_order;
ui->newmaintablewidget_order->setSortingEnabled(false); ui->newmaintablewidget_order->setSortingEnabled(false);
table->insertRow(0); table->insertRow(0);
......
...@@ -68,14 +68,23 @@ void OrderTypeForm::InitChannelShow(QString order_id, int order_status, int refu ...@@ -68,14 +68,23 @@ void OrderTypeForm::InitChannelShow(QString order_id, int order_status, int refu
// ui->ordertypelabel_type->setStyleSheet("#ordertypelabel_type{ border-image: url(:yy.png)}"); // ui->ordertypelabel_type->setStyleSheet("#ordertypelabel_type{ border-image: url(:yy.png)}");
// } // }
if(!(_order_status == CancelOrder || _order_status == ServiceOrder || _order_status == RefusedOrder || // if(!(_order_status == CancelOrder || _order_status == ServiceOrder || _order_status == RefusedOrder ||
_order_status == CompleteRefundOrder || _order_status == CompleteOrder)) // _order_status == CompleteRefundOrder || _order_status == CompleteOrder))
{ // {
if(_drive_status == 1)
{ int ordertype = GetOrderStatus();
QLOG_DEBUG() << "InitChannelShow ordertype:" << ordertype << _drive_status;
if(_drive_status == 1 &&
!(ordertype == CancelOrder || ordertype == ServiceOrder || ordertype == RefusedOrder || ordertype == CompleteRefundOrder || ordertype == CompleteOrder))
{
ui->ordertypelabel_type->setStyleSheet("#ordertypelabel_type{ border-image: url(:yy.png)}"); ui->ordertypelabel_type->setStyleSheet("#ordertypelabel_type{ border-image: url(:yy.png)}");
} }
} else
{
ui->ordertypelabel_type->setStyleSheet("#ordertypelabel_type{ border-image: url(:tabBtn_normal.png)}");
}
ui->ordertypelabel_name->setText(channel); ui->ordertypelabel_name->setText(channel);
ui->ordertypelabel_name->adjustSize(); ui->ordertypelabel_name->adjustSize();
......
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