diff --git a/app/Admin/Controllers/OrderController.php b/app/Admin/Controllers/OrderController.php index d59c5aaa..457dff06 100644 --- a/app/Admin/Controllers/OrderController.php +++ b/app/Admin/Controllers/OrderController.php @@ -17,13 +17,16 @@ use App\Admin\Renderable\Grid\Filter\OrderStatusIn; use App\Admin\Renderable\PackageProductSimpleTable; use App\Constants\OrderStatus; use App\Enums\PayWay; +use App\Enums\PointLogAction; use App\Models\Order; use App\Models\OrderActivity; use App\Models\OrderLog; use App\Models\OrderPackage; use App\Models\OrderProduct; use App\Models\OrderProfit; +use App\Models\PointLog; use App\Models\Tag; +use App\Models\UserVip; use Box\Spout\Writer\Common\Creator\WriterEntityFactory; use Dcat\Admin\Admin; use Dcat\Admin\Form; @@ -404,7 +407,20 @@ class OrderController extends AdminController return bcdiv($this->point_discount_amount + $this->total_amount, 100, 2); })->prepend('- ¥'); $show->field('point_discount_amount')->as(function ($v) { - return bcdiv($v, 100, 2); + $result = bcdiv($v, 100, 2); + // 使用积分抵扣 + if ($v > 0) { + // 当前订单使用积分抵扣, 对应的积分流水记录 + $pointLog = PointLog::query() + ->where('loggable_type', (new Order())->getMorphClass()) + ->where('loggable_id', $this->id) + ->where('action', PointLogAction::Consumption) + ->first(); + if ($pointLog) { + $result .= '(本次余额: ' . bcdiv($pointLog->after_points, 100, 0) . ')'; + } + } + return $result; })->prepend('- ¥'); $show->field('total_amount')->as(function ($v) { return bcdiv($v, 100, 2); @@ -599,6 +615,23 @@ class OrderController extends AdminController $grid->disableRefreshButton(); })); $column->row($profitBox->collapsable()); + + // 会员购买记录 + $userId = Order::where('id', $id)->value('user_id'); + $userVipBuilder = UserVip::where('user_id', $userId)->orderBy('success_time', 'desc'); + $userVipBox = Box::make('会员购买记录', Grid::make($userVipBuilder, function (Grid $grid) { + $grid->column('name', '会员卡'); + $grid->column('times', '时效')->display(function ($v) { + return data_get($v, 'text'); + }); + $grid->column('success_time', '办理时间'); + $grid->column('expired', '有效时间'); + + $grid->disableActions(); + $grid->disablePagination(); + $grid->disableRefreshButton(); + })); + $column->row($userVipBox->collapsable()); }); }; } diff --git a/app/Admin/Controllers/UserVipController.php b/app/Admin/Controllers/UserVipController.php index 3f5a9bbd..b401e16a 100644 --- a/app/Admin/Controllers/UserVipController.php +++ b/app/Admin/Controllers/UserVipController.php @@ -63,7 +63,7 @@ class UserVipController extends AdminController $show->field('pay.pay_sn', '订单号'); $show->field('pay.pay_way', '支付方式')->as(function ($value) { - return $this->pay->pay_way->text(); + return $this->pay?->pay_way->text(); }); $show->panel()->tools(function ($tools) { diff --git a/app/Services/VipService.php b/app/Services/VipService.php index 23125811..4a075b86 100644 --- a/app/Services/VipService.php +++ b/app/Services/VipService.php @@ -81,6 +81,9 @@ class VipService */ public function success(UserVip $userVip, array $params = null) { + if ($userVip->status == UserVip::STATUS_SUCCESS) { + return false; + } $userVip->update([ 'status' => 1, 'success_time' => data_get($params, 'pay_at', now())