Commit b3ac26ab by xiaoqing.gu

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

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