PreOrderGoodsCoinExchange.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: shenyang
  5. * Date: 2017/7/25
  6. * Time: 下午7:10
  7. */
  8. namespace app\frontend\models\orderGoods;
  9. use app\common\models\orderGoods\OrderGoodsCoinExchange;
  10. use app\common\models\VirtualCoin;
  11. use app\common\modules\orderGoods\models\PreOrderGoods;
  12. use app\frontend\models\MemberCoin;
  13. class PreOrderGoodsCoinExchange extends OrderGoodsCoinExchange
  14. {
  15. /**
  16. * @var PreOrderGoods
  17. */
  18. public $orderGoods;
  19. public function setOrderGoods(PreOrderGoods $orderGoods)
  20. {
  21. $this->orderGoods = $orderGoods;
  22. $this->uid = $this->orderGoods->uid;
  23. $orderGoods->setRelation('orderGoodsCoinExchange',$this);
  24. $this->getMemberCoin()->lockCoin($this->coin);
  25. }
  26. public function save(array $options = [])
  27. {
  28. $this->getMemberCoin()->consume($this->newCoin()->setCoin($this->coin), ['order_sn' => $this->orderGoods->order->order_sn]);
  29. return parent::save($options);
  30. }
  31. /**
  32. * 此抵扣对应的虚拟币
  33. * @return VirtualCoin
  34. */
  35. private function newCoin()
  36. {
  37. return app('CoinManager')->make($this->code);
  38. }
  39. /**
  40. * 下单用户此抵扣对应虚拟币的余额
  41. * @return MemberCoin
  42. */
  43. private function getMemberCoin()
  44. {
  45. if (isset($this->memberCoin)) {
  46. return $this->memberCoin;
  47. }
  48. return \app\frontend\modules\deduction\EnableDeductionService::getInstance()->getMemberCoin($this->code);
  49. //return app('CoinManager')->make('MemberCoinManager')->make($this->code, [$this->orderGoods->order->belongsToMember]);
  50. }
  51. }