AuthController.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace App\Http\Controllers\Api\V1;
  3. use App\Models\AppInfoModel;
  4. use App\Models\Merchant;
  5. use App\Models\MemberMerchant;
  6. use App\Models\UserBanks;
  7. use App\Models\Setting;
  8. use App\Models\WxUserInfoModel;
  9. use Illuminate\Http\Request;
  10. //use App\Http\HelperTraits\AttachmentHelper;
  11. use App\Services\Base\ErrorCode;
  12. use App\User;
  13. use Illuminate\Support\Facades\Hash;
  14. use Validator, Auth, Cache;
  15. class AuthController extends Controller
  16. {
  17. private $expireTime = 1;
  18. private $keySmsCode = 'auth:sms:';
  19. private $keySmsCodeExist = 'auth:sms:exist';
  20. private $expireTimeExist = 24*60;
  21. public function test(){
  22. // return $this->error(ErrorCode::SAVE_USER_FAILED);
  23. return $this->api(['test' => 'test']);
  24. }
  25. public function shop2(){
  26. return '{"code":0,"msg":"success","data":{"store_name":"商城最新版","contact_tel":"18268343615","show_customer_service":1,"share_setting":{"id":"1","first":"10.00","second":"5.00","third":"0.00","store_id":"1","level":"2","condition":"0","share_condition":"1","content":"成为分销商,推广平台任意商品都有高额提成!","pay_type":"1","min_money":"1.00","agree":"申请成为分销商,务必要填写真实的姓名和电话,否则一律不通过!","first_name":"白金","second_name":"白银","third_name":"","pic_url_1":"http:\/\/www.xkedou.cn\/addons\/hjmall\/core\/web\/uploads\/image\/82\/8285e1e45c4ce7bf4e4433326c9e16ee.png","pic_url_2":"http:\/\/www.xkedou.cn\/addons\/hjmall\/core\/web\/uploads\/image\/72\/727a6d8c05ca1feb26ab179fd34bf512.png","qrcode_bg":"http:\/\/www.xkedou.cn\/addons\/hjmall\/core\/web\/statics\/images\/2.png"},"store":{"id":1,"name":"商城最新版","copyright":"提供技术支持","copyright_pic_url":"http:\/\/www.xkedou.cn\/addons\/hjmall\/core\/web\/uploads\/image\/af\/af3d4d7641bafd696d28adef6a635e2d.png","copyright_url":"\/pages\/article-detail\/article-detail?id=about_us","contact_tel":"18268343615","show_customer_service":1,"cat_style":4,"address":"","is_offline":1,"is_coupon":1}}}';
  27. }
  28. /**
  29. * @api {post} /api/auth/login 微信登陆入口(login)
  30. * @apiDescription 微信登陆入口(login)
  31. * @apiGroup Auth
  32. * @apiPermission none
  33. * @apiVersion 0.1.0
  34. * @apiParam {string} code 登录凭证
  35. * @apiParam {string} nickname 微信昵称
  36. * @apiParam {string} avatar 微信头像
  37. * @apiParam {string} appid appid
  38. * @apiSuccessExample {json} Success-Response:
  39. * HTTP/1.1 200 OK
  40. * {
  41. * "state": true,
  42. * "code": 0,
  43. * "message": "",
  44. * "data": {
  45. * "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjdjYWUyYzFmYTUwMTIyZDI0ZTRiYTZhZGZhNmQxYmZlOWNiMzIxMTBmYWJlZjNjYzIyNmViZjRmNGExNWM3NjllNmU2ZTNiYWE5OGNhOWUzIn0.eyJhdWQiOiIxIiwianRpIjoiN2NhZTJjMWZhNTAxMjJkMjRlNGJhNmFkZmE2ZDFiZmU5Y2IzMjExMGZhYmVmM2NjMjI2ZWJmNGY0YTE1Yzc2OWU2ZTZlM2JhYTk4Y2E5ZTMiLCJpYXQiOjE0NzU0MTE1NTgsIm5iZiI6MTQ3NTQxMTU1OCwiZXhwIjo0NjMxMDg1MTU4LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.E9YGEzuRUOk02aV1EiWLJ_pD0hKoCyW0k_sGy63hM3u5X8K_HI1kVhaU6JNLqLZeszIAroTEDB8XMgZKAqTLlwtL8PLCJcuDoxfk1BRHbfjhDheTsahBysKGalvNEpzRCrGlao0mS0Cg9qDpEsndtypPFS8sfaflToOzbJjiSK2DvQiHSH8xZI3zHJTezgZMz-pB_hPTxp8ajdv0ve1gWtWjs3vERr0Y91X4hngO8X7LuXtAYtfxGZRIye12YE7TuLBMYzj8CCfiRt7Smhyf4palNW5mzKlZpa2l87n6NQ14Iy4oMzQ2PON1j_swrosuE2yZohGOn6fDdSCBRdJ6dLD_emjBdQCQOoB63R7BbhFZgvFX25TjzFJ7r9AdVMiGmebuRKEVSZV_JCGu1C71OIbQk-UK35s00gSr2fmJGBbN2cZTXBRTJpfuMZ_ihFYEZrvVq_Ih2X0xkd36JUuxaUld1BXRgPZvH-9jBuhe0YW2OOlgwpdm6ZB8BMcuS4ftLoi6FipgzFqfIuy-0ZqPMDnJaG7Gycrdpxza00mgOFxYxJtqwZNsUWFRZEVU881l6VC_cy294YXSPQxUwEoyKg-G5Pm8AEB9bqv5z4EU4B8-XTd3zKNqtNba_snHbc711i4EytCiZfYSjNB1hwenq45YYOAhPTwOpFI0kxyRazc",
  46. * "user": {
  47. * "id": 1,
  48. * "name": "15888888888",
  49. * "email": "abcdefg@gmail.com",
  50. * "phone": "15888888888",
  51. * "avatar": null,
  52. * "last_ip": null,
  53. * "created_at": "2016-09-30 00:45:13",
  54. * "updated_at": "2016-09-29 16:43:36"
  55. * }
  56. * }
  57. * }
  58. * @apiErrorExample {json} Error-Response:
  59. * HTTP/1.1 400 Bad Request
  60. * {
  61. * "state": false,
  62. * "code": 1000,
  63. * "message": "传入参数不正确",
  64. * "data": null or []
  65. * }
  66. * 可能出现的错误代码:
  67. * 1000 CLIENT_WRONG_PARAMS 传入参数不正确
  68. * 1102 INCORRECT_USER_OR_PASS 用户名或密码不正确
  69. */
  70. public function login(Request $request) {
  71. $validator = Validator::make($request->all(),
  72. [
  73. 'code' => 'required',
  74. 'nickname' => 'required',
  75. 'avatar' => 'required',
  76. 'appid' => 'required',
  77. ],
  78. [
  79. 'code.required' => '登录凭证不存在',
  80. 'nickname.required' => '微信昵称不存在',
  81. 'avatar.required' => '微信头像不存在',
  82. 'appid.required' => 'appid不存在',
  83. ]
  84. );
  85. if ($validator->fails()) {
  86. return $this->validatorError($validator->messages()->all(),ErrorCode::CLIENT_WRONG_PARAMS);
  87. }
  88. $js_code = $request->input('code');
  89. $nickname = $request->input('nickname');
  90. $avatar = $request->input('avatar');
  91. $appid = $request->input('appid');
  92. \Log::info('js_code:'.$js_code.' avatar:'.$avatar.' nickname:'.$nickname);
  93. $info =AppInfoModel::where('appid',$appid)->first();
  94. if(empty($info)) return $this->error(ErrorCode::APPID_NOT_EXIST);
  95. $secret = $info->appsecret;
  96. $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$js_code."&grant_type=authorization_code";
  97. $weixin = file_get_contents($url); //file_get_contents获取指定路由返回的数据
  98. $array = json_decode($weixin,true); //对JSON格式的字符串进行编码
  99. // $array = get_object_vars($jsondecode);//转换成数组
  100. if (!isset($array['openid'])) {
  101. \Log::info($url);
  102. \Log::info($array);
  103. return $this->error(102, '服务器错误');
  104. }
  105. $openid = $array['openid'];//输出openid
  106. $user = WxUserInfoModel::where('openid', $openid)->first();
  107. if (!$user) {
  108. //注册
  109. $data['appid'] = $appid;
  110. $data['openid'] = $openid;
  111. $data['nickname'] = $nickname;
  112. $data['avatar'] = $avatar;
  113. $res = WxUserInfoModel::create($data);
  114. if (!$res) return $this->error(1000, 'error');
  115. $user = $res;
  116. }
  117. \Log::info($user);
  118. $token = $user->createToken("user_".$user->id)->accessToken;
  119. return $this->api(compact('user', 'token'));
  120. }
  121. }