MemberService.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2017~2021 LARAVEL研发中心
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://www.laravel.cn
  8. // +----------------------------------------------------------------------
  9. // | Author: laravel开发员 <laravel.qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace App\Services\Api;
  12. use App\Helpers\Jwt;
  13. use App\Models\ActionLogModel;
  14. use App\Services\BaseService;
  15. use App\Services\RedisService;
  16. /**
  17. * 会员-服务类
  18. * Class MemberService
  19. * @package App\Services\Api
  20. */
  21. class MemberService extends BaseService
  22. {
  23. /**
  24. * 用户注册
  25. * @param $params
  26. * @return bool
  27. */
  28. public function register($params)
  29. {
  30. // 检测账号是否存在
  31. if($this->checkExists('username', $params['username'])){
  32. $this->error = '2005';
  33. return false;
  34. }
  35. $username = isset($params['username'])? trim($params['username']) : '';
  36. $password = isset($params['password'])? trim($params['password']) : '123456';
  37. $avatar = isset($params['avatar'])? trim($params['avatar']) : '';
  38. $data = [
  39. 'username'=> $username,
  40. 'password'=> get_password($password . $username),
  41. 'mobile'=> isPhone($username)? $username : '',
  42. 'avatar'=> $avatar? $avatar : '',
  43. 'status'=> 1,
  44. 'mark'=> 0,
  45. 'create_time'=> time(),
  46. ];
  47. if(!$this->model->insertGetId($data)){
  48. return true;
  49. }
  50. $this->error = 2007;
  51. return false;
  52. }
  53. /**
  54. * 用户登录
  55. * @param $params
  56. * @return array|false
  57. */
  58. public function login($params)
  59. {
  60. $username = isset($params['username'])? $params['username'] : '';
  61. $password = isset($params['password'])? $params['password'] : '';
  62. if(empty($username) || empty($password)){
  63. $this->error = 1013;
  64. return false;
  65. }
  66. // 用户验证
  67. $info = $this->model->getOne([['username', '=', $username]]);
  68. if (!$info) {
  69. $this->error = 2001;
  70. return false;
  71. }
  72. // 密码校验
  73. $password = get_password($password . $username);
  74. if ($password != $info['password']) {
  75. $this->error = 2002;
  76. return false;
  77. }
  78. // 使用状态校验
  79. if ($info['status'] != 1) {
  80. $this->error = 2009;
  81. return false;
  82. }
  83. // 设置日志标题
  84. ActionLogModel::setTitle("会员登录APP");
  85. ActionLogModel::record($info);
  86. // JWT生成token
  87. $jwt = new Jwt('jwt_app');
  88. $token = $jwt->getToken($info['id']);
  89. RedisService::set("stores:auths:info:{$info['id']}", $info, 5, 10);
  90. // 登录数据
  91. return [
  92. 'token' => $token,
  93. 'id' => $info['id'],
  94. 'user_type' => $info['user_type'],
  95. ];
  96. }
  97. }