JiesuanController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace Modules\Jiesuan\Http\Controllers;
  3. use Catch\Base\CatchController;
  4. use Illuminate\Foundation\Validation\ValidatesRequests;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. use Modules\Common\Errors\Errors;
  8. use Modules\Common\Exceptions\CommonBusinessException;
  9. use Modules\Jiesuan\Services\CompanyUserMoneyService;
  10. use Modules\Jiesuan\Services\ConstService;
  11. use Modules\User\Http\Controllers\UserTrait;
  12. class JiesuanController extends CatchController
  13. {
  14. use UserTrait;
  15. use ValidatesRequests;
  16. /**
  17. * 结算记录
  18. * @param Request $request
  19. */
  20. public function list(Request $request) {
  21. $jiesuanDateStartAt = $request->input('jiesuan_date_start_at');
  22. $jiesuanDateEndAt = $request->input('jiesuan_date_end_at');
  23. $isExport = $request->input('is_export', 0);
  24. $sql = DB::table('jiesuan_records')
  25. ->where([
  26. 'company_uid' => $this->getCompanyUid($request),
  27. ])->when($jiesuanDateStartAt, function ($query, $jiesuanDateStartAt) {
  28. return $query->where('jiesuan_date', '>=', $jiesuanDateStartAt);
  29. })
  30. ->when($jiesuanDateEndAt, function ($query, $jiesuanDateEndAt) {
  31. return $query->where('jiesuan_date', '<=', $jiesuanDateEndAt . ' 23:59:59');
  32. })
  33. ->orderBy('jiesuan_date', 'desc')
  34. ->select('id', 'jiesuan_date', 'charge_money', 'tuikuan_money', 'share_rate', 'jiesuan_money', 'company_uid');
  35. if($isExport) {
  36. $results = $sql->get();
  37. } else {
  38. $results = $sql->paginate($request->input('limit', 15));
  39. }
  40. foreach ($results as $item) {
  41. $item->share_rate .= '%';
  42. }
  43. return $results;
  44. }
  45. /**
  46. * 账户金额详情
  47. * @param Request $request
  48. */
  49. public function accountInfo(Request $request) {
  50. $company_uid = $this->getLoginUserId();
  51. return CompanyUserMoneyService::userMoneyInfo($company_uid);
  52. }
  53. /**
  54. * 申请提现
  55. * @param Request $request
  56. */
  57. public function tixian(Request $request) {
  58. $this->validate($request, [
  59. 'bank_card_id' => 'required',
  60. 'tixian_money' => 'required|numeric|min:500'
  61. ]);
  62. $company_uid = $this->getLoginUserId();
  63. $now = date('Y-m-d H:i:s');
  64. if(DB::table('tixian_records')->where(['company_uid' => $company_uid])
  65. ->where('created_at', '>=', date('Y-m-d'))
  66. ->where('created_at', '<=', $now)
  67. ->exists()) {
  68. CommonBusinessException::throwError(Errors::TIXIAN_ONLY_ONCE_EVERY_DAY);
  69. }
  70. $tixianMoney = $request->input('tixian_money');
  71. $userMoneyInfo = CompanyUserMoneyService::userMoneyInfo($company_uid);
  72. if($tixianMoney > $userMoneyInfo->yue_money) {
  73. CommonBusinessException::throwError(Errors::TIXIAN_YUE_BUZU);
  74. }
  75. $bank_card_id = $request->input('bank_card_id');
  76. $bankCard = DB::table('bank_cards')->where(['id' => $bank_card_id, 'status' => 2])->first();
  77. if(!$bankCard) {
  78. CommonBusinessException::throwError(Errors::BANK_CARD_STATUS_ERROR);
  79. }
  80. DB::table('tixian_records')
  81. ->insert([
  82. 'tixian_money' => $tixianMoney,
  83. 'company_uid' => $company_uid,
  84. 'bank_card_id' => $bank_card_id,
  85. 'card_no' => $bankCard->card_no,
  86. 'name_of_payee' => $bankCard->name_of_payee,
  87. 'status' => 1,
  88. 'bank_name' => $bankCard->bank_name,
  89. 'sub_bank_name' => $bankCard->sub_bank_name,
  90. 'created_at' => $now,
  91. 'updated_at' => $now,
  92. ]);
  93. $afterUserMoneyInfo = CompanyUserMoneyService::userMoneyInfo($company_uid);
  94. CompanyUserMoneyService::log($company_uid, ConstService::MONEY_CHANGE_TYPE_USER_TIXIAN, $userMoneyInfo, $afterUserMoneyInfo);
  95. }
  96. /**
  97. * 提现记录
  98. * @param Request $request
  99. */
  100. public function listTixian(Request $request) {
  101. $company_uid = $this->getCompanyUid($request);
  102. $this->validate($request, [
  103. 'status' => 'nullable|integer|in:1,2,3,4,5'
  104. ]);
  105. $status = $request->input('status');
  106. $isExport = $request->input('is_export');
  107. $tixianStartAt = $request->input('tixian_start_at');
  108. $tixianEndAt = $request->input('tixian_end_at');
  109. $sql = DB::table('tixian_records')
  110. ->where([
  111. 'company_uid' => $company_uid,
  112. ])->when($status, function ($query, $status){
  113. return $query->where('status', $status);
  114. })->when($tixianStartAt, function ($query, $tixianStartAt) {
  115. return $query->where('created_at', '>=', $tixianStartAt);
  116. })->when($tixianEndAt, function ($query, $tixianEndAt) {
  117. return $query->where('created_at', '<=', $tixianEndAt. ' 23:59:59');
  118. })
  119. ->orderBy('id', 'desc');
  120. if($isExport) {
  121. $result = $sql->get();
  122. } else {
  123. $result = $sql->paginate($request->input('limit', 15));
  124. }
  125. foreach ($result as $item) {
  126. $item->status_str = ConstService::TIXIAN_CHECK_STATUS[$item->status] ?? '';
  127. }
  128. return $result;
  129. }
  130. private function getCompanyUid(Request $request) {
  131. if($this->isCompanyManager()) {
  132. return $this->getLoginUserId();
  133. } else {
  134. return $request->input('company_uid');
  135. }
  136. }
  137. public function updateTicket(Request $request,$id){
  138. $ticket = $request->post('ticket');
  139. if(empty($ticket)){
  140. CommonBusinessException::throwError(Errors::PARAM_EMPTY);
  141. }
  142. DB::table('tixian_records')->where('id',$id)->update([
  143. 'ticket_link'=>$ticket
  144. ]);
  145. return [];
  146. }
  147. }