|
@@ -31,86 +31,43 @@ class GiftCards extends Model implements GiftCardsContract
|
|
|
'customer_id' => 'integer',
|
|
'customer_id' => 'integer',
|
|
|
'expirationdate' => 'date',
|
|
'expirationdate' => 'date',
|
|
|
];
|
|
];
|
|
|
- protected static function booted()
|
|
|
|
|
- {
|
|
|
|
|
- // 监听保存后事件
|
|
|
|
|
- static::saved(function ($giftCard) {
|
|
|
|
|
- // 在这里添加你的逻辑
|
|
|
|
|
- // 例如:记录日志、发送通知等
|
|
|
|
|
- $original = $giftCard->getOriginal();
|
|
|
|
|
- $amountStr = '';
|
|
|
|
|
- $amount = 0;
|
|
|
|
|
- if (isset($original['remaining_giftcard_amount'])) {
|
|
|
|
|
- $amount = $original['remaining_giftcard_amount'] - $giftCard->remaining_giftcard_amount;
|
|
|
|
|
- }
|
|
|
|
|
- if ($amount > 0) {
|
|
|
|
|
- $amountStr .= '-' . abs($amount);
|
|
|
|
|
- } else {
|
|
|
|
|
- $amountStr .= '+' . abs($amount);
|
|
|
|
|
- }
|
|
|
|
|
- \Log::channel('giftcard')->info('礼品卡已更新', [
|
|
|
|
|
- 'giftcard_number' => $giftCard->giftcard_number,
|
|
|
|
|
- 'used_amount' => $amountStr,
|
|
|
|
|
- 'remaining_amount' => $giftCard->remaining_giftcard_amount,
|
|
|
|
|
- ]);
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
public static function setGiftCardCode($giftcard)
|
|
public static function setGiftCardCode($giftcard)
|
|
|
{
|
|
{
|
|
|
- $customerId = auth()->user()->id;
|
|
|
|
|
if (!$giftcard) {
|
|
if (!$giftcard) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
$cart = cart()->getCart();
|
|
$cart = cart()->getCart();
|
|
|
$cart->giftcard_number = $giftcard->giftcard_number;
|
|
$cart->giftcard_number = $giftcard->giftcard_number;
|
|
|
- $cart->giftcard_amount = $giftcard->remaining_giftcard_amount;
|
|
|
|
|
-
|
|
|
|
|
- $giftCards = static::where('giftcard_number', $giftcard->giftcard_number)->where('customer_id', $customerId)->first();
|
|
|
|
|
-
|
|
|
|
|
- if ($giftCards) {
|
|
|
|
|
- if ($cart->grand_total <= $giftcard->remaining_giftcard_amount) {
|
|
|
|
|
- $cart->giftcard_amount = $cart->grand_total;
|
|
|
|
|
- $giftCards->used_giftcard_amount += $cart->grand_total;
|
|
|
|
|
- $giftCards->remaining_giftcard_amount -= $cart->grand_total;
|
|
|
|
|
- $cart->remaining_giftcard_amount = $giftCards->remaining_giftcard_amount;
|
|
|
|
|
- $cart->grand_total = 0;
|
|
|
|
|
- } else {
|
|
|
|
|
- $giftCards->used_giftcard_amount += $giftcard->remaining_giftcard_amount;
|
|
|
|
|
- $giftCards->remaining_giftcard_amount = 0;
|
|
|
|
|
- $cart->remaining_giftcard_amount = 0;
|
|
|
|
|
- $cart->grand_total -= $giftcard->remaining_giftcard_amount;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $giftCards->save();
|
|
|
|
|
|
|
+ // 计算可以使用的礼品卡金额
|
|
|
|
|
+ if ($cart->grand_total <= $giftcard->remaining_giftcard_amount) {
|
|
|
|
|
+ // 礼品卡余额充足,使用全部订单金额
|
|
|
|
|
+ $cart->giftcard_amount = $cart->grand_total;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 礼品卡余额不足,使用全部余额
|
|
|
|
|
+ $cart->giftcard_amount = $giftcard->remaining_giftcard_amount;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ // 更新购物车总额
|
|
|
|
|
+ $cart->grand_total = max(0, $cart->grand_total - $cart->giftcard_amount);
|
|
|
|
|
+ $cart->base_grand_total = max(0, $cart->base_grand_total - $cart->giftcard_amount);
|
|
|
$cart->save();
|
|
$cart->save();
|
|
|
-
|
|
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public static function removeGiftCardCode()
|
|
public static function removeGiftCardCode()
|
|
|
{
|
|
{
|
|
|
$cart = cart()->getCart();
|
|
$cart = cart()->getCart();
|
|
|
- $giftCardNumber = $cart->giftcard_number;
|
|
|
|
|
- $giftcardAmount = $cart->giftcard_amount;
|
|
|
|
|
|
|
+ $giftcardAmount = $cart->giftcard_amount ?? 0;
|
|
|
|
|
|
|
|
|
|
+ // 清除购物车中的礼品卡标记
|
|
|
$cart->giftcard_number = null;
|
|
$cart->giftcard_number = null;
|
|
|
$cart->giftcard_amount = null;
|
|
$cart->giftcard_amount = null;
|
|
|
- $cart->remaining_giftcard_amount = null;
|
|
|
|
|
-
|
|
|
|
|
- $cart->save();
|
|
|
|
|
|
|
|
|
|
- if ($giftCardNumber) {
|
|
|
|
|
- $giftCards = static::where('giftcard_number', $giftCardNumber)->first();
|
|
|
|
|
|
|
+ // 恢复购物车总额
|
|
|
|
|
+ $cart->grand_total += $giftcardAmount;
|
|
|
|
|
+ $cart->base_grand_total += $giftcardAmount;
|
|
|
|
|
|
|
|
- if ($giftCards) {
|
|
|
|
|
- $giftCards->used_giftcard_amount -= $giftcardAmount;
|
|
|
|
|
- $giftCards->remaining_giftcard_amount += $giftcardAmount;
|
|
|
|
|
- $giftCards->save();
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ $cart->save();
|
|
|
|
|
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|