Login.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2018-2020 rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: TABLE ME
  8. // +----------------------------------------------------------------------
  9. // | Date: 2020-08-25 17:23
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\api\controller;
  13. use app\BaseController;
  14. use app\model\api\User as UserModel;
  15. use app\model\api\UserLogin;
  16. use app\Request;
  17. use library\lib\weixina;
  18. use library\services\JsonNull;
  19. use library\services\UtilService;
  20. use think\Cache;
  21. use think\Image;
  22. class Login extends BaseController
  23. {
  24. /**
  25. * 微信登录
  26. * @param Request $request
  27. */
  28. public function weixinLogin(Request $request){
  29. [$code,$nickname,$avatar,$device_id,$model,$platform,$system,$gender] = UtilService::getMore([
  30. ['code', '', 'empty', 'code参数错误'],
  31. ['nickname','微信用户',],
  32. ['avatar','',],
  33. ['device_id',''],
  34. ['model',''],
  35. ['platform',''],
  36. ['system',''],
  37. ['gender','0'],
  38. ], $request, true);
  39. //用户登录
  40. if(empty($avatar)){
  41. //默认通向
  42. $avatar = "";
  43. }
  44. if(!in_array((string)$gender, array("0","1","2"))){
  45. $gender = 0;
  46. }
  47. $regip = get_client_ip();
  48. if(empty($regip)){
  49. $regip = $request->ip();
  50. }
  51. $weixinA = new weixina();
  52. $data=$weixinA->auth_code2Session($code);//新版
  53. var_dump($data);
  54. if(empty($data) || empty($data['openid'])) {
  55. return app('json')->fail("微信授权登录失败,关闭页面重新授权".$weixinA->error);
  56. }
  57. $member = (new UserModel)->where("openid",$data["openid"])->find();
  58. if(empty($member)){
  59. //用户注册
  60. $uid = (new UserModel)->insertGetId(array(
  61. "openid"=>$data["openid"],
  62. "unionid"=>empty($data["unionid"])?"":$data["unionid"],
  63. "nickname"=>$nickname,
  64. "avatar"=>$avatar,
  65. "sex"=>(int)$gender,
  66. "regtime"=>time(),
  67. "regip"=>$regip,
  68. ));
  69. if(empty($uid)){
  70. return app('json')->fail("网络繁忙,请稍后尝试");
  71. }
  72. //生成MD5
  73. $token = base64_encode(md5($uid ."openid" .$data["openid"] . time()));
  74. (new UserModel)->where('uid', $uid)->save(['lasttime'=>time(),'token'=>$token]);
  75. //生成登录日志
  76. (new UserLogin)->insert([
  77. 'uid' => $uid,
  78. 'ip' => $regip,
  79. 'time' => time(),
  80. 'device_id' => $device_id,
  81. 'from_plat' => $platform,
  82. 'device_type' => $system,
  83. 'version' => $model,
  84. ]);
  85. $result = [];
  86. $result['nickname'] = $nickname;
  87. $result['avatar'] = $avatar;
  88. $result['token'] = $token;
  89. return app('json')->success($result);
  90. }
  91. if ($member['status'] == -1) {
  92. return app('json')->fail("账号已被禁用");
  93. }
  94. //生成MD5
  95. $token = base64_encode(md5($member['uid'] ."openid" . $member['openid'] . time()));
  96. (new UserModel)->where('uid', $member['uid'])->save([
  97. 'lasttime' => time(),
  98. 'token' => $token,
  99. ]);
  100. //生成登录日志
  101. (new UserLogin)->insert([
  102. 'uid' => $member['uid'],
  103. 'ip' => $regip,
  104. 'time' => time(),
  105. 'device_id' => $device_id,
  106. 'from_plat' => $platform,
  107. 'device_type' => $system,
  108. 'version' => $model,
  109. ]);
  110. $result = [];
  111. $result['nickname'] = $member['nickname'];
  112. $result['avatar'] = $member['avatar'];
  113. $result['token'] = $token;
  114. return app('json')->success($result);
  115. }
  116. }