diff --git a/app/Admin/Controllers/Store/OrderController.php b/app/Admin/Controllers/Store/OrderController.php index ccf3e4cc..82c2d143 100644 --- a/app/Admin/Controllers/Store/OrderController.php +++ b/app/Admin/Controllers/Store/OrderController.php @@ -2,6 +2,7 @@ namespace App\Admin\Controllers\Store; +use App\Admin\Renderable\Grid\Filter\OrderStatusIn; use App\Constants\OrderStatus; use App\Enums\PayWay; use App\Models\Store\{Store, Desk}; @@ -74,7 +75,9 @@ class OrderController extends AdminController $grid->column('profit_price')->display(fn () => bcdiv($this->total_amount + $this->point_discount_amount - $this->cost_price, 100, 2)); $grid->column('user_coupon_id')->display(fn ($value) => $value ? data_get($this->userCoupon, 'coupon_name') . '(¥'.round($this->coupon_discount_amount/100, 2, PHP_ROUND_HALF_DOWN).')' : ''); $grid->column('sales_value'); - $grid->column('order_status')->using($this->statusMap)->dot($this->statusColor); + $grid->column('order_status')->using($this->statusMap)->dot($this->statusColor)->filter( + OrderStatusIn::make($this->statusMap) + );; $grid->column('created_at'); $grid->column('pay_at'); $grid->column('completed_at'); @@ -142,8 +145,8 @@ class OrderController extends AdminController OrderStatus::CANCELLED => '已取消' ])->width(3); $filter->where('user_coupon_id', fn($q) => $this->input ? $q->whereNotNull('user_coupon_id') : $q->whereNull('user_coupon_id'))->select(['未使用', '已使用'])->width(3); - $filter->between('completed_at')->dateTime()->width(6); - $filter->where('pay_at', fn($q) => $this->input ? $q->whereNotNull('pay_at') : $q->whereNull('pay_at')->where('status', '!=', Order::STATUS_CANCELLED), '付款状态')->select(['待付款', '已付款'])->width(3); + $filter->between('pay_at')->dateTime()->width(6); + $filter->where('pay_status', fn($q) => $this->input ? $q->whereNotNull('pay_at') : $q->whereNull('pay_at')->where('status', '!=', Order::STATUS_CANCELLED), '付款状态')->select(['待付款', '已付款'])->width(3); }); $grid->footer(function ($collection) use ($grid) { diff --git a/app/Admin/Controllers/Store/StaffPerformanceController.php b/app/Admin/Controllers/Store/StaffPerformanceController.php index c1a17410..1044f0ac 100644 --- a/app/Admin/Controllers/Store/StaffPerformanceController.php +++ b/app/Admin/Controllers/Store/StaffPerformanceController.php @@ -44,6 +44,7 @@ class StaffPerformanceController extends AdminController DB::raw('COUNT(1) AS orders_count'), DB::raw('SUM(point_discount_amount) AS points_deduction_amount'), DB::raw('SUM(total_amount) AS payment_amount'), + DB::raw('SUM(cost_price) AS cost_price'), DB::raw('SUM(profit) AS profit'), ]) ->whereIn('status', [ @@ -91,6 +92,7 @@ class StaffPerformanceController extends AdminController DB::raw('online_performances.orders_count AS online_orders_count'), DB::raw('online_performances.points_deduction_amount AS online_points_deduction_amount'), DB::raw('online_performances.payment_amount AS online_payment_amount'), + DB::raw('online_performances.cost_price AS online_cost_price'), DB::raw('online_performances.profit AS online_profit'), // 线下订单 DB::raw('offline_performances.orders_count AS offline_orders_count'), @@ -108,6 +110,7 @@ class StaffPerformanceController extends AdminController 'online_total_amount', 'online_points_deduction_amount', 'online_payment_amount', + 'online_earnings', 'online_profit', ]); @@ -127,6 +130,7 @@ class StaffPerformanceController extends AdminController $grid->column('online_total_amount')->display(fn () => bcdiv($this->online_points_deduction_amount + $this->online_payment_amount, 100, 2)); $grid->column('online_points_deduction_amount')->display(fn ($v) => bcdiv($v, 100, 2)); $grid->column('online_payment_amount')->display(fn ($v) => bcdiv($v, 100, 2)); + $grid->column('online_earnings')->display(fn ($v) => bcdiv($this->online_points_deduction_amount + $this->online_payment_amount - $this->online_cost_price, 100, 2)); $grid->column('online_profit')->display(fn ($v) => $v ?? '0.00'); // 线下订单业绩 $grid->column('offline_orders_count')->display(fn ($v) => (int) $v); @@ -134,6 +138,9 @@ class StaffPerformanceController extends AdminController $grid->column('offline_points_deduction_amount')->display(fn ($v) => bcdiv($v, 100, 2)); $grid->column('offline_payment_amount')->display(fn ($v) => bcdiv($v, 100, 2)); + $grid->column('total_amount')->display(fn ($v) => bcdiv($this->online_points_deduction_amount + $this->online_payment_amount + $this->offline_points_deduction_amount + $this->offline_payment_amount, 100, 2)); + $grid->column('payment_amount')->display(fn ($v) => bcdiv($this->online_payment_amount + $this->offline_payment_amount, 100, 2)); + $grid->disableRefreshButton(); $grid->disableFilterButton(); $grid->disableActions(); @@ -152,6 +159,7 @@ class StaffPerformanceController extends AdminController DB::raw('SUM(online_performances.orders_count) AS orders_count'), DB::raw('SUM(online_performances.points_deduction_amount) AS points_deduction_amount'), DB::raw('SUM(online_performances.payment_amount) AS payment_amount'), + DB::raw('SUM(online_performances.cost_price) AS cost_price'), DB::raw('SUM(online_performances.profit) AS profit'), ]) ->where('is_company', true); @@ -177,11 +185,12 @@ class StaffPerformanceController extends AdminController }); $onlineResults = $onlineQuery->first(); - $onlineOrdersCount = $onlineResults['orders_count'] ?? 0; $onlinePointsDeductionAmount = bcdiv($onlineResults['points_deduction_amount'] ?? 0, 100, 2); $onlinePaymentAmount = bcdiv($onlineResults['payment_amount'] ?? 0, 100, 2); $onlineTotalAmount = bcadd($onlinePointsDeductionAmount, $onlinePaymentAmount, 2); + $onlineCostPrice = bcdiv($onlineResults['cost_price'] ?? 0, 100, 2); + $onlineEarnings = bcsub($onlineTotalAmount, $onlineCostPrice, 2); $onlineProfit = $onlineResults['profit'] ?? 0; $offlineResults = $offlineQuery->first(); @@ -199,6 +208,7 @@ class StaffPerformanceController extends AdminController