LoginBus.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. *
  4. *User:Administrator
  5. *Date:2021/10/8
  6. */
  7. namespace app\api\business;
  8. use app\api\model\Jcdw;
  9. use app\common\lib\auth\JwtAuth;
  10. use app\common\model\mysql\Ry;
  11. use app\api\exception\ApiException;
  12. use think\facade\Cache;
  13. class LoginBus
  14. {
  15. public function login($username,$password)
  16. {
  17. //从人员表中查询数据
  18. $ry_info=(new Ry())->getUserInfoByRybh($username);
  19. //从检测单位表中查询数据
  20. $jcdw_info=(new Jcdw())->getInfoByLoginName($username);
  21. //用户名都不存在则抛出异常
  22. if (!$ry_info && !$jcdw_info) {
  23. throw new ApiException(config('status.err_user_not_exist'));
  24. }
  25. //在ry表中查询到数据,则验证用户名和密码
  26. if (isset($ry_info['rybh']) && $ry_info['kl']==$password) {
  27. $data=[
  28. 'id' => $ry_info['id'],
  29. 'groupname'=>$ry_info['groupname'],
  30. 'rymc'=>$ry_info['rymc'],
  31. 'name'=>'',
  32. 'rybh'=>$ry_info['rybh'],
  33. 'qydm'=>$ry_info['qydm'],
  34. ];
  35. }
  36. //在jcdw表中查询到数据,则验证用户名和密码
  37. if (isset($jcdw_info['login_name']) && $jcdw_info['pwd'] == $password) {
  38. //return '正确2';
  39. $data=[
  40. 'id' => $jcdw_info['id'],
  41. 'groupname'=>$jcdw_info['groupname'],
  42. 'rymc'=>$jcdw_info['login_name'],
  43. 'name'=>$jcdw_info['name'],
  44. 'rybh'=>'',
  45. 'qydm'=>$jcdw_info['qydm'],
  46. ];
  47. }
  48. //实例化JwtAuth,生成token
  49. $jwt_auth=JwtAuth::getInstance();
  50. $token = $jwt_auth
  51. ->setGroupname($data['groupname'])
  52. ->setRymc($data['rymc'])
  53. ->setName($data['name'])
  54. ->setRybh($data['rybh'])
  55. ->setQydm($data['qydm'])
  56. ->setUid($data['id'])
  57. ->encode()
  58. ->getToken();
  59. //将ip存到redis中,通过middleware验证 todo
  60. $real_ip = request()->ip();
  61. Cache::store('redis')->set($real_ip,$token,1 * 24 * 3600);
  62. //data数组添加两条数据
  63. $data['token']=$token;
  64. $data['re_ip']=$real_ip;
  65. return $data;
  66. }
  67. }