dialoglogin.cpp 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. #include "dialoglogin.h"
  2. #include "ui_dialoglogin.h"
  3. #include "dialogregister.h"
  4. #include <QTime>
  5. #include "respssologin.h"
  6. #include "sncdatabase.h"
  7. DialogLogin::DialogLogin(QWidget *parent) :
  8. QDialog(parent),
  9. ui(new Ui::DialogLogin)
  10. {
  11. ui->setupUi(this);
  12. m_label = new XValidateLabel(this);
  13. movie = new QMovie(":/loading.gif");
  14. movie->start();
  15. ui->labelProgress->setMovie(movie);
  16. ui->labelProgress->setVisible(false);
  17. ui->labelAppName->setText("");
  18. ui->frameBg->setProperty("class","loginbg");
  19. ui->labelAppName->setProperty("class","xxxl-white");
  20. //ui->label1->setProperty("class","xxl-white");
  21. //ui->label2->setProperty("class","xxl-white");
  22. //ui->label3->setProperty("class","xxl-white");
  23. ui->checkBoxAutoLogin->setProperty("class","xxl-white");
  24. ui->checkBoxRememberPassword->setProperty("class","xxl-white");
  25. m_label->setProperty("class","xl-white");
  26. ui->pushButtonForgetPassword->setProperty("class","link-newcolor");
  27. ui->pushButtonReg->setProperty("class","link-newcolor");
  28. ui->pushButtonRefresh->setProperty("class","link-newcolor");
  29. ui->pushButtonCancel->setVisible(false);
  30. ui->horizontalLayout_2->addWidget(m_label);
  31. ui->comboBoxCorp->insertItem(0,"瞬时第三代智能号码检测","shunshi");
  32. //ui->comboBoxCorp->insertItem(1,"信源第三代智能号码检测","xinyuan");
  33. QString corp = SNCDataBase::getDefaultNumchkCorp();
  34. if(corp=="shunshi" || corp.isEmpty())
  35. {
  36. ui->comboBoxCorp->setCurrentIndex(0);
  37. }
  38. else
  39. {
  40. ui->comboBoxCorp->setCurrentIndex(1);
  41. }
  42. m_ws = new WSSSO();
  43. genValidateCode();
  44. m_usercancel = false;
  45. setWindowFlags(windowFlags()&~Qt::WindowContextHelpButtonHint);
  46. setMaximumSize(300,260);
  47. setMinimumSize(300,260);
  48. fetchLoginHistory();
  49. }
  50. DialogLogin::~DialogLogin()
  51. {
  52. delete ui;
  53. delete movie;
  54. delete m_ws;
  55. delete m_label;
  56. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  57. <<"SNCUser.DialogLogin Destroyed.";
  58. }
  59. void DialogLogin::on_pushButtonLogin_clicked()
  60. {
  61. if(ui->comboBoxUserCode->currentText().isEmpty() || ui->lineEditUserPwd->text().isEmpty())
  62. {
  63. QMessageBox::critical(this,"提示","用户名和密码不能为空!",QMessageBox::Ok);
  64. return ;
  65. }
  66. if(ui->lineEditValidateCode->text()!=m_label->text())
  67. {
  68. QMessageBox::critical(this,"提示","验证码不正确!",QMessageBox::Ok);
  69. genValidateCode();
  70. return ;
  71. }
  72. ui->pushButtonLogin->setVisible(false);
  73. ui->pushButtonCancel->setVisible(true);
  74. m_usercancel = false;
  75. //WSSSO sso;
  76. QString userCode = ui->comboBoxUserCode->currentText();
  77. QString userPwd = ui->lineEditUserPwd->text();
  78. QString src = "mf-" + SNCDataBase::getAppVersion();
  79. this->ui->labelProgress->setVisible(true);
  80. movie->stop();
  81. movie->start();
  82. QString apphash = SNCDataBase::getAppHash();
  83. QString json = m_ws->userLogin(userCode,userPwd,src,apphash);
  84. bool loginok = false;
  85. if(json.isEmpty()){
  86. if(!m_usercancel)
  87. QMessageBox::critical(NULL,"极速号码魔方","网络连接失败!",QMessageBox::Ok);
  88. }
  89. else
  90. {
  91. RespSSOLogin response(json);
  92. if(response.getRtnCode() == 1)
  93. {
  94. accountInfo.clear();
  95. accountInfo.insert("userid",response.getUserID());
  96. accountInfo.insert("usercode",response.getUserCode());
  97. accountInfo.insert("ssohash",response.getUserHash());
  98. accountInfo.insert("username",response.getUserName());
  99. accountInfo.insert("starttime",response.getUserStartTime());
  100. accountInfo.insert("endtime",response.getUserEndTime());
  101. accountInfo.insert("lastloginip",response.getUserLastLoginIP());
  102. accountInfo.insert("lastlogintime",response.getUserLastLoginTime());
  103. accountInfo.insert("remainmoney",response.getUserRemainMoney());
  104. accountInfo.insert("gifmoney",response.getUserGiftMoney());
  105. accountInfo.insert("summoney",response.getUserSumMoney());
  106. accountInfo.insert("sumgiftmoney",response.getUserSumGiftMoney());
  107. updateLocalLoginInfo(userCode,userPwd);
  108. loginok = true;
  109. emit ssoLoginSucceed(accountInfo);
  110. }
  111. else
  112. {
  113. QMessageBox::critical(NULL,"极速号码魔方",response.getRtnMemo(),QMessageBox::Ok);
  114. }
  115. }
  116. if(loginok)
  117. {
  118. this->close();
  119. }
  120. genValidateCode();
  121. ui->pushButtonLogin->setVisible(true);
  122. this->ui->labelProgress->setVisible(false);
  123. ui->pushButtonCancel->setVisible(false);
  124. }
  125. void DialogLogin::genValidateCode()
  126. {
  127. m_label->refresh();
  128. }
  129. void DialogLogin::updateLocalLoginInfo(QString usercode,QString password)
  130. {
  131. QString isauto = "";
  132. QString isrememberpasword = "";
  133. if(ui->checkBoxAutoLogin->isChecked())
  134. isauto = "1";
  135. else
  136. isauto = "2";
  137. if(ui->checkBoxRememberPassword->isChecked())
  138. {
  139. isrememberpasword = "1";
  140. }
  141. else
  142. {
  143. isrememberpasword = "2";
  144. password = "";
  145. }
  146. QString lastLoginTime =QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz "); //设置显示格式
  147. SNCDataBase::updateLoginInfo(usercode,password,isauto,isrememberpasword,lastLoginTime);
  148. //add byxxw on 2015-3-23 瞬时和信源整合
  149. QString corp ;
  150. if(ui->comboBoxCorp->currentIndex()==0)
  151. {
  152. corp = "shunshi";
  153. }
  154. else
  155. {
  156. corp = "xinyuan";
  157. }
  158. SNCDataBase::updateDefaultNumchkCorp(corp);
  159. }
  160. void DialogLogin::fetchLoginHistory()
  161. {
  162. m_list = SNCDataBase::getDefaultLoginInfo();
  163. int cols = m_list.uniqueKeys().size();
  164. int rows = 0;
  165. if(cols!=0)
  166. rows = m_list.size()/cols;
  167. for(int row=0;row<rows;row++)
  168. {
  169. QString usercode = m_list.values("usercode").at(row);
  170. // QString password = m_list.values("password").at(row);
  171. // QString password = m_list.values("password").at(row);
  172. // QString password = m_list.values("password").at(row);
  173. ui->comboBoxUserCode->addItem(usercode,"");
  174. }
  175. }
  176. void DialogLogin::on_pushButtonReg_clicked()
  177. {
  178. DialogRegister dialogUserReg(this);
  179. dialogUserReg.exec();
  180. }
  181. void DialogLogin::on_pushButtonForgetPassword_clicked()
  182. {
  183. QMessageBox::information(NULL,"极速号码魔方","请联系客服(QQ:4000079360),找回密码!",QMessageBox::Ok);
  184. }
  185. void DialogLogin::on_pushButtonCancel_clicked()
  186. {
  187. m_usercancel = true;
  188. m_ws->abort();
  189. }
  190. void DialogLogin::on_pushButtonRefresh_clicked()
  191. {
  192. m_label->refresh();
  193. }
  194. void DialogLogin::on_comboBoxUserCode_currentIndexChanged(const QString &arg1)
  195. {
  196. int cols = m_list.uniqueKeys().size();
  197. int rows = 0;
  198. if(cols!=0)
  199. rows = m_list.size()/cols;
  200. for(int row=0;row<rows;row++)
  201. {
  202. QString usercode = m_list.values("usercode").at(row);
  203. if(usercode==arg1)
  204. {
  205. QString password = m_list.values("password").at(row);
  206. QString isauto = m_list.values("isauto").at(row);
  207. QString isremember = m_list.values("isremember").at(row);
  208. if(isremember=="1")
  209. {
  210. ui->checkBoxRememberPassword->setChecked(true);
  211. ui->lineEditUserPwd->setText(password);
  212. }
  213. else
  214. {
  215. ui->checkBoxRememberPassword->setChecked(false);
  216. ui->lineEditUserPwd->setText("");
  217. }
  218. if(isauto=="1")
  219. {
  220. ui->checkBoxAutoLogin->setChecked(true);
  221. }
  222. else
  223. {
  224. ui->checkBoxAutoLogin->setChecked(false);
  225. }
  226. break;
  227. }
  228. }
  229. }
  230. void DialogLogin::on_checkBoxAutoLogin_clicked()
  231. {
  232. if(ui->checkBoxAutoLogin->isChecked())
  233. {
  234. ui->checkBoxRememberPassword->setChecked(true);
  235. }
  236. }
  237. void DialogLogin::on_checkBoxRememberPassword_clicked()
  238. {
  239. if(!ui->checkBoxRememberPassword->isChecked())
  240. {
  241. ui->checkBoxAutoLogin->setChecked(false);
  242. }
  243. }