RechargeChannel.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Models;
  3. class RechargeChannel extends BaseModel
  4. {
  5. protected $table = 'recharge_channel';
  6. protected $fillable = ['id','data_type','key', 'name', 'type', 'rate','min','max' ,'fixed' ,'sort'];
  7. protected $hidden = [];
  8. public function getFixedAttribute($value)
  9. {
  10. return $value ? explode(',', $value) : null;
  11. }
  12. public static function getChannel($data_type, $type = [])
  13. {
  14. $query = self::where('status', 1)->where('data_type', $data_type);
  15. if ($type) {
  16. $query = $query->whereIn('type', $type);
  17. }
  18. $channel = $query->select(['type','name'])->get()->toArray();
  19. $channel = array_column($channel, null, 'type');
  20. return array_values($channel);
  21. }
  22. //获取充值通道
  23. public static function product($from = '')
  24. {
  25. $where['status'] = 1;
  26. $where['data_type'] = 1;
  27. if($from){
  28. $where['from'] = $from;
  29. }
  30. $list = self::where($where)->orderBy('sort', 'asc')->get()->toArray();
  31. return array_column($list, null, 'key');
  32. }
  33. public static function getFormatChannel($data_type, $recharge_channel_group_id = 1)
  34. {
  35. $recharge_channel_group_id = $recharge_channel_group_id > 0 ? $recharge_channel_group_id : 1;
  36. $query = self::where(['status' => 1, 'data_type' => $data_type]);
  37. $field = 'recharge_type'; //充值类型
  38. if ($data_type == 2) {
  39. //提现类型
  40. $field = 'withdraw_type';
  41. } elseif ($data_type == 3) {
  42. //提现类型
  43. $field = 'activity_type';
  44. }
  45. $type = RechargeChannelGroup::where('id', $recharge_channel_group_id)->value($field);
  46. if (!$type) {
  47. return [];
  48. }
  49. $query = $query->whereIn('type', $type);
  50. $product = $query->orderBy('sort', 'asc')->select(['id', 'data_type','name','type', 'min','max','fixed','rate'])->get()->toArray();
  51. $list = [];
  52. foreach($product as $key => $pv) {
  53. if (isset($list[$pv['type']]['config'])) {
  54. $config = $list[$pv['type']]['config'];
  55. if (empty($config['range'])) {
  56. $config['range'][] = $config;
  57. }
  58. if ($pv['min'] < $config['min']) {
  59. $config['min'] = $pv['min'];
  60. }
  61. if ($pv['max'] > $config['max']) {
  62. $config['max'] = $pv['max'];
  63. }
  64. if ($pv['rate'] < $config['rate']) {
  65. $config['max_rate'] = $config['rate'];
  66. $config['min_rate'] = $pv['rate'];
  67. }
  68. if ($pv['rate'] > $config['rate']) {
  69. $config['max_rate'] = $pv['rate'];
  70. }
  71. $config['range'][] = $pv;
  72. } else {
  73. $config = $pv;
  74. }
  75. $list[$pv['type']] = [
  76. 'key' => $key,
  77. 'label' => lang($pv['name']),
  78. 'value' => $pv['type'],
  79. 'config' => $config ?? [],
  80. ];
  81. }
  82. $list = array_column($list, null, 'key');
  83. return array_values($list);
  84. }
  85. //校验是否支持此提现方式
  86. public static function checkWithdrawChannel($type, $recharge_channel_group_id = 1) {
  87. $recharge_channel_group_id = $recharge_channel_group_id > 0 ? $recharge_channel_group_id : 1;
  88. $withdraw_type = RechargeChannelGroup::where('id', $recharge_channel_group_id)->value('withdraw_type');
  89. if (in_array($type, $withdraw_type)) {
  90. return true;
  91. } else {
  92. return false;
  93. }
  94. }
  95. //校验是否支持此充值方式
  96. public static function checkRechargeChannel($type, $recharge_channel_group_id = 1) {
  97. $recharge_channel_group_id = $recharge_channel_group_id > 0 ? $recharge_channel_group_id : 1;
  98. $recharge_type = RechargeChannelGroup::where('id', $recharge_channel_group_id)->value('recharge_type');
  99. if (in_array($type, $recharge_type)) {
  100. return true;
  101. } else {
  102. return false;
  103. }
  104. }
  105. }