loginform.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include "loginform.h"
  2. #include "ui_loginform.h"
  3. #include <QMessageBox>
  4. #include "globalinfo.h"
  5. #include "handle/utils/cachefile.h"
  6. #include <QJsonDocument>
  7. LoginForm::LoginForm(QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::LoginForm),_request(nullptr)
  10. {
  11. ui->setupUi(this);
  12. connect(this,&LoginForm::loginFinish,this,&LoginForm::clear);
  13. ui->status->setVisible(false);
  14. this->setEnabled(true);
  15. ui->linePass->setEchoMode(QLineEdit::Password);
  16. }
  17. LoginForm::~LoginForm()
  18. {
  19. delete ui;
  20. }
  21. void LoginForm::on_pushLogin_clicked()
  22. {
  23. QFileInfo fileInfo(QCoreApplication::applicationDirPath() + "/Config.ini");
  24. if(!fileInfo.exists()){
  25. qDebug()<<"配置文件不存在";
  26. QMessageBox::information(this,"注意","请设置配置");
  27. return;
  28. }
  29. auto glo = GlobalInfo::this_();
  30. auto uname = this->ui->lineUser->text();
  31. auto upass = this->ui->linePass->text();
  32. auto url = glo->config().baseUrl+"/v1/signin";
  33. QMap<QString,QString> params;
  34. params.insert("password",uname);
  35. params.insert("username",upass);
  36. request()->post(url,params);
  37. ui->status->setVisible(true);
  38. this->setEnabled(false);
  39. }
  40. void LoginForm::clear(){
  41. if(_request){
  42. _request->deleteLater();
  43. _request = nullptr;
  44. }
  45. }
  46. HttpRequest * LoginForm::request()
  47. {
  48. if(!_request){
  49. _request = new HttpRequest(this);
  50. connect(_request,&HttpRequest::result,this,&LoginForm::result);
  51. }
  52. return _request;
  53. }
  54. void LoginForm::result(int code, const QJsonObject & body)
  55. {
  56. ui->status->setVisible(false);
  57. this->setEnabled(true);
  58. QString message = body["message"].toString();
  59. if(body.value("code").toInt(404) != 200){
  60. QMessageBox msg(QMessageBox::Information, "错误", " 网络异常", QMessageBox::Ok, this);
  61. msg.exec();
  62. // ui->username->clear();
  63. // ui->password->clear();
  64. return;
  65. }
  66. if(message == "未找到用户"){
  67. QMessageBox msg(QMessageBox::Information, "错误", "用户名或密码错误", QMessageBox::Ok, this);
  68. msg.exec();
  69. return;
  70. }
  71. CacheFile cf;
  72. cf.writeFile("userlogin.cache",QJsonDocument(body).toJson());
  73. auto data = body.value("data").toObject();
  74. UserInfo user;
  75. user.accountId = data["account_id"].toInt();
  76. user.userId = data["user_id"].toInt();
  77. user.userName = data["name"].toString();
  78. user.headPortrait = data["head_portrait"].toString();
  79. user.isVip = data["is_vip"].toInt(-1) == 1 ? true : false;
  80. user.acessToken = data["access_token"].toString();
  81. GlobalInfo::this_()->setUser(user);
  82. emit loginFinish();
  83. }
  84. void LoginForm::on_pushButton_2_clicked()
  85. {
  86. emit SettingsClicked();
  87. }
  88. void LoginForm::on_pushButton_clicked()
  89. {
  90. CacheFile cf;
  91. auto dt = cf.readFile("userlogin.cache");
  92. UserInfo user;
  93. QJsonObject obj = QJsonDocument::fromJson(dt).object();
  94. if(!obj.isEmpty()){
  95. auto data = obj.value("data").toObject();
  96. user.accountId = data["account_id"].toInt();
  97. user.userId = data["user_id"].toInt();
  98. user.userName = data["name"].toString();
  99. user.headPortrait = data["head_portrait"].toString();
  100. user.isVip = data["is_vip"].toInt(-1) == 1 ? true : false;
  101. user.acessToken = data["access_token"].toString();
  102. } else {
  103. QMessageBox::warning(this,tr("请先成功登陆一次!"),tr("请先成功登陆一次!"));
  104. }
  105. GlobalInfo::this_()->isNoLine = true;
  106. GlobalInfo::this_()->setUser(user);
  107. emit loginFinish();
  108. }