WalletController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Http\Controllers\Coach;
  3. use App\Http\Controllers\Controller;
  4. use App\Services\Coach\WalletService;
  5. use App\Traits\ResponseTrait;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Auth;
  8. /**
  9. * @group 技师端
  10. *
  11. * 钱包相关的API接口
  12. */
  13. class WalletController extends Controller
  14. {
  15. use ResponseTrait;
  16. protected WalletService $service;
  17. public function __construct(WalletService $service)
  18. {
  19. $this->service = $service;
  20. }
  21. /**
  22. * [钱包]获取钱包信息
  23. *
  24. * @description 获取技师钱包余额和收入统计信息
  25. *
  26. * @authenticated
  27. *
  28. * @response {
  29. * "data": {
  30. * "balance": "1000.00",
  31. * "frozen_amount": "0.00",
  32. * "total_income": "5000.00",
  33. * "total_withdraw": "4000.00",
  34. * "today_income": "100.00",
  35. * "month_income": "2000.00",
  36. * "last_month_income": "3000.00"
  37. * }
  38. * }
  39. */
  40. public function getWallet()
  41. {
  42. return $this->success($this->service->getWallet(Auth::user()->id));
  43. }
  44. /**
  45. * [钱包]获取钱包流水记录
  46. *
  47. * @description 获取技师钱包的收支明细记录
  48. *
  49. * @authenticated
  50. *
  51. * @queryParam type integer 记录类型(1:收入 2:支出) Example: 1
  52. * @queryParam start_date date 开始日期 Example: 2024-01-01
  53. * @queryParam end_date date 结束日期 Example: 2024-03-21
  54. * @queryParam page integer 页码 Example: 1
  55. * @queryParam per_page integer 每页数量 Example: 10
  56. *
  57. * @response {
  58. * "data": {
  59. * "items": [
  60. * {
  61. * "id": 1,
  62. * "amount": "100.00",
  63. * "type": 1,
  64. * "remark": "订单收入",
  65. * "created_at": "2024-03-21 10:00:00"
  66. * }
  67. * ],
  68. * "total": 100
  69. * }
  70. * }
  71. */
  72. public function getWalletRecords(Request $request)
  73. {
  74. $params = $request->validate([
  75. 'type' => 'nullable|integer|in:1,2',
  76. 'start_date' => 'nullable|date',
  77. 'end_date' => 'nullable|date|after_or_equal:start_date',
  78. 'page' => 'nullable|integer|min:1',
  79. 'per_page' => 'nullable|integer|min:1|max:50',
  80. ]);
  81. return $this->success($this->service->getWalletRecords(Auth::user()->id, $params));
  82. }
  83. }