Commit 72e0fa36 by 李定达

1.修复跨线程使用套接字的问题;2.修复重新登录导致界面展示的异常;3.修复信号绑定错误导致的重复拉单问题;4.推模式登录json改为压缩的json

parent b096f645
......@@ -27,7 +27,7 @@ OrderGetWork::OrderGetWork(QObject *parent) : QObject(parent)
if(!_storeinfo.isEmpty())
{
_islogin = false;
loginStart();
login();
}
});
......@@ -38,7 +38,7 @@ OrderGetWork::OrderGetWork(QObject *parent) : QObject(parent)
//
FMApplication::subscibeEvent(this, PosEvent::s_login_storeinfo);
_timer.start(7*24*60*60*1000);
_timer.start(5*60*1000);
}
void OrderGetWork::workStart()
......@@ -72,7 +72,7 @@ void OrderGetWork::workStart()
QEventLoop loop;
QTimer::singleShot(tmptime, this, &OrderGetWork::quit);
QTimer::singleShot(tmptime, &loop, &QEventLoop::quit);
connect(this, &OrderGetWork::quit, &loop, &QEventLoop::quit);
......@@ -667,6 +667,33 @@ void OrderGetWork::setAutoconfirm(const QString &autoconfirm)
_autoconfirm = autoconfirm;
}
void OrderGetWork::login()
{
QString error;
do
{
if(!OrderGetDataProcess::isBind())
{
if(!bingToServer(error))
{
QLOG_ERROR() << QThread::currentThreadId() << "loginToServer failed";
break;
}
}
if(!_islogin)
{
if(!loginToServer(error))
{
QLOG_ERROR() << QThread::currentThreadId() << "loginToServer failed";
break;
}
}
}while(0);
}
void OrderGetWork::loginStart()
{
QString error;
......
......@@ -80,6 +80,8 @@ private:
void optOrderWithType(const QVariantMap &map);
//登录成功回写数据
void SetStoreInfoToConfig();
//内部登录不推送消息到界面
void login();
private:
//门店信息 门店编号 pos编号 用户名 密码
QVariantMap _storeinfo;
......
......@@ -16,7 +16,7 @@
OrderPushWork::OrderPushWork(QObject *parent) : QObject(parent)
{
_socket = new QSslSocket;
_socket = NULL;
_stopflag = 1;
_needlogin = 1;
_server_index = -1;
......@@ -24,21 +24,6 @@ OrderPushWork::OrderPushWork(QObject *parent) : QObject(parent)
_serurl.clear();
_istimeout = true;
connect(_socket, &QSslSocket::connected, [this] () {
_istimeout = false;
emit connected();
});
connect(_socket, &QSslSocket::readyRead, [this] () {
_istimeout = false;
emit readready();
});
connect(_socket, &QSslSocket::bytesWritten, [this] (quint64 writebyte) {
_istimeout = false;
emit writeready();
});
FMApplication::subscibeEvent(this, PosEvent::s_token_change);
FMApplication::subscibeEvent(this, PosEvent::s_login_storeinfo);
}
......@@ -123,7 +108,24 @@ bool OrderPushWork::connectTcpServer()
QLOG_INFO() << "ip:" << ip << "; port:" << port;
//_socket = new QSslSocket();
_socket = new QSslSocket();
connect(_socket, &QSslSocket::connected, [this] () {
_istimeout = false;
emit connected();
});
connect(_socket, static_cast<void (QSslSocket::*)(QAbstractSocket::SocketError)>(&QSslSocket::error), this, &OrderPushWork::quit);
connect(_socket, &QSslSocket::readyRead, [this] () {
_istimeout = false;
emit readready();
});
connect(_socket, &QSslSocket::bytesWritten, [this] (quint64 writebyte) {
_istimeout = false;
emit writeready();
});
_socket->addCaCertificates(qApp->applicationDirPath() + "/" + "microwstest.sandload.cn.pem");
......@@ -515,8 +517,8 @@ void OrderPushWork::workStart()
//网络异常断开重连
CLOSESOCKES(_socket);
//delete _socket;
//_socket = NULL;
delete _socket;
_socket = NULL;
EVENTWAIT(60000);
}
......
......@@ -208,7 +208,7 @@ private:
{
Data_Head head = {0};
QByteArray tmpdata = QString(QJsonDocument(json).toJson()).toUtf8();
QByteArray tmpdata = QString(QJsonDocument(json).toJson(QJsonDocument::Compact)).toUtf8();
char *buf = (char *)calloc(1, sizeof(Data_Head) + tmpdata.size() + 1);
......
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