RechargeService.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace addons\TinyShop\services\order;
  3. use Yii;
  4. use common\components\Service;
  5. use common\enums\StatusEnum;
  6. use common\forms\CreditsLogForm;
  7. use yii\web\UnprocessableEntityHttpException;
  8. use addons\TinyShop\common\enums\CouponGetTypeEnum;
  9. use addons\TinyShop\common\models\order\Recharge;
  10. /**
  11. * Class RechargeService
  12. * @package addons\TinyShop\services\order
  13. */
  14. class RechargeService extends Service
  15. {
  16. /**
  17. * @param $order_id
  18. * @return array|null|\yii\db\ActiveRecord|Recharge
  19. */
  20. public function findByOrderSn($order_sn)
  21. {
  22. return Recharge::find()
  23. ->where(['order_sn' => $order_sn, 'status' => StatusEnum::ENABLED])
  24. ->andFilterWhere(['merchant_id' => $this->getMerchantId()])
  25. ->one();
  26. }
  27. /**
  28. * 支付
  29. *
  30. * @param Recharge $order
  31. * @param int $paymentType 支付类型
  32. * @throws UnprocessableEntityHttpException
  33. * @throws \yii\web\NotFoundHttpException
  34. */
  35. public function pay(Recharge $order, $member, $paymentType)
  36. {
  37. if ($order->pay_status == StatusEnum::ENABLED) {
  38. throw new UnprocessableEntityHttpException('订单已经被处理');
  39. }
  40. $order->pay_status = StatusEnum::ENABLED;
  41. $order->pay_type = $paymentType;
  42. $order->pay_time = time();
  43. $order->save();
  44. // 赠送积分
  45. $order->give_point > 0 && Yii::$app->services->memberCreditsLog->incrInt(new CreditsLogForm([
  46. 'member' => $order->member,
  47. 'num' => $order->give_point,
  48. 'group' => 'rechargeGive',
  49. 'map_id' => $order->id,
  50. 'remark' => '在线充值-' . $order->order_sn,
  51. ]));
  52. // 赠送成长值
  53. $order->give_growth > 0 && Yii::$app->services->memberCreditsLog->incrGrowth(new CreditsLogForm([
  54. 'member' => $order->member,
  55. 'num' => $order->give_growth,
  56. 'group' => 'rechargeGive',
  57. 'map_id' => $order->id,
  58. 'remark' => '在线充值-' . $order->order_sn,
  59. ]));
  60. // 充值进余额
  61. $order->give_price > 0 && Yii::$app->services->memberCreditsLog->incrMoney(new CreditsLogForm([
  62. 'member' => Yii::$app->services->member->findById($order->member_id),
  63. 'pay_type' => $paymentType,
  64. 'num' => $order->give_price,
  65. 'group' => 'rechargeGive',
  66. 'remark' => '充值赠送-' . $order->order_sn,
  67. 'map_id' => $order->id,
  68. 'is_give' => true,
  69. ]));
  70. // 赠送优惠券
  71. $couponTypes = Yii::$app->tinyShopService->marketingCouponType->findByIds($order->give_coupon_type_ids);
  72. foreach ($couponTypes as $couponType) {
  73. Yii::$app->tinyShopService->marketingCoupon->giveByNewRecord(
  74. $couponType,
  75. $member->id,
  76. $order->id,
  77. CouponGetTypeEnum::RECHARGE
  78. );
  79. }
  80. }
  81. }
粤ICP备19079148号