WechatAuthenticatedController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * @Name
  4. * @Description
  5. * @Author 刘学玺
  6. * @Date 2024/3/25 16:47
  7. */
  8. namespace App\Http\Controllers\Frontend\Client\Auth;
  9. use App\Exceptions\ApiException;
  10. use App\Http\Controllers\Controller;
  11. use App\Http\Services\Frontend\Client\Auth\WechatAuthenticatedService;
  12. use App\Models\Member\User;
  13. use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
  14. use Illuminate\Http\JsonResponse;
  15. use Illuminate\Http\Request;
  16. use Illuminate\Http\Response;
  17. class WechatAuthenticatedController extends Controller
  18. {
  19. protected WechatAuthenticatedService $wechatAuthenticatedService;
  20. public function __construct(WechatAuthenticatedService $wechatAuthenticatedService)
  21. {
  22. $this->wechatAuthenticatedService = $wechatAuthenticatedService;
  23. }
  24. /**
  25. * Notes :
  26. * Method : 公众号授权
  27. * @param Request $request
  28. * @return JsonResponse
  29. * @throws InvalidArgumentException
  30. */
  31. public function oauth(Request $request): JsonResponse
  32. {
  33. $params = $request->only(['redirect_url', 'scopes']);
  34. return self::success($this->wechatAuthenticatedService->oauth($params));
  35. }
  36. /**
  37. * Notes :
  38. * Method : 公众号授权回调
  39. * @param Request $request
  40. * @return JsonResponse
  41. * @throws InvalidArgumentException
  42. */
  43. public function callback(Request $request): JsonResponse
  44. {
  45. $params = $request->only(['code']);
  46. $res = $this->wechatAuthenticatedService->callback($params);
  47. return self::success($res);
  48. }
  49. /**
  50. * @throws ApiException
  51. */
  52. public function store(Request $request): JsonResponse
  53. {
  54. $params = $request->only(['open_id', 'auto_register']);
  55. $res = $this->wechatAuthenticatedService->store($params);
  56. return self::success($res);
  57. }
  58. /**
  59. * @throws ApiException
  60. */
  61. public function bind(Request $request): JsonResponse
  62. {
  63. $params = $request->only(['mobile', 'code', 'open_id']);
  64. $this->wechatAuthenticatedService->bind($params);
  65. return self::success(true);
  66. }
  67. // 发送短信
  68. public function send(Request $request): JsonResponse
  69. {
  70. $request->validate([
  71. 'mobile' => ['required', 'regex:/^1[345789][0-9]{9}$/']
  72. ], [
  73. 'mobile.required' => '手机号不能为空!',
  74. 'mobile.regex' => '手机号码格式不正确!'
  75. ]);
  76. $this->wechatAuthenticatedService->send($request->only(['mobile']));
  77. return self::success(true);
  78. }
  79. /**
  80. * Notes :
  81. * Method : 公众号签名
  82. * @throws ApiException
  83. */
  84. public function signature(Request $request): JsonResponse
  85. {
  86. $res = $this->wechatAuthenticatedService->getSignature($request->only(['url']));
  87. return self::success($res);
  88. }
  89. }