Commit d97925b3 by guanghui.cui

socket发送数据添加包头

parent 726d67ae
version.h
......@@ -334,79 +334,76 @@ QByteArray flowControll::_GetOrderEntryData(const OrderObject *orderObject, bool
bool flowControll::DoSalesSlip(const OrderObject *orderObject, bool bVerify)//写销售单
{
QTcpSocket socket;
QTcpSocket *socket = new QTcpSocket(this);
// 连接
QLOG_INFO() << InitClass::GetInstance().GB2312ToUnicode("开始写销售单");
QByteArray byteSlip=_GetOrderEntryData(orderObject, bVerify);
QLOG_INFO() << "this is comming slip"<<byteSlip.data();
socket.connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort());
if (socket.waitForConnected())
socket->connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort());
if (socket->waitForConnected())
{
// 发送
socket.write(_GetOrderEntryData(orderObject, bVerify));
if (socket.waitForBytesWritten())
{
if(SendToMonitor(_GetOrderEntryData(orderObject, bVerify),socket)){
// 接收返回
if (socket.waitForReadyRead())
if (socket->waitForReadyRead())
{
QJsonObject recvJson = QJsonDocument::fromJson(socket.readAll()).object();
QJsonObject recvJson = QJsonDocument::fromJson(socket->readAll()).object();
QLOG_INFO() << QString("slip order[%1:%2].[data:%3]")
.arg(orderObject->order_id, orderObject->status_desc)
.arg(_GetJsonStr(recvJson));
if(recvJson["statusCode"].toInt()==100)
{
socket.close();
socket->close();
return true;
}else
{
error = recvJson["msg"].toString();
socket.close();
socket->close();
return false;
}
}
}
}
error = socket.errorString();
socket.close();
error = socket->errorString();
socket->close();
return false;
}
bool flowControll::RefuseSalesSlip(const OrderObject *orderObject)//退单
{
QTcpSocket socket;
QTcpSocket *socket = new QTcpSocket(this);
// 连接
QLOG_INFO() << InitClass::GetInstance().GB2312ToUnicode("开始退单");
QByteArray byteSlip= _GetOrderRefuseData(orderObject);
QLOG_INFO() << "this is comming refund slip"<<byteSlip.data();
socket.connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort());
if (socket.waitForConnected())
socket->connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort());
if (socket->waitForConnected())
{
// 发送
socket.write(_GetOrderRefuseData(orderObject));
if (socket.waitForBytesWritten())
//socket->write(_GetOrderRefuseData(orderObject));
if (SendToMonitor(_GetOrderRefuseData(orderObject),socket))
{
// 接收返回
if (socket.waitForReadyRead())
if (socket->waitForReadyRead())
{
QJsonObject recvJson = QJsonDocument::fromJson(socket.readAll()).object();
QJsonObject recvJson = QJsonDocument::fromJson(socket->readAll()).object();
QLOG_INFO() << QString("refund slip order[%1:%2].[data:%3]")
.arg(orderObject->order_id, orderObject->status_desc)
.arg(_GetJsonStr(recvJson));
if(recvJson["statusCode"].toInt()==100)
{
socket.close();
socket->close();
return true;
}else
{
error = recvJson["msg"].toString();
socket.close();
socket->close();
return false;
}
}
}
}
error = socket.errorString();
socket.close();
error = socket->errorString();
socket->close();
return false;
}
......@@ -1468,3 +1465,38 @@ bool flowControll::_RefundOrder(const QString& orderId, QString reason)//退单
}
return false;
}
bool flowControll::SendToMonitor(const QByteArray &data,QTcpSocket *pSocket)
{
bool result=true;
//QTcpSocket client;
int jsonLength=data.length();
char* m_pFmPackage = new char[jsonLength + sizeof(FMSOCKEHEADER)];
FMSOCKEHEADER header = { 0, 0, 0 };
header.flag = 0x4d46;
header.len = jsonLength;
header.ver = 0x1;
memcpy(m_pFmPackage, &header, sizeof(FMSOCKEHEADER));
memcpy(m_pFmPackage+sizeof(FMSOCKEHEADER), data, jsonLength);
int toSendLength = jsonLength + sizeof(FMSOCKEHEADER);
int curSendLength = 0;
while(curSendLength < toSendLength)
{
int rlt= pSocket->write(m_pFmPackage+curSendLength,toSendLength - curSendLength);
pSocket->waitForBytesWritten();
if(rlt==-1){
QLOG_ERROR() << "发送数据失败:" << data;
result=false;
break;
}
curSendLength += rlt;
}
delete[] m_pFmPackage;
return result;
}
......@@ -12,6 +12,11 @@
#include "Tool/HttpSocket.h"
#include <QTimer>
typedef struct {
int flag;
int ver;
int len;
}FMSOCKEHEADER;
class flowControll : public QObject
{
Q_OBJECT
......@@ -47,6 +52,7 @@ public:
bool RefuseSalesSlip(const OrderObject *orderObject);//退单
QByteArray _GetOrderRefuseData(const OrderObject *orderObject);//拼接json数据
QByteArray _GetOrderEntryData(const OrderObject *orderObject, bool bVerify);//拼接json数据
bool SendToMonitor(const QByteArray &data,QTcpSocket *pSocket);
//自定义网络
HttpSocket *m_loginSocket;
......
......@@ -159,6 +159,7 @@ QJsonObject ConfigManger::_GetFileJson(const QString &file_path)
if(jsonError.error != QJsonParseError::NoError) //if error occured, see link 2
{
QLOG_WARN() << file_path << " parsed failed.";
return obj;
}
else
{
......@@ -184,7 +185,7 @@ QJsonObject ConfigManger::_GetFileJson(const QString &file_path)
int ConfigManger::GetSlipPort()
{
return m_config->value(FMP_INIKEY_TAKEOUT_PORT, 55555).toInt();
return m_config->value(FMP_INIKEY_TAKEOUT_PORT, 23772).toInt();
}
QString ConfigManger::GetSlipIp()
......
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