diff --git a/app/Admin/Controllers/AfterSaleController.php b/app/Admin/Controllers/AfterSaleController.php
index 3865ad51..8f1d5947 100644
--- a/app/Admin/Controllers/AfterSaleController.php
+++ b/app/Admin/Controllers/AfterSaleController.php
@@ -79,7 +79,7 @@ class AfterSaleController extends AdminController
}
return bcdiv($value, 100, 2);
})->prepend('¥');
- $grid->column('points');
+ $grid->column('points')->display(fn ($value) => bcdiv($value, 100, 2));
$grid->column('type')->using([
AfterSaleModel::TYPE_REFUND_AND_RETURN => '退款退货',
AfterSaleModel::TYPE_REFUND => '退款',
@@ -159,7 +159,7 @@ class AfterSaleController extends AdminController
$show->field('amount', '售后金额')->as(function ($amount) {
return '¥'.bcdiv($amount, 100, 2);
});
- $show->field('points', '售后积分');
+ $show->field('points', '售后积分')->as(fn ($amount) => bcdiv($amount, 100, 2));
}
$show->width(6)->field('user.user_info.nickname', '下单用户');
$show->field('user.phone');
diff --git a/app/Admin/Controllers/OrderController.php b/app/Admin/Controllers/OrderController.php
index 77cd95e7..bff2c06b 100644
--- a/app/Admin/Controllers/OrderController.php
+++ b/app/Admin/Controllers/OrderController.php
@@ -73,6 +73,7 @@ class OrderController extends AdminController
'商品名称',
'数量',
'价格',
+ '积分',
'金额',
'待发货数量',
'所属订单',
@@ -92,6 +93,7 @@ class OrderController extends AdminController
$product->name,
$product->quantity,
bcdiv($product->sell_price, '100', 2),
+ bcdiv($product->point_discount_amount, '100', 2),
bcdiv($product->total_amount, '100', 2),
$product->remain_quantity,
$order->sn,
@@ -148,6 +150,9 @@ class OrderController extends AdminController
{$phone}
HTML;
});
+ $grid->column('point_discount_amount')->display(function ($value) {
+ return bcdiv($value, 100, 2);
+ })->prepend('¥');
$grid->column('total_amount')->display(function ($value) {
return bcdiv($value, 100, 2);
})->prepend('¥');
@@ -207,6 +212,13 @@ class OrderController extends AdminController
PayWay::WxpayMiniProgram->value => PayWay::WxpayMiniProgram->text(),
PayWay::Offline->value => PayWay::Offline->text(),
])->width(3);
+ $filter->where('order_type', function ($builder) {
+ if ($this->input == 1) {
+ $builder->where('point_discount_amount', '>', 0);
+ } else {
+ $builder->where('point_discount_amount', 0);
+ }
+ }, '订单类型')->select([1 => '积分订单', 2 => '其他订单'])->width(3);
$filter->where('order_status', function ($q) {
switch ($this->input) {
case OrderStatus::PENDING:
@@ -274,12 +286,14 @@ class OrderController extends AdminController
$market_price = number_format($query->sum('market_price') / 100, 2);
$cost_price = number_format($query->sum('cost_price') / 100, 2);
$sales_value = number_format($query->sum('sales_value'));
+ $point_discount_amount = bcdiv($query->sum('point_discount_amount'), 100, 2);
return <<
| 统计 |
订单数: $count |
+ 积分: $point_discount_amount |
订单总额: $total_amount |
市场价: $market_price |
成本价: $cost_price |
@@ -425,7 +439,7 @@ class OrderController extends AdminController
$grid->column('coupon_discount_amount', '优惠券折扣')->display(function ($value) {
return bcdiv($value, 100, 2);
})->prepend('¥');
- $grid->column('point_discount_amount', '积分抵扣')->display(function ($value) {
+ $grid->column('point_discount_amount', '积分')->display(function ($value) {
return bcdiv($value, 100, 2);
})->prepend('¥');
$grid->column('reduced_amount', '减免金额')->display(function ($value) {
diff --git a/app/Admin/Controllers/PointLogController.php b/app/Admin/Controllers/PointLogController.php
index 8eef2a8a..24b3bfab 100644
--- a/app/Admin/Controllers/PointLogController.php
+++ b/app/Admin/Controllers/PointLogController.php
@@ -37,9 +37,15 @@ class PointLogController extends AdminController
$grid->column('id')->sortable();
$grid->column('user.phone')->copyable();
$grid->column('action')->display(fn ($action) => $action->label())->label();;
- $grid->column('change_points');
- $grid->column('before_points');
- $grid->column('after_points');
+ $grid->column('change_points')->display(function ($value) {
+ return bcdiv($value, 100, 2);
+ });
+ $grid->column('before_points')->display(function ($value) {
+ return bcdiv($value, 100, 2);
+ });
+ $grid->column('after_points')->display(function ($value) {
+ return bcdiv($value, 100, 2);
+ });
$grid->column('remark');
$grid->column('created_at');
@@ -59,7 +65,7 @@ class PointLogController extends AdminController
$totalPoints = (clone $query)->sum('change_points');
- $row->column(2, new InfoBox('积分总数', $totalPoints, 'fa fa-ticket'));
+ $row->column(2, new InfoBox('积分总数', bcdiv($totalPoints, 100, 2), 'fa fa-ticket'));
});
});
diff --git a/app/Admin/Controllers/UserController.php b/app/Admin/Controllers/UserController.php
index 2dbc601b..717ded55 100644
--- a/app/Admin/Controllers/UserController.php
+++ b/app/Admin/Controllers/UserController.php
@@ -54,7 +54,7 @@ class UserController extends AdminController
$grid->column('userInfo.inviterInfo.user.phone')->display(function ($v) {
return $v ?: $this->userInfo?->inviter_id;
})->copyable();
- $grid->column('userInfo.points')->sortable()->if(function () {
+ $grid->column('userInfo.points')->display(fn ($value) => bcdiv($value, 100, 2))->sortable()->if(function () {
return Admin::user()->can('dcat.admin.point_logs.index');
})->then(function (Grid\Column $column) {
$column->link(function ($value) {
@@ -157,7 +157,7 @@ class UserController extends AdminController
// $show->field('userInfo.nickname');
// $show->field('userInfo.gender')->using(UserInfo::$genderTexts)->label();
// $show->field('userInfo.birthday');
-
+ $show->field('user_info.points', '积分')->as(fn ($value) => bcdiv($value, 100, 2))->prepend('¥');
$show->field('user_info.growth_value', '成长值');
$show->field('profit');
$show->field('user_info.is_company', '员工')->as(function ($v) {
@@ -173,7 +173,6 @@ class UserController extends AdminController
// $value = bcdiv($value, 100, 2);
// return $value;
// })->prepend('¥');
- // $show->field('user_info.points');
});
$show->row(function (Show\Row $show) {
$show->width(6)->field('last_login_ip');
diff --git a/app/Admin/Forms/AfterSaleVerify.php b/app/Admin/Forms/AfterSaleVerify.php
index 11bf2285..39dfeafc 100644
--- a/app/Admin/Forms/AfterSaleVerify.php
+++ b/app/Admin/Forms/AfterSaleVerify.php
@@ -105,7 +105,11 @@ class AfterSaleVerify extends Form implements LazyRenderable
})->saving(function ($amount) {
return bcmul($amount, 100);
})->symbol('¥');
- $this->number('points')->default($afterSale->points);
+ $this->currency('points')->customFormat(function () use ($afterSale) {
+ return bcdiv($afterSale->points, 100, 2);
+ })->saving(function ($points) {
+ return bcmul($points, 100);
+ })->symbol('¥');
}
$this->radio('state')
diff --git a/app/Admin/Forms/PointChange.php b/app/Admin/Forms/PointChange.php
index 3a231b50..b3ed3fba 100644
--- a/app/Admin/Forms/PointChange.php
+++ b/app/Admin/Forms/PointChange.php
@@ -25,7 +25,7 @@ class PointChange extends Form implements LazyRenderable
{
$changePoints = (int) $input['change_points'];
- if ($changePoints < 1) {
+ if ($changePoints < 0) {
return $this->response()->error('积分必须大于1');
}
@@ -68,7 +68,9 @@ class PointChange extends Form implements LazyRenderable
])
->default(PointLogAction::Recharge->value)
->required();
- $this->number('change_points', '积分')->min(1)->required();
+ $this->currency('change_points', '积分')->symbol('¥')->saving(function ($value) {
+ return bcmul($value, 100);
+ })->required();
$this->textarea('remark', '备注')->required();
$this->confirm('是否确认变更?', '提交后该动作无法逆转');
}
diff --git a/app/Endpoint/Api/Http/Resources/PointLogResource.php b/app/Endpoint/Api/Http/Resources/PointLogResource.php
index 2ea25aab..769e9368 100644
--- a/app/Endpoint/Api/Http/Resources/PointLogResource.php
+++ b/app/Endpoint/Api/Http/Resources/PointLogResource.php
@@ -17,7 +17,7 @@ class PointLogResource extends JsonResource
return [
'id' => $this->id,
'action' => $this->action,
- 'change_points' => $this->change_points,
+ 'change_points' => bcdiv($this->change_points, 100, 2),
'remark' => (string) $this->remark,
'created_at' => $this->created_at->toDateTimeString(),
];
diff --git a/app/Endpoint/Api/Http/Resources/UserInfoResource.php b/app/Endpoint/Api/Http/Resources/UserInfoResource.php
index af28ef1f..f2b025b9 100644
--- a/app/Endpoint/Api/Http/Resources/UserInfoResource.php
+++ b/app/Endpoint/Api/Http/Resources/UserInfoResource.php
@@ -21,7 +21,7 @@ class UserInfoResource extends JsonResource
'birthday' => (string) $this->birthday?->toDateString(),
'code' => (string) $this->code,
'is_company' => (boolean) $this->is_company,
- 'points' => $this->points,
+ 'points' => bcdiv($this->points, 100, 2),
];
}
}
diff --git a/app/Enums/PayWay.php b/app/Enums/PayWay.php
index c6901a7d..4a87e27f 100644
--- a/app/Enums/PayWay.php
+++ b/app/Enums/PayWay.php
@@ -3,6 +3,7 @@
namespace App\Enums;
enum PayWay: string {
+ case None = 'none';
case Offline = 'offline';
case Balance = 'balance';
case Wallet = 'wallet';
@@ -31,6 +32,7 @@ enum PayWay: string {
public function label()
{
return match ($this) {
+ static::None => 'none',
static::Offline => 'offline',
static::Balance => 'balance',
static::Wallet => 'wallet',
@@ -42,6 +44,7 @@ enum PayWay: string {
public function mallText()
{
return match ($this) {
+ static::None => '无',
static::Offline => '线下',
static::Balance => '余额',
static::Wallet => '可提',
@@ -59,6 +62,7 @@ enum PayWay: string {
public function text(): string
{
return match ($this) {
+ static::None => '无',
static::Offline => '线下',
static::Balance => '余额',
static::Wallet => '钱包',
diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php
index 312d07d5..74d27b0b 100644
--- a/app/Services/OrderService.php
+++ b/app/Services/OrderService.php
@@ -168,7 +168,7 @@ class OrderService
$coupon?->markAsUse();
if ($order->total_amount === 0) {
- $this->pay($order, PayWay::Balance);
+ $this->pay($order, PayWay::None);
$order->refresh();
}
@@ -855,8 +855,8 @@ class OrderService
'coupon_discount_amount' => trim_trailing_zeros(bcdiv($couponDiscountAmount, 100, 2)), // 优惠券折扣金额
'total_amount' => trim_trailing_zeros(bcdiv($totalAmount, 100, 2)), // 实付金额
'bargain_amount' => trim_trailing_zeros(bcdiv($bargainAmount, 100, 2)), //砍价金额
- 'remaining_points' => $remainingPoints, // 剩余积分
- 'available_points' => $availablePoints, // 可用积分
+ 'remaining_points' => trim_trailing_zeros(bcdiv($remainingPoints, 100, 2)), // 剩余积分
+ 'available_points' => trim_trailing_zeros(bcdiv($availablePoints, 100, 2)), // 可用积分
'point_discount_amount' => trim_trailing_zeros(bcdiv($availablePoints, 100, 2)), // 积分抵扣金额
];
}
diff --git a/resources/lang/zh_CN/order.php b/resources/lang/zh_CN/order.php
index 9efeccf1..41c8a6a7 100644
--- a/resources/lang/zh_CN/order.php
+++ b/resources/lang/zh_CN/order.php
@@ -58,7 +58,7 @@ return [
'market_price' => '市场价',
'cost_price' => '成本价',
'out_trade_no' => '支付流水号',
- 'point_discount_amount' => '积分抵扣',
+ 'point_discount_amount' => '积分',
],
'options' => [
],