first commit
This commit is contained in:
293
app/Admin/Controllers/AccountController.php
Normal file
293
app/Admin/Controllers/AccountController.php
Normal file
@@ -0,0 +1,293 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Account;
|
||||
use App\Models\Head;
|
||||
use App\Models\HeadAccount;
|
||||
use App\Models\HeadProfit;
|
||||
use App\Models\User;
|
||||
use AsLong\UserAccount\Models\UserAccount;
|
||||
use AsLong\UserAccount\Models\UserAccountLog;
|
||||
use AsLong\UserAccount\Models\UserAccountRule;
|
||||
use Encore\Admin\Controllers\HasResourceActions;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Form\Tools;
|
||||
use Encore\Admin\Grid;
|
||||
use Encore\Admin\Layout\Content;
|
||||
use Encore\Admin\Widgets\Table;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AccountController extends Controller
|
||||
{
|
||||
use HasResourceActions;
|
||||
|
||||
/**
|
||||
* Index interface.
|
||||
* @param Content $content
|
||||
* @return Content
|
||||
*/
|
||||
public function users(Content $content)
|
||||
{
|
||||
return $content
|
||||
->header('会员账户')
|
||||
->body($this->userGrid());
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a grid builder.
|
||||
* @return Grid
|
||||
*/
|
||||
protected function userGrid()
|
||||
{
|
||||
$grid = new Grid(new UserAccount);
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableRowSelector();
|
||||
$grid->paginate(10);
|
||||
|
||||
$grid->model()->with('user.info');
|
||||
|
||||
$grid->filter(function ($filter) {
|
||||
$filter->disableIdFilter();
|
||||
|
||||
$filter->where(function ($query) {
|
||||
$query->whereHas('user', function ($query) {
|
||||
$query->whereHas('info', function ($query) {
|
||||
$query->where('nickname', 'like', "%{$this->input}%");
|
||||
});
|
||||
});
|
||||
}, '用户昵称');
|
||||
});
|
||||
|
||||
$grid->column('用户昵称')->display(function () {
|
||||
$avatar = '<img src="' . $this->user->info->avatar . '" alt="" style="width:40px;height:40px;border-radius:50%" />';
|
||||
return $avatar . ' ' . $this->user->info->nickname;
|
||||
});
|
||||
|
||||
$grid->cash('现金账户')->modal('近期账变(20条)', function ($model) {
|
||||
$comments = $model->logs()->where('type', 'cash')->take(20)->orderBy('created_at', 'desc')->get()->map(function ($log) {
|
||||
return [$log->id, $log->rule->title, $log->variable, $log->frozen_text, $log->created_at, $log->source_formart];
|
||||
});
|
||||
return new Table(['ID', '触发事件', '变更数额', '已结算', '变更时间', '描述'], $comments->toArray());
|
||||
});
|
||||
|
||||
$grid->score('积分账户')->modal('近期账变(20条)', function ($model) {
|
||||
$comments = $model->logs()->where('type', 'score')->take(20)->orderBy('created_at', 'desc')->get()->map(function ($log) {
|
||||
return [$log->id, $log->rule->title, $log->variable, $log->frozen_text, $log->created_at, $log->source_formart];
|
||||
});
|
||||
return new Table(['ID', '触发事件', '变更数额', '已结算', '变更时间', '描述'], $comments->toArray());
|
||||
});
|
||||
$grid->updated_at('最后变更时间');
|
||||
|
||||
$grid->actions(function ($actions) {
|
||||
$actions->disableDelete();
|
||||
$actions->disableEdit();
|
||||
$actions->disableView();
|
||||
$actions->append('<a href="/admin/accounts/users/' . $actions->getKey() . '">账户日志</a> ');
|
||||
$actions->append('<a href="/admin/accounts/users/' . $actions->getKey() . '/recharge">充值余额</a>');
|
||||
});
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function recharge(Request $request, Content $content, User $user)
|
||||
{
|
||||
if ($request->isMethod('POST')) {
|
||||
try {
|
||||
$res = Account::executeRule($user, 'recharge', $request->amount, false, ['type' => 'recharge', 'admin' => 1]);
|
||||
admin_toastr('充值成功');
|
||||
return redirect()->action('\App\Admin\Controllers\AccountController@users');
|
||||
} catch (\Exception $e) {
|
||||
admin_toastr($e->getMessage(), 'error');
|
||||
}
|
||||
} else {
|
||||
return $content
|
||||
->header('账户充值')
|
||||
->description($user->info->nickname)
|
||||
->body($this->rechargeForm($user));
|
||||
}
|
||||
}
|
||||
|
||||
protected function rechargeForm($user)
|
||||
{
|
||||
$form = new Form(new User);
|
||||
$form->tools(function (Tools $tools) {
|
||||
$tools->disableList();
|
||||
$tools->disableDelete();
|
||||
$tools->disableView();
|
||||
});
|
||||
$form->footer(function ($footer) {
|
||||
$footer->disableReset();
|
||||
$footer->disableViewCheck();
|
||||
$footer->disableEditingCheck();
|
||||
$footer->disableCreatingCheck();
|
||||
});
|
||||
$form->setAction(route('accounts.recharge', ['user' => $user]));
|
||||
$form->setTitle(' ');
|
||||
$form->setWidth(1, 2);
|
||||
|
||||
$form->currency('amount', '充值金额')->symbol('¥');
|
||||
|
||||
return $form->render();
|
||||
}
|
||||
|
||||
public function user_logs(Content $content, User $user)
|
||||
{
|
||||
return $content
|
||||
->header('账户日志')
|
||||
->description($user->info->nickname)
|
||||
->body($this->userLogsGrid($user->id));
|
||||
}
|
||||
|
||||
protected function userLogsGrid($user_id)
|
||||
{
|
||||
$grid = new Grid(new UserAccountLog);
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableRowSelector();
|
||||
$grid->disableActions();
|
||||
|
||||
$grid->model()->where('user_id', $user_id)->orderBy('id', 'desc')->with(['rule']);
|
||||
|
||||
$grid->filter(function ($filter) {
|
||||
$filter->disableIdFilter();
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->equal('type', '账户类型')->select(config('user_account.account_type'));
|
||||
$filter->equal('rule.id', '触发规则')->select(
|
||||
UserAccountRule::pluck('title', 'id')
|
||||
);
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->equal('variable', '账户变动');
|
||||
$filter->equal('balance', '当期余额');
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->between('created_at', '入账时间')->datetime();
|
||||
$filter->equal('frozen', '已结算')->select([
|
||||
0 => '是',
|
||||
1 => '否',
|
||||
]);
|
||||
});
|
||||
// $filter->expand();
|
||||
});
|
||||
|
||||
$grid->column('账户类型')->display(function () {
|
||||
return $this->type_text;
|
||||
});
|
||||
$grid->column('rule.title', '触发规则');
|
||||
$grid->variable('账户变动');
|
||||
$grid->balance('当期余额');
|
||||
$grid->column('已结算')->display(function () {
|
||||
return $this->frozen_text;
|
||||
});
|
||||
$grid->created_at('入账时间');
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function heads(Content $content)
|
||||
{
|
||||
return $content
|
||||
->header('团长账户')
|
||||
->body($this->headGrid());
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a grid builder.
|
||||
* @return Grid
|
||||
*/
|
||||
protected function headGrid()
|
||||
{
|
||||
$grid = new Grid(new HeadAccount);
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableRowSelector();
|
||||
$grid->disableFilter();
|
||||
|
||||
$grid->model()->with(['head.user.info']);
|
||||
|
||||
$grid->filter(function ($filter) {
|
||||
$filter->disableIdFilter();
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->equal('head_id', '团长编号');
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->like('head.community_name', '社区名称');
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->like('head.head_name', '团长姓名');
|
||||
});
|
||||
// $filter->expand();
|
||||
});
|
||||
|
||||
$grid->head_id('团长编号')->sortable();
|
||||
$grid->column('用户')->display(function () {
|
||||
$avatar = '<img src="' . $this->head->user->info->avatar . '" alt="" style="width:40px;height:40px;border-radius:50%" />';
|
||||
return $avatar . ' ' . $this->head->user->info->nickname;
|
||||
});
|
||||
|
||||
$grid->column('社区/团长')->display(function () {
|
||||
return $this->head->community_name . '<br/>' . $this->head->head_name;
|
||||
});
|
||||
$grid->balance('账户余额');
|
||||
$grid->updated_at('最后变更时间');
|
||||
|
||||
$grid->actions(function ($actions) {
|
||||
$actions->disableDelete();
|
||||
$actions->disableEdit();
|
||||
$actions->disableView();
|
||||
$actions->append('<a href="/admin/accounts/heads/' . $actions->getKey() . '">账户日志</a>');
|
||||
});
|
||||
return $grid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 团长账户日志
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2019-04-17T11:32:12+0800
|
||||
* @param Content $content [description]
|
||||
* @param Head $head [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function head_logs(Content $content, Head $head)
|
||||
{
|
||||
return $content
|
||||
->header('账户日志')
|
||||
->description($head->head_name)
|
||||
->body($this->headLogsGrid($head->id));
|
||||
}
|
||||
|
||||
protected function headLogsGrid($head_id)
|
||||
{
|
||||
$grid = new Grid(new HeadProfit);
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableRowSelector();
|
||||
$grid->disableActions();
|
||||
$grid->disableFilter();
|
||||
|
||||
$grid->model()->where('head_id', $head_id)->orderBy('id', 'desc')->with(['order', 'detail.item']);
|
||||
|
||||
$grid->column('order.orderid', '订单编号');
|
||||
$grid->column('order.amount', '订单总额');
|
||||
$grid->column('商品名称')->display(function () {
|
||||
return $this->detail->item->name;
|
||||
});
|
||||
$grid->column('detail.price', '商品价格');
|
||||
$grid->column('detail.number', '购买数量');
|
||||
$grid->column('商品小计')->display(function () {
|
||||
return $this->detail->total;
|
||||
});
|
||||
$grid->amount('结算金额');
|
||||
$grid->column('结算比例')->display(function () {
|
||||
return number_format($this->amount / $this->detail->total * 100, 2) . '%';
|
||||
});
|
||||
$grid->column('结算状态')->display(function () {
|
||||
if ($this->status == 1) {
|
||||
return '<span class="label label-success">已结算</span>';
|
||||
} else {
|
||||
return '<span class="label label-default">待结算</span>';
|
||||
}
|
||||
});
|
||||
$grid->created_at('创建时间');
|
||||
$grid->settled_at('结算时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user