소스 검색

fix 实物可用优惠卷

zoujiajian 3 년 전
부모
커밋
3806bce782

+ 2 - 2
netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponUserMapper.java

@@ -15,9 +15,9 @@ import org.apache.ibatis.annotations.Param;
  *创建时间:2022/11/18 11:43
  */
 public interface CouponUserMapper extends BaseMapper<CouponUser> {
-	Page<CouponUserView> getAvailableCouponList(@Param("skuId") Long skuId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew, IPage<CouponUserView> page);
+	Page<CouponUserView> getAvailableCouponList(@Param("skuId") Long skuId, @Param("goodsId") Long goodsId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew, @Param("page") IPage<CouponUserView> page);
 
-	Integer countAvailableCouponList(@Param("skuId") Long skuId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew);
+	Integer countAvailableCouponList(@Param("skuId") Long skuId, @Param("goodsId") Long goodsId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew);
 
 	Page<CouponActiveView> couponCenterList(@Param("userId") Long userId, IPage<CouponUserView> page);
 }

+ 37 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuView.java

@@ -0,0 +1,37 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/*
+ *项目名: netflix
+ *文件名: GoodsDonSkuView
+ *创建者: JavaZou
+ *创建时间:2022/11/28 15:05
+ */
+@Getter
+@Setter
+@SearchBean(tables = "goods_don gd left join goods_don_sku gdk on gdk.goods_id = gd.id")
+public class GoodsDonSkuView {
+	@DbField("gd.id")
+	private Long goodsId;
+
+	@DbField("gd.title")
+	private String goodsTitle;
+
+	@DbField("gd.type")
+	private Integer type;
+
+	@DbField("gdk.id")
+	private Long skuId;
+
+	@DbField("gdk.spec_val")
+	private String specVal;
+
+	@DbField("gdk.money")
+	private BigDecimal money;
+}

+ 14 - 2
netflix-dao/src/main/resources/mapper/CouponUserMapper.xml

@@ -23,7 +23,12 @@
         from `coupon_user` cu
         left join `coupon` cp on cp.id = cu.coupon_id
         left join `coupon_sku` ck on ck.coupon_id = cp.id
-        and ck.sku_id = #{skuId}
+        <if test="goodsId != null">
+            and ck.goodsId = #{goodsId}
+        </if>
+        <if test="goodsId == null">
+            and ck.sku_id = #{skuId}
+        </if>
         <if test="isRenew != null and isRenew">
             and cp.is_renew = #{isRenew}
         </if>
@@ -37,7 +42,14 @@
         from `coupon_user` cu
         left join `coupon` cp on cp.id = cu.coupon_id
         left join `coupon_sku` ck on ck.coupon_id = cp.id
-        where ck.sku_id = #{skuId} and cu.user_id = #{userId}
+        where
+        <if test="goodsId != null">
+            ck.goodsId = #{goodsId}
+        </if>
+        <if test="goodsId == null">
+            ck.sku_id = #{skuId}
+        </if>
+        and cu.user_id = #{userId}
         and cu.status = 'unused'
         <if test="isRenew != null and isRenew">
             and cp.is_renew = #{isRenew}

+ 8 - 1
netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java

@@ -18,6 +18,7 @@ import com.cyksj.model.request.CouponCollectReq;
 import com.cyksj.model.views.CouponAvailableRecommendView;
 import com.cyksj.model.views.CouponNewUserView;
 import com.cyksj.model.views.CouponUserView;
+import com.cyksj.model.views.GoodsDonSkuView;
 import com.cyksj.service.coupon.CouponFontService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -155,7 +156,13 @@ public class CouponFontServiceImpl implements CouponFontService {
 	@Override
 	public Page<CouponUserView> getAvailableCouponList(Long skuId, Long userId, Boolean isRenew, Long start, Long limit) {
 		DateTime now = DateTime.now();
-		Page<CouponUserView> availableCouponList = couponUserMapper.getAvailableCouponList(skuId, userId, isRenew, new Page<>(start, limit));
+		Long goodsId = null;
+		//实物还是虚物
+		GoodsDonSkuView goodsDonSkuView = beanSearcher.searchFirst(GoodsDonSkuView.class, MapUtils.builder().field(GoodsDonSkuView::getSkuId, skuId).op(Operator.Equal).build());
+		if (goodsDonSkuView.getType() == 2) {
+			goodsId = goodsDonSkuView.getGoodsId();
+		}
+		Page<CouponUserView> availableCouponList = couponUserMapper.getAvailableCouponList(skuId, goodsId, userId, isRenew, new Page<>(start, limit));
 		Optional.ofNullable(availableCouponList).ifPresent(page->{
 			page.getRecords().stream().forEach(data->{
 				if (!data.getIsValidTime()) {

+ 8 - 5
netflix-web/src/main/java/com/cyksj/web/controller/coupon/CouponFrontController.java

@@ -15,10 +15,7 @@ import com.cyksj.model.dto.CouponPopularizeDto;
 import com.cyksj.model.entity.Coupon;
 import com.cyksj.model.entity.CouponUser;
 import com.cyksj.model.request.CouponCollectReq;
-import com.cyksj.model.views.CouponActiveView;
-import com.cyksj.model.views.CouponNewUserView;
-import com.cyksj.model.views.CouponRecommendView;
-import com.cyksj.model.views.CouponUserView;
+import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.coupon.CouponFontService;
 import com.cyksj.web.util.StpUserUtil;
@@ -88,7 +85,13 @@ public class CouponFrontController {
 	@GetMapping("/available/num")
 	public Result<Integer> availableCouponNum(Long skuId, Boolean isRenew) {
 		Long userId = StpUserUtil.getLoginIdAsLong();
-		Integer count = couponUserMapper.countAvailableCouponList(skuId, userId, isRenew);
+		Long goodsId = null;
+		//实物还是虚物
+		GoodsDonSkuView goodsDonSkuView = beanSearcher.searchFirst(GoodsDonSkuView.class, MapUtils.builder().field(GoodsDonSkuView::getSkuId, skuId).op(Operator.Equal).build());
+		if (goodsDonSkuView.getType() == 2) {
+			goodsId = goodsDonSkuView.getGoodsId();
+		}
+		Integer count = couponUserMapper.countAvailableCouponList(goodsId, skuId, userId, isRenew);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(count);
 	}