BalanceDeductionSettingManager.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2021/4/21
  6. * Time: 10:26
  7. */
  8. namespace app\frontend\modules\finance\deduction;
  9. use app\common\models\Goods;
  10. use app\frontend\modules\deduction\DeductionSettingInterface;
  11. use app\frontend\modules\deduction\DeductionSettingManagerInterface;
  12. use app\frontend\modules\finance\deduction\deductionSettings\BalanceGoodsDeductionSetting;
  13. use app\frontend\modules\finance\deduction\deductionSettings\BalanceShopDeductionSetting;
  14. use Illuminate\Container\Container;
  15. class BalanceDeductionSettingManager extends Container implements DeductionSettingManagerInterface
  16. {
  17. public function __construct()
  18. {
  19. /**
  20. * 余额抵扣商品设置
  21. */
  22. $this->bind('goods', function (BalanceDeductionSettingManager $deductionSettingManager, array $params) {
  23. return new BalanceGoodsDeductionSetting($params[0]);
  24. });
  25. /**
  26. * 余额抵扣商城设置
  27. */
  28. $this->bind('shop', function (BalanceDeductionSettingManager $deductionSettingManager, array $params) {
  29. return new BalanceShopDeductionSetting();
  30. });
  31. }
  32. /**
  33. * @param Goods $goods
  34. * @return BalanceDeductionSettingCollection
  35. */
  36. public function getDeductionSettingCollection(Goods $goods)
  37. {
  38. $deductionSettingCollection = collect();
  39. foreach ($this->getBindings() as $key => $value) {
  40. $deductionSettingCollection->push($this->make($key, [$goods]));
  41. }
  42. // 按权重排序
  43. $deductionSettingCollection = $deductionSettingCollection->sortBy(function (DeductionSettingInterface $deductionSetting) {
  44. return $deductionSetting->getWeight();
  45. });
  46. return new BalanceDeductionSettingCollection($deductionSettingCollection);
  47. }
  48. }