Răsfoiți Sursa

fix 优惠卷排序

zoujiajian 3 ani în urmă
părinte
comite
6e6900911c

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

@@ -15,7 +15,7 @@ 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("goodsId") Long goodsId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew, @Param("page") IPage<CouponUserView> page);
+	Page<CouponUserView> getAvailableCouponList(@Param("skuId") Long skuId, @Param("couponId") Long couponId, @Param("goodsId") Long goodsId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew, @Param("page") IPage<CouponUserView> page);
 
 	Integer countAvailableCouponList(@Param("goodsId") Long goodsId, @Param("skuId") Long skuId, @Param("userId") Long userId, @Param("isRenew") Boolean isRenew);
 

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

@@ -3,6 +3,8 @@ package com.cyksj.model.entity;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /*
  *项目名: netflix
  *文件名: CouponUser
@@ -44,6 +46,10 @@ public class CouponUser extends BaseEntity {
 	 */
 	private Status status;
 
+	private Date validStartTime;
+
+	private Date validEndTime;
+
 	@Getter
 	public enum Channel {
 		recommend("recommend", "推荐渠道"),

+ 2 - 2
netflix-dao/src/main/java/com/cyksj/model/views/CouponUserView.java

@@ -104,7 +104,7 @@ public class CouponUserView {
 	/**
 	 * 起始有效时间
 	 */
-	@DbField("c.valid_start_time")
+	@DbField("cu.valid_start_time")
 	private Date validStartTime;
 
 	/**
@@ -116,7 +116,7 @@ public class CouponUserView {
 	/**
 	 * 截止有效时间
 	 */
-	@DbField("c.valid_end_time")
+	@DbField("cu.valid_end_time")
 	private Date validEndTime;
 
 	/**

+ 8 - 3
netflix-dao/src/main/resources/mapper/CouponUserMapper.xml

@@ -13,8 +13,8 @@
                         cp.discount,
                         cp.reduce_money,
                         cp.is_valid_time,
-                        cp.valid_start_time,
-                        cp.valid_end_time,
+                        cu.valid_start_time,
+                        cu.valid_end_time,
                         cp.valid_days,
                         cu.created_time,
                         cp.is_renew,
@@ -34,7 +34,12 @@
         </if>
         and cu.status != 'used'
         where cu.user_id = #{userId}
-        order by isAvailable desc
+        <if test="couponId == null">
+            order by isAvailable desc
+        </if>
+        <if test="couponId != null">
+            order by case when cp.id = #{couponId} then 2 else isAvailable end desc
+        </if>
     </select>
 
     <select id="countAvailableCouponList" resultType="java.lang.Integer">

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/coupon/CouponFontService.java

@@ -36,7 +36,7 @@ public interface CouponFontService {
 	/**
 	 * 可用/不可用优惠券
 	 */
-	Page<CouponUserView> getAvailableCouponList(Long skuId, Long userId, Boolean isRenew, Long start, Long limit);
+	Page<CouponUserView> getAvailableCouponList(Long skuId, Long couponId, Long userId, Boolean isRenew, Long start, Long limit);
 
 	/**
 	 * 优惠券状态

+ 20 - 11
netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java

@@ -71,10 +71,12 @@ public class CouponFontServiceImpl implements CouponFontService {
 		CouponUser couponUser = new CouponUser();
 		couponUser.setUserId(userId);
 		couponUser.setCouponId(couponCollectReq.getCouponId());
-		//领中心
+		//领中心
 		couponUser.setChannel(CouponUser.Channel.center);
 		couponUser.setStatus(CouponUser.Status.unused);
 		couponUser.setCouponActiveId(couponCollectReq.getCouponActiveId());
+		//优惠券有效时间
+		updateCouponUserValidTime(couponActive.getCouponId(), couponUser);
 		try {
 			couponUserMapper.insert(couponUser);
 		} catch (DuplicateKeyException e) {
@@ -102,6 +104,8 @@ public class CouponFontServiceImpl implements CouponFontService {
 		couponUser.setChannel(CouponUser.Channel.recommend);
 		couponUser.setStatus(CouponUser.Status.unused);
 		couponUser.setRecommendId(couponCollectReq.getCouponRecommendId());
+		//优惠券有效时间
+		updateCouponUserValidTime(couponCollectReq.getCouponId(), couponUser);
 		try {
 			couponUserMapper.insert(couponUser);
 		} catch (DuplicateKeyException e) {
@@ -131,6 +135,8 @@ public class CouponFontServiceImpl implements CouponFontService {
 			couponUser.setChannel(CouponUser.Channel.recommend);
 			couponUser.setStatus(CouponUser.Status.unused);
 			couponUser.setRecommendId(data.getRecommendId());
+			//优惠券有效时间
+			updateCouponUserValidTime(data.getCouponId(), couponUser);
 			try {
 				couponUserMapper.insert(couponUser);
 			} catch (DuplicateKeyException e) {
@@ -144,10 +150,6 @@ public class CouponFontServiceImpl implements CouponFontService {
 	public void handleCouponStatus(SearchResult<CouponUserView> search) {
 		DateTime now = DateTime.now();
 		search.getDataList().forEach(data -> {
-			if (!data.getIsValidTime()) {
-				data.setValidStartTime(data.getCreatedTime());
-				data.setValidEndTime(DateUtil.offsetDay(data.getValidStartTime(), data.getValidDays()));
-			}
 			this.setCouponUserStatus(data, now);
 			String str = couponSkuMapper.selectGoodsSkuStr(data.getCouponId());
 			data.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
@@ -155,7 +157,7 @@ public class CouponFontServiceImpl implements CouponFontService {
 	}
 
 	@Override
-	public Page<CouponUserView> getAvailableCouponList(Long skuId, Long userId, Boolean isRenew, Long start, Long limit) {
+	public Page<CouponUserView> getAvailableCouponList(Long skuId, Long couponId, Long userId, Boolean isRenew, Long start, Long limit) {
 		DateTime now = DateTime.now();
 		Long goodsId = null;
 		//实物还是虚物
@@ -163,13 +165,9 @@ public class CouponFontServiceImpl implements CouponFontService {
 		if (goodsDonSkuView.getType() == 2) {
 			goodsId = goodsDonSkuView.getGoodsId();
 		}
-		Page<CouponUserView> availableCouponList = couponUserMapper.getAvailableCouponList(skuId, goodsId, userId, isRenew, new Page<>(start, limit));
+		Page<CouponUserView> availableCouponList = couponUserMapper.getAvailableCouponList(skuId, couponId, goodsId, userId, isRenew, new Page<>(start, limit));
 		Optional.ofNullable(availableCouponList).ifPresent(page->{
 			page.getRecords().stream().forEach(data->{
-				if (!data.getIsValidTime()) {
-					data.setValidStartTime(data.getCreatedTime());
-					data.setValidEndTime(DateUtil.offsetDay(data.getValidStartTime(), data.getValidDays()));
-				}
 				String str = couponSkuMapper.selectGoodsSkuStr(data.getCouponId());
 				data.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
 				if (!data.getIsAvailable()) {
@@ -257,4 +255,15 @@ public class CouponFontServiceImpl implements CouponFontService {
 			throw BusinessRuntimeException.getInstance("您已领取该优惠券..");
 		}
 	}
+
+	public void updateCouponUserValidTime(Long couponId, CouponUser couponUser) {
+		Coupon coupon = couponMapper.selectById(couponId);
+		if (coupon.getIsValidTime()) {
+			couponUser.setValidStartTime(coupon.getValidStartTime());
+			couponUser.setValidEndTime(coupon.getValidEndTime());
+		} else {
+			couponUser.setValidStartTime(DateTime.now());
+			couponUser.setValidEndTime(DateUtil.offsetDay(coupon.getValidStartTime(), coupon.getValidDays()));
+		}
+	}
 }

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

@@ -1039,10 +1039,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			if (couponUserView.getCouponUserStatus() == CouponUser.Status.used) {
 				throw BusinessRuntimeException.getInstance("该优惠券已使用");
 			}
-			if (!couponUserView.getIsValidTime()) {
-				couponUserView.setValidStartTime(couponUserView.getCreatedTime());
-				couponUserView.setValidEndTime(DateUtil.offsetDay(couponUserView.getValidStartTime(), couponUserView.getValidDays()));
-			}
 			couponFontService.setCouponUserStatus(couponUserView, DateTime.now());
 			if (couponUserView.getCouponUserStatus() != CouponUser.Status.unused) {
 				throw BusinessRuntimeException.getInstance("该优惠券不可使用");
@@ -1104,10 +1100,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			couponUserMapper.deleteById(couponUser.getId());
 		}else {
 			CouponUserView couponUserView = beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder().field(CouponUserView::getCouponId, couponUser.getCouponId()).build());
-			if (!couponUserView.getIsValidTime()) {
-				couponUserView.setValidStartTime(couponUserView.getCreatedTime());
-				couponUserView.setValidEndTime(DateUtil.offsetDay(couponUserView.getValidStartTime(), couponUserView.getValidDays()));
-			}
 			couponUserView.setCouponUserStatus(CouponUser.Status.unused);
 			couponFontService.setCouponUserStatus(couponUserView, DateTime.now());
 			couponUser.setStatus(couponUserView.getCouponUserStatus());

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

@@ -96,9 +96,9 @@ public class CouponFrontController {
 	}
 
 	@GetMapping("/available/list")
-	public Result<Page<CouponUserView>> availableCouponList(Long skuId, Boolean isRenew, @RequestParam(defaultValue = "1") Long start, @RequestParam(defaultValue = "5") Long limit) {
+	public Result<Page<CouponUserView>> availableCouponList(Long skuId, Long couponId, Boolean isRenew, @RequestParam(defaultValue = "1") Long start, @RequestParam(defaultValue = "5") Long limit) {
 		Long userId = StpUserUtil.getLoginIdAsLong();
-		Page<CouponUserView> couponActiveViewList = couponFontService.getAvailableCouponList(skuId, userId, isRenew, start, limit);
+		Page<CouponUserView> couponActiveViewList = couponFontService.getAvailableCouponList(skuId, couponId, userId, isRenew, start, limit);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(couponActiveViewList);
 	}