add button for User page

This commit is contained in:
yll 2022-05-25 15:58:23 +07:00
parent 9e93d7a35d
commit 5695363a56
6 changed files with 127 additions and 44 deletions

View File

@ -0,0 +1,32 @@
<?php
namespace App\Admin\Actions;
use App\User;
use App\Tool\ThirdApi;
use Encore\Admin\Actions\BatchAction;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Log;
class BatchRequestBalance extends BatchAction
{
public $name = '刷新餘額';
public function handle(Collection $collection)
{
foreach ($collection as $model) {
$balance = ThirdApi::getUSDTBalance($model->address);
// TODO 很慢
if ($balance > 0.0) {
User::where('address', $model->address)->update(['USDT' => $balance]);
}
}
return $this->response()->success('已全部刷新')->refresh();
}
public function dialog()
{
$this->confirm('确定刷新所选?');
}
}

View File

@ -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 "<span style='color: #00a65a'>正常</span>";
@ -94,6 +100,7 @@ class UserController extends AdminController
return "<span style='color: red'>禁用</span>";
}
});
$grid->column('use1', __('收益状态'))->display(function ($title) {
if ($title == 1) {
return "<span style='color: #00a65a'>正常</span>";
@ -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;
}

View File

@ -0,0 +1,28 @@
<?php
namespace App\Admin\Tools;
use Encore\Admin\Grid\Tools\AbstractTool;
class RequestBalance extends AbstractTool
{
protected $url;
protected $icon;
protected $text;
function __construct($url, $icon, $text)
{
$this->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'));
}
}

View File

View File

@ -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);

View File

@ -0,0 +1,4 @@
<div class="btn">
<a class="btn btn-sm btn-default pull-right" href="{{$url}}" rel="external nofollow">
<i class="fa {{$icon}}"> </i> {{$text}}</a>
</div>