Files
li 1b24994e74 feat: 后端全量更新 - 含所有本次需求
- Contract.php: 返回合约账户余额(balance_contract)
- My.php: 地址管理增加BTC/ETH
- AppContract.php: 一键平仓(closeall)
- AppProxy.php: 代理专属注册链接 + 分级权限(L1/L2)
- site.php: 手续费减半(0.018→0.009)
- agent_permission_setup.sql: 代理权限SQL
- crypto_news_crawler.py: 新闻自动采集脚本
2026-03-30 20:16:32 +08:00

1501 lines
65 KiB
PHP
Executable File

<?php
namespace app\api\controller;
use app\common\controller\Api;
use fast\Random;
use think\Db;
use think\Config;
use function fast\e;
/**
* 钱包
*/
class Taskwallet extends Api
{
protected $noNeedLogin = ['*'];
protected $noNeedRight = ['*'];
//波长USDT充值监听
public function getMonitorTron()
{
$nowtime = time() - 100;
$user = Db::name('app_currency_user a')->field("a.*,b.email")
->join("user b","a.user_id=b.id","left")
->where('a.tron_address', '<>', '')
->where('a.curr_id', 1)
->where('a.jtupdatetime',"<",$nowtime)
->where('a.regtime',">",time()-3600)
->limit(20)
->order('a.jtupdatetime','asc')
->select();
if(empty($user)){
echo "empty";
}
$txid = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->select();
$txidarr = array_column($txid, 'id', 'hash');
$lowrecharge = 0.01;
foreach ($user as $key => $value) {
$transferdata = [
'command' => "getTransferRecord",
'code' => "tronapi2021.1",
'address' => $value['tron_address'],
'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $transferdata), true);
// var_dump($result);
if ($result['code'] == 1 && !empty($result['data'])) {
$recharge = [];
$amount = 0;
$changeamount = 0;
foreach ($result['data'] as $kk => $val) {
if (!isset($txidarr[$val['transaction_id']]) && $val['value'] > 100) {
$nums = sprintf("%.6f", $val['value'] / 1000000);
//存入充值表记录
$recharge[] = [
'user_id' => $value['user_id'],
'curr_id' => $value['curr_id'],
'price' => $nums,
'cart' => '1',
'type' => '1',
'description' => 'trc20-USDT充值',
'hash' => $val['transaction_id'],
'before_num' => $value['num'],
'after_num' => $value['num'] + $nums,
'is_outer' => '0',
'createtime' => time(),
];
$amount += $nums;
$txidarr[$val['transaction_id']] = 111;
$value['num'] += $nums;
}
}
if ($amount > $lowrecharge) {
Db::startTrans();
$ret = Db::name('app_detailed')->insertAll($recharge);
$changeamount = $value['num'];
$ret1 = Db::name('app_currency_user')->where('id', $value['id'])
->update(['num' => $changeamount, 'updatetime' => time()]);
if(!$ret || !$ret1){
Db::rollback();
}else{
Db::commit();
//发送邮件
if($value['email']){
$send_data = array("num"=>$amount,"curr_name"=>"USDT");
controller("Ems")->api_send($value['email'], "chongzhi",$send_data);
}
}
echo "id-" . $value['user_id'] . ':充值' . $changeamount . ' USDT';
}
}
Db::name('app_currency_user')->where('id', $value['id'])
->update([ 'jtupdatetime' => time()]);
}
}
//波长USDT手续费派发
public function listenCreditTron()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zong = Config::get('site.trx_z_address');
$zongarr = Db::name('app_currency_user')
->where('tron_address', $zong)->find();
if (!$zongarr) {
echo 'Not exits tron address';
}
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-USDT充值')
->where('user_id', '<>', $zongarr['user_id'])
->group('user_id')
->limit(10)->select();
$zongkey = controller("Common")->trc_decrypt($zongarr['tron_private_key']);
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $zong,
];
$ztrx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$ztrx = $ztrx['data'];
$fee = 6;
if ($ztrx < $fee) {
echo "banlance not enough " . $ztrx;
exit;
}
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '1')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('inaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx < $fee && $lasttime < time() && $wallet['tron_address'] != $zong) {
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $zong,
'to' => $wallet['tron_address_hex'],
'privateKey' => $zongkey,
'amount' => $fee,
"version" => 2,
// 'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $fee,
'type' => 'out',
'inaddr' => $wallet['tron_address'],
'outaddr' => $zong,
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'paifa -' . $value['user_id'] . '- ' . $fee . ' trx';
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
/**
* 波长USDT归集
*/
public function huizongTron()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zongss = Config::get('site.trx_z_address');
$zong = "TNgigBy22T9oN4w8ozSapy9vRvtLJif3Xg";
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-USDT充值')
->group('user_id')
->limit(10)->select();
$zongkey = "";
$fee = 5;
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '1')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('outaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx >= $fee && $usdt > 0 && $lasttime < time() && $wallet['tron_address'] != $zongss) {
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $wallet['tron_address'],
'to' => $zong,
'privateKey' => controller("Common")->trc_decrypt($wallet['tron_private_key']),
'amount' => $usdt,
"version" => 2,
'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $usdt,
'type' => 'outusdt',
'inaddr' => $zong,
'outaddr' => $wallet['tron_address'],
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'huizong ' . $value['user_id'] . '-' . $usdt;
} else if ($usdt <= 0.01 && !empty($usdt)) {
Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-USDT充值')
->where('user_id', $value['user_id'])
->update(['is_outer' => '1', 'update_time' => time()]);
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
//波长EVT充值监听
public function getMonitorTron_evt()
{
$nowtime = time() - 100;
$user = Db::name('app_currency_user a')->field("a.*,b.email")
->join("user b","a.user_id=b.id","left")
->where('a.tron_address', '<>', '')
->where('a.curr_id', 20)
->where('a.jtupdatetime',"<",$nowtime)
->where('a.regtime',">",time()-3600)
->limit(20)
->order('a.jtupdatetime','asc')
->select();
if(empty($user)){
echo "empty";
}
$txid = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->select();
$txidarr = array_column($txid, 'id', 'hash');
$lowrecharge = 0.01;
foreach ($user as $key => $value) {
$transferdata = [
'command' => "getTransferRecord",
'code' => "tronapi2021.1",
'address' => $value['tron_address'],
'contract' => 'TXTJXcPKrYTbyEToA8ct3gBvw2GimERUAn' //EVT
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $transferdata), true);
// var_dump($result);
if ($result['code'] == 1 && !empty($result['data'])) {
$recharge = [];
$amount = 0;
$changeamount = 0;
foreach ($result['data'] as $kk => $val) {
if (!isset($txidarr[$val['transaction_id']]) && $val['value'] > 100) {
$nums = sprintf("%.6f", $val['value'] / 1000000);
//存入充值表记录
$recharge[] = [
'user_id' => $value['user_id'],
'curr_id' => $value['curr_id'],
'price' => $nums,
'cart' => '1',
'type' => '1',
'description' => 'trc20-EVT充值',
'hash' => $val['transaction_id'],
'before_num' => $value['num'],
'after_num' => $value['num'] + $nums,
'is_outer' => '0',
'createtime' => time(),
];
$amount += $nums;
$txidarr[$val['transaction_id']] = 111;
$value['num'] += $nums;
}
}
if ($amount > $lowrecharge) {
Db::startTrans();
$ret = Db::name('app_detailed')->insertAll($recharge);
$changeamount = $value['num'];
$ret1 = Db::name('app_currency_user')->where('id', $value['id'])
->update(['num' => $changeamount, 'updatetime' => time()]);
if(!$ret || !$ret1){
Db::rollback();
}else{
Db::commit();
//发送邮件
if($value['email']){
$send_data = array("num"=>$amount,"curr_name"=>"EVT");
controller("Ems")->api_send($value['email'], "chongzhi",$send_data);
}
}
echo "id-" . $value['user_id'] . ':充值' . $changeamount . ' USDT';
}
}
Db::name('app_currency_user')->where('id', $value['id'])
->update([ 'jtupdatetime' => time()]);
}
}
//波长EVT充值监听
public function getMonitorTron_ift()
{
$nowtime = time() - 100;
$user = Db::name('app_currency_user a')->field("a.*,b.email")
->join("user b","a.user_id=b.id","left")
->where('a.tron_address', '<>', '')
->where('a.curr_id', 55)
->where('a.jtupdatetime',"<",$nowtime)
->where('a.regtime',">",time()-3600)
->limit(20)
->order('a.jtupdatetime','asc')
->select();
if(empty($user)){
echo "empty";
}
$txid = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->select();
$txidarr = array_column($txid, 'id', 'hash');
$lowrecharge = 0.01;
foreach ($user as $key => $value) {
$transferdata = [
'command' => "getTransferRecord",
'code' => "tronapi2021.1",
'address' => $value['tron_address'],
'contract' => 'TNpToPDxBMH71BywJruNBRV25di8mrfZqy' //IFT
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $transferdata), true);
// var_dump($result);
if ($result['code'] == 1 && !empty($result['data'])) {
$recharge = [];
$amount = 0;
$changeamount = 0;
foreach ($result['data'] as $kk => $val) {
if (!isset($txidarr[$val['transaction_id']]) && $val['value'] > 100) {
$nums = sprintf("%.6f", $val['value'] / 1000000);
//存入充值表记录
$recharge[] = [
'user_id' => $value['user_id'],
'curr_id' => $value['curr_id'],
'price' => $nums,
'cart' => '1',
'type' => '1',
'description' => 'trc20-IFT充值',
'hash' => $val['transaction_id'],
'before_num' => $value['num'],
'after_num' => $value['num'] + $nums,
'is_outer' => '0',
'createtime' => time(),
];
$amount += $nums;
$txidarr[$val['transaction_id']] = 111;
$value['num'] += $nums;
}
}
if ($amount > $lowrecharge) {
Db::startTrans();
$ret = Db::name('app_detailed')->insertAll($recharge);
$changeamount = $value['num'];
$ret1 = Db::name('app_currency_user')->where('id', $value['id'])
->update(['num' => $changeamount, 'updatetime' => time()]);
if(!$ret || !$ret1){
Db::rollback();
}else{
Db::commit();
//发送邮件
if($value['email']){
$send_data = array("num"=>$amount,"curr_name"=>"IFT");
controller("Ems")->api_send($value['email'], "chongzhi",$send_data);
}
}
echo "id-" . $value['user_id'] . ':充值' . $changeamount . ' USDT';
}
}
Db::name('app_currency_user')->where('id', $value['id'])
->update([ 'jtupdatetime' => time()]);
}
}
//以太坊USDT充值监听
public function getMonitor()
{
$blocks = Db::name('usdt_block')->where('id', 1)->find();
$startblock = (int)$blocks['block'];
$url = "https://api-cn.etherscan.com/api?module=account&action=txlist&page=1&offset=1000&sort=desc&startblock="
. $startblock . "&address=0xdac17f958d2ee523a2206206994597c13d831ec7" . "&apikey=KV2IX5DCPHB85D865CT5VNY8Z863BYSFQP";
// var_dump($url);
$alsdata = json_decode(http_curl($url), true);
$blockNumber = 0;
$hashexit = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->select();
$hashexit = array_column($hashexit, "hash", "id");
$exitsuser = Db::name('app_currency_user')->select();
$exitsuser = array_column($exitsuser, "address", "id");
$lowrecharge = 0.01;
if ($alsdata['status'] == 1 && !empty($alsdata['result'])) {
foreach ($alsdata['result'] as $k => $v) {
if ($blockNumber == 0) {
$blockNumber = $v['blockNumber'];
}
$newaddress = substr(str_replace('0xa9059cbb000000000000000000000000', '', $v['input']), 0, 40);
$newaddress1 = "0x" . $newaddress;
// $exitsuser = Db::name('users')->where('address', '0x'.$newaddress)->find();
// echo "<pre>";var_dump($exitsuser);
if (!in_array('0x' . $newaddress, $exitsuser)) continue;
// var_dump($newaddress);exit;
$amount = '';
$amountarr = str_split(str_replace('0xa9059cbb000000000000000000000000' . $newaddress, '', $v['input']));
$flag1 = false;
foreach ($amountarr as $kk => $vv) {
if ($flag1) {
$amount .= $vv;
continue;
} else if ($vv != '0') {
$flag1 = true;
$amount .= $vv;
}
}
$amount = hexdec($amount) / (pow(10, 6));
// var_dump($amount);
if ($amount > $lowrecharge) {
usleep(rand(500000, 1000000));
// var_dump($amount);exit;
$hashexitss = Db::name('app_detailed')->where('hash', $v['hash'])->find();
if (!in_array($v['hash'], $hashexit) && empty($hashexitss)) {
$userids = array_search($newaddress1, $exitsuser);
$userdetail = Db::name('app_currency_user')->where('id', $userids)->find();
$recharge = [
'user_id' => $userdetail['user_id'],
'curr_id' => 1,
'price' => $amount,
'cart' => '1',
'type' => '1',
'description' => 'erc20-USDT充值',
'hash' => $v['hash'],
'before_num' => $userdetail['num'],
'after_num' => $userdetail['num'] + $amount,
'is_outer' => '0',
'createtime' => time(),
];
$res = Db::name('app_detailed')->insertGetId($recharge);
$changeamount = $userdetail['num'] + $amount;
Db::name('app_currency_user')->where('id', $userdetail['id'])
->update(['num' => $changeamount, 'updatetime' => time()]);
echo "id-" . $userdetail['user_id'] . ':充值' . $amount . ' USDT';
$hashexit[$res] = $v['hash'];
}
}
}
Db::name("usdt_block")->where('id', 1)->update(['block' => $blockNumber, 'updatetime' => date('Y-m-d H:i:s')]);
}
}
//以太坊USDT手续费派发
public function listenCredit()
{
if(Config::get('site.eth_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zongqb = Config::get('site.eth_z_address');
$zongarr = Db::name('app_currency_user')
->where('address', $zongqb)->find();
if (!$zongarr) {
echo 'Not exits eth address';
}
$nowtime = time() - 3600;
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'erc20-USDT充值')
->where('user_id', '<>', $zongarr['user_id'])
->group('user_id')
->limit(10)->select();
// echo "<pre>";var_dump($list);exit;
$zongqbmm = base64_decode($zongarr['password']);
$fee = 0.006;
$transfer = [];
$ms = 'listen-credit';
$result1 = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "getBalance", 'address' => $zongqb, "code" => "shethdata2021.1", 'contract' => '']), true);
$ethnum1 = hexdec($result1['data']['result']) / (pow(10, 18));
if ($ethnum1 < $fee) {
echo 'Not enough zqb eth--num:' . $ethnum1;
exit;
}
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '1')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['address'])) continue;
$result = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "getBalance", 'address' => $wallet['address'], "code" => "shethdata2021.1"]), true);
$ethnum = hexdec($result['data']['result']) / (pow(10, 18));
$result = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post', ['command' => "getBalance", 'address' => $wallet['address'],
"contract" => "0xdac17f958d2ee523a2206206994597c13d831ec7", "code" => "shethdata2021.1"]), true);
$usdtnum = hexdec($result['data']['result']) / (pow(10, 6));
// echo "<pre>";var_dump($value['id'],$ethnum,$usdtnum,$usdtnum);exit;
if ($ethnum < $fee && $zongqb != $wallet['address'] && $usdtnum > 0) {
//查询是否已转账过
$exitstransfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('type', 'ethout')
->order('id', 'desc')->find();
if ($exitstransfer) {
if ($exitstransfer['time'] > $nowtime) continue;
}
// $fee = $fee - $ethnum;
$result = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "transfer", "from" => $zongqb, "to" => $wallet['address'],
"value" => '0x' . $this->bc_dechex($fee * bcpow(10, 18)), "contract" => '', "password" => $zongqbmm, "code" => "shethdata2021.1"]), true);
if (!isset($result['data']['hash_address']) || !$result['data']['hash_address']) continue;
//$result = $ethapi->transfer($zongqb,$value['address'],$fee,'',$zongqbmm);
$trandata = [
'user_id' => $value['user_id'],
'fee' => $fee,
'type' => 'ethout',
'outaddr' => $zongqb,
'inaddr' => $wallet['address'],
'time' => date('Y-m-d H:i:s'),
'result' => $result['data']['hash_address']
];
Db::name('usdt_transfer')->insert($trandata);
$transfer[] = $trandata;
// echo "<pre>";var_dump($transfer);exit;
$ms .= "user_id" . $value['user_id'] . "派发" . $fee . "eth成功——";
}
Db::name('app_currency_user')->where('user_id', $wallet['user_id'])
->update(['ethnum' => $ethnum, 'usdtnum' => $usdtnum, 'listentimes' => time()]);
// }
}
echo date('Y-m-d H:i:s');
echo $ms;
}
public function bc_dechex($decimal)
{
$result = [];
while ($decimal != 0) {
$mod = $decimal % 16;
$decimal = floor($decimal / 16);
array_push($result, dechex($mod));
}
return join(array_reverse($result));
}
//以太坊USDT归集
public function huizongusdt()
{
if(Config::get('site.eth_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zongqb = "0x621DD3B4dc86d535C66E171a0f96F52c5DF33c10";
$nowtime = time() - 3600;
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'erc20-USDT充值')
->group('user_id')
->limit(10)->select();
$ms = 'listen-usdt____';
$fee = 0.006;
// echo "<pre>";var_dump($list);exit;
foreach ($list as $key => $value) {
$ms = '';
$wallet = Db::name('app_currency_user')
->where('curr_id', '1')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['address'])) continue;
$result = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "getBalance", 'address' => $wallet['address'], "code" => "shethdata2021.1"]), true);
$ethnum = hexdec($result['data']['result']) / (pow(10, 18));
$result = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post', ['command' => "getBalance", 'address' => $wallet['address'],
"contract" => "0xdac17f958d2ee523a2206206994597c13d831ec7", "code" => "shethdata2021.1"]), true);
$usdtnum = hexdec($result['data']['result']) / (pow(10, 6));
if ($usdtnum > 0 && $ethnum >= $fee && $zongqb != $wallet['address']) {
$exitstransfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('type', 'usdtin')
->order('id', 'desc')->find();
if ($exitstransfer) {
echo "abcd";
if ($exitstransfer['time'] > $nowtime) continue;
}
$fee = $usdtnum;
$numss = str_pad(strval($this->bc_dechex($fee * bcpow(10, 6))), 64, '0', STR_PAD_LEFT);
$result = http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "transfer", "from" => $wallet['address'], "to" => $zongqb,
"value" => $numss, "contract" => '0xdac17f958d2ee523a2206206994597c13d831ec7',
"password" => base64_decode($wallet['password']), "code" => "shethdata2021.1"]);
$resultarr = json_decode($result, true);
if (isset($resultarr['data']['hash_address']) && !empty($resultarr['data']['hash_address'])) {
$trandata = [
'user_id' => $value['user_id'],
'fee' => $fee,
'type' => 'usdtin',
'inaddr' => $zongqb,
'outaddr' => $wallet['address'],
'time' => date('Y-m-d H:i:s'),
'result' => $resultarr['data']['hash_address']
];
Db::name('usdt_transfer')->insert($trandata);
$ms .= "user_id" . $value['user_id'] . "-usdt:" . $usdtnum . "转出成功,hash:" . $resultarr['data']['hash_address'] . "——";
} else{
var_dump($result);
}
Db::name('app_currency_user')->where('user_id', $wallet['user_id'])
->update(['ethnum' => $ethnum, 'usdtnum' => $usdtnum, 'listentimes' => time()]);
}else if ($usdtnum <= 0.01) {
Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'erc20-USDT充值')
->where('user_id', $value['user_id'])
->update(['is_outer' => '1', 'update_time' => time()]);
$ms .= '-'.$value['id']."_____";
}
echo date('Y-m-d H:i:s');
echo $ms;
}
}
//波长APT充值监听
public function getMonitorTron_apt()
{
$nowtime = time() - 100;
$user = Db::name('app_currency_user a')->field("a.*,b.email")
->join("user b","a.user_id=b.id","left")
->where('a.tron_address', '<>', '')
->where('a.curr_id', 2)
->where('a.jtupdatetime',"<",$nowtime)
->where('a.regtime',">",time()-3600)
->limit(20)
->order('a.jtupdatetime','asc')
->select();
if(empty($user)){
echo "empty";exit;
}
$txid = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->select();
$txidarr = array_column($txid, 'id', 'hash');
$lowrecharge = 0.01;
foreach ($user as $key => $value) {
$transferdata = [
'command' => "getTransferRecord",
'code' => "tronapi2021.1",
'address' => $value['tron_address'],
'contract' => 'TCsUiQVkHv5HjRug7R9UEausTg1kitMGBD' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $transferdata), true);
// var_dump($result);
if ($result['code'] == 1 && !empty($result['data'])) {
$recharge = [];
$amount = 0;
$changeamount = 0;
foreach ($result['data'] as $kk => $val) {
if (!isset($txidarr[$val['transaction_id']]) && $val['value'] > 100) {
$nums = sprintf("%.6f", $val['value'] / 1000000);
//存入充值表记录
$recharge[] = [
'user_id' => $value['user_id'],
'curr_id' => $value['curr_id'],
'price' => $nums,
'cart' => '1',
'type' => '1',
'description' => 'trc20-APT',
'hash' => $val['transaction_id'],
'before_num' => $value['num_dj'],
'after_num' => $value['num_dj'] + $nums,
'is_outer' => '0',
'createtime' => time(),
];
$amount += $nums;
$txidarr[$val['transaction_id']] = 111;
$value['num_dj'] += $nums;
}
}
if ($amount > $lowrecharge) {
Db::startTrans();
$ret = Db::name('app_detailed')->insertAll($recharge);
$changeamount = $value['num_dj'];
$ret1 = Db::name('app_currency_user')->where('id', $value['id'])
->update(['num_dj' => $changeamount, 'updatetime' => time()]);
if(!$ret || !$ret1){
Db::rollback();
}else{
Db::commit();
//发送邮件
if($value['email']){
$send_data = array("num"=>$amount,"curr_name"=>"APT");
controller("Ems")->api_send($value['email'], "chongzhi",$send_data);
}
}
echo "id-" . $value['user_id'] . ':充值' . $changeamount . ' APT';
}
}
Db::name('app_currency_user')->where('id', $value['id'])
->update([ 'jtupdatetime' => time()]);
}
}
//波长APT手续费派发
public function listenCreditTron_apt()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zong = Config::get('site.trx_z_address');
$zongarr = Db::name('app_currency_user')
->where('tron_address', $zong)->find();
if (!$zongarr) {
echo 'Not exits tron address';
}
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-APT')
->where('user_id', '<>', $zongarr['user_id'])
->where('price', '>=',100)
->group('user_id')
->limit(10)->select();
$zongkey = controller("Common")->trc_decrypt($zongarr['tron_private_key']);
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $zong,
];
$ztrx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$ztrx = $ztrx['data'];
$fee = 6;
if ($ztrx < $fee) {
echo "banlance not enough " . $ztrx;
exit;
}
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '2')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TCsUiQVkHv5HjRug7R9UEausTg1kitMGBD' //usdt
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('inaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx < $fee && $lasttime < time()) {
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $zong,
'to' => $wallet['tron_address_hex'],
'privateKey' => $zongkey,
'amount' => $fee,
"version" => 2,
// 'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $fee,
'type' => 'out',
'inaddr' => $wallet['tron_address'],
'outaddr' => $zong,
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'paifa -' . $value['user_id'] . '- ' . $fee . ' trx';
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
/**
* 波长APT归集
*/
public function huizongTron_apt()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zong = "TNgigBy22T9oN4w8ozSapy9vRvtLJif3Xg";
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-APT')
->where('price', '>=',100)
->group('user_id')
->limit(10)->select();
if(empty($list)){
echo "empty";exit;
}
$zongkey = "";
$fee = 5;
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '2')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TCsUiQVkHv5HjRug7R9UEausTg1kitMGBD' //usdt
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('outaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx >= $fee && $usdt > 0 && $lasttime < time()) {
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $wallet['tron_address'],
'to' => $zong,
'privateKey' => controller("Common")->trc_decrypt($wallet['tron_private_key']),
'amount' => $usdt,
"version" => 2,
'contract' => 'TCsUiQVkHv5HjRug7R9UEausTg1kitMGBD' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $usdt,
'type' => 'outusdt',
'inaddr' => $zong,
'outaddr' => $wallet['tron_address'],
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'huizong ' . $value['user_id'] . '-' . $usdt;
} else if ($usdt <= 0.01 && !empty($usdt)) {
Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-APT')
->where('user_id', $value['user_id'])
->update(['is_outer' => '1', 'update_time' => time()]);
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
//波长EVT手续费派发
public function listenCreditTron_evt()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zong = Config::get('site.trx_z_address');
$zongarr = Db::name('app_currency_user')
->where('tron_address', $zong)->find();
if (!$zongarr) {
echo 'Not exits tron address';
}
echo $zongarr['user_id'];
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-EVT充值')
->where('user_id', '<>', $zongarr['user_id'])
->where('price', '>=',100)
->group('user_id')
->limit(10)->select();
$zongkey = controller("Common")->trc_decrypt($zongarr['tron_private_key']);
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $zong,
];
$ztrx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$ztrx = $ztrx['data'];
$fee = 6;
if ($ztrx < $fee) {
echo "banlance not enough " . $ztrx;
exit;
}
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '20')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TXTJXcPKrYTbyEToA8ct3gBvw2GimERUAn' //evt
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('inaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx < $fee && $lasttime < time()) {
if(empty($wallet['tron_address_hex'])){
$wallet['tron_address_hex'] = Db::name('app_currency_user')->where('curr_id', '2')->where('user_id', $value['user_id'])->value("tron_address_hex");
}
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $zong,
'to' => $wallet['tron_address_hex'],
'privateKey' => $zongkey,
'amount' => $fee,
"version" => 2,
// 'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $fee,
'type' => 'out',
'inaddr' => $wallet['tron_address'],
'outaddr' => $zong,
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'paifa -' . $value['user_id'] . '- ' . $fee . ' trx';
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
//波长IFT手续费派发
public function listenCreditTron_ift()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zong = Config::get('site.trx_z_address');
$zongarr = Db::name('app_currency_user')
->where('tron_address', $zong)->find();
if (!$zongarr) {
echo 'Not exits tron address';
}
echo $zongarr['user_id'];
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-IFT充值')
->where('user_id', '<>', $zongarr['user_id'])
->where('price', '>=',100)
->group('user_id')
->limit(10)->select();
$zongkey = controller("Common")->trc_decrypt($zongarr['tron_private_key']);
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $zong,
];
$ztrx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$ztrx = $ztrx['data'];
$fee = 6;
if ($ztrx < $fee) {
echo "banlance not enough " . $ztrx;
exit;
}
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '55')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TNpToPDxBMH71BywJruNBRV25di8mrfZqy' //IFT
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('inaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx < $fee && $lasttime < time()) {
if(empty($wallet['tron_address_hex'])){
$wallet['tron_address_hex'] = Db::name('app_currency_user')->where('curr_id', '2')->where('user_id', $value['user_id'])->value("tron_address_hex");
}
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $zong,
'to' => $wallet['tron_address_hex'],
'privateKey' => $zongkey,
'amount' => $fee,
"version" => 2,
// 'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $fee,
'type' => 'out',
'inaddr' => $wallet['tron_address'],
'outaddr' => $zong,
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'paifa -' . $value['user_id'] . '- ' . $fee . ' trx';
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
/**
* 波长EVT归集
*/
public function huizongTron_evt()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zong = "TNgigBy22T9oN4w8ozSapy9vRvtLJif3Xg";
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-EVT充值')
->where('price', '>=',100)
->group('user_id')
->limit(10)->select();
if(empty($list)){
echo "empty";exit;
}
$zongkey = "";
$fee = 5;
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '20')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TXTJXcPKrYTbyEToA8ct3gBvw2GimERUAn' //evt
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('outaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx >= $fee && $usdt > 0 && $lasttime < time()) {
$apt_wallet = Db::name("app_currency_user")->where("user_id",$value['user_id'])->where("curr_id",2)->find();
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $wallet['tron_address'],
'to' => $zong,
'privateKey' => controller("Common")->trc_decrypt($apt_wallet['tron_private_key']),
'amount' => $usdt,
"version" => 2,
'contract' => 'TXTJXcPKrYTbyEToA8ct3gBvw2GimERUAn' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $usdt,
'type' => 'outusdt',
'inaddr' => $zong,
'outaddr' => $wallet['tron_address'],
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'huizong ' . $value['user_id'] . '-' . $usdt;
} else if ($usdt <= 0.01 && !empty($usdt)) {
Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-EVT充值')
->where('user_id', $value['user_id'])
->update(['is_outer' => '1', 'update_time' => time()]);
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
/**
* 波长EVT归集
*/
public function huizongTron_ift()
{
if(Config::get('site.trx_hzswitch') == '0'){
echo "Switch close";
exit;
}
$zong = "TNgigBy22T9oN4w8ozSapy9vRvtLJif3Xg";
$list = Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-IFT充值')
->where('price', '>=',100)
->group('user_id')
->limit(10)->select();
if(empty($list)){
echo "empty";exit;
}
$zongkey = "";
$fee = 5;
foreach ($list as $key => $value) {
$wallet = Db::name('app_currency_user')
->where('curr_id', '55')
->where('user_id', $value['user_id'])->find();
if (empty($wallet['tron_address'])) continue;
//查询余额
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
];
$trx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$trx = $trx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $wallet['tron_address'],
'contract' => 'TNpToPDxBMH71BywJruNBRV25di8mrfZqy' //IFT
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
$transfer = Db::name('usdt_transfer')
->where('user_id', $value['user_id'])
->where('outaddr', $wallet['tron_address'])
->find();
if ($transfer) {
$lasttime = $transfer['time'] + 600;
} else {
$lasttime = 0;
}
if ($trx >= $fee && $usdt > 0 && $lasttime < time()) {
$apt_wallet = Db::name("app_currency_user")->where("user_id",$value['user_id'])->where("curr_id",2)->find();
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $wallet['tron_address'],
'to' => $zong,
'privateKey' => controller("Common")->trc_decrypt($apt_wallet['tron_private_key']),
'amount' => $usdt,
"version" => 2,
'contract' => 'TNpToPDxBMH71BywJruNBRV25di8mrfZqy' //IFT
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || isset($result['data']['data']['txid'])) {
echo "transfer error:" . json_encode($result);
} else {
$insertdata = [
'user_id' => $value['user_id'],
'fee' => $usdt,
'type' => 'outusdt',
'inaddr' => $zong,
'outaddr' => $wallet['tron_address'],
'time' => time(),
'result' => json_encode($result),
];
Db::name('usdt_transfer')->insert($insertdata);
}
echo 'huizong ' . $value['user_id'] . '-' . $usdt;
} else if ($usdt <= 0.01 && !empty($usdt)) {
Db::name('app_detailed')
->where('cart', '1')
->where('type', '1')
->where('is_outer', '0')
->where('description', 'trc20-IFT充值')
->where('user_id', $value['user_id'])
->update(['is_outer' => '1', 'update_time' => time()]);
}
Db::name('app_currency_user')->where('id', $wallet['id'])
->update(['trxnum' => $trx, 'trxusdt' => $usdt, 'listentime' => time()]);
}
}
//自动审核提现
public function autotx()
{
$limitnum = Config::get('site.widthdrawnum');
$data = Db::name('app_widthdraw')->where('status','2')
->whereIn('curr_id',['usdt-trc20','usdt-erc20'])
->where('num','<',$limitnum)->limit(2)->select();
if(Config::get('site.autodwswitch') != '1'){
echo 'Auto widthdraw close';exit;
}
foreach ($limitnum as $key=>$row){
$user = Db::name('app_currency_user')
->where('user_id', $row['user_id'])
->where('curr_id', '1')
->find();
if ($row['curr_id'] == 'usdt-erc20') {
$zongqb = Config::get('site.eth_z_address');
$zongarr = Db::name('app_currency_user')
->where('address', $zongqb)->find();
if (!$zongarr) {
echo '总钱包不存在';continue;
}
$zongqbmm = Config::get('site.zeth_pass');
$result = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "getBalance", 'address' => $zongqb, "code" => "shethdata2021.1"]), true);
$ethnum = hexdec($result['data']['result']) / (pow(10, 18));
$result = json_decode(http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "getBalance", 'address' => $zongqb,
"contract" => "0xdac17f958d2ee523a2206206994597c13d831ec7", "code" => "shethdata2021.1"]), true);
$usdtnum = hexdec($result['data']['result']) / (pow(10, 6));
if ($ethnum < 0.01 || $usdtnum < $row['real_num']) {
echo '总钱包余额不足,ETH:' . $ethnum . '-USDT:' . $usdtnum;
continue;
}
$numss = str_pad(strval($this->bc_dechex($row['real_num'] * bcpow(10, 6))), 64, '0', STR_PAD_LEFT);
$result = http_curl(Config::get('site.eth_rpc_ip'), 'post',
['command' => "transfer", "from" => $zongqb, "to" => $row['address'],
"value" => $numss, "contract" => '0xdac17f958d2ee523a2206206994597c13d831ec7',
"password" => $zongqbmm, "code" => "shethdata2021.1"]);
$resultarr = json_decode($result, true);
if (!isset($resultarr['data']['hash_address']) || empty($resultarr['data']['hash_address'])) {
echo "transfer error:" . $result;
continue;
}
$result = Db::name('app_widthdraw')
->where('id', $row['id'])->update(['status' => '1', 'hash' => $resultarr['data']['hash_address']
, 'exam_time' => time(),'description' => '系统审核成功']);
} else if ($row['curr_id'] == 'usdt-trc20') {
$zong = Config::get('site.trx_z_address');
$zongarr = Db::name('app_currency_user')
->where('tron_address', $zong)->find();
if (!$zongarr) {
echo '总钱包不存在';continue;
}
$zongkey = controller("Common")->trc_decrypt($zongarr['tron_private_key']);
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $zong,
];
$ztrx = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$ztrx = $ztrx['data'];
$data = [
'command' => "getBalance",
'code' => "tronapi2021.1",
'address' => $zong,
'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$usdt = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
$usdt = $usdt['data'];
if ($ztrx < 2 || $usdt < $row['real_num']) {
echo '总钱包余额不足,TRX:' . $ztrx . '-USDT:' . $usdt;
continue;
}
//转账
$data = [
'command' => "transfer",
'code' => "tronapi2021.1",
'from' => $zong,
'to' => $row['address'],
'privateKey' => $zongkey,
'amount' => $row['real_num'],
'contract' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' //usdt
];
$result = json_decode(http_curl(Config::get('site.trx_rpc_ip'), 'post', $data), true);
if ($result['code'] != 1 || !isset($result['data']['txid'])) {
echo "transfer error:" . json_encode($result);continue;
}
$result = Db::name('app_widthdraw')
->where('id', $row['id'])->update(['status' => '1', 'hash' => $result['data']['txid']
, 'exam_time' => time(),'description' => '系统审核成功']);
} else {
$this->error(__('系统繁忙'));
}
}
}
}