Commit c4681ec8 by 刘帅

1. 处理部分退款,添加退款详情同第三方对接退单商品明细

parent 0c740c8d
...@@ -58,8 +58,15 @@ QList<QVariantMap> Process::toDstFormat(QJsonDocument docSrc) ...@@ -58,8 +58,15 @@ QList<QVariantMap> Process::toDstFormat(QJsonDocument docSrc)
if(status == 3 || status == 30 || status == 100) //退款 if(status == 3 || status == 30 || status == 100) //退款
{ {
dstMap.insert(QString("type"), QString("4")); if(order["refund_status"].toInt() == 100 && order["refund_type"].toInt() == 2)
bodyMap.insert(QString("reason"), QString("非码外卖退订")); {
dstMap.insert(QString("type"), QString("4"));
bodyMap.insert(QString("reason"), QString("非码外卖退订"));
}
else
{
continue;
}
} }
else if(status == 1 || status == 2 || status == 4 || status == 6 || status == 200) else if(status == 1 || status == 2 || status == 4 || status == 6 || status == 200)
{ {
......
...@@ -13,8 +13,14 @@ TcpSocket::TcpSocket(QObject *parent): QTcpSocket(parent) ...@@ -13,8 +13,14 @@ TcpSocket::TcpSocket(QObject *parent): QTcpSocket(parent)
} }
void TcpSocket::readData() void TcpSocket::readData()
{ {
QByteArray byteArray = readAll(); QByteArray byteArray, temp;
temp = readAll();
while(!temp.isEmpty())
{
byteArray += temp;
temp = readAll();
}
QString str(byteArray); QString str(byteArray);
QLOG_DEBUG() << (const char*)str.toUtf8(); QLOG_DEBUG() << (const char*)str.toUtf8();
......
...@@ -246,8 +246,14 @@ void FlowControl::_onProcessOrderHandle(const QString& orderId, const QString &o ...@@ -246,8 +246,14 @@ void FlowControl::_onProcessOrderHandle(const QString& orderId, const QString &o
showAlertForm(AlertForm::OK, QString("%1成功.[%2]").arg(operationName, order_id)); showAlertForm(AlertForm::OK, QString("%1成功.[%2]").arg(operationName, order_id));
OrderObject *orderObj = m_ordersMap.value(order_id); OrderObject *orderObj = m_ordersMap.value(order_id);
orderObj->status = recvObj["status"].toInt(); orderObj->status = recvObj["status"].toInt();
if(orderObj->refund_status == 22)
orderObj->status = 200; //只是为了更新显示 实际服务端返回"status": 0,
emit updateOrderDisplay(orderObj); emit updateOrderDisplay(orderObj);
//处理部分退款
if(orderObj->refund_status == 22 && recvObj["refund_status"].toInt() == 100) //同意部分退款
{
partialRefund(order_id);
}
onSucessful(); onSucessful();
}else }else
{ {
...@@ -322,6 +328,48 @@ void FlowControl::_onStockSync(QJsonObject obj) ...@@ -322,6 +328,48 @@ void FlowControl::_onStockSync(QJsonObject obj)
); );
} }
void FlowControl::partialRefund(QString order_id)
{
QByteArray appendData = DataManage::getRefundDetail(m_token, order_id);
m_http.Post(appendData
,[this](const QByteArray &data)
{
QLOG_INFO() << QString("退款详情: %1").arg(QString(data).simplified());
QJsonObject recvObj = QJsonDocument::fromJson(data).object();
if(recvObj["statusCode"].toInt() == 100)
{
QTcpSocket *socket = new QTcpSocket();
socket->connectToHost("127.0.0.1", 34956);
if(! socket->waitForConnected(LOCAL_SOCKET_TIMEOUT))
{
QLOG_ERROR() << "connect takeaway component failed!";
return;
}
socket->write(QJsonDocument(recvObj).toJson(QJsonDocument::Compact));
if(! socket->waitForBytesWritten(LOCAL_SOCKET_TIMEOUT))
{
QLOG_ERROR() << "write to takeaway component failed!";
return;
}
socket->disconnectFromHost();
if (socket->state() == QAbstractSocket::UnconnectedState ||
socket->waitForDisconnected(1000))
delete socket;
}else
{
showAlertForm(AlertForm::ERROR, QString("获取退款详情失败[%1]").arg(recvObj["msg"].toString()), true);
}
}
,[this](const QNetworkReply::NetworkError &error)
{
showAlertForm(AlertForm::ERROR, "获取退款详情失败[网络错误,请检查网络连接]", true);
QLOG_ERROR() << QString("获取退款详情失败: %1").arg(error);
}
);
}
void FlowControl::ProcessOrder(OrderObject *orderObj, const QString &operation) void FlowControl::ProcessOrder(OrderObject *orderObj, const QString &operation)
{ {
QByteArray appendData; QByteArray appendData;
......
...@@ -103,6 +103,12 @@ private slots: ...@@ -103,6 +103,12 @@ private slots:
* */ * */
void _onStockSync(QJsonObject obj); void _onStockSync(QJsonObject obj);
/* 功能:部分退款后续处理
* 参数:[1]订单id
* 返回:NULL
* */
void partialRefund(QString order_id);
signals: signals:
/* 功能:登陆成功 /* 功能:登陆成功
* 参数:[1]门店名称 * 参数:[1]门店名称
......
...@@ -154,6 +154,13 @@ void DetailForm::_GetOrderAdditional(OrderObject *orderObj, QString &operation, ...@@ -154,6 +154,13 @@ void DetailForm::_GetOrderAdditional(OrderObject *orderObj, QString &operation,
ui->detail_btnProc->hide(); ui->detail_btnProc->hide();
break; break;
} }
if(orderObj->refund_status == 20 || orderObj->refund_status == 22)
{
statusDesc = "等待退款,如需退款请返回上级页面.";
operation = OPERATION_REFUSE_REFUND;
ui->detail_btnRefund->hide();
ui->detail_btnProc->show();
}
} }
return; return;
......
...@@ -222,22 +222,32 @@ void MainWindow::_GetOrderAdditional(OrderObject *orderObj, QTableWidget *&table ...@@ -222,22 +222,32 @@ void MainWindow::_GetOrderAdditional(OrderObject *orderObj, QTableWidget *&table
table = ui->main_tableYCL; table = ui->main_tableYCL;
break; break;
case 6: case 6:
if(orderObj->refund_status == 22) if(orderObj->refund_status == 22)
{ {
statusDesc = "申请部分退款"; statusDesc = "申请部分退款";
operation = OPERATION_AGREE_REFUND; operation = OPERATION_AGREE_REFUND;
table = ui->main_tableDCL; table = ui->main_tableDCL;
break; break;
} }
case 200: case 200:
statusDesc = "已完成"; statusDesc = "已完成";
table = ui->main_tableYWC; table = ui->main_tableYWC;
break; break;
case 3: case 3:
if(orderObj->refund_status == 22)
{
statusDesc = "申请部分退款";
operation = OPERATION_AGREE_REFUND;
table = ui->main_tableDCL;
}
else
{
statusDesc = "已取消"; statusDesc = "已取消";
table = ui->main_tableYQX; table = ui->main_tableYQX;
}
break; break;
} }
//部分退款 status 可能为3、6
} }
return; return;
......
...@@ -155,3 +155,13 @@ QByteArray DataManage::getCodeData(const QString &token) ...@@ -155,3 +155,13 @@ QByteArray DataManage::getCodeData(const QString &token)
json.insert("token", token); json.insert("token", token);
return QJsonDocument(json).toJson().simplified(); return QJsonDocument(json).toJson().simplified();
} }
QByteArray DataManage::getRefundDetail(const QString &token, const QString &orderId)
{
QJsonObject json, order;
json.insert("reqtype", 27);
json.insert("token", token);
order.insert("order_id", orderId);
json.insert("order", order);
return QJsonDocument(json).toJson().simplified();
}
...@@ -23,6 +23,7 @@ public: ...@@ -23,6 +23,7 @@ public:
static QByteArray getMenuData(const QString& token, const QString& channel); static QByteArray getMenuData(const QString& token, const QString& channel);
static QByteArray getCodeData(const QString& token); static QByteArray getCodeData(const QString& token);
static QByteArray getRefundDetail(const QString& token, const QString& orderId);
}; };
#endif // DATAMANAGE_H #endif // DATAMANAGE_H
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