table('QPPlatformDB.dbo.ChannelOpenRecharge') // ->join( // 'agent.dbo.admin_configs', // 'admin_configs.id', // '=', // 'ChannelOpenRecharge.ConfigID' // ) // ->where('admin_configs.new_pay_type', $method) // ->where('admin_configs.type', 'pay') // ->where('admin_configs.status', 1) // ->where('ChannelOpenRecharge.Status', 1) // ->where('ChannelOpenRecharge.Channel', $channel) // ->where('ChannelOpenRecharge.Sort', '>', 0) // ->selectRaw('admin_configs.config_key, ChannelOpenRecharge.Sort as sort') // ->get(); // } $services = DB::table('agent.dbo.admin_configs')->where([ 'new_pay_type' => $method, 'type' => 'pay', 'status' => 1, ])->get(); if (!$services->count()) { Log::error('支付渠道配置异常', [ 'method' => $method, ]); return false; } $matrix = []; foreach ($services as $v) { for ($i = 0; $i < $v->sort; $i++) { $matrix[] = $v->config_key; } } $res = $matrix[mt_rand(0, count($matrix)-1)]; return $res; }*/ /** * 根据支付方式随机获取充值渠道 * @param $method * @param $channel * @return bool|mixed */ public static function getServiceByPayMethod($method, $payAmt,$pay_method) { // $except_configKeys=[$except_channelName]; // $switch = Redis::get("recharge_config_switch_{$channel}"); // if ($channel && $switch) { // $services = DB::connection('write') // ->table('QPPlatformDB.dbo.ChannelOpenRecharge') // ->join( // 'agent.dbo.admin_configs', // 'admin_configs.id', // '=', // 'ChannelOpenRecharge.ConfigID' // ) // ->where('admin_configs.new_pay_type', $method) // ->whereNotIn('admin_configs.config_key',$except_configKeys) // ->where('admin_configs.type', 'pay') // ->where('admin_configs.status', 1) // ->where('ChannelOpenRecharge.Status', 1) // ->where('ChannelOpenRecharge.Channel', $channel) // ->where('ChannelOpenRecharge.Sort', '>', 0) // ->selectRaw('admin_configs.config_key, ChannelOpenRecharge.Sort as sort') // ->get(); // } $services = DB::table('agent.dbo.admin_configs')->where([ 'new_pay_type' => $method, 'type' => 'pay', 'status' => 1, ])->whereRaw('pay_types&'.$pay_method.'='.$pay_method) ->where('min_amount', '<=', $payAmt) ->where('max_amount', '>=', $payAmt) ->get(); if (!$services->count()) { Log::error('支付渠道配置异常', [ 'method' => $method, ]); return false; } $matrix = []; foreach ($services as $v) { for ($i = 0; $i < $v->sort; $i++) { if(Redis::exists("PayErro_".$v->config_key)) continue; $matrix[] = $v->config_key; } } if(count($matrix)==0) { foreach ($services as $v) { for ($i = 0; $i < $v->sort; $i++) { $matrix[] = $v->config_key; } } } $res = $matrix[mt_rand(0, count($matrix)-1)]; return $res; } /** * 根据支付方式随机获取充值渠道 * @param $method * @param $channel * @return bool|mixed */ public static function getServiceByPayCountry($method, $channel,$country,$except_channelName="") { $except_configKeys=[$except_channelName]; $switch = Redis::get("recharge_config_switch_{$channel}"); if ($channel && $switch) { $services = DB::connection('write') ->table('QPPlatformDB.dbo.ChannelOpenRecharge') ->join( 'agent.dbo.admin_configs', 'admin_configs.id', '=', 'ChannelOpenRecharge.ConfigID' ) ->where('admin_configs.new_pay_type', $method) ->whereNotIn('admin_configs.config_key',$except_configKeys) ->where('admin_configs.country', $country) ->where('admin_configs.type', 'pay') ->where('admin_configs.status', 1) ->where('ChannelOpenRecharge.Status', 1) ->where('ChannelOpenRecharge.Channel', $channel) ->where('ChannelOpenRecharge.Sort', '>', 0) ->selectRaw('admin_configs.config_key, ChannelOpenRecharge.Sort as sort') ->get(); } if (!isset($services) || !$services->count()) { $services = DB::table('agent.dbo.admin_configs')->where([ 'new_pay_type' => $method, 'type' => 'pay', 'status' => 1, 'country' => $country, ])->get(); if (!$services->count()) { Log::error('支付渠道配置异常', [ 'method' => $method, ]); return false; } } $matrix = []; foreach ($services as $v) { for ($i = 0; $i < $v->sort; $i++) { if(Redis::exists("PayErro_".$v->config_key)) continue; $matrix[] = $v->config_key; } } if(count($matrix)==0) { foreach ($services as $v) { for ($i = 0; $i < $v->sort; $i++) { $matrix[] = $v->config_key; } } } $res = $matrix[mt_rand(0, count($matrix)-1)]; return $res; } }