Przeglądaj źródła

过期优惠券置为过期状态

shish 6 lat temu
rodzic
commit
6770a403a7

+ 8 - 2
app/mall/controllers/OrderController.php

@@ -149,6 +149,12 @@ class OrderController extends BaseController
 		$orderSn = isset($post['orderSn']) ? $post['orderSn'] : 0;
 		$payPassword = isset($post['payPassword']) ? $post['payPassword'] : 0;
 		$couponId = isset($post['couponId']) ? $post['couponId'] : 0;
+		
+		//验证优惠券是否还有效
+		if (!empty($couponId)) {
+			CouponService::checkBeforeUse($couponId, $order['prePrice'], $order['userId']);
+		}
+
 		$order = OrderService::getByOrderSn($orderSn);
 		$userId = $this->userId;
 		$user = UserService::getUserInfo($userId, false);
@@ -180,9 +186,9 @@ class OrderController extends BaseController
 		
 		//验证优惠券是否还有效
 		if (!empty($couponId)) {
-			CouponService::valid($couponId, $order['prePrice'], $order['userId']);
+			CouponService::checkBeforeUse($couponId, $order['prePrice'], $order['userId']);
 		}
-		
+
 		//支付前验证订单有效性
 		OrderService::checkBeforePay($order, $this->userId);
 		

+ 3 - 2
biz/coupon/classes/CouponClass.php

@@ -1,6 +1,7 @@
 <?php
 
 namespace biz\coupon\classes;
+
 use biz\user\classes\UserAssetClass;
 use Yii;
 use biz\base\classes\BaseClass;
@@ -22,7 +23,7 @@ class CouponClass extends BaseClass
 	{
 		self::updateById($couponId, ['status' => 1, 'orderId' => $orderId]);
 	}
-
+	
 	//增加优惠券 shish 2020.5.5
 	public static function add($data, $returnObject = false)
 	{
@@ -35,5 +36,5 @@ class CouponClass extends BaseClass
 		$getCouponNum++;
 		UserAssetClass::updateByUserId($userId, ['getCouponNum' => $getCouponNum]);
 	}
-
+	
 }

+ 4 - 2
biz/order/classes/OrderClass.php

@@ -193,8 +193,10 @@ class OrderClass extends BaseClass
 	{
 		$now = time();
 		if (!empty($order['deadline']) && $now > $order['deadline']) {
-			$id = $order['id'];
-			OrderClass::updateById($id, ['status' => 4]);
+			if ($order['status'] != 4) {
+				$id = $order['id'];
+				OrderClass::updateById($id, ['status' => 4]);
+			}
 		}
 	}
 

+ 1 - 1
biz/order/services/OrderService.php

@@ -191,7 +191,7 @@ class OrderService extends BaseService
 		$discountPrice = $price;
 		//使用优惠券
 		if (!empty($couponId)) {
-			$discountAmount = CouponService::valid($couponId, $price, $userId);
+			$discountAmount = CouponService::checkBeforeUse($couponId, $price, $userId);
 			$discountPrice = stringUtil::calcSub($price, $discountAmount);
 			$discountType = 1;
 		} else {

+ 15 - 1
biz/promote/classes/CouponClass.php

@@ -28,7 +28,7 @@ class CouponClass extends BaseClass
 		UserAssetClass::getCouponNumIncrease($userId);
 		return $respond;
 	}
-	
+
 	//整体优惠券信息 shish 2019.12.11
 	public static function groupCouponBaseInfo($list)
 	{
@@ -43,8 +43,22 @@ class CouponClass extends BaseClass
 			$userId = $val['userId'];
 			$list[$key]['userName'] = isset($userList[$userId]) ? $userList[$userId]['userName'] : '';
 			$list[$key]['userAvatar'] = isset($userList[$userId]) ? $userList[$userId]['avatarUrl'] : '';
+			//过期优惠券置为过期状态
+			self::setExpire($val);
 		}
 		return $list;
 	}
 
+	//已经过期的优惠券处理 shish 2020.5.25
+	public static function setExpire($coupon)
+	{
+		$now = time();
+		if (isset($coupon['deadline']) && $now > $coupon['deadline']) {
+			if ($coupon['status'] == 0) {
+				$id = $coupon['id'];
+				self::updateById($id, ['status' => 2]);
+			}
+		}
+	}
+	
 }

+ 3 - 2
biz/promote/services/CouponService.php

@@ -31,7 +31,7 @@ class CouponService extends BaseService
 	}
 	
 	//验证使用的优惠券是否有效
-	public static function valid($couponId, $price, $userId)
+	public static function checkBeforeUse($couponId, $price, $userId)
 	{
 		$coupon = CouponClass::getById($couponId);
 		if (empty($coupon)) {
@@ -42,6 +42,7 @@ class CouponService extends BaseService
 		}
 		$time = time();
 		if ($coupon['deadline'] < $time) {
+			CouponClass::setExpire($coupon);
 			util::fail('优惠券已过期');
 		}
 		if ($coupon['status'] != 0) {
@@ -52,7 +53,7 @@ class CouponService extends BaseService
 		}
 		return $coupon['amount'];
 	}
-
+	
 	//销卷并分成 shish 2019.8.25
 	public static function destroyToGetReward($data, $merchantId)
 	{