| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- #include "tloginapi.h"
- #include <QJsonDocument>
- #include <QJsonObject>
- #include <QJsonValue>
- #include <QNetworkAccessManager>
- #include <optional>
- #include "appevent.h"
- #include "basemainTr.h"
- namespace TC {
- void critical(const QString &text, const QString &title = Tr::tr("Error"));
- std::optional<QJsonValue> sendRequest(QNetworkAccessManager::Operation op,
- const QString &url,
- const QByteArray &postData = QByteArray());
- static const QLatin1String scCode("code");
- static const QLatin1String scMessage("message");
- static const QLatin1String scData("data");
- static const QLatin1String scJwtToken("JwtToken");
- static const QLatin1String scAccessToken("access_token");
- static const QLatin1String scAccessExpire("access_expire");
- static const QLatin1String scRefreshAfter("refresh_after");
- Login::Login()
- : QObject()
- , url("/api/v1/sys/auth/phone_login")
- {}
- Login::Login(const QString &_user, const QString &_password)
- : QObject()
- , url("/api/v1/sys/auth/phone_login")
- {
- QJsonObject json;
- json["phone"] = _user;
- json["password"] = _password;
- QJsonDocument jsonData(json);
- postData = jsonData.toJson();
- }
- bool Login::post()
- {
- std::optional<QJsonValue> responseData = sendRequest(QNetworkAccessManager::PostOperation,
- url,
- postData);
- if (!responseData.has_value()) {
- return false;
- }
- QJsonValue data;
- const QJsonObject object = responseData.value().toObject();
- if (object.contains(scCode)) {
- int code = object.value(scCode).toInt();
- if (code != 200) {
- // 获取当前活动窗口
- critical(object[scMessage].toString());
- return false;
- }
- }
- if (object.contains(scMessage)) {
- const QString &message = object.value(scMessage).toString();
- // Core::MessageManager::writeFlashing(message);
- }
- if (object.contains(scData)) {
- data = object.value(scData);
- }
- Login::Data ret;
- ret.accessToken = data[scAccessToken].toString();
- ret.accessExpire = data[scAccessExpire].toVariant().toLongLong();
- ret.refreshAfter = data[scRefreshAfter].toVariant().toLongLong();
- // if (data[scJwtToken].isObject()) {
- // const QJsonObject &jwtObject = data[scJwtToken].toObject();
- // ret.accessToken = jwtObject[scAccessToken].toString();
- // ret.accessExpire = jwtObject[scAccessExpire].toVariant().toLongLong();
- // ret.refreshAfter = jwtObject[scRefreshAfter].toVariant().toLongLong();
- // }
- qDebug() << data;
- //设置 token 到全局变量
- if (ret.accessExpire > AppEvent::time()) {
- AppEvent::instance()->setJwtToken(ret.accessToken);
- AppEvent::instance()->setRefreshTime(ret.refreshAfter);
- return true;
- }
- return false;
- }
- LoginOut::LoginOut()
- : QObject()
- , url("/api/v1/user/loginOut")
- {}
- bool LoginOut::post()
- {
- std::optional<QJsonValue> data = sendRequest(QNetworkAccessManager::PostOperation, url, {});
- if (!data.has_value()) {
- return false;
- }
- const QJsonObject &object = data.value().toObject();
- AppEvent::instance()->setJwtToken(QString());
- return true;
- }
- RefreshToken::RefreshToken()
- : QObject()
- , url("/api/v1/user/refresh_token")
- {}
- bool RefreshToken::get()
- {
- std::optional<QJsonValue> data = sendRequest(QNetworkAccessManager::GetOperation, url);
- if (!data.has_value()) {
- return false;
- }
- RefreshToken::Data ret;
- if (!data.has_value()) {
- return false;
- }
- const QJsonObject &object = data.value().toObject();
- ret.accessToken = object[scAccessToken].toString();
- ret.accessExpire = object[scAccessExpire].toVariant().toLongLong();
- ret.refreshAfter = object[scRefreshAfter].toVariant().toLongLong();
- //设置 token 到全局变量
- if (ret.accessExpire > AppEvent::time()) {
- AppEvent::instance()->setJwtToken(ret.accessToken);
- AppEvent::instance()->setRefreshTime(ret.refreshAfter);
- return true;
- }
- return false;
- }
- UserInfo::UserInfo()
- : QObject()
- , url("/api/v1/user/userInfo")
- {}
- UserInfo::Data UserInfo::get(bool *b)
- {
- if (b) {
- *b = false;
- }
- UserInfo::Data ret;
- std::optional<QJsonValue> data = sendRequest(QNetworkAccessManager::GetOperation, url);
- if (!data.has_value()) {
- return ret;
- }
- const QJsonObject &object = data.value().toObject();
- ret.username = object["username"].toString();
- ret.maxTime = object["maxTime"].toVariant().toLongLong();
- ret.checkinNumber = object["checkinNumber"].toString();
- if (b) {
- *b = true;
- }
- return ret;
- }
- } // namespace TC
|