UserController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. declare(strict_types=1);
  3. namespace SixShop\Wechat\Controller;
  4. use app\model\User;
  5. use SixShop\Core\Request;
  6. use SixShop\Wechat\Entity\ExtensionWechatUserEntity;
  7. use SixShop\Wechat\Service\MiniApp;
  8. use think\Response;
  9. use function SixShop\Core\success_response;
  10. use function SixShop\Core\throw_logic_exception;
  11. class UserController
  12. {
  13. public function phoneNumber(Request $request, ExtensionWechatUserEntity $wechatUserEntity): Response
  14. {
  15. $code = $request->get('code/s');
  16. $user = User::find($request->userID);
  17. if ($user->mobile) {
  18. throw_logic_exception('手机号已绑定');
  19. }
  20. $phoneInfo = $wechatUserEntity->getPhoneNumber($code);
  21. $mobileUser = User::where(['mobile' => $phoneInfo['phoneNumber']])->findOrEmpty();
  22. if (!$mobileUser->isEmpty()) {
  23. if ($mobileUser->id != $request->userID) {
  24. throw_logic_exception('手机号已绑定其他账号');
  25. } else {
  26. throw_logic_exception('手机号已绑定');
  27. }
  28. }
  29. $user->mobile = $phoneInfo['phoneNumber'];
  30. $user->save();
  31. return success_response([
  32. 'mobile' => $user->mobile,
  33. ]);
  34. }
  35. public function session(Request $request): Response
  36. {
  37. $params = $request->get([
  38. 'code/s',
  39. 'appid/s' => null,
  40. ]);
  41. $miniApp = app()->make(MiniApp::class, [$params['appid']]);
  42. $utils = $miniApp->getUtils();
  43. $response = $utils->codeToSession($params['code']);
  44. return success_response($response);
  45. }
  46. public function delete(Request $request, ExtensionWechatUserEntity $wechatUserEntity): Response
  47. {
  48. $wechatUser = $wechatUserEntity->where('user_id', $request->userID)->findOrEmpty();
  49. if ($wechatUser->isEmpty()) {
  50. throw_logic_exception('未绑定微信');
  51. }
  52. return success_response($wechatUser->delete());
  53. }
  54. }