AccountService.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace App\Services\Client;
  3. use App\Models\MemberUser;
  4. use App\Models\MemberSocialAccount;
  5. use App\Models\SysConfig;
  6. use App\Models\Wallet;
  7. use App\Models\CoachUser;
  8. use App\Models\WalletWithdrawRecord;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Cache;
  11. use Illuminate\Support\Facades\DB;
  12. class AccountService
  13. {
  14. /**
  15. * 发送验证码
  16. */
  17. public function sendVerifyCode(string $mobile)
  18. {
  19. // 生成验证码
  20. $code = mt_rand(100000, 999999);
  21. // 保存验证码到缓存
  22. Cache::put("verify_code:{$mobile}", $code, 300);
  23. // TODO: 调用短信服务发送验证码
  24. return ['code' => $code];
  25. }
  26. /**
  27. * 用户登录
  28. */
  29. public function login(string $mobile, string $code)
  30. {
  31. // 验证验证码
  32. $cacheCode = Cache::get("verify_code:{$mobile}");
  33. if (!$cacheCode || $cacheCode != $code) {
  34. throw new \Exception('验证码错误');
  35. }
  36. // 查找或创建用户
  37. $user = MemberUser::firstOrCreate(
  38. ['mobile' => $mobile],
  39. [
  40. 'state' => 'enable',
  41. 'register_area' => request()->header('area_code')
  42. ]
  43. );
  44. // 生成token
  45. $token = $user->createToken('auth-token')->plainTextToken;
  46. return [
  47. 'token' => $token,
  48. 'user' => $user
  49. ];
  50. }
  51. /**
  52. * 微信登录
  53. */
  54. public function wxLogin(string $openid)
  55. {
  56. // 查找或创建微信用户
  57. $socialAccount = MemberSocialAccount::firstOrCreate(
  58. [
  59. 'platform' => 'WECHAT',
  60. 'social_id' => $openid
  61. ]
  62. );
  63. $user = $socialAccount->user;
  64. if (!$user) {
  65. $user = MemberUser::create([
  66. 'state' => 'enable',
  67. 'register_area' => request()->header('area_code')
  68. ]);
  69. $socialAccount->update(['user_id' => $user->id]);
  70. }
  71. // 生成token
  72. $token = $user->createToken('auth-token')->plainTextToken;
  73. return [
  74. 'token' => $token,
  75. 'user' => $user
  76. ];
  77. }
  78. /**
  79. * 用户退出
  80. */
  81. public function logout()
  82. {
  83. Auth::user()->tokens()->delete();
  84. return ['message' => '退出成功'];
  85. }
  86. /**
  87. * 用户注销
  88. */
  89. public function deleteAccount()
  90. {
  91. $user = Auth::user();
  92. if (!$user || $user->state !== 'enable') {
  93. throw new \Exception('用户状态异常');
  94. }
  95. $user->state = 'disable';
  96. $user->save();
  97. $user->delete();
  98. $user->tokens()->delete();
  99. return ['message' => '账号已注销'];
  100. }
  101. }