UserLogic.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace app\api\logic;
  3. use app\common\model\UserModel;
  4. class UserLogic
  5. {
  6. public function register($arr)
  7. {
  8. $fillfields = ['phone', 'passwd'];
  9. foreach ($fillfields as $key => $value) {
  10. if (!isset($arr[$value]) || empty($arr[$value])) {
  11. return backarr(0, "参数缺少");
  12. }
  13. }
  14. $m_u = new UserModel();
  15. $phone = $arr['phone'];
  16. $passwd = $phone . $arr['passwd'];
  17. $where = ['phone' => $phone];
  18. $uinfo = $m_u->getInfo($where);
  19. if (empty($uinfo)) {
  20. //注册
  21. $arr['passwd'] = $this->createpasswd($passwd);
  22. $uid = $m_u->insertData($arr);
  23. if (empty($uid)) {
  24. return backarr(0, "注册失败");
  25. }
  26. } else {
  27. //登录
  28. $uid = $uinfo['id'];
  29. $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
  30. if (!$checked) {
  31. return backarr(0, "密码错误");
  32. }
  33. }
  34. $result = $this->changetoken($uid, $phone);
  35. if (empty($result['status'])) {
  36. return backarr(0, $result['msg']);
  37. }
  38. $field = ['id', 'phone', 'token'];
  39. $where = ['id' => $uid];
  40. $uinfo = $m_u->getInfo($where, $field);
  41. return backarr($uinfo, "注册成功", $uinfo);
  42. }
  43. public function login($arr)
  44. {
  45. $fillfields = ['phone', 'passwd'];
  46. foreach ($fillfields as $key => $value) {
  47. if (!isset($arr[$value]) || empty($arr[$value])) {
  48. return backarr(0, "参数缺少");
  49. }
  50. }
  51. $m_u = new UserModel();
  52. $phone = $arr['phone'];
  53. $passwd = $phone . $arr['passwd'];
  54. $where = ['phone' => $phone];
  55. $uinfo = $m_u->getInfo($where);
  56. if (empty($uinfo)) {
  57. return backarr(0, "无用户信息");
  58. }
  59. $uid = $uinfo['id'];
  60. $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
  61. if (!$checked) {
  62. return backarr(0, "密码错误");
  63. }
  64. $result = $this->changetoken($uid, $phone);
  65. if (empty($result['status'])) {
  66. return backarr(0, $result['msg']);
  67. }
  68. $field = ['id', 'phone', 'token'];
  69. $where = ['id' => $uid];
  70. $uinfo = $m_u->getInfo($where, $field);
  71. return backarr($uinfo, "登录成功", $uinfo);
  72. }
  73. private function checkpasswd($pwd, $hash)
  74. {
  75. return password_verify($pwd, $hash);
  76. }
  77. private function createpasswd($pwd)
  78. {
  79. $newpasswd = password_hash($pwd, PASSWORD_DEFAULT);
  80. return $newpasswd;
  81. }
  82. private function changetoken($uid, $str)
  83. {
  84. $token = $this->gettoken($str);
  85. $m_u = new UserModel();
  86. $updateData = ['token' => $token];
  87. $where = ['id' => $uid];
  88. $row = $m_u->updateinfo($where, $updateData);
  89. if (empty($row)) {
  90. return backarr(0, "修改token失败");
  91. }
  92. return backarr(1, "修改token成功");
  93. }
  94. private function gettoken($str)
  95. {
  96. $str = md5(uniqid(md5(microtime(true)), true));
  97. $token = sha1($str . $str);
  98. return $token;
  99. }
  100. }