85 lines
3.2 KiB
PHP
85 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Widgets\InfoBox;
|
|
use App\Enums\PayWay;
|
|
use App\Enums\WalletToBankLogStatus;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Order;
|
|
use App\Models\WalletLog;
|
|
use App\Models\WalletToBankLog;
|
|
use Carbon\Carbon;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Layout\Column;
|
|
use Dcat\Admin\Layout\Content;
|
|
use Dcat\Admin\Layout\Row;
|
|
use Dcat\Admin\Widgets\Card;
|
|
|
|
class MonthlyStatisticsController extends Controller
|
|
{
|
|
public function index(Content $content)
|
|
{
|
|
Admin::requireAssets(['moment', 'bootstrap-datetimepicker']);
|
|
|
|
Admin::script(
|
|
<<<JS
|
|
$('#month-picker').datetimepicker({
|
|
locale: 'zh_CN',
|
|
viewMode: 'years',
|
|
format: 'YYYY-MM'
|
|
});
|
|
JS
|
|
);
|
|
|
|
return $content
|
|
->header('每月统计')
|
|
->body(function (Row $row) {
|
|
if (blank($date = request('date'))) {
|
|
$date = date('Y-m');
|
|
}
|
|
|
|
$start = Carbon::parse($date)->startOfMonth();
|
|
$end = $start->copy()->endOfMonth();
|
|
|
|
$row->column(12, function (Column $column) use ($date) {
|
|
$form = <<<HTML
|
|
<form class="form-inline">
|
|
<div class="form-group">
|
|
<label>日期</label>
|
|
<div class="input-group mx-1">
|
|
<span class="input-group-prepend">
|
|
<span class="input-group-text bg-white"><i class="fa fa-calendar fa-fw"></i></span>
|
|
</span>
|
|
<input type="text" class="form-control" name="date" id='month-picker' placeholder="日期" value="$date" >
|
|
</div>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary">查询</button>
|
|
</form>
|
|
HTML;
|
|
|
|
$column->row(new Card(null, $form));
|
|
});
|
|
|
|
$totalPreIncome = WalletLog::where('loggable_type', 'distribution_pre_income')
|
|
->whereBetween('created_at', [$start, $end])
|
|
->sum('change_balance');
|
|
|
|
// 提现总额
|
|
$withdrawAmount = WalletToBankLog::where('status', WalletToBankLogStatus::Success)
|
|
->whereBetween('updated_at', [$start, $end])
|
|
->sum('amount');
|
|
|
|
// 余额支付总额
|
|
$totalOrderAmount = Order::where('status', Order::STATUS_COMPLETED)
|
|
->whereBetween('completed_at', [$start, $end])
|
|
->where('pay_way', PayWay::Balance)
|
|
->sum('total_amount');
|
|
|
|
$row->column(3, new InfoBox('返利总额', bcdiv($totalPreIncome, '100', 2), 'fa fa-cny'));
|
|
$row->column(3, new InfoBox('提现总额', bcdiv($withdrawAmount, '100', 2), 'fa fa-cny'));
|
|
$row->column(3, new InfoBox('余额支付总额', bcdiv($totalOrderAmount, '100', 2), 'fa fa-cny'));
|
|
});
|
|
}
|
|
}
|