Browse Source

fix 优惠码新用户校验

zoujiajian 3 năm trước cách đây
mục cha
commit
37613919cb

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/CouponPopularizeDto.java

@@ -27,6 +27,8 @@ public class CouponPopularizeDto {
 
 	private Boolean isRenew;
 
+	private Coupon.Scope scope;
+
 	/**
 	 * 优惠券推广者关联id
 	 */

+ 1 - 0
netflix-dao/src/main/resources/mapper/CouponMapper.xml

@@ -9,6 +9,7 @@
                cp.goods_sku_ids,
                cp.type,
                cp.is_renew,
+               cp.scope,
                cdp.coupon_id as popularizeCouponId,
                cp.goods_type,
                cp.reduce_money,

+ 6 - 3
netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java

@@ -113,12 +113,15 @@ public class CouponFontServiceImpl implements CouponFontService {
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void collectWholeRecommendCoupon(Long userId) {
-		CouponNewUserView couponNewUserView = beanSearcher.searchFirst(CouponNewUserView.class, MapUtils.builder().field(CouponNewUserView::getUserId, userId).op(Operator.Equal).build());
 		//查询所有可领取的推荐优惠券
 		List<CouponAvailableRecommendView> couponAvailableRecommendViews = recommendMapper.getRecommendCouponList(userId);
 		couponAvailableRecommendViews.stream().filter(data->{
-			if (data.getScope() == Coupon.Scope.newUser && couponNewUserView != null) {
-				return false;
+			if (data.getScope() == Coupon.Scope.newUser) {
+				CouponNewUserView couponNewUserView = beanSearcher.searchFirst(CouponNewUserView.class, MapUtils.builder().field(CouponNewUserView::getUserId, userId).op(Operator.Equal).build());
+				if (couponNewUserView != null) {
+					return false;
+				}
+				return true;
 			}
 			return true;
 		}).forEach(data -> {

+ 7 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -45,6 +45,7 @@ import com.cyksj.model.request.OrderPayRequest;
 import com.cyksj.model.request.WxOrderRefundReq;
 import com.cyksj.model.request.ZfbOrderRefundReq;
 import com.cyksj.model.response.AliPayRefundRep;
+import com.cyksj.model.views.CouponNewUserView;
 import com.cyksj.model.views.CouponUserView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.coupon.CouponFontService;
@@ -1029,6 +1030,12 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			if (isRenew && !exists.getIsRenew()) {
 				throw BusinessRuntimeException.getInstance("该优惠券续费时不可使用");
 			}
+			if (exists.getScope() == Coupon.Scope.newUser) {
+				CouponNewUserView couponNewUserView = beanSearcher.searchFirst(CouponNewUserView.class, MapUtils.builder().field(CouponNewUserView::getUserId, userId).op(Operator.Equal).build());
+				if (couponNewUserView != null) {
+					throw BusinessRuntimeException.getInstance("该优惠码只适用于新用户");
+				}
+			}
 		} else if (couponId != null) {
 			CouponUserView couponUserView = beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder()
 					.field(CouponUserView::getCouponId, couponId).op(Operator.Equal)

+ 7 - 0
netflix-web/src/main/java/com/cyksj/web/controller/coupon/CouponFrontController.java

@@ -196,6 +196,7 @@ public class CouponFrontController {
 	 */
 	@GetMapping("/get/exCode/detail")
 	public Result<CouponPopularizeDto> getExCodeDetail(Long skuId, String exCode) throws Exception {
+		Long userId = StpUserUtil.getLoginIdAsLong();
 		GoodsDonSkuView goodsDonSkuView = beanSearcher.searchFirst(GoodsDonSkuView.class, MapUtils.builder().field(GoodsDonSkuView::getSkuId, skuId).op(Operator.Equal).build());
 		if (goodsDonSkuView == null) {
 			throw BusinessRuntimeException.getInstance("该规格不存在");
@@ -207,6 +208,12 @@ public class CouponFrontController {
 		if (dto == null) {
 			throw BusinessRuntimeException.getInstance("该优惠码不存在");
 		}
+		if (dto.getScope() == Coupon.Scope.newUser) {
+			CouponNewUserView couponNewUserView = beanSearcher.searchFirst(CouponNewUserView.class, MapUtils.builder().field(CouponNewUserView::getUserId, userId).op(Operator.Equal).build());
+			if (couponNewUserView != null) {
+				throw BusinessRuntimeException.getInstance("该优惠码只适用于新用户");
+			}
+		}
 		List<Coupon.CouponGoodsSku> skuIds = Jsons.parseList(dto.getGoodsSkuIds(), Coupon.CouponGoodsSku.class);
 		Set<Long> collect = skuIds.stream().map(Coupon.CouponGoodsSku::getSkuId).collect(Collectors.toSet());
 		if (!collect.contains(skuId)) {