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

View File

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

View File

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

View File

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

View File

@@ -153,8 +153,10 @@ void MessangerWidget::clear()
void MessangerWidget::on_btnSend_clicked()
{
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);
ui->editMsg->clear();
@@ -229,9 +231,10 @@ void MessangerWidget::slot_InitMessanger(QList<Trainee> listTrainees)
void MessangerWidget::slot_showMessage(ClientMessage clientMessage)
{
auto result = clientMessage.fromId.split("-");
for(Trainee trainee: listTrainees)
{
if(QString::number(trainee.getID()) == clientMessage.fromId)
if(QString::number(trainee.getID()) == result[0])
{
addMsgFromClient(trainee, clientMessage.Text);
break;

View File

@@ -96,13 +96,13 @@ public:
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;
TypeClientAutorization TypeClient;
QString accessType = "";
UserType userType;
};
#endif // CLIENT_H

View File

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

View File

@@ -43,7 +43,7 @@ QByteArray ClientAnswerParser::deAuthorization(bool result, QString login)
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<SAttribute> listAttr;
@@ -54,8 +54,6 @@ QByteArray ClientAnswerParser::message(QString loginFrom,QString loginTo,QString
listAttr.append(attribute1);
attribute1 = {"Text",text};
listAttr.append(attribute1);
attribute1 = {"UserType",type};
listAttr.append(attribute1);
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 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 notify(QString code);
QByteArray tasks(QStringList listTasks);

View File

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

View File

@@ -13,9 +13,9 @@ void ChatSystem::initialize(CommonClientHandler *commonClientHandler, DataParser
clientNotSendedMessage = new QMap<QString,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);
auto clientMessage2 = ClientMessage("1","102","Сообщение 2","1");
auto clientMessage2 = ClientMessage("1-0","102-0","Сообщение 2");
stack->append(clientMessage2);
clientNotSendedMessage->insert("102", stack);
@@ -23,12 +23,17 @@ void ChatSystem::initialize(CommonClientHandler *commonClientHandler, DataParser
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())
{
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);
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()->setAccessType("instructor");
client->getClient()->setAccessType(UserType::INSTRUCTOR);
client->getClient()->setTypeClient(clientAutorization.TypeClient);
emit sigUpdateListClients();
@@ -74,7 +74,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
{//Авторизуется обучаемый
client->getClient()->setLogin(clientAutorization.Login);
client->getClient()->setAccessType("trainee");
client->getClient()->setAccessType(UserType::TRAINEE);
emit sigUpdateListClients();
//KAV redact
@@ -122,7 +122,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
{//ДеАвторизуется обучаемый
client->getClient()->setLogin("");
client->getClient()->setAccessType("");
client->getClient()->setAccessType(UserType::NONE);
emit sigUpdateListClients();
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
@@ -131,7 +131,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
{//ДеАвторизуется инструктор
client->getClient()->setLogin("");
client->getClient()->setAccessType("");
client->getClient()->setAccessType(UserType::NONE);
emit sigUpdateListClients();
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
@@ -167,14 +167,14 @@ void ProcessingSystem::processingClientDeAutorization(QString login)
void ProcessingSystem::processingEntryUnityClient(ClientHandler *client)
{
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);
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)
{
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);
providerDBLMS->exitTraineeFromSimulator(id_trainee);
}
else if(accessType == "instructor")
else if(userType == UserType::INSTRUCTOR)
{
//Здесь пока ничего не происходит
}