ref: change message attributes

This commit is contained in:
semenov
2025-08-04 16:37:54 +03:00
parent 501b84b13a
commit 33c7a31143
12 changed files with 62 additions and 53 deletions

View File

@@ -14,39 +14,42 @@ kanban-plugin: board
- [ ] QT client: sig fault если не выбрана версия - [ ] QT client: sig fault если не выбрана версия
- [ ] после удаления версии сбрасывать текст в описании - [ ] после удаления версии сбрасывать текст в описании
- [ ] сбрасывается выделение кнопки текущего клиента в мессенджере
- [ ] notification message скидывается у всех при проверке
## feature client Unity ## feature client Unity
- [ ] Если staticData не найдена, грузится как оффлайн, проверять просто иконки билда - [ ] Если staticData не найдена, грузится как оффлайн, проверять просто иконки билда
- [ ] Делить по группам номер группы - [ ] Делить по группам траэйнисы и инструкторы
- [ ] добавить тестово логины в строку контактов
- [ ] сортировать по онлайну
- [ ] Делить по группам Администрация
- [ ] верстка окна
## feature client QT ## feature client QT
- [ ] ПЕРЕВЕСТИ все действия под операции и формировать процент ПРИ загрузке из них
- [ ] При нажатии на кнопку обновить, менять надпись на Загрузка - [ ] При нажатии на кнопку обновить, менять надпись на Загрузка
- [ ] Написать Аркадию ТЗ для разработки иконки клиента - [ ] свести позицию виджетов (что то не по центру) notify в оффлайн режиме смещен
## feature server ## feature server
- [ ] добавить генерацию пустых файлов, если shared не найден - [ ] добавить генерацию пустых файлов, если shared не найден
- [ ] ПЕРЕВЕСТИ все действия под операции и формировать процент ПРИ загрузке из них
- [ ] убрать clientMap из serverLMS Widget в мультитред сервер - [ ] убрать clientMap из serverLMS Widget в мультитред сервер
- [ ] Различать, загружен клиент из Unity или нет, для возможности отправлять сообщения только Unity
- [ ] в ГУИ научится определять тип клиента при приеме сообщения
## NOW ## NOW
- [ ] Переверстать верхушку Messenger
- [ ] Unity Layout в мессенджере пересчитывать
## Complete ## Complete
- [ ] Идентификация имени внизу для отладки
- [ ] добавить тестово логины в строку контактов
- [ ] верстка окна
- [ ] сортировать по онлайну
- [ ] Написать Аркадию для подготовки иконки
- [ ] FIM проверять на null задачу - [ ] FIM проверять на null задачу
- [ ] Добавить - фильтрацию trainees или instructor - [ ] Добавить - фильтрацию trainees или instructor
- [ ] выбор версии на один клик - [ ] выбор версии на один клик
@@ -304,6 +307,8 @@ kanban-plugin: board
## BUGFIX Complete ## BUGFIX Complete
- [ ] notification message скидывается у всех при проверке
- [ ] сбрасывается выделение кнопки текущего клиента в мессенджере
- [ ] при создании копии переключение сервера и переключения клиента - [ ] при создании копии переключение сервера и переключения клиента
- [ ] QT сервер Найти причину двойного вызова проверки при логине инструктором - [ ] QT сервер Найти причину двойного вызова проверки при логине инструктором
- [ ] QT клиент: device not open после прерывания загрузки - [ ] QT клиент: device not open после прерывания загрузки
@@ -333,6 +338,7 @@ kanban-plugin: board
## Cancel ## Cancel
- [ ] Делить по группам номер группы
- [ ] Добавить обновление инструктора, если он перелогинился - [ ] Добавить обновление инструктора, если он перелогинился
- [ ] добавить в settings адрес и булку мат модели - [ ] добавить в settings адрес и булку мат модели
- [ ] Иерархия проекта - папка application, папка updater и линк на основной экзешник - [ ] Иерархия проекта - папка application, папка updater и линк на основной экзешник

View File

@@ -88,7 +88,6 @@ QByteArray DataParser::createMessage(ClientMessage clientMessage)
xmlWriter.writeAttribute("From",clientMessage.fromId); xmlWriter.writeAttribute("From",clientMessage.fromId);
xmlWriter.writeAttribute("To", clientMessage.toId); xmlWriter.writeAttribute("To", clientMessage.toId);
xmlWriter.writeAttribute("Text", clientMessage.Text); xmlWriter.writeAttribute("Text", clientMessage.Text);
xmlWriter.writeAttribute("UserType",clientMessage.UserType);
xmlWriter.writeEndElement(); xmlWriter.writeEndElement();
xmlWriter.writeEndElement(); xmlWriter.writeEndElement();

View File

@@ -526,11 +526,6 @@ void RecognizeSystem::xmlParser(QByteArray array)
if (name == "Text"){ if (name == "Text"){
clientMessage->Text = value; clientMessage->Text = value;
} }
if (name == "UserType")
{
clientMessage->UserType = value;
}
} }
emit signal_ReceiveMessage(*clientMessage); emit signal_ReceiveMessage(*clientMessage);

View File

@@ -74,17 +74,18 @@ public:
class ClientMessage class ClientMessage
{ {
public: public:
QString fromId; QString fromId;//формат id-typeId
QString toId; QString toId;//формат id-typeId
QString Text; QString Text;
QString UserType;
//TypeId
//0 - инструктор, 1 - обучаемый
ClientMessage(){} ClientMessage(){}
ClientMessage(QString fromId, QString toId, QString text, QString UserType) ClientMessage(QString fromId, QString toId, QString text)
{ {
this->fromId = fromId; this->fromId = fromId;
this->toId = toId; this->toId = toId;
this->Text = text; this->Text = text;
this->UserType = UserType;
} }
}; };

View File

@@ -153,8 +153,10 @@ void MessangerWidget::clear()
void MessangerWidget::on_btnSend_clicked() void MessangerWidget::on_btnSend_clicked()
{ {
QString text = ui->editMsg->toPlainText(); QString text = ui->editMsg->toPlainText();
ClientMessage message = ClientMessage(currClientId,selectedUserId,text,"0"); QString from = currClientId + "-" + QString::number(0);// временный костыль, так как чаты только с обучаемыми
QString to = selectedUserId + "-" + QString::number(1);// временный костыль, так как чаты только с обучаемыми
ClientMessage message = ClientMessage(from,to,text);
emit signal_sendMessage(message); emit signal_sendMessage(message);
ui->editMsg->clear(); ui->editMsg->clear();
@@ -229,9 +231,10 @@ void MessangerWidget::slot_InitMessanger(QList<Trainee> listTrainees)
void MessangerWidget::slot_showMessage(ClientMessage clientMessage) void MessangerWidget::slot_showMessage(ClientMessage clientMessage)
{ {
auto result = clientMessage.fromId.split("-");
for(Trainee trainee: listTrainees) for(Trainee trainee: listTrainees)
{ {
if(QString::number(trainee.getID()) == clientMessage.fromId) if(QString::number(trainee.getID()) == result[0])
{ {
addMsgFromClient(trainee, clientMessage.Text); addMsgFromClient(trainee, clientMessage.Text);
break; break;

View File

@@ -96,13 +96,13 @@ public:
isLoggedIn = value; isLoggedIn = value;
} }
void setAccessType(QString type) void setAccessType(UserType type)
{ {
accessType = type; userType = type;
} }
QString getAccessType() UserType getAccessType()
{ {
return accessType; return userType;
} }
@@ -130,7 +130,7 @@ private:
bool isUnity = false; bool isUnity = false;
TypeClientAutorization TypeClient; TypeClientAutorization TypeClient;
QString accessType = ""; UserType userType;
}; };
#endif // CLIENT_H #endif // CLIENT_H

View File

@@ -51,7 +51,9 @@ enum TypeClientAutorization{
enum UserType enum UserType
{ {
INSTRUCTOR, INSTRUCTOR,
TRAINEE TRAINEE,
NONE = 100
}; };
class ClientAutorization class ClientAutorization
@@ -104,18 +106,20 @@ public:
class ClientMessage class ClientMessage
{ {
public: public:
QString From; QString From;//формат"id-type"
QString To; QString To;//формат"id-type"
QString Text; QString Text;
QString Type; //ТИП ЮЗЕРА К КОТОРОМУ ПРИХОДИТ СООБЩЕНИЕ
//id-0 инструктор
//id-1 обучаемый
ClientMessage(){} ClientMessage(){}
ClientMessage(QString from,QString to,QString text,QString userType) ClientMessage(QString from,QString to,QString text)
{ {
From = from; From = from;
To = to; To = to;
Text = text; Text = text;
Type = userType;
} }
}; };

View File

@@ -43,7 +43,7 @@ QByteArray ClientAnswerParser::deAuthorization(bool result, QString login)
return dataParser->xmlAnswer(listTag); return dataParser->xmlAnswer(listTag);
} }
QByteArray ClientAnswerParser::message(QString loginFrom,QString loginTo,QString text,QString type) QByteArray ClientAnswerParser::message(QString loginFrom,QString loginTo,QString text)
{ {
QList<SXmlAnswerTag> listTag; QList<SXmlAnswerTag> listTag;
QList<SAttribute> listAttr; QList<SAttribute> listAttr;
@@ -54,8 +54,6 @@ QByteArray ClientAnswerParser::message(QString loginFrom,QString loginTo,QString
listAttr.append(attribute1); listAttr.append(attribute1);
attribute1 = {"Text",text}; attribute1 = {"Text",text};
listAttr.append(attribute1); listAttr.append(attribute1);
attribute1 = {"UserType",type};
listAttr.append(attribute1);
SXmlAnswerTag tag = {"ClientMessage", listAttr}; SXmlAnswerTag tag = {"ClientMessage", listAttr};

View File

@@ -16,7 +16,7 @@ public:
QByteArray authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login, int id); QByteArray authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login, int id);
QByteArray deAuthorization(bool result, QString login); QByteArray deAuthorization(bool result, QString login);
QByteArray message(QString loginFrom,QString loginTo,QString text, QString userType); QByteArray message(QString loginFrom,QString loginTo,QString text);
QByteArray task(QString text); QByteArray task(QString text);
QByteArray notify(QString code); QByteArray notify(QString code);
QByteArray tasks(QStringList listTasks); QByteArray tasks(QStringList listTasks);

View File

@@ -498,8 +498,6 @@ void ProcessParser::clientMessage(QXmlStreamReader &xmlReader,ClientHandler *cli
clientMessage.From = value; clientMessage.From = value;
if (name == "To") if (name == "To")
clientMessage.To = value; clientMessage.To = value;
if (name == "UserType")
clientMessage.Type = value;
} }
processingSystem->processingSendMessage(clientMessage); processingSystem->processingSendMessage(clientMessage);

View File

@@ -13,9 +13,9 @@ void ChatSystem::initialize(CommonClientHandler *commonClientHandler, DataParser
clientNotSendedMessage = new QMap<QString,QStack<ClientMessage>*>; clientNotSendedMessage = new QMap<QString,QStack<ClientMessage>*>;
auto stack = new QStack<ClientMessage>; auto stack = new QStack<ClientMessage>;
auto clientMessage1 = ClientMessage("1","102","Сообщение 1","1"); auto clientMessage1 = ClientMessage("1-0","102-0","Сообщение 1");
stack->append(clientMessage1); stack->append(clientMessage1);
auto clientMessage2 = ClientMessage("1","102","Сообщение 2","1"); auto clientMessage2 = ClientMessage("1-0","102-0","Сообщение 2");
stack->append(clientMessage2); stack->append(clientMessage2);
clientNotSendedMessage->insert("102", stack); clientNotSendedMessage->insert("102", stack);
@@ -23,12 +23,17 @@ void ChatSystem::initialize(CommonClientHandler *commonClientHandler, DataParser
bool ChatSystem::sendTo(ClientMessage message) bool ChatSystem::sendTo(ClientMessage message)
{ {
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(message.From,message.To,message.Text,message.Type); QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(message.From,message.To,message.Text);
auto result = message.To.split("-");
foreach(int idSocket, clientsMap->keys()) foreach(int idSocket, clientsMap->keys())
{ {
ClientHandler *handler = clientsMap->value(idSocket); ClientHandler *handler = clientsMap->value(idSocket);
if(handler->getClient()->getId() == message.To) QString userType = QString::number(static_cast<int>(handler->getClient()->getAccessType()));
if(handler->getClient()->getId() == result[0] &&
userType == result[1])
{ {
handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER); handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER);
QString str = "Msg From Client [" + message.From + " to " + message.To + "] : " + message.Text; QString str = "Msg From Client [" + message.From + " to " + message.To + "] : " + message.Text;

View File

@@ -58,7 +58,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
{//Авторизуется инструктор {//Авторизуется инструктор
client->getClient()->setLogin(clientAutorization.Login); client->getClient()->setLogin(clientAutorization.Login);
client->getClient()->setAccessType("instructor"); client->getClient()->setAccessType(UserType::INSTRUCTOR);
client->getClient()->setTypeClient(clientAutorization.TypeClient); client->getClient()->setTypeClient(clientAutorization.TypeClient);
emit sigUpdateListClients(); emit sigUpdateListClients();
@@ -74,7 +74,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
{//Авторизуется обучаемый {//Авторизуется обучаемый
client->getClient()->setLogin(clientAutorization.Login); client->getClient()->setLogin(clientAutorization.Login);
client->getClient()->setAccessType("trainee"); client->getClient()->setAccessType(UserType::TRAINEE);
emit sigUpdateListClients(); emit sigUpdateListClients();
//KAV redact //KAV redact
@@ -122,7 +122,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
{//ДеАвторизуется обучаемый {//ДеАвторизуется обучаемый
client->getClient()->setLogin(""); client->getClient()->setLogin("");
client->getClient()->setAccessType(""); client->getClient()->setAccessType(UserType::NONE);
emit sigUpdateListClients(); emit sigUpdateListClients();
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login); arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
@@ -131,7 +131,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
{//ДеАвторизуется инструктор {//ДеАвторизуется инструктор
client->getClient()->setLogin(""); client->getClient()->setLogin("");
client->getClient()->setAccessType(""); client->getClient()->setAccessType(UserType::NONE);
emit sigUpdateListClients(); emit sigUpdateListClients();
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login); arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
@@ -167,14 +167,14 @@ void ProcessingSystem::processingClientDeAutorization(QString login)
void ProcessingSystem::processingEntryUnityClient(ClientHandler *client) void ProcessingSystem::processingEntryUnityClient(ClientHandler *client)
{ {
QString login = client->getClient()->getLogin(); QString login = client->getClient()->getLogin();
QString accessType = client->getClient()->getAccessType(); UserType userType = client->getClient()->getAccessType();
if(accessType == "trainee") if(userType == UserType::TRAINEE)
{ {
int id_trainee = providerDBLMS->getIdTraineeByLogin(login); int id_trainee = providerDBLMS->getIdTraineeByLogin(login);
providerDBLMS->entryTraineeOnSimulator(id_trainee); providerDBLMS->entryTraineeOnSimulator(id_trainee);
} }
else if(accessType == "instructor") else if(userType == UserType::INSTRUCTOR)
{ {
//Здесь пока ничего не происходит //Здесь пока ничего не происходит
} }
@@ -183,14 +183,14 @@ void ProcessingSystem::processingEntryUnityClient(ClientHandler *client)
void ProcessingSystem::processingExitUnityClient(ClientHandler *client) void ProcessingSystem::processingExitUnityClient(ClientHandler *client)
{ {
QString login = client->getClient()->getLogin(); QString login = client->getClient()->getLogin();
QString accessType = client->getClient()->getAccessType(); UserType userType = client->getClient()->getAccessType();
if(accessType == "trainee") if(userType == UserType::TRAINEE)
{ {
int id_trainee = providerDBLMS->getIdTraineeByLogin(login); int id_trainee = providerDBLMS->getIdTraineeByLogin(login);
providerDBLMS->exitTraineeFromSimulator(id_trainee); providerDBLMS->exitTraineeFromSimulator(id_trainee);
} }
else if(accessType == "instructor") else if(userType == UserType::INSTRUCTOR)
{ {
//Здесь пока ничего не происходит //Здесь пока ничего не происходит
} }