Liquidation.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/12/7
  6. * Time: 上午9:49
  7. */
  8. namespace App\Modules\Finance\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. /**
  11. * 清算明细表
  12. * Class Liquidation
  13. * @package App\Modules\Finance\Models
  14. */
  15. class Liquidation extends Model
  16. {
  17. protected $table = 'liquidations';
  18. protected $fillable = ['distribution_channel_id', 'pay_merchant_source','amount', 'date', 'payment_id', 'remark'];
  19. /**
  20. * 保存清算明细
  21. * @param $channel_id 渠道ID
  22. * @param $pay_merchant_source 渠道支付通道
  23. * @param $amount 清算金额
  24. * @param $date 清算时间
  25. * @param $payment_id 打款ID
  26. * @param string $remark 备注
  27. * @return mixed
  28. */
  29. public static function addLiquidation($channel_id, $pay_merchant_source, $amount, $date, $payment_id, $remark = '') {
  30. $data['distribution_channel_id'] = $channel_id;
  31. $data['pay_merchant_source'] = $pay_merchant_source;
  32. $data['amount'] = (float)$amount;
  33. $data['date'] = $date;
  34. $data['payment_id'] = $payment_id;
  35. $data['remark'] = $remark;
  36. return Liquidation::create($data);
  37. }
  38. /**
  39. * 清算明细表列表
  40. * @param $params[]
  41. * channel_id:渠道ID 可选
  42. * channel_name:渠道名称 可选
  43. * pay_merchant_source 支付通道渠道(可不传,获取所有通道) 可选
  44. * start_date:开始时间 可选
  45. * end_date:结束时间 可选
  46. * search_name: 搜索名称
  47. * @param $isAll
  48. * @return mixed
  49. */
  50. public static function getLiquidationList($params=[], $isAll = false) {
  51. $search_object = self::select([
  52. 'liquidations.id',
  53. 'liquidations.distribution_channel_id',
  54. 'liquidations.pay_merchant_source',
  55. 'liquidations.amount',
  56. 'liquidations.payment_id',
  57. 'liquidations.date',
  58. 'liquidations.remark',
  59. 'liquidations.created_at',
  60. 'distribution_channels.name as distribution_channel_name',
  61. 'distribution_channels.phone',
  62. 'distribution_channels.pay_merchant_id',
  63. 'distribution_channels.nickname',
  64. 'distribution_channels.person_in_charge_name'
  65. ])
  66. ->leftjoin('distribution_channels','distribution_channels.id','=','liquidations.distribution_channel_id')
  67. ->where('liquidations.amount', '<>', 0)
  68. ->orderBy('liquidations.id','desc');
  69. if(isset($params['channel_id']) && $params['channel_id']) $search_object->where('liquidations.distribution_channel_id', $params['channel_id']);
  70. if(isset($params['channel_name']) && $params['channel_name']) $search_object->where('distribution_channels.name','like', "%".$params['channel_name']."%");
  71. if(isset($params['pay_merchant_source']) && $params['pay_merchant_source']) $search_object->where('liquidations.pay_merchant_source', $params['pay_merchant_source']);
  72. if(isset($params['search_name']) && $params['search_name']) {
  73. $search_object->where(function ($query) use($params) {
  74. $query->where('distribution_channels.name','like', "%".$params['search_name']."%")
  75. ->orWhere('distribution_channels.nickname', 'like', "%".$params['search_name']."%")
  76. ->orWhere('distribution_channels.person_in_charge_name', 'like', "%".$params['search_name']."%");
  77. });
  78. }
  79. if(isset($params['start_date']) && $params['start_date']) $search_object->where('liquidations.created_at','>=', $params['start_date']);
  80. if(isset($params['end_date']) && $params['end_date']) $search_object->where('liquidations.created_at','<=', $params['end_date']);
  81. if($isAll) {
  82. return $search_object->get();
  83. } else {
  84. return $search_object->paginate();
  85. }
  86. }
  87. }