海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.2 KiB

4 years ago
4 years ago
4 years ago
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Agent;
  5. use App\Models\User;
  6. use EasyWeChat\Factory;
  7. use EasyWeChat\Kernel\Exceptions\DecryptException;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Cache;
  11. /**
  12. * 用户
  13. * Class UserController
  14. * @package App\Http\Controllers\Api
  15. */
  16. class UserController extends Controller
  17. {
  18. //获取用户信息
  19. public function info()
  20. {
  21. $user = User::find($this->user_id);
  22. return $this->success($user);
  23. }
  24. //解密用户信息
  25. public function profile(Request $request)
  26. {
  27. $formData = $request->only(['iv', 'encryptedData']);
  28. $request->validate([
  29. 'iv' => 'required',
  30. 'encryptedData' => 'required',
  31. ], [
  32. '*.required' => '参数缺失'
  33. ]);
  34. $agent = Agent::query()->find($this->agent_id); //代理商数据
  35. $config = config('wechat.mini_program.default');
  36. $config = array_merge($config, [
  37. 'app_id' => $agent->appid,
  38. 'secret' => $agent->appsecret,
  39. ]);
  40. $session = Cache::get('session_key_' . $this->user_id);
  41. if (!$session) {
  42. return $this->error('无效的session,请重新登录');
  43. }
  44. $app = Factory::miniProgram($config);
  45. try {
  46. $decryptedData = $app->encryptor->decryptData($session, $formData['iv'], $formData['encryptedData']);
  47. $user = User::find($this->user_id);
  48. if (!empty($decryptedData['nickName'])) {
  49. $user->nickname = $decryptedData['nickName'];
  50. }
  51. if (!empty($decryptedData['avatarUrl'])) {
  52. $user->avatar = $decryptedData['avatarUrl'];
  53. }
  54. if (!empty($decryptedData['purePhoneNumber'])) {
  55. $user->mobile = $decryptedData['purePhoneNumber'];
  56. }
  57. $user->save();
  58. } catch (\Exception | DecryptException $e) {
  59. return $this->error($e->getMessage());
  60. }
  61. $user->token = request()->header('Authentication');
  62. return $this->success($user);
  63. }
  64. public function bindingMobile(Request $request)
  65. {
  66. $request->validate([
  67. 'mobile' => 'required|int|between:10000000000,19999999999',
  68. ], [
  69. '*.required' => '参数异常'
  70. ]);
  71. $userId = $this->user_id;
  72. $user = User::find($userId);
  73. $user->mobile = Request('mobile',0);
  74. if ($user->save()) {
  75. return $this->success($user);
  76. } else {
  77. return $this->error('绑定失败',407);
  78. }
  79. }
  80. }