yuanliang 1 anno fa
parent
commit
29349b616a

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VipCardRecord.java

@@ -110,4 +110,8 @@ public class VipCardRecord implements Serializable {
     @TableField(value = "ref_id_")
     private Long refId;
 
+    @ApiModelProperty("是否发送消息")
+    @TableField(value = "send_msg_")
+    private Boolean sendMsg;
+
 }

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

@@ -449,18 +449,24 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 //        }
 
         Date now = new Date();
-        Date startTime = now;
+        long startTimeMills = now.getTime();
         // 没有会员信息
         if (vipCardRecordList.isEmpty()) {
             PeriodEnum period = addVipCardRecord.getType();
-            Date endDate = plusDate(startTime, period, Long.valueOf(addVipCardRecord.getTimes()));
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(now);
+            calendar.set(Calendar.HOUR_OF_DAY, 23);
+            calendar.set(Calendar.MINUTE, 59);
+            calendar.set(Calendar.SECOND, 59);
+            calendar.set(Calendar.MILLISECOND, 0);
+            Date endDate = plusDate(calendar.getTime(), period, Long.valueOf(addVipCardRecord.getTimes()));
 
             VipCardRecord addRecord = JSON.parseObject(JSON.toJSONString(addVipCardRecord), VipCardRecord.class);
             addRecord.setSourceType(addVipCardRecord.getSourceType() !=null?addVipCardRecord.getSourceType():SourceTypeEnum.BACKEND_GIVE);
             addRecord.setStatus(EVipRecordStatus.ADD);
             addRecord.setDisplayFlag(true);
             addRecord.setEfficientFlag(true);
-            addRecord.setStartTime(startTime);
+            addRecord.setStartTime(now);
             addRecord.setEndTime(endDate);
             return addRecord;
         }
@@ -469,54 +475,44 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
         int index = 0;
         if (addVipType.equals(EVipType.VIP)) { // vip 放到最后
             index = vipCardRecordList.size();
-            startTime = vipCardRecordList.stream().map(VipCardRecord::getEndTime).max(Date::compareTo).get();
+            startTimeMills = vipCardRecordList.stream().map(VipCardRecord::getEndTime).max(Date::compareTo).get().getTime() + 1000L;
         }
         if (addVipType.equals(EVipType.SVIP)) { //放到VIP的前面
-            PeriodEnum period = addVipCardRecord.getType();
-            if (period.equals(PeriodEnum.PERPETUAL)) {
-                index = (int) vipCardRecordList.stream().filter(n -> EVipType.SVIP.equals(n.getVipType())).count();
-                if (index > 0) {
-                    startTime = vipCardRecordList.stream().filter(n -> EVipType.SVIP.equals(n.getVipType())).map(VipCardRecord::getEndTime).max(Date::compareTo).get();
-                }
-            } else {
-                index = (int) vipCardRecordList.stream().filter(n -> EVipType.SVIP.equals(n.getVipType()) && !PeriodEnum.PERPETUAL.equals(n.getType())).count();
-                if (index > 0) {
-                    startTime = vipCardRecordList.stream().filter(n -> EVipType.SVIP.equals(n.getVipType()) && !PeriodEnum.PERPETUAL.equals(n.getType()))
-                            .map(VipCardRecord::getEndTime).max(Date::compareTo).get();
-                }
+            index = (int) vipCardRecordList.stream().filter(n -> EVipType.SVIP.equals(n.getVipType()) && !PeriodEnum.PERPETUAL.equals(n.getType())).count();
+            if (index > 0) {
+                startTimeMills = vipCardRecordList.stream().filter(n -> EVipType.SVIP.equals(n.getVipType()) && !PeriodEnum.PERPETUAL.equals(n.getType()))
+                        .map(VipCardRecord::getEndTime).max(Date::compareTo).get().getTime() + 1000;
             }
         }
-        Date endDate = plusDate(startTime, addVipCardRecord.getType(), Long.valueOf(addVipCardRecord.getTimes()));
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date(startTimeMills));
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.SECOND, 59);
+        calendar.set(Calendar.MILLISECOND, 0);
+        Date endDate = plusDate(calendar.getTime(), addVipCardRecord.getType(), Long.valueOf(addVipCardRecord.getTimes()));
         VipCardRecord newRecord = JSON.parseObject(JSON.toJSONString(addVipCardRecord), VipCardRecord.class);
         newRecord.setSourceType(addVipCardRecord.getSourceType() !=null?addVipCardRecord.getSourceType():SourceTypeEnum.BACKEND_GIVE);
         newRecord.setStatus(EVipRecordStatus.ADD);
-        if (index > 0) {
-            newRecord.setStartTime(new Date(startTime.getTime() + 1000));
-        } else {
-            newRecord.setStartTime(startTime);
-        }
-        newRecord.setEndTime(endDate);
+        newRecord.setStartTime(new Date(startTimeMills));
+        newRecord.setEndTime(new Date(endDate.getTime()));
         newRecord.setDisplayFlag(true);
         newRecord.setEfficientFlag(true);
 
         // 平移时间
-        long plusMills = endDate.getTime() - startTime.getTime();
+        long plusMills = endDate.getTime() - startTimeMills;
+        long beforeEndTime = newRecord.getEndTime().getTime();
         for (int i = 0; i < vipCardRecordList.size(); i++) {
             VipCardRecord vipCardRecord = vipCardRecordList.get(i);
             if (i >= index) {
                 VipCardRecord addRecord = JSON.parseObject(JSON.toJSONString(vipCardRecord), VipCardRecord.class);
                 addRecord.setStatus(EVipRecordStatus.UPDATE);
 
-                long startTimeMills = Math.max(vipCardRecord.getStartTime().getTime(), now.getTime());
-                Date startDate = new Date(startTimeMills + plusMills + 1000);
-                Calendar instance = Calendar.getInstance();
-                instance.setTime(startDate);
-                instance.set(Calendar.SECOND, 0);
-                instance.set(Calendar.MILLISECOND, 0);
-                addRecord.setStartTime(instance.getTime());
+                addRecord.setStartTime(new Date(beforeEndTime + 1000));
 
                 int days = (int) Math.ceil(plusMills * 1.0D / (24 * 60 * 60 * 1000));
-                addRecord.setEndTime(plusDate(vipCardRecord.getEndTime(), PeriodEnum.DAY, days));
+                Date endTime = plusDate(vipCardRecord.getEndTime(), PeriodEnum.DAY, days);
+                addRecord.setEndTime(endTime);
                 addRecord.setDisplayFlag(false);
                 addRecord.setEfficientFlag(true);
                 save(addRecord);
@@ -526,6 +522,7 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
                 updateRecord.setEfficientFlag(false);
                 updateRecord.setRefId(refId);
                 updateById(updateRecord);
+                beforeEndTime = endTime.getTime();
             }
         }
         return newRecord;
@@ -695,14 +692,14 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     }
 
     private Date plusDate(Date start, PeriodEnum period, long times) {
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(start);
-        calendar.set(Calendar.HOUR_OF_DAY, 23);
-        calendar.set(Calendar.MINUTE, 59);
-        calendar.set(Calendar.SECOND, 59);
-        calendar.set(Calendar.MILLISECOND, 0);
+//        Calendar calendar = Calendar.getInstance();
+//        calendar.setTime(start);
+//        calendar.set(Calendar.HOUR_OF_DAY, 23);
+//        calendar.set(Calendar.MINUTE, 59);
+//        calendar.set(Calendar.SECOND, 59);
+//        calendar.set(Calendar.MILLISECOND, 0);
+        LocalDateTime localDateTimeMaxTime =  LocalDateTime.ofInstant(start.toInstant(),ZoneId.systemDefault());
 
-        LocalDateTime localDateTimeMaxTime =  calendar.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
         LocalDateTime end;
         switch (period) {
             case DAY: