Commit c4681ec8 by 刘帅

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

parent 0c740c8d
......@@ -58,9 +58,16 @@ QList<QVariantMap> Process::toDstFormat(QJsonDocument docSrc)
if(status == 3 || status == 30 || status == 100) //退款
{
if(order["refund_status"].toInt() == 100 && order["refund_type"].toInt() == 2)
{
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)
{
dstMap.insert(QString("type"), QString("3"));
......
......@@ -14,7 +14,13 @@ TcpSocket::TcpSocket(QObject *parent): QTcpSocket(parent)
void TcpSocket::readData()
{
QByteArray byteArray = readAll();
QByteArray byteArray, temp;
temp = readAll();
while(!temp.isEmpty())
{
byteArray += temp;
temp = readAll();
}
QString str(byteArray);
QLOG_DEBUG() << (const char*)str.toUtf8();
......
......@@ -246,8 +246,14 @@ void FlowControl::_onProcessOrderHandle(const QString& orderId, const QString &o
showAlertForm(AlertForm::OK, QString("%1成功.[%2]").arg(operationName, order_id));
OrderObject *orderObj = m_ordersMap.value(order_id);
orderObj->status = recvObj["status"].toInt();
if(orderObj->refund_status == 22)
orderObj->status = 200; //只是为了更新显示 实际服务端返回"status": 0,
emit updateOrderDisplay(orderObj);
//处理部分退款
if(orderObj->refund_status == 22 && recvObj["refund_status"].toInt() == 100) //同意部分退款
{
partialRefund(order_id);
}
onSucessful();
}else
{
......@@ -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)
{
QByteArray appendData;
......
......@@ -103,6 +103,12 @@ private slots:
* */
void _onStockSync(QJsonObject obj);
/* 功能:部分退款后续处理
* 参数:[1]订单id
* 返回:NULL
* */
void partialRefund(QString order_id);
signals:
/* 功能:登陆成功
* 参数:[1]门店名称
......
......@@ -154,6 +154,13 @@ void DetailForm::_GetOrderAdditional(OrderObject *orderObj, QString &operation,
ui->detail_btnProc->hide();
break;
}
if(orderObj->refund_status == 20 || orderObj->refund_status == 22)
{
statusDesc = "等待退款,如需退款请返回上级页面.";
operation = OPERATION_REFUSE_REFUND;
ui->detail_btnRefund->hide();
ui->detail_btnProc->show();
}
}
return;
......
......@@ -234,10 +234,20 @@ void MainWindow::_GetOrderAdditional(OrderObject *orderObj, QTableWidget *&table
table = ui->main_tableYWC;
break;
case 3:
if(orderObj->refund_status == 22)
{
statusDesc = "申请部分退款";
operation = OPERATION_AGREE_REFUND;
table = ui->main_tableDCL;
}
else
{
statusDesc = "已取消";
table = ui->main_tableYQX;
}
break;
}
//部分退款 status 可能为3、6
}
return;
......
......@@ -155,3 +155,13 @@ QByteArray DataManage::getCodeData(const QString &token)
json.insert("token", token);
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:
static QByteArray getMenuData(const QString& token, const QString& channel);
static QByteArray getCodeData(const QString& token);
static QByteArray getRefundDetail(const QString& token, const QString& orderId);
};
#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