FinanceMerchantStat.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/12/7
  6. * Time: 上午9:46
  7. */
  8. namespace App\Modules\Finance\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. /**
  11. * 渠道支付通道相关金钱统计
  12. * Class FinanceMerchantStat
  13. * @package App\Modules\Finance\Models
  14. */
  15. class FinanceMerchantStat extends Model
  16. {
  17. protected $table = 'finance_merchant_stats';
  18. protected $fillable = ['distribution_channel_id', 'pay_merchant_source', 'enable_withdrawal_amount'];
  19. /**
  20. * 获取一条记录
  21. * @param string $channel_id
  22. * @param string $pay_merchant_source
  23. * @return mixed
  24. */
  25. public static function getFinanceMerchantStatSingle($channel_id = '', $pay_merchant_source = '') {
  26. $search_object = self::orderBy('enable_withdrawal_amount','desc');
  27. if($channel_id) {
  28. $search_object->where('distribution_channel_id', $channel_id);
  29. }
  30. if($pay_merchant_source) {
  31. $search_object->where('pay_merchant_source', $pay_merchant_source);
  32. }
  33. return $search_object->first();
  34. }
  35. /**
  36. * 获取列表
  37. * @param string $channel_id 可空
  38. * @param string $pay_merchant_source 可空
  39. * @return mixed
  40. */
  41. public static function getFinanceMerchantStatList($channel_id = '', $pay_merchant_source = '') {
  42. $search_object = self::orderBy('enable_withdrawal_amount','desc');
  43. if($channel_id) {
  44. $search_object->where('distribution_channel_id', $channel_id);
  45. }
  46. if($pay_merchant_source) {
  47. $search_object->where('pay_merchant_source', $pay_merchant_source);
  48. }
  49. return $search_object->get();
  50. }
  51. /**
  52. * 获取列表
  53. * @param string $channel_id 可空
  54. * @param array $pay_merchant_sources 可空
  55. * @return mixed
  56. */
  57. public static function getFinanceMerchantStatListIgnoreSourceArray($channel_id = '', $pay_merchant_sources = []) {
  58. $search_object = self::orderBy('enable_withdrawal_amount','asc');
  59. if($channel_id) {
  60. $search_object->where('distribution_channel_id', $channel_id);
  61. }
  62. if($pay_merchant_sources) {
  63. $search_object->whereNotIn('pay_merchant_source', $pay_merchant_sources);
  64. }
  65. return $search_object->get();
  66. }
  67. /**
  68. * 获取列表
  69. * @param string $channel_id 可空
  70. * @param string $pay_merchant_source 可空
  71. * @return mixed
  72. */
  73. public static function getFinanceMerchantStatListIgnoreSource($channel_id = '', $pay_merchant_source = '') {
  74. $search_object = self::orderBy('enable_withdrawal_amount','desc');
  75. if($channel_id) {
  76. $search_object->where('distribution_channel_id', $channel_id);
  77. }
  78. if($pay_merchant_source) {
  79. $search_object->where('pay_merchant_source', '<>',$pay_merchant_source);
  80. }
  81. return $search_object->get();
  82. }
  83. /**
  84. * 添加更新渠道支付通道相关金钱统计
  85. * @param $channel_id
  86. * @param $pay_merchant_source
  87. * @param $amount 添加正数,减少负数
  88. * @return mixed
  89. */
  90. public static function createOrUpdate($channel_id, $pay_merchant_source, $amount) {
  91. $financeMerchantStat = self::where('distribution_channel_id', $channel_id)->where('pay_merchant_source', $pay_merchant_source)->first();
  92. if(empty($financeMerchantStat)) {
  93. $financeMerchantStat['distribution_channel_id'] = $channel_id;
  94. $financeMerchantStat['pay_merchant_source'] = $pay_merchant_source;
  95. $financeMerchantStat['enable_withdrawal_amount'] = (float)$amount;
  96. $financeMerchantStat = FinanceMerchantStat::create($financeMerchantStat);
  97. } else {
  98. $financeMerchantStat['enable_withdrawal_amount'] = (float)$financeMerchantStat['enable_withdrawal_amount'] + (float)$amount;
  99. $financeMerchantStat->save();
  100. }
  101. return $financeMerchantStat;
  102. }
  103. /**
  104. * 获取除了$pay_merchant_source之外的渠道总额
  105. * @param string $channel_id
  106. * @param string $pay_merchant_source
  107. * @return mixed
  108. */
  109. public static function getEnableWithdrawalAmountSumIgnoreSource($channel_id = '', $pay_merchant_source = '') {
  110. $search_object = self::orderBy('id','desc');
  111. if($channel_id) {
  112. $search_object->where('distribution_channel_id', $channel_id);
  113. }
  114. if($pay_merchant_source) {
  115. $search_object->where('pay_merchant_source', '<>', $pay_merchant_source);
  116. }
  117. return $search_object->sum('enable_withdrawal_amount');
  118. }
  119. /**
  120. * 获取除了$pay_merchant_source之外的渠道总额
  121. * @param string $channel_id
  122. * @param array $pay_merchant_sources
  123. * @return mixed
  124. */
  125. public static function getEnableWithdrawalAmountSumIgnoreSourceArray($channel_id = '', $pay_merchant_sources = []) {
  126. $search_object = self::orderBy('id','desc');
  127. if($channel_id) {
  128. $search_object->where('distribution_channel_id', $channel_id);
  129. }
  130. if($pay_merchant_sources) {
  131. $search_object->whereNotIn('pay_merchant_source', $pay_merchant_sources);
  132. }
  133. return $search_object->sum('enable_withdrawal_amount');
  134. }
  135. /**
  136. * 获取支付渠道总额
  137. * @param string $channel_id
  138. * @param string $pay_merchant_source
  139. * @return mixed
  140. */
  141. public static function getEnableWithdrawalAmountSum($channel_id = '', $pay_merchant_source = '') {
  142. $search_object = self::orderBy('id','desc');
  143. if($channel_id) {
  144. $search_object->where('distribution_channel_id', $channel_id);
  145. }
  146. if($pay_merchant_source) {
  147. $search_object->where('pay_merchant_source', $pay_merchant_source);
  148. }
  149. return $search_object->sum('enable_withdrawal_amount');
  150. }
  151. }