6
0
Fork 0
jiqu-library-server/app/Admin/Controllers/MonthlyStatisticsController...

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'));
});
}
}