123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- /**
- * Created by PhpStorm.
- * User: tandunzhao
- * Date: 2017/11/17
- * Time: 下午4:38
- */
- namespace App\Modules\Finance\Models;
- use Illuminate\Database\Eloquent\Model;
- /**
- * Class Payment 打款表
- * @package App\Modules\Finance\Models
- */
- class Payment extends Model
- {
- protected $table = 'payments';
- 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'];
- /**
- * 保存打款信息
- * @param $withdraw_cash_id
- * @param $amount
- * @param $remark
- * @param $pay_merchant_source 支付渠道
- * @param $trade_no 交易流水号
- * @param $status 打款状态
- * @param $pay_merchant_source_msg 支付通道返回信息
- * @param int $is_company 0:私人; 1:公司
- * @param int $amount_person 人工打款金额
- * @return mixed
- */
- 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) {
- $dataPayment['withdraw_cash_id'] = $withdraw_cash_id;
- $dataPayment['amount'] = $amount;
- $dataPayment['remark'] = $remark;
- $dataPayment['pay_time'] = date('Y-m-d H:i:s');
- $dataPayment['pay_merchant_source'] = $pay_merchant_source;
- $dataPayment['trade_no'] = $trade_no;
- $dataPayment['status'] = $status;
- $dataPayment['pay_merchant_source_msg'] = $pay_merchant_source_msg;
- $dataPayment['is_company'] = $is_company;
- $dataPayment['amount_person'] = $amount_person;
- $payment = Payment::create($dataPayment);
- return $payment;
- }
- /**
- * 更新打款状态
- * @param $id
- * @param $status
- * @param $pay_merchant_source_msg
- * @param $pay_merchant_source_result
- * @return mixed
- */
- public static function updatePaymentStatus($id, $status = '', $pay_merchant_source_msg, $pay_merchant_source_result) {
- $dataPayment = self::find($id);
- if(!empty($dataPayment)) {
- if($status) {
- $dataPayment['status'] = $status;
- }
- $dataPayment['pay_merchant_source_msg'] = $pay_merchant_source_msg;
- $dataPayment['pay_merchant_source_result'] = $pay_merchant_source_result;
- $dataPayment = $dataPayment->save();
- }
- return $dataPayment;
- }
- /**
- * 获取打款列表
- * @param $withdraw_cash_id
- * @param string $start_date
- * @param string $end_date
- * @param string $status
- * @param bool $is_all
- * @return mixed
- */
- static function getList($withdraw_cash_id, $start_date='',$end_date='', $status = '', $is_all=false) {
- $search_object = self::orderBy('pay_time','desc');
- if($withdraw_cash_id) {
- $search_object->where('withdraw_cash_id', $withdraw_cash_id);
- }
- if($start_date) $search_object->where('pay_time','>=',$start_date);
- if($end_date) $search_object->where('pay_time','<=',$end_date);
- if($status) {
- $search_object->where('status',$status);
- }
- if($is_all)
- {
- return $search_object->get();
- }else{
- return $search_object->paginate();
- }
- }
- /**
- * 更新打款状态
- * @param $id
- * @param $status
- * @return mixed
- */
- public static function updateSimplePaymentStatus($id, $status)
- {
- return self::where('id', $id)->update(['status' => $status]);
- }
- /**
- * 打款详情列表
- * @param array $params[]
- * withdraw_cash_id : 提现ID
- * channel_id:渠道ID 可选
- * channel_name:渠道名称 可选
- * account_name: 打款人姓名
- * start_date:开始时间 可选
- * end_date:结束时间 可选
- * end_date:结束时间 可选
- * search_name: 搜索名称
- * status: 状态 查看接口 WithdrawCashService::getWithdrawCashStatusList
- * @return mixed
- */
- static function getListDetail($params=[]) {
- $search_object = self::select([
- 'payments.id',
- 'payments.withdraw_cash_id as cash_id',
- 'payments.amount',
- 'payments.amount_person',
- 'payments.pay_time',
- 'payments.pay_merchant_source',
- 'payments.trade_no',
- 'payments.status as payments_status',
- 'payments.is_company',
- 'payments.pay_merchant_source_result',
- 'payments.pay_merchant_source_msg',
- 'withdraw_cashes.distribution_channel_id as channel_id',
- 'withdraw_cashes.distribution_channel_name as channel_name',
- 'withdraw_cashes.status as wc_status',
- 'withdraw_cashes.remark',
- 'withdraw_cashes.check_user_id',
- 'withdraw_cashes.check_user_name',
- 'withdraw_cashes.amount as withdraw_cashes_amount',
- 'withdraw_cashes.tallage as withdraw_cashes_tallage',
- 'cash_accounts.account_name',
- 'cash_accounts.identity_card',
- 'cash_accounts.card_number',
- 'cash_accounts.account_bank',
- 'cash_accounts.bank',
- 'cash_accounts.province',
- 'cash_accounts.status as ca_status '
- ])
- ->leftjoin('withdraw_cashes','withdraw_cashes.id','=','payments.withdraw_cash_id')
- ->leftjoin('cash_accounts','cash_accounts.distribution_channel_id','=','withdraw_cashes.distribution_channel_id')
- ->orderBy('payments.id','desc');
- if(isset($params['withdraw_cash_id']) && $params['withdraw_cash_id']) $search_object->where('payments.withdraw_cash_id', $params['withdraw_cash_id']);
- if(isset($params['channel_id']) && $params['channel_id']) $search_object->where('withdraw_cashes.distribution_channel_id', $params['channel_id']);
- if(isset($params['search_name']) && $params['search_name']) {
- $search_object->where(function ($query) use($params) {
- $query->where('withdraw_cashes.distribution_channel_name','like', "%".$params['search_name']."%")
- ->orWhere('cash_accounts.account_name', 'like', "%".$params['search_name']."%");
- });
- }
- if(isset($params['channel_name']) && $params['channel_name']) $search_object->where('withdraw_cashes.distribution_channel_name','like', "%".$params['channel_name']."%");
- if(isset($params['account_name']) && $params['account_name']) $search_object->where('cash_accounts.account_name', 'like', "%".$params['account_name']."%");
- if(isset($params['start_date']) && $params['start_date']) $search_object->where('payments.pay_time','>=', $params['start_date']);
- if(isset($params['end_date']) && $params['end_date']) $search_object->where('payments.pay_time','<=', $params['end_date']);
- if(isset($params['is_company']) && is_numeric($params['is_company'])) $search_object->where('payments.is_company', $params['is_company']);
- if(isset($params['status']) && $params['status']) {
- $search_object->whereIn('withdraw_cashes.status', $params['status']);
- }
- return $search_object->paginate();
- }
- }
|