6
0
Fork 0

积分优化

base
Jing Li 2023-10-19 13:49:48 +08:00
parent 61b32d6f8e
commit 95bb9c7822
11 changed files with 48 additions and 19 deletions

View File

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

View File

@ -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
<span class="label bg-success">{$phone}</span>
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 <<<HTML
<table class="table table-bordered">
<tbody>
<tr>
<td>统计</td>
<td>订单数: $count</td>
<td>积分: $point_discount_amount</td>
<td>订单总额: $total_amount</td>
<td>市场价: $market_price</td>
<td>成本价: $cost_price</td>
@ -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) {

View File

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

View File

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

View File

@ -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')

View File

@ -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('是否确认变更?', '提交后该动作无法逆转');
}

View File

@ -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(),
];

View File

@ -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),
];
}
}

View File

@ -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 => '钱包',

View File

@ -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)), // 积分抵扣金额
];
}

View File

@ -58,7 +58,7 @@ return [
'market_price' => '市场价',
'cost_price' => '成本价',
'out_trade_no' => '支付流水号',
'point_discount_amount' => '积分抵扣',
'point_discount_amount' => '积分',
],
'options' => [
],