FinanceCheckController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. DB::table('tixian_records')
  68. ->where([
  69. 'id' => $request->input('id'),
  70. 'status' => 1
  71. ])->update([
  72. 'status' => $request->input('status'),
  73. 'updated_at' => date('Y-m-d H:i:s')
  74. ]);
  75. return 'ok';
  76. }
  77. /**
  78. * 打款
  79. * @param Request $request
  80. */
  81. public function remit(Request $request) {
  82. $this->validate($request, [
  83. 'status' => 'required|in:4,5',
  84. 'id' => 'required',
  85. 'pay_channel' => 'required',
  86. 'pay_no' => 'required_if:status,4',
  87. 'remark' => 'nullable|string|max:256'
  88. ]);
  89. DB::table('tixian_records')
  90. ->where([
  91. 'id' => $request->input('id'),
  92. 'status' => 3
  93. ])->update([
  94. 'updated_at' => date('Y-m-d H:i:s'),
  95. 'status' => $request->input('status'),
  96. 'pay_channel' => $request->input('pay_channel'),
  97. 'pay_no' => $request->input('pay_no'),
  98. 'remark' => $request->input('remark')
  99. ]);
  100. return 'ok';
  101. }
  102. /**
  103. * 商户的账户余额信息
  104. * @param Request $request
  105. * @return object|null
  106. * @throws \Illuminate\Validation\ValidationException
  107. */
  108. public function getShanghuAccountInfo(Request $request) {
  109. $this->validate($request, [
  110. 'company_uid' => 'required'
  111. ]);
  112. $accountInfo = CompanyUserMoneyService::userMoneyInfo($request->input('company_uid'));
  113. $accountInfo->total_jiesuan = bcsub($accountInfo->total_income, $accountInfo->total_tuikuan, 2);
  114. return $accountInfo;
  115. }
  116. }