FinanceCheckController.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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','tixian_records.ticket_link',
  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. 'remark' => 'nullable|string|max:140'
  67. ]);
  68. $record = DB::table('tixian_records')
  69. ->where([
  70. 'id' => $request->input('id'),
  71. 'status' => 1
  72. ])->first();
  73. if(!$record) {
  74. CommonBusinessException::throwError(Errors::TIXIAN_RECORD_NOT_EXISTS);
  75. }
  76. $before = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  77. DB::table('tixian_records')
  78. ->where([
  79. 'id' => $request->input('id'),
  80. 'status' => 1
  81. ])->update([
  82. 'status' => $request->input('status'),
  83. 'updated_at' => date('Y-m-d H:i:s'),
  84. 'remark' => $request->input('remark', ''),
  85. ]);
  86. $after = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  87. if(2 == $request->input('status')) {
  88. CompanyUserMoneyService::log($record->company_uid, ConstService::MONEY_CHANGE_TYPE_CHECK_FAIL, $before, $after);
  89. }
  90. return 'ok';
  91. }
  92. /**
  93. * 打款
  94. * @param Request $request
  95. */
  96. public function remit(Request $request) {
  97. $this->validate($request, [
  98. 'status' => 'required|in:4,5',
  99. 'id' => 'required',
  100. 'pay_channel' => 'required',
  101. 'pay_no' => 'required_if:status,4',
  102. 'remark' => 'nullable|string|max:256'
  103. ]);
  104. $record = DB::table('tixian_records')
  105. ->where([
  106. 'id' => $request->input('id'),
  107. 'status' => 3
  108. ])->first();
  109. if(!$record) {
  110. CommonBusinessException::throwError(Errors::TIXIAN_RECORD_NOT_EXISTS);
  111. }
  112. $before = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  113. DB::table('tixian_records')
  114. ->where([
  115. 'id' => $request->input('id'),
  116. 'status' => 3
  117. ])->update([
  118. 'updated_at' => date('Y-m-d H:i:s'),
  119. 'status' => $request->input('status'),
  120. 'pay_channel' => $request->input('pay_channel'),
  121. 'pay_no' => $request->input('pay_no', ''),
  122. 'remark' => $request->input('remark', '')
  123. ]);
  124. $after = CompanyUserMoneyService::userMoneyInfo($record->company_uid);
  125. if(4 == $request->input('status')) {
  126. DB::table('company_user_money')
  127. ->where(['company_uid' => $record->company_uid])
  128. ->increment('total_dakuan', $record->tixian_money);
  129. CompanyUserMoneyService::log($record->company_uid,
  130. ConstService::MONEY_CHANGE_TYPE_CHECK_AND_DAKUAN_SUCCESS, $before, $after);
  131. } else {
  132. CompanyUserMoneyService::log($record->company_uid,
  133. ConstService::MONEY_CHANGE_TYPE_CHECK_SUCCESS_DAKUAN_FAIL, $before, $after);
  134. }
  135. return 'ok';
  136. }
  137. /**
  138. * 商户的账户余额信息
  139. * @param Request $request
  140. * @return object|null
  141. * @throws \Illuminate\Validation\ValidationException
  142. */
  143. public function getShanghuAccountInfo(Request $request) {
  144. $this->validate($request, [
  145. 'company_uid' => 'required'
  146. ]);
  147. $accountInfo = CompanyUserMoneyService::userMoneyInfo($request->input('company_uid'));
  148. $accountInfo->total_jiesuan = bcsub($accountInfo->total_income, $accountInfo->total_tuikuan, 2);
  149. return $accountInfo;
  150. }
  151. }