Эх сурвалжийг харах

官网商品优惠价格详情返回

zoujiajian 1 жил өмнө
parent
commit
7e6fb0eb58

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

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cyksj.model.entity.Coupon;
 import com.cyksj.model.entity.CouponUser;
 import com.cyksj.model.views.CouponActiveView;
 import com.cyksj.model.views.CouponUserView;
@@ -37,4 +38,8 @@ public interface CouponUserMapper extends BaseMapper<CouponUser> {
 	Map<String, Long> selectCouponUserNumData(Long couponId);
 
 	List<CouponUserView> couponPersonalByCouponIds(@Param("userIds") List<Long> userIds, @Param("couponIds") List<Long> couponIds);
+
+	Coupon selectUserCouponByGidAndPrice(@Param("userId") Long userId, @Param("goodsId") Long goodsId, @Param("price") BigDecimal price);
+
+	Coupon selectUserCouponBySkuId(@Param("userId") Long userId, @Param("skuId") Long skuId);
 }

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/Coupon.java

@@ -1,6 +1,8 @@
 package com.cyksj.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.ejlchina.searcher.bean.DbIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -116,6 +118,10 @@ public class Coupon extends BaseEntity {
 	@TableLogic(value = "1", delval = "0")
 	private Boolean deleted;
 
+	@DbIgnore
+	@TableField(exist = false)
+	private BigDecimal couponMoney;
+
 	@Getter
 	public enum GoodsType {
 		realGoods("实物"),

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuFrontView.java

@@ -90,6 +90,24 @@ public class GoodsDonSkuFrontView {
 	 */
 	private BigDecimal price;
 
+	/**
+	 * 优惠价格
+	 */
+	@DbIgnore
+	private BigDecimal discountPrice;
+
+	/**
+	 * 优惠折扣
+	 */
+	@DbIgnore
+	private BigDecimal discount;
+
+	/**
+	 * 满减金额
+	 */
+	@DbIgnore
+	private BigDecimal reduceMoney;
+
 	/**
 	 * 专属用户规格
 	 */

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsFrontListCategoryView.java

@@ -76,6 +76,24 @@ public class GoodsFrontListCategoryView {
 	@DbField("g.min_price")
 	private BigDecimal price;
 
+	/**
+	 * 优惠价格
+	 */
+	@DbIgnore
+	private BigDecimal discountPrice;
+
+	/**
+	 * 优惠折扣
+	 */
+	@DbIgnore
+	private BigDecimal discount;
+
+	/**
+	 * 满减金额
+	 */
+	@DbIgnore
+	private BigDecimal reduceMoney;
+
 	/**
 	 * 最低规格月份
 	 */

+ 20 - 0
netflix-dao/src/main/resources/mapper/CouponUserMapper.xml

@@ -287,4 +287,24 @@
         and cu.channel != 'exCode'
         order by `orderby`
     </select>
+
+    <select id="selectUserCouponByGidAndPrice" resultType="com.cyksj.model.entity.Coupon">
+        select c.*,
+               if(type = 'discount', ${sku.price} * (1 - c.discount), c.reduce_money) as couponMoney,
+        from (select coupon_id from coupon_user where user_id = #{userId} and status = 'unused' and valid_start_time > now() and valid_end_time &lt; now()) cu
+                 inner join coupon c on c.id = cu.coupon_id
+                 inner join coupon_sku cs on cs.coupon_id = c.id and cs.goods_id = #{goodsId}
+                 inner join goods_don_sku sku on sku.id = cs.sku_id and sku.status is true and sku.price = #{price}
+        order by couponMoney desc limit 1
+    </select>
+
+    <select id="selectUserCouponBySkuId" resultType="com.cyksj.model.entity.Coupon">
+        select c.*,
+               if(type = 'discount', ${sku.price} * (1 - c.discount), c.reduce_money) as couponMoney,
+        from (select coupon_id from coupon_user where user_id = #{userId} and status = 'unused' and valid_start_time > now() and valid_end_time &lt; now()) cu
+                 inner join coupon c on c.id = cu.coupon_id
+                 inner join coupon_sku cs on cs.coupon_id = c.id and cs.sku_id = #{skuId}
+                 inner join goods_don_sku sku on sku.id = cs.sku_id and sku.status is true
+        order by couponMoney desc limit 1
+    </select>
 </mapper>

+ 38 - 4
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -19,7 +19,7 @@ import com.cyksj.mapper.GiftCardGoodsSkuMapper;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.RegisterOrderDonMapper;
-import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
+import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
 import com.cyksj.mapper.sys.SysConfigMapper;
 import com.cyksj.model.entity.*;
@@ -82,7 +82,7 @@ public class GoodsDonController {
 
 	private final UserService userService;
 
-	private final UserDistributeSharedMapper userDistributeSharedMapper;
+	private final CouponUserMapper couponUserMapper;
 
 	private final GoodsDonFrontService goodsDonFrontService;
 
@@ -447,12 +447,13 @@ public class GoodsDonController {
 //					});
 //				}
 //			}
+			//设置规格优惠后的价格
+			setUserCouponSkuMoney(fUid, sku);
 			return true;
 		}).collect(Collectors.toList()));
 		return GatewayResponse.SUCCESS.newBuilder().toResult(views);
 	}
-
-    /**
+	/**
      * 获取商品推荐平台
      */
     @GetMapping("/get/recommend/{id}")
@@ -1071,6 +1072,8 @@ public class GoodsDonController {
 			}
 			//设置特定价格
 			setGcSpecificPrice(data, fUid, dsUserId.get());
+			//设置用户存在优惠券的优惠商品价格
+			setUserCouponGoodsMoney(fUid, data);
 			return true;
 		}).collect(Collectors.toList());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsFrontListViews);
@@ -1363,5 +1366,36 @@ public class GoodsDonController {
 		return Integer.parseInt(soldObj.toString());
 	}
 
+	/**
+	 * 设置平台优惠价格
+	 */
+	private void setUserCouponGoodsMoney(Long userId, GoodsFrontListCategoryView data) {
+		//登录后
+		if (userId != null) {
+			//寻找对应最低规格的优惠券
+			Coupon coupon = couponUserMapper.selectUserCouponByGidAndPrice(userId, data.getId(), data.getPrice());
+			if (coupon != null) {
+				data.setDiscount(coupon.getDiscount());
+				data.setReduceMoney(coupon.getReduceMoney());
+				data.setDiscountPrice(data.getPrice().subtract(coupon.getCouponMoney()));
+			}
+		}
+	}
+
+	/**
+	 * 设置平台规格优惠价格
+	 */
+	private void setUserCouponSkuMoney(Long userId, GoodsDonSkuFrontView sku) {
+		//登录后
+		if (userId != null) {
+			//寻找对应最低规格的优惠券
+			Coupon coupon = couponUserMapper.selectUserCouponBySkuId(userId, sku.getId());
+			if (coupon != null) {
+				sku.setDiscount(coupon.getDiscount());
+				sku.setReduceMoney(coupon.getReduceMoney());
+				sku.setDiscountPrice(sku.getPrice().subtract(coupon.getCouponMoney()));
+			}
+		}
+	}
 
 }