SettlementController.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace App\Http\Controllers\Settlement;
  3. use App\Consts\BaseConst;
  4. use App\Consts\ErrorConst;
  5. use App\Libs\ApiResponse;
  6. use App\Libs\Utils;
  7. use App\Services\Settlement\SettlementService;
  8. use App\Transformer\Settlement\SettlementTransformer;
  9. use App\Exceptions\ApiException;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Routing\Controller as BaseController;
  12. class SettlementController extends BaseController
  13. {
  14. use ApiResponse;
  15. private $settlementService;
  16. public function __construct(
  17. SettlementService $settlementService
  18. )
  19. {
  20. $this->settlementService = $settlementService;
  21. }
  22. /**
  23. * 结算信息-汇总数据
  24. *
  25. * @return mixed
  26. */
  27. public function billsStat()
  28. {
  29. $result = $this->settlementService->billsStat();
  30. return $this->success($result);
  31. }
  32. /**
  33. * 结算列表
  34. *
  35. * @param Request $request
  36. * @return mixed
  37. * @throws ApiException
  38. */
  39. public function bills(Request $request)
  40. {
  41. $all = $request->only('date_range', 'export');
  42. // 时间判断
  43. $dateRange = getProp($all, 'date_range');
  44. if ($dateRange) {
  45. [$startDate, $endDate] = explode(',', $dateRange);
  46. // 开始日期不能大于结束日期
  47. if ($startDate > $endDate) {
  48. Utils::throwError(ErrorConst::DATE_START_GREATER_THAN_END);
  49. }
  50. // 不能选择近七日时间
  51. if ($endDate > date('Y-m-d', strtotime('-' . BaseConst::DATE_RANGE_DAYS . ' days'))) {
  52. Utils::throwError(ErrorConst::DATE_RANGE_LESS_THAN_7DAY);
  53. }
  54. }
  55. $result = $this->settlementService->bills($all);
  56. return $this->success($result, [new SettlementTransformer(), 'buildBills']);
  57. }
  58. /**
  59. * 结算单-订单明细
  60. *
  61. * @param Request $request
  62. * @return mixed
  63. * @throws ApiException
  64. */
  65. public function billOrders(Request $request)
  66. {
  67. $date = trim($request->get('date'));
  68. if (empty($date)) {
  69. Utils::throwError(ErrorConst::PARAM_ERROR_CODE);
  70. }
  71. $result = $this->settlementService->billOrders($date);
  72. return $this->paginate($result, [new SettlementTransformer(), 'buildBillOrders']);
  73. }
  74. /**
  75. * 提现列表
  76. *
  77. * @param Request $request
  78. * @return mixed
  79. */
  80. public function withdrawCashes(Request $request)
  81. {
  82. $all = $request->only('date_range', 'status');
  83. $result = $this->settlementService->withdrawCashes($all);
  84. return $this->success($result, [new SettlementTransformer(), 'buildWithdrawCashes']);
  85. }
  86. /**
  87. * 提现
  88. *
  89. * @param Request $request
  90. * @return mixed
  91. * @throws ApiException
  92. */
  93. public function applyWithDraw(Request $request)
  94. {
  95. $all = $request->only('amount', 'card_id', 'is_company');
  96. $result = $this->settlementService->applyWithDraw($all);
  97. return $this->success($result);
  98. }
  99. }