海南旅游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.

108 lines
3.0 KiB

4 years ago
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\AdminSetting;
  5. use App\Models\Agent;
  6. use App\Models\User;
  7. use EasyWeChat\Factory;
  8. use EasyWeChat\Kernel\Exceptions\DecryptException;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\Cache;
  12. /**
  13. * 用户
  14. * Class UserController
  15. * @package App\Http\Controllers\Api
  16. */
  17. class UserController extends Controller
  18. {
  19. //获取用户信息
  20. public function info()
  21. {
  22. $user = User::find($this->user_id);
  23. return $this->success($user);
  24. }
  25. //解密用户信息
  26. public function profile(Request $request)
  27. {
  28. $formData = $request->only(['iv', 'encryptedData']);
  29. $request->validate([
  30. 'iv' => 'required',
  31. 'encryptedData' => 'required',
  32. ], [
  33. '*.required' => '参数缺失'
  34. ]);
  35. $agent = Agent::query()->find($this->agent_id); //代理商数据
  36. $session = Cache::get('session_key_' . $this->user_id);
  37. if (!$session) {
  38. return $this->error('无效的session,请重新登录');
  39. }
  40. // 如果有appsecret,使用原来的逻辑,否则使用第三方平台逻辑
  41. if ($agent['appsecret']) {
  42. $config = config('wechat.mini_program.default');
  43. $config = array_merge($config, [
  44. 'app_id' => $agent->appid,
  45. 'secret' => $agent->appsecret,
  46. ]);
  47. $app = Factory::miniProgram($config);
  48. } else {
  49. $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']);
  50. $config = [
  51. 'app_id' => $setting['service_appid'],
  52. 'secret' => $setting['service_appsecret'],
  53. 'token' => $setting['service_token'],
  54. 'aes_key' => $setting['service_aeskey'],
  55. ];
  56. $app = Factory::miniProgram($config);
  57. }
  58. try {
  59. $decryptedData = $app->encryptor->decryptData($session, $formData['iv'], $formData['encryptedData']);
  60. $user = User::find($this->user_id);
  61. if (!empty($decryptedData['nickName'])) {
  62. $user->nickname = $decryptedData['nickName'];
  63. }
  64. if (!empty($decryptedData['avatarUrl'])) {
  65. $user->avatar = $decryptedData['avatarUrl'];
  66. }
  67. if (!empty($decryptedData['purePhoneNumber'])) {
  68. $user->mobile = $decryptedData['purePhoneNumber'];
  69. }
  70. $user->unionid = $decryptedData['unionId'] ?? '';
  71. $user->country = $decryptedData['country'] ?? '';
  72. $user->province = $decryptedData['province'] ?? '';
  73. $user->city = $decryptedData['city'] ?? '';
  74. $user->gender = $decryptedData['gender'] ?? 0;
  75. $user->language = $decryptedData['language'] ?? '';
  76. $user->save();
  77. } catch (\Exception | DecryptException $e) {
  78. return $this->error($e->getMessage());
  79. }
  80. $user->token = request()->header('Authentication');
  81. return $this->success($user);
  82. }
  83. public function bindingMobile(Request $request)
  84. {
  85. $request->validate([
  86. 'mobile' => 'required|int|between:10000000000,19999999999',
  87. ], [
  88. '*.required' => '参数异常'
  89. ]);
  90. $userId = $this->user_id;
  91. $user = User::find($userId);
  92. $user->mobile = Request('mobile',0);
  93. if ($user->save()) {
  94. return $this->success($user);
  95. } else {
  96. return $this->error('绑定失败',407);
  97. }
  98. }
  99. }