GiftCards.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace Longyi\Gift\Models;
  3. use Brainstream\Giftcard\Models\GiftCard;
  4. use Brainstream\Giftcard\Models\GiftCardBalance;
  5. use Illuminate\Database\Eloquent\Factories\HasFactory;
  6. use Illuminate\Database\Eloquent\Model;
  7. use Longyi\Gift\Contracts\GiftCards as GiftCardsContract;
  8. class GiftCards extends Model implements GiftCardsContract
  9. {
  10. use HasFactory;
  11. protected $table = 'gift_cards';
  12. protected $fillable = [
  13. 'giftcard_number',
  14. 'giftcard_amount',
  15. 'used_giftcard_amount',
  16. 'remaining_giftcard_amount',
  17. 'customer_id',
  18. 'expirationdate',
  19. 'giftcard_status',
  20. ];
  21. protected $casts = [
  22. 'giftcard_amount' => 'decimal:2',
  23. 'used_giftcard_amount' => 'decimal:2',
  24. 'remaining_giftcard_amount' => 'decimal:2',
  25. 'customer_id' => 'integer',
  26. 'expirationdate' => 'date',
  27. ];
  28. public static function setGiftCardCode($giftcard)
  29. {
  30. if (!$giftcard) {
  31. return false;
  32. }
  33. $cart = cart()->getCart();
  34. $cart->giftcard_number = $giftcard->giftcard_number;
  35. // 计算可以使用的礼品卡金额
  36. if ($cart->grand_total <= $giftcard->remaining_giftcard_amount) {
  37. $cart->giftcard_amount = $cart->grand_total;
  38. } else {
  39. $cart->giftcard_amount = $giftcard->remaining_giftcard_amount;
  40. }
  41. // 更新购物车总额
  42. $cart->grand_total = max(0, $cart->grand_total - $cart->giftcard_amount);
  43. $cart->base_grand_total = max(0, $cart->base_grand_total - $cart->giftcard_amount);
  44. $cart->save();
  45. return true;
  46. }
  47. public static function removeGiftCardCode()
  48. {
  49. $cart = cart()->getCart();
  50. $giftcardAmount = $cart->giftcard_amount ?? 0;
  51. // 清除购物车中的礼品卡标记
  52. $cart->giftcard_number = null;
  53. $cart->giftcard_amount = null;
  54. // 恢复购物车总额
  55. $cart->grand_total += $giftcardAmount;
  56. $cart->base_grand_total += $giftcardAmount;
  57. $cart->save();
  58. return true;
  59. }
  60. }