刘俊驰 1 year ago
parent
commit
4591e720ad

+ 17 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java

@@ -331,7 +331,24 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
                     userVip.setVipType(EVipType.VIP);
                 }
                 Optional<VipCardRecord> max = vipList.stream().max(Comparator.comparing(VipCardRecord::getEndTime));
+                Optional<VipCardRecord> min = vipList.stream().min(Comparator.comparing(VipCardRecord::getStartTime));
                 max.ifPresent(vipCardRecord -> userVip.setVipEndDate(vipCardRecord.getEndTime()));
+                Date minDate = null;
+                if (min.isPresent()) {
+                    minDate = min.get().getStartTime();
+                }
+                // 设置VIP剩余天数
+                if (userVip.getVipEndDate() != null) {
+                    int num;
+                    if (userVip.getSvipEndDate() != null && userVip.getSvipEndDate().after(new Date())) {
+                        num = DateUtil.daysBetween(userVip.getSvipEndDate(), userVip.getVipEndDate());
+                    } else if (minDate != null && minDate.after(new Date())){
+                        num = DateUtil.daysBetween(minDate, userVip.getVipEndDate());
+                    } else {
+                        num = DateUtil.daysBetween(new Date(), userVip.getVipEndDate()) +1;
+                    }
+                    userVip.setVipEndDays(Math.max(num, 0));
+                }
             } else {
                 Integer vipCount = this.lambdaQuery()
                     .eq(VipCardRecord::getUserId, userId)
@@ -345,16 +362,6 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
             }
         }
 
-        // 设置剩余天数
-        if (userVip.getVipEndDate() != null) {
-            int num;
-            if (userVip.getSvipEndDate() != null && userVip.getSvipEndDate().after(new Date())) {
-                num = DateUtil.daysBetween(userVip.getSvipEndDate(), userVip.getVipEndDate());
-            } else {
-                num = DateUtil.daysBetween(new Date(), userVip.getVipEndDate()) + 1;
-            }
-            userVip.setVipEndDays(Math.max(num, 0));
-        }
         if (userVip.getSvipEndDate() != null) {
             int num = DateUtil.daysBetween(new Date(), userVip.getSvipEndDate()) +1;
             userVip.setSvipEndDays(Math.max(num, 0));