Payment.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/11/17
  6. * Time: 下午4:38
  7. */
  8. namespace App\Modules\Finance\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. /**
  11. * Class Payment 打款表
  12. * @package App\Modules\Finance\Models
  13. */
  14. class Payment extends Model
  15. {
  16. protected $table = 'payments';
  17. protected $fillable = ['withdraw_cash_id', 'amount', 'amount_person', 'remark','pay_time', 'pay_merchant_source', 'trade_no', 'status', 'is_company', 'pay_merchant_source_msg', 'pay_merchant_source_result'];
  18. /**
  19. * 保存打款信息
  20. * @param $withdraw_cash_id
  21. * @param $amount
  22. * @param $remark
  23. * @param $pay_merchant_source 支付渠道
  24. * @param $trade_no 交易流水号
  25. * @param $status 打款状态
  26. * @param $pay_merchant_source_msg 支付通道返回信息
  27. * @param int $is_company 0:私人; 1:公司
  28. * @param int $amount_person 人工打款金额
  29. * @return mixed
  30. */
  31. public static function addPayment($withdraw_cash_id, $amount, $remark, $pay_merchant_source, $trade_no, $status, $pay_merchant_source_msg, $is_company = 0, $amount_person = 0) {
  32. $dataPayment['withdraw_cash_id'] = $withdraw_cash_id;
  33. $dataPayment['amount'] = $amount;
  34. $dataPayment['remark'] = $remark;
  35. $dataPayment['pay_time'] = date('Y-m-d H:i:s');
  36. $dataPayment['pay_merchant_source'] = $pay_merchant_source;
  37. $dataPayment['trade_no'] = $trade_no;
  38. $dataPayment['status'] = $status;
  39. $dataPayment['pay_merchant_source_msg'] = $pay_merchant_source_msg;
  40. $dataPayment['is_company'] = $is_company;
  41. $dataPayment['amount_person'] = $amount_person;
  42. $payment = Payment::create($dataPayment);
  43. return $payment;
  44. }
  45. /**
  46. * 更新打款状态
  47. * @param $id
  48. * @param $status
  49. * @param $pay_merchant_source_msg
  50. * @param $pay_merchant_source_result
  51. * @return mixed
  52. */
  53. public static function updatePaymentStatus($id, $status = '', $pay_merchant_source_msg, $pay_merchant_source_result) {
  54. $dataPayment = self::find($id);
  55. if(!empty($dataPayment)) {
  56. if($status) {
  57. $dataPayment['status'] = $status;
  58. }
  59. $dataPayment['pay_merchant_source_msg'] = $pay_merchant_source_msg;
  60. $dataPayment['pay_merchant_source_result'] = $pay_merchant_source_result;
  61. $dataPayment = $dataPayment->save();
  62. }
  63. return $dataPayment;
  64. }
  65. /**
  66. * 获取打款列表
  67. * @param $withdraw_cash_id
  68. * @param string $start_date
  69. * @param string $end_date
  70. * @param string $status
  71. * @param bool $is_all
  72. * @return mixed
  73. */
  74. static function getList($withdraw_cash_id, $start_date='',$end_date='', $status = '', $is_all=false) {
  75. $search_object = self::orderBy('pay_time','desc');
  76. if($withdraw_cash_id) {
  77. $search_object->where('withdraw_cash_id', $withdraw_cash_id);
  78. }
  79. if($start_date) $search_object->where('pay_time','>=',$start_date);
  80. if($end_date) $search_object->where('pay_time','<=',$end_date);
  81. if($status) {
  82. $search_object->where('status',$status);
  83. }
  84. if($is_all)
  85. {
  86. return $search_object->get();
  87. }else{
  88. return $search_object->paginate();
  89. }
  90. }
  91. /**
  92. * 更新打款状态
  93. * @param $id
  94. * @param $status
  95. * @return mixed
  96. */
  97. public static function updateSimplePaymentStatus($id, $status)
  98. {
  99. return self::where('id', $id)->update(['status' => $status]);
  100. }
  101. /**
  102. * 打款详情列表
  103. * @param array $params[]
  104. * withdraw_cash_id : 提现ID
  105. * channel_id:渠道ID 可选
  106. * channel_name:渠道名称 可选
  107. * account_name: 打款人姓名
  108. * start_date:开始时间 可选
  109. * end_date:结束时间 可选
  110. * end_date:结束时间 可选
  111. * search_name: 搜索名称
  112. * status: 状态 查看接口 WithdrawCashService::getWithdrawCashStatusList
  113. * @return mixed
  114. */
  115. static function getListDetail($params=[]) {
  116. $search_object = self::select([
  117. 'payments.id',
  118. 'payments.withdraw_cash_id as cash_id',
  119. 'payments.amount',
  120. 'payments.amount_person',
  121. 'payments.pay_time',
  122. 'payments.pay_merchant_source',
  123. 'payments.trade_no',
  124. 'payments.status as payments_status',
  125. 'payments.is_company',
  126. 'payments.pay_merchant_source_result',
  127. 'payments.pay_merchant_source_msg',
  128. 'withdraw_cashes.distribution_channel_id as channel_id',
  129. 'withdraw_cashes.distribution_channel_name as channel_name',
  130. 'withdraw_cashes.status as wc_status',
  131. 'withdraw_cashes.remark',
  132. 'withdraw_cashes.check_user_id',
  133. 'withdraw_cashes.check_user_name',
  134. 'withdraw_cashes.amount as withdraw_cashes_amount',
  135. 'withdraw_cashes.tallage as withdraw_cashes_tallage',
  136. 'cash_accounts.account_name',
  137. 'cash_accounts.identity_card',
  138. 'cash_accounts.card_number',
  139. 'cash_accounts.account_bank',
  140. 'cash_accounts.bank',
  141. 'cash_accounts.province',
  142. 'cash_accounts.status as ca_status '
  143. ])
  144. ->leftjoin('withdraw_cashes','withdraw_cashes.id','=','payments.withdraw_cash_id')
  145. ->leftjoin('cash_accounts','cash_accounts.distribution_channel_id','=','withdraw_cashes.distribution_channel_id')
  146. ->orderBy('payments.id','desc');
  147. if(isset($params['withdraw_cash_id']) && $params['withdraw_cash_id']) $search_object->where('payments.withdraw_cash_id', $params['withdraw_cash_id']);
  148. if(isset($params['channel_id']) && $params['channel_id']) $search_object->where('withdraw_cashes.distribution_channel_id', $params['channel_id']);
  149. if(isset($params['search_name']) && $params['search_name']) {
  150. $search_object->where(function ($query) use($params) {
  151. $query->where('withdraw_cashes.distribution_channel_name','like', "%".$params['search_name']."%")
  152. ->orWhere('cash_accounts.account_name', 'like', "%".$params['search_name']."%");
  153. });
  154. }
  155. if(isset($params['channel_name']) && $params['channel_name']) $search_object->where('withdraw_cashes.distribution_channel_name','like', "%".$params['channel_name']."%");
  156. if(isset($params['account_name']) && $params['account_name']) $search_object->where('cash_accounts.account_name', 'like', "%".$params['account_name']."%");
  157. if(isset($params['start_date']) && $params['start_date']) $search_object->where('payments.pay_time','>=', $params['start_date']);
  158. if(isset($params['end_date']) && $params['end_date']) $search_object->where('payments.pay_time','<=', $params['end_date']);
  159. if(isset($params['is_company']) && is_numeric($params['is_company'])) $search_object->where('payments.is_company', $params['is_company']);
  160. if(isset($params['status']) && $params['status']) {
  161. $search_object->whereIn('withdraw_cashes.status', $params['status']);
  162. }
  163. return $search_object->paginate();
  164. }
  165. }