UserController.php 2.2 KB

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