OrderCollection.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: shenyang
  5. * Date: 2018/11/23
  6. * Time: 11:01 AM
  7. */
  8. namespace app\common\modules\order;
  9. use app\common\models\Order;
  10. use app\framework\Database\Eloquent\Collection;
  11. use app\frontend\modules\coupon\services\CouponService;
  12. use app\frontend\modules\coupon\services\models\Coupon;
  13. use app\frontend\modules\order\models\PreOrder;
  14. class OrderCollection extends Collection
  15. {
  16. public function getMemberCoupons()
  17. {
  18. $memberCoupons = $this->map(function (PreOrder $order) {
  19. //blank not discount
  20. if ($order->isDiscountDisable()) {
  21. return collect([]);
  22. }
  23. $couponService = new CouponService($order);
  24. $coupons = $couponService->getOptionalCoupons();
  25. $memberCoupons = $coupons->map(function (Coupon $coupon) {
  26. $coupon->getMemberCoupon()->belongsToCoupon->setDateFormat('Y-m-d');
  27. $result = $coupon->getMemberCoupon();
  28. $result->expired_at = $coupon->getExpiredAt();
  29. return $result;
  30. });
  31. return $memberCoupons;
  32. })->collapse()->unique('id')->values(); //分单时去除重复的会员优惠卷记录
  33. $memberCoupons->sortByDesc(function($coupon) {
  34. $sort = $coupon->coupon_id*100000 + substr($coupon->expired_at,-6) ;
  35. return $sort;
  36. });
  37. return $memberCoupons;
  38. }
  39. }