FinanceCheckController.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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\BusinessmanService;
  10. use Modules\Jiesuan\Services\CompanyUserMoneyService;
  11. use Modules\Jiesuan\Services\ConstService;
  12. use Modules\User\Http\Controllers\UserTrait;
  13. class FinanceCheckController extends CatchController
  14. {
  15. use UserTrait;
  16. use ValidatesRequests;
  17. /**
  18. * 列表
  19. * @param Request $request
  20. */
  21. public function list(Request $request) {
  22. $this->validate($request, [
  23. 'status' => 'required|in:1,2,3,4,5'
  24. ]);
  25. $tixianStartAt = $request->input('tixian_start_at');
  26. $tixianEndAt = $request->input('tixian_end_at');
  27. $companyUid = $request->input('company_uid');
  28. $owner_name = $request->input('owner_name');
  29. $isExport = $request->input('is_export', false);
  30. $sql = DB::table('tixian_records')
  31. ->leftJoin('bank_cards','tixian_records.bank_card_id','bank_cards.id')
  32. ->where('tixian_records.status', $request->input('status'))
  33. ->when($tixianStartAt, function ($query, $tixianStartAt){
  34. return $query->where('tixian_records.created_at', '>=', $tixianStartAt);
  35. })->when($tixianEndAt, function ($query, $tixianEndAt){
  36. return $query->where('tixian_records.created_at', '<=', $tixianEndAt . ' 23:59:59');
  37. })->when($owner_name, function ($query, $owner_name) {
  38. return $query->where('bank_cards.owner_name', 'like', '%'. $owner_name . '%');
  39. })->when($companyUid, function ($query, $companyUid) {
  40. return $query->where('tixian_records.company_uid', $companyUid);
  41. })
  42. ->select('tixian_records.id', 'tixian_records.company_uid', 'bank_cards.owner_name',
  43. 'tixian_records.status', 'bank_cards.business_id', 'tixian_records.tixian_money', 'tixian_records.created_at',
  44. 'bank_cards.card_no', 'bank_cards.name_of_payee', 'tixian_records.remark', 'tixian_records.updated_at')
  45. ->orderBy('id', 'desc');
  46. if($isExport) {
  47. $result = $sql->get();
  48. } else {
  49. $result = $sql->paginate($request->input('limit', 15));
  50. }
  51. $businessmans = BusinessmanService::list()->keyBy('id');
  52. foreach ($result as $item) {
  53. $item->business_str = $businessmans->get($item->business_id)->username ?? '';
  54. $item->status_str = ConstService::TIXIAN_CHECK_STATUS[$item->status] ?? '';
  55. }
  56. return $result;
  57. }
  58. /**
  59. * 审核
  60. * @param Request $request
  61. */
  62. public function check(Request $request) {
  63. $this->validate($request, [
  64. 'status' => 'required|in:2,3',
  65. 'id' => 'required'
  66. ]);
  67. $record = DB::table('tixian_records')
  68. ->where([
  69. 'id' => $request->input('id'),
  70. 'status' => 1
  71. ])->first();
  72. if(!$record) {
  73. CommonBusinessException::throwError(Errors::TIXIAN_RECORD_NOT_EXISTS);
  74. }
  75. $before = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  76. DB::table('tixian_records')
  77. ->where([
  78. 'id' => $request->input('id'),
  79. 'status' => 1
  80. ])->update([
  81. 'status' => $request->input('status'),
  82. 'updated_at' => date('Y-m-d H:i:s')
  83. ]);
  84. $after = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  85. if(2 == $request->input('status')) {
  86. CompanyUserMoneyService::log($record->company_uid, ConstService::MONEY_CHANGE_TYPE_CHECK_FAIL, $before, $after);
  87. }
  88. return 'ok';
  89. }
  90. /**
  91. * 打款
  92. * @param Request $request
  93. */
  94. public function remit(Request $request) {
  95. $this->validate($request, [
  96. 'status' => 'required|in:4,5',
  97. 'id' => 'required',
  98. 'pay_channel' => 'required',
  99. 'pay_no' => 'required_if:status,4',
  100. 'remark' => 'nullable|string|max:256'
  101. ]);
  102. $record = DB::table('tixian_records')
  103. ->where([
  104. 'id' => $request->input('id'),
  105. 'status' => 3
  106. ])->first();
  107. if(!$record) {
  108. CommonBusinessException::throwError(Errors::TIXIAN_RECORD_NOT_EXISTS);
  109. }
  110. $before = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  111. DB::table('tixian_records')
  112. ->where([
  113. 'id' => $request->input('id'),
  114. 'status' => 3
  115. ])->update([
  116. 'updated_at' => date('Y-m-d H:i:s'),
  117. 'status' => $request->input('status'),
  118. 'pay_channel' => $request->input('pay_channel'),
  119. 'pay_no' => $request->input('pay_no'),
  120. 'remark' => $request->input('remark')
  121. ]);
  122. $after = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  123. if(4 == $request->input('status')) {
  124. DB::table('company_user_money')
  125. ->where(['company_uid' => $record->company_uid])
  126. ->increment('total_dakuan', $record->tixian_money);
  127. CompanyUserMoneyService::log($record->company_uid,
  128. ConstService::MONEY_CHANGE_TYPE_CHECK_AND_DAKUAN_SUCCESS, $before, $after);
  129. } else {
  130. CompanyUserMoneyService::log($record->company_uid,
  131. ConstService::MONEY_CHANGE_TYPE_CHECK_SUCCESS_DAKUAN_FAIL, $before, $after);
  132. }
  133. return 'ok';
  134. }
  135. /**
  136. * 商户的账户余额信息
  137. * @param Request $request
  138. * @return object|null
  139. * @throws \Illuminate\Validation\ValidationException
  140. */
  141. public function getShanghuAccountInfo(Request $request) {
  142. $this->validate($request, [
  143. 'company_uid' => 'required'
  144. ]);
  145. $accountInfo = CompanyUserMoneyService::userMoneyInfo($request->input('company_uid'));
  146. $accountInfo->total_jiesuan = bcsub($accountInfo->total_income, $accountInfo->total_tuikuan, 2);
  147. return $accountInfo;
  148. }
  149. }