OrderFee.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/3/15
  6. * Time: 下午4:29
  7. */
  8. namespace app\frontend\modules\order;
  9. use app\common\helpers\Serializer;
  10. use app\framework\Database\Eloquent\Collection;
  11. use app\frontend\modules\order\fee\BaseOrderFee;
  12. use app\frontend\modules\order\models\PreOrder;
  13. class OrderFee
  14. {
  15. public $orderFee;
  16. /**
  17. * @var PreOrder
  18. */
  19. protected $order;
  20. /**
  21. * OrderFee constructor.
  22. * @param PreOrder $order
  23. */
  24. public function __construct(PreOrder $order)
  25. {
  26. $this->order = $order;
  27. // 订单手续费集合
  28. $order->setRelation('orderFees', new Collection());
  29. }
  30. public function getFee()
  31. {
  32. if (!isset($this->orderFee)) {
  33. $this->orderFee = collect();
  34. foreach (\app\common\modules\shop\ShopConfig::current()->get('shop-foundation.order-fee') as $configItem) {
  35. $class = call_user_func($configItem['class'], $this->order);
  36. if($class->enable()){
  37. $this->orderFee->put($configItem['key'], $class);
  38. }
  39. }
  40. }
  41. return $this->orderFee;
  42. }
  43. public function getAmount()
  44. {
  45. return $this->getFee()->sum(function (BaseOrderFee $orderFee) {
  46. // 每一种手续费
  47. return $orderFee->getAmount();
  48. });
  49. }
  50. }