first commit
This commit is contained in:
247
app/Admin/Controllers/FinanceController.php
Normal file
247
app/Admin/Controllers/FinanceController.php
Normal file
@@ -0,0 +1,247 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Company;
|
||||
use App\Models\Finance;
|
||||
use App\Models\OrderPayment;
|
||||
use Artisan;
|
||||
use Carbon\Carbon;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Encore\Admin\Layout\Content;
|
||||
|
||||
class FinanceController extends Controller
|
||||
{
|
||||
public function index(Content $content)
|
||||
{
|
||||
return $content
|
||||
->header('财务概览')
|
||||
->body($this->grid());
|
||||
}
|
||||
|
||||
protected function grid()
|
||||
{
|
||||
$grid = new Grid(new Finance);
|
||||
$grid->disableRowSelector();
|
||||
$grid->disableActions();
|
||||
|
||||
$grid->model()->latest()->with(['company']);
|
||||
// $grid->paginate(Company::count());
|
||||
|
||||
$grid->tools(function ($tools) {
|
||||
$tools->batch(function ($batch) {
|
||||
$batch->disableDelete();
|
||||
});
|
||||
});
|
||||
|
||||
$grid->filter(function ($filter) {
|
||||
$filter->disableIdFilter();
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->like('company.name', '公司名称');
|
||||
$filter->like('sn', '#SN#');
|
||||
$filter->equal('status', '结算状态')->select([
|
||||
0 => '初始化',
|
||||
1 => '结算中',
|
||||
2 => '结算失败',
|
||||
9 => '结算完成',
|
||||
]);
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->date('date', '结算日期');
|
||||
$filter->equal('type', '账单类型')->select([
|
||||
'day' => '日账单',
|
||||
'week' => '周账单',
|
||||
'month' => '月账单',
|
||||
'quarter' => '季账单',
|
||||
'year' => '年账单',
|
||||
'custom' => '自定义',
|
||||
]);
|
||||
$filter->group('orders', '订单总数', function ($group) {
|
||||
$group->gt('大于');
|
||||
$group->lt('小于');
|
||||
$group->nlt('不小于');
|
||||
$group->ngt('不大于');
|
||||
$group->equal('等于');
|
||||
});
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->between('start_time', '结算期始')->datetime();
|
||||
$filter->between('end_time', '结算期止')->datetime();
|
||||
});
|
||||
// $filter->expand();
|
||||
});
|
||||
|
||||
$grid->id('Id')->sortable();
|
||||
$grid->column('公司名称/#SN#')->display(function () {
|
||||
return $this->company->name . '<br>' . $this->sn;
|
||||
});
|
||||
$grid->column('日期/类型')->display(function () {
|
||||
$ret = $this->date . '<br>';
|
||||
$ret .= $this->type_text;
|
||||
return $ret;
|
||||
});
|
||||
$grid->column('结算周期')->display(function () {
|
||||
return $this->start_time . '<br>' . $this->end_time;
|
||||
});
|
||||
|
||||
$grid->column('销售/退款金额')->display(function () {
|
||||
return $this->total_sales . '<br>' . $this->total_refunds;
|
||||
});
|
||||
|
||||
$grid->total_cost('成本金额');
|
||||
$grid->column('订单总数/支付')->display(function () {
|
||||
return $this->orders . ' / ' . $this->orders_paid;
|
||||
});
|
||||
$grid->refunds('退款数量');
|
||||
$grid->heads('参与团长');
|
||||
$grid->users('参与用户');
|
||||
$grid->goods('销售商品');
|
||||
$grid->column('状态')->display(function () {
|
||||
switch ($this->status) {
|
||||
case 0:
|
||||
return '<span class="label label-default">初始化</span>';
|
||||
break;
|
||||
case 1:
|
||||
return '<span class="label label-warning">结算中</span>';
|
||||
break;
|
||||
case 2:
|
||||
return '<span class="label label-danger">结算失败</span>';
|
||||
break;
|
||||
case 9:
|
||||
return '<span class="label label-success">结算完成</span>';
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
$grid->column('创建/更新时间')->display(function () {
|
||||
return $this->created_at . '<br>' . $this->updated_at;
|
||||
});
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function create(Content $content)
|
||||
{
|
||||
return $content
|
||||
->header('手动生成账单')
|
||||
->body($this->form());
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a form builder.
|
||||
*
|
||||
* @return Form
|
||||
*/
|
||||
protected function form()
|
||||
{
|
||||
$form = new Form(new Finance);
|
||||
$form->setWidth(3, 2);
|
||||
$form->footer(function ($footer) {
|
||||
$footer->disableViewCheck();
|
||||
$footer->disableCreatingCheck();
|
||||
$footer->disableEditingCheck();
|
||||
});
|
||||
|
||||
$form->datetimeRange('start_at', 'end_at', '日期范围')->help('选择日期范围的情况下,下面的属性会失效');
|
||||
|
||||
$form->date('date', '账单日期')->default(Carbon::now()->toDateString());
|
||||
$form->select('type', '账单类型')->options([
|
||||
'day' => '日账单',
|
||||
'week' => '周账单',
|
||||
'month' => '月账单',
|
||||
'quarter' => '季账单',
|
||||
'year' => '年账单',
|
||||
'custom' => '自定义',
|
||||
])->default('day')->setWidth(2, 2);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
public function store()
|
||||
{
|
||||
$date = request('date');
|
||||
$type = request('type');
|
||||
|
||||
$start_at = request('start_at');
|
||||
$end_at = request('end_at');
|
||||
|
||||
try {
|
||||
|
||||
if ($start_at && $end_at) {
|
||||
Artisan::call('bill:create', [
|
||||
'--day' => $date,
|
||||
'--type' => [$start_at, $end_at],
|
||||
]);
|
||||
} else {
|
||||
Artisan::call('bill:create', [
|
||||
'--day' => $date,
|
||||
'--type' => $type,
|
||||
]);
|
||||
}
|
||||
admin_toastr('账单生成成功', 'success');
|
||||
return redirect('/admin/finances');
|
||||
} catch (\Exception $e) {
|
||||
admin_toastr($e->getMessage(), 'error');
|
||||
return back();
|
||||
}
|
||||
}
|
||||
|
||||
public function orders(Content $content)
|
||||
{
|
||||
return $content
|
||||
->header('订单支付记录')
|
||||
->description('所有订单的支付记录,包含未支付的信息')
|
||||
->body($this->ordersGrid());
|
||||
}
|
||||
|
||||
public function ordersGrid()
|
||||
{
|
||||
$grid = new Grid(new OrderPayment);
|
||||
$grid->disableRowSelector();
|
||||
$grid->disableActions();
|
||||
$grid->disableCreateButton();
|
||||
|
||||
$grid->model()->latest()->with(['order']);
|
||||
|
||||
$grid->tools(function ($tools) {
|
||||
$tools->batch(function ($batch) {
|
||||
$batch->disableDelete();
|
||||
});
|
||||
});
|
||||
|
||||
$grid->filter(function ($filter) {
|
||||
$filter->disableIdFilter();
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->like('order.orderid', '订单编号');
|
||||
$filter->like('out_trade_no', '支付单号');
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->like('transaction_id', '交易单号');
|
||||
$filter->equal('type', '支付方式')->select([
|
||||
'wxpay' => '微信支付',
|
||||
'balance' => '余额支付',
|
||||
]);
|
||||
});
|
||||
$filter->column(1 / 3, function ($filter) {
|
||||
$filter->between('end_at', '支付时间')->datetime();
|
||||
$filter->between('created_at', '创建时间')->datetime();
|
||||
});
|
||||
// $filter->expand();
|
||||
});
|
||||
|
||||
$grid->id('#Id#')->sortable();
|
||||
$grid->column('order.orderid', '订单编号');
|
||||
$grid->out_trade_no('支付单号');
|
||||
$grid->transaction_id('交易单号');
|
||||
$grid->end_at('支付时间');
|
||||
|
||||
$grid->column('支付方式')->display(function () {
|
||||
return $this->type_text;
|
||||
});
|
||||
|
||||
$grid->created_at('创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user