MemberBalanceCoin.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2021/4/22
  6. * Time: 14:00
  7. */
  8. namespace app\frontend\modules\finance\models;
  9. use app\common\exceptions\AppException;
  10. use app\common\models\VirtualCoin;
  11. use app\common\services\credit\ConstService;
  12. use app\common\services\finance\BalanceChange;
  13. use app\common\services\finance\PointService;
  14. use app\frontend\models\MemberCoin;
  15. class MemberBalanceCoin extends MemberCoin
  16. {
  17. /**
  18. * 获取最多可用积分
  19. * @return mixed
  20. */
  21. public function getMaxUsableCoin()
  22. {
  23. return (new BalanceCoin())->setCoin($this->member->credit2);
  24. }
  25. public function lockCoin($coin)
  26. {
  27. if (bccomp($coin, $this->member->credit2) == 1) {
  28. $name = (new BalanceCoin())->getName();
  29. throw new AppException("用户(ID:{$this->member->uid})" . $name . "不足");
  30. }
  31. $this->member->credit2 -= $coin;
  32. }
  33. /**
  34. * @param VirtualCoin $coin
  35. * @param $data
  36. * @return bool
  37. * @throws \app\common\exceptions\ShopException
  38. */
  39. function consume(VirtualCoin $coin, $data)
  40. {
  41. $data = [
  42. 'member_id' => $this->member->uid,
  43. 'remark' => '订单[' . $data['order_sn'] . ']抵扣[' . $coin->getMoney() . ']元',
  44. 'relation' => $data['order_sn'],
  45. 'operator' => ConstService::OPERATOR_MEMBER,
  46. 'operator_id' => $this->member->uid,
  47. 'change_value' => $coin->getCoin(),
  48. ];
  49. $result = (new BalanceChange())->deduction($data);
  50. return $result;
  51. }
  52. }