UserController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zilongs
  5. * Date: 20-9-23
  6. * Time: 上午11:36
  7. */
  8. namespace App\Http\Controllers\Api\V1;
  9. use App\Models\Order;
  10. use App\Models\User;
  11. use App\Models\UserBalanceLog;
  12. use EasyWeChat\Factory;
  13. class UserController extends AuthController
  14. {
  15. public function userInfo()
  16. {
  17. $user = $this->user;
  18. unset($user['session_key']);
  19. return out($user);
  20. }
  21. public function getPhoneNumber()
  22. {
  23. $req = request()->post();
  24. $this->validate(request(), [
  25. 'iv' => 'required',
  26. 'encryptData' => 'required',
  27. ]);
  28. $user = $this->user;
  29. $app = Factory::miniProgram(config('config.wechat_small_program'));
  30. try {
  31. $decryptedData = $app->encryptor->decryptData($user['session_key'], $req['iv'], $req['encryptData']);
  32. } catch (\Exception $e) {
  33. return out(null, 10001, '获取手机号失败', $e->getMessage());
  34. }
  35. return out($decryptedData);
  36. }
  37. public function updateUser()
  38. {
  39. $req = request()->post();
  40. $this->validate(request(), [
  41. 'nickname' => 'max:100',
  42. 'avatar' => 'url',
  43. 'sex' => 'in:1,2',
  44. 'birthday' => 'date',
  45. 'latitude' => 'numeric',
  46. 'longitude' => 'numeric',
  47. ]);
  48. $user = $this->user;
  49. User::where('id', $user['id'])->update($req);
  50. return out();
  51. }
  52. public function userBalanceLog()
  53. {
  54. $user = $this->user;
  55. $data = UserBalanceLog::where('user_id', $user['id'])->orderBy('id', 'desc')->paginate();
  56. return out($data);
  57. }
  58. public function familyDocterList()
  59. {
  60. $user = $this->user;
  61. $order_ids = Order::where('user_id', $user['id'])->whereIn('order_status', [2, 3])->where('docter_id', '>', 0)->pluck('docter_id')->toArray();
  62. $data = Order::with(['docter.office', 'docter.qualification', 'orderPatient'])->select(['id', 'docter_id'])->whereIn('docter_id', $order_ids)->paginate();
  63. return out($data);
  64. }
  65. }