- 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: 新闻自动采集脚本
1501 lines
65 KiB
PHP
Executable File
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(__('系统繁忙'));
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
} |