Explorar el Código

领取优惠券列表修改

zhangchen hace 4 meses
padre
commit
f2047060b0

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeDiscountCouponVo.java

@@ -151,4 +151,7 @@ public class LifeDiscountCouponVo {
     @ApiModelProperty(value = "有效期")
     private LocalDate validDate;
 
+    @ApiModelProperty(value = "到期日期")
+    private LocalDate expirationTime;
+
 }

+ 42 - 5
alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponServiceImpl.java

@@ -94,8 +94,9 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
             String specifiedDay = lifeDiscountCoupon.getSpecifiedDay();
             if(!StringUtils.isEmpty(specifiedDay)){
                 int sDay = Integer.parseInt(specifiedDay);
-                if(sDay > 0){
-                    Date validDate = addDaysToDateJava8(new Date(), sDay);
+                if(sDay > 0 && lifeDiscountCouponDto.getBeginGetDate() != null){
+                    Date beginGetDate = Date.from(lifeDiscountCouponDto.getBeginGetDate().atStartOfDay(ZoneId.systemDefault()).toInstant());
+                    Date validDate = addDaysToDateJava8(beginGetDate, sDay);
                     LocalDate validDateLocalDate = validDate.toInstant()
                             .atZone(ZoneId.systemDefault())
                             .toLocalDate();
@@ -188,8 +189,9 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
             String specifiedDay = lifeDiscountCouponDto.getSpecifiedDay();
             if(!StringUtils.isEmpty(specifiedDay)){
                 int sDay = Integer.parseInt(specifiedDay);
-                if(sDay > 0){
-                    Date validDate = addDaysToDateJava8(new Date(), sDay);
+                if(sDay > 0 && lifeDiscountCouponDto.getBeginGetDate() != null) {
+                    Date beginGetDate = Date.from(lifeDiscountCouponDto.getBeginGetDate().atStartOfDay(ZoneId.systemDefault()).toInstant());
+                    Date validDate = addDaysToDateJava8(beginGetDate, sDay);
                     LocalDate validDateLocalDate = validDate.toInstant()
                             .atZone(ZoneId.systemDefault())
                             .toLocalDate();
@@ -367,8 +369,13 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
             queryWrapper.eq(LifeDiscountCouponUser::getUserId, userLoginInfo.getUserId());
             queryWrapper.orderByDesc(LifeDiscountCouponUser::getReceiveTime);
             List<LifeDiscountCouponUser> lifeDiscountCouponUsers = lifeDiscountCouponUserMapper.selectList(queryWrapper);
+            String specifiedDay = lifeDiscountCoupon.getSpecifiedDay();
+            Date receiveDay = null;
+
             //判断是否已经全部领取
             if (lifeDiscountCoupon.getRestrictedQuantity() != 0 && lifeDiscountCouponUsers.size() >= lifeDiscountCoupon.getRestrictedQuantity()) {
+                receiveDay = lifeDiscountCouponUsers.get(0).getReceiveTime();
+                lifeDiscountCouponVo.setExpirationTime(lifeDiscountCouponUsers.get(0).getExpirationTime());
                 lifeDiscountCouponVo.setCanReceived(false);
             } else {
                 //判断一下领取规则
@@ -382,6 +389,7 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
                 } else {
                     LifeDiscountCouponUser lifeDiscountCouponUser = lifeDiscountCouponUsers.get(0);
                     Date receiveTime = lifeDiscountCouponUser.getReceiveTime();
+                    receiveDay = lifeDiscountCouponUser.getReceiveTime();
 
                     // 将 Date 转换为 Instant
                     Instant instant = receiveTime.toInstant();
@@ -404,6 +412,19 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
                     }
                     //如果在规则范围内,则不允许领取,范围外,则可以领取
                     lifeDiscountCouponVo.setCanReceived(confineTo >= 1);
+                    lifeDiscountCouponVo.setExpirationTime(lifeDiscountCouponUser.getExpirationTime());
+                }
+            }
+            if(!StringUtils.isEmpty(specifiedDay)){
+                int sDay = Integer.parseInt(specifiedDay);
+                if(sDay > 0 && receiveDay != null){
+                    Date validDate = addDaysToDateJava8(receiveDay, sDay);
+                    LocalDate validDateLocalDate = validDate.toInstant()
+                            .atZone(ZoneId.systemDefault())
+                            .toLocalDate();
+                    lifeDiscountCouponVo.setValidDate(validDateLocalDate);
+                } else {
+                    lifeDiscountCouponVo.setValidDate(null);
                 }
             }
             lifeDiscountCouponVo.setQuantityClaimed(lifeDiscountCouponUsers.size());
@@ -667,13 +688,29 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
             return lifeDiscountCouponVos;
         }
         for (LifeDiscountCouponUser lifeDiscountCouponUser : lifeDiscountCouponUserIPage.getRecords()) {
-            LifeDiscountCoupon lifeDiscountCouponOne = lifeDiscountCoupons.stream().filter(lifeDiscountCoupon -> lifeDiscountCoupon.getId().equals(lifeDiscountCouponUser.getCouponId())).collect(Collectors.toList()).get(0);
+            LifeDiscountCoupon lifeDiscountCouponOne = lifeDiscountCoupons.stream().filter(lifeDiscountCoupon ->
+                    lifeDiscountCoupon.getId().equals(lifeDiscountCouponUser.getCouponId())).collect(Collectors.toList()).get(0);
             StoreInfo storeInfoOne = storeInfoList.stream().filter(storeInfo -> storeInfo.getId().toString().equals(lifeDiscountCouponOne.getStoreId())).collect(Collectors.toList()).get(0);
             LifeDiscountCouponVo lifeDiscountCouponVo = new LifeDiscountCouponVo();
             lifeDiscountCouponVo.setBusinessSection(storeInfoOne.getBusinessSection());
             lifeDiscountCouponVo.setCouponId(lifeDiscountCouponOne.getId());
             BeanUtils.copyProperties(lifeDiscountCouponOne, lifeDiscountCouponVo);
             lifeDiscountCouponVo.setQuantityClaimed(lifeDiscountCouponUserIPage.getRecords().size());
+            lifeDiscountCouponVo.setExpirationTime(lifeDiscountCouponUser.getExpirationTime());
+            // 设置有效期
+            String specifiedDay = lifeDiscountCouponOne.getSpecifiedDay();
+            if(!StringUtils.isEmpty(specifiedDay)){
+                int sDay = Integer.parseInt(specifiedDay);
+                if(sDay > 0){
+                    Date receiveDay = lifeDiscountCouponUser.getReceiveTime();
+                    Date validDate = addDaysToDateJava8(receiveDay, sDay);
+                    LocalDate validDateLocalDate = validDate.toInstant()
+                            .atZone(ZoneId.systemDefault())
+                            .toLocalDate();
+                    lifeDiscountCouponVo.setValidDate(validDateLocalDate);
+                }
+            }
+
             // 判断是否到了优惠券的开始时间
             lifeDiscountCouponVo.setReachUseTimeFlag(1);
             if (localNow1.isBefore(lifeDiscountCouponOne.getBeginGetDate())) {

+ 27 - 2
alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponUserServiceImpl.java

@@ -1,5 +1,6 @@
 package shop.alien.store.service.impl;
 
+import com.aliyun.tea.utils.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
@@ -53,14 +54,26 @@ public class LifeDiscountCouponUserServiceImpl extends ServiceImpl<LifeDiscountC
             if (getStatus == 0) {
                 return R.fail("该优惠劵已经关闭领取");
             }
+            String specifiedDay = lifeDiscountCoupon.getSpecifiedDay();
 
             //判断领取数量
             for (int i = 0; i < receiveQuantity; i++) {
                 LifeDiscountCouponUser lifeDiscountCouponUser = new LifeDiscountCouponUser();
                 BeanUtils.copyProperties(lifeDiscountCouponUserDto, lifeDiscountCouponUser);
                 lifeDiscountCouponUser.setReceiveTime(new Date());
-                //存入过期时间
-                lifeDiscountCouponUser.setExpirationTime(lifeDiscountCoupon.getValidDate());
+
+                // 存入过期时间, 领取时间加上specifiedDay
+                if(!StringUtils.isEmpty(specifiedDay)){
+                    int sDay = Integer.parseInt(specifiedDay);
+                    if(sDay > 0 && lifeDiscountCoupon.getBeginGetDate() != null) {
+                        Date validDate = addDaysToDateJava8(new Date(), sDay);
+                        LocalDate validDateLocalDate = validDate.toInstant()
+                                .atZone(ZoneId.systemDefault())
+                                .toLocalDate();
+                        lifeDiscountCouponUser.setExpirationTime(validDateLocalDate);
+                    }
+                }
+
                 //存入状态  待使用:0
                 lifeDiscountCouponUser.setStatus(Integer.parseInt(DiscountCouponEnum.WAITING_USED.getValue()));
                 lifeDiscountCouponUserMapper.insert(lifeDiscountCouponUser);
@@ -74,4 +87,16 @@ public class LifeDiscountCouponUserServiceImpl extends ServiceImpl<LifeDiscountC
         }
         return R.success("领取成功");
     }
+
+    public static Date addDaysToDateJava8(Date date, int days) {
+        // 将Date转换为Instant
+        Instant instant = date.toInstant();
+
+        // 转换为LocalDate并加天数
+        LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate newLocalDate = localDate.plusDays(days);
+
+        // 转换回Date
+        return Date.from(newLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+    }
 }