6
0
Fork 0

完善会员管理

release
vine_liutk 2021-12-29 21:12:22 +08:00
parent eaa3bd791e
commit 69234d6e1a
10 changed files with 158 additions and 5 deletions

View File

@ -9,6 +9,10 @@ use App\Admin\Actions\Show\UserDisableBonus;
use App\Admin\Actions\Show\UserEditBank;
use App\Admin\Actions\Show\UserEditPhone;
use App\Admin\Actions\Show\UserEnableBonus;
use App\Admin\Renderable\DistributionPreIncomeSimpleTable;
use App\Admin\Renderable\UserBalanceLogSimpleTable;
use App\Admin\Renderable\UserFansSimpleTable;
use App\Admin\Renderable\UserWalletLogSimpleTable;
use App\Admin\Repositories\User;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
@ -162,13 +166,13 @@ class UserController extends AdminController
$row->column(7, function ($column) use ($id) {
$tab = Tab::make();
// todo_粉丝列表
$tab->add('粉丝列表', 'html1');
$tab->add('粉丝列表', UserFansSimpleTable::make(['id'=>$id]));
// todo-预收益明细
$tab->add('预收益明细', 'html2');
$tab->add('预收益明细', DistributionPreIncomeSimpleTable::make(['id'=>$id]));
// todo-可提明细
$tab->add('可提明细', 'html3');
$tab->add('可提明细', UserWalletLogSimpleTable::make(['id'=>$id]));
// todo-余额明细
$tab->add('余额明细', 'html4');
$tab->add('余额明细', UserBalanceLogSimpleTable::make(['id'=>$id]));
$column->row(Box::make('用户记录', $tab));
});
};

View File

@ -0,0 +1,35 @@
<?php
namespace App\Admin\Renderable;
use App\Models\DistributionPreIncome;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class DistributionPreIncomeSimpleTable extends LazyRenderable
{
public function grid(): Grid
{
$userId = $this->payload['id']??0;
$builder = DistributionPreIncome::query();
$builder->with('logs')->where('user_id', $userId);
return Grid::make($builder, function (Grid $grid) {
$grid->column('remarks', '备注');
$grid->column('status', '状态')->using([
0=>'未结算',
1=>'结算中',
2=>'已结算',
])->dot([
0=>'danger',
1=>'danger',
2=>'success',
]);
$grid->column('total_revenue', '收益');
$grid->column('created_at', '创建时间');
// $grid->withBorder();
$grid->model()->orderBy('created_at', 'desc');
$grid->disableRefreshButton();
$grid->disableActions();
});
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace App\Admin\Renderable;
use App\Models\BalanceLog;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class UserBalanceLogSimpleTable extends LazyRenderable
{
public function grid(): Grid
{
$userId = $this->payload['id']??0;
$builder = BalanceLog::query();
$builder->where('user_id', $userId);
return Grid::make($builder, function (Grid $grid) {
$grid->column('remarks', '备注');
$grid->column('change_balance', '变动金额(元)')->display(function ($value) {
$value = bcdiv($value, 100, 2);
return $value;
});
$grid->column('before_balance', '变动前(元)')->display(function ($value) {
$value = bcdiv($value, 100, 2);
return $value;
});
$grid->column('created_at', '变动时间');
// $grid->withBorder();
$grid->model()->orderBy('created_at', 'desc');
$grid->disableRefreshButton();
$grid->disableActions();
});
}
}

View File

@ -0,0 +1,34 @@
<?php
namespace App\Admin\Renderable;
use App\Models\UserInfo;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class UserFansSimpleTable extends LazyRenderable
{
public function grid(): Grid
{
$userId = $this->payload['id']??0;
$builder = UserInfo::query();
$builder->with('user')->where('inviter_id', $userId);
return Grid::make($builder, function (Grid $grid) {
$grid->column('user.phone', '手机号')->link(function ($value) {
return admin_url('users/'.$this->user_id);
});
$grid->column('agent_level', '管理级别')->display(function ($value) {
return $this->agent_level_name??'未知';
})->label();
$grid->column('growth_value', '消费值');
$grid->column('group_sales_value', '业绩');
$grid->column('created_at', '注册时间');
// $grid->withBorder();
$grid->model()->orderBy('created_at', 'desc');
$grid->disableRefreshButton();
$grid->disableActions();
});
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace App\Admin\Renderable;
use App\Models\WalletLog;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class UserWalletLogSimpleTable extends LazyRenderable
{
public function grid(): Grid
{
$userId = $this->payload['id']??0;
$builder = WalletLog::query();
$builder->where('user_id', $userId);
return Grid::make($builder, function (Grid $grid) {
$grid->column('remarks', '备注');
$grid->column('change_balance', '变动金额(元)')->display(function ($value) {
$value = bcdiv($value, 100, 2);
return $value;
});
$grid->column('before_balance', '变动前(元)')->display(function ($value) {
$value = bcdiv($value, 100, 2);
return $value;
});
$grid->column('created_at', '变动时间');
// $grid->withBorder();
$grid->model()->orderBy('created_at', 'desc');
$grid->disableRefreshButton();
$grid->disableActions();
});
}
}

View File

@ -202,7 +202,11 @@ class WalletController extends Controller
$rate = app_settings('withdraw.rate', '0.00');//手续费率
//计算手续费(四舍五入)
$serviceAmount = round($rate*$amount);
$serviceAmount = round(bcdiv($rate, 100, 4)*$amount);
// //最少1分手续费
// if ($serviceAmount == 0) {
// $serviceAmount = 1;
// }
//生成提现记录
$log = WalletToBankLog::create([
'user_id' =>$user->id,

View File

@ -2,12 +2,14 @@
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model;
class BalanceLog extends Model
{
use Filterable;
use HasDateTimeFormatter;
public const ACTION_ORDER_PAID = 1;
public const ACTION_ORDER_CANCELLED = 2;

View File

@ -2,10 +2,13 @@
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
class DistributionPreIncome extends Model
{
use HasDateTimeFormatter;
public const STATUS_PENDING = 0;
public const STATUS_PROCESSING = 1;
public const STATUS_PROCESSED = 2;

View File

@ -2,11 +2,14 @@
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class UserInfo extends Model
{
use HasDateTimeFormatter;
public const GENDER_UNKNOWN = 'unknown'; // 未知
public const GENDER_MALE = 'male'; // 男性
public const GENDER_FEMALE = 'female'; // 女性

View File

@ -2,12 +2,14 @@
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model;
class WalletLog extends Model
{
use Filterable;
use HasDateTimeFormatter;
public const ACTION_ORDER_PAID = 1;
public const ACTION_ORDER_CANCELLED = 2;