fire_point/src/main/java/com/xkrs/straw/utils/VipTimeRangeUtils.java

100 lines
4.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.xkrs.straw.utils;
import com.xkrs.straw.model.bean.VipLocalDateTimeRangePair;
import com.xkrs.straw.model.bean.VipTimeRangeBean;
import com.xkrs.utils.DateTimeUtils;
import org.apache.hc.core5.util.TextUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class VipTimeRangeUtils {
public static Logger log = LoggerFactory.getLogger(VipTimeRangeUtils.class);
private VipTimeRangeUtils() {
}
/**
* 校验传入的时间是否在指定的VIP时间范围内
*/
public static boolean checkIfInVipTimeRange(String vipTimeRangeJson, LocalDateTime targetLocalDateTime) {
try {
if (TextUtils.isEmpty(vipTimeRangeJson) || targetLocalDateTime == null) {
return false;
}
VipTimeRangeBean vipTimeRangeBean = JsonUtils.deserialize(vipTimeRangeJson, VipTimeRangeBean.class);
if (vipTimeRangeBean == null || vipTimeRangeBean.getList() == null || vipTimeRangeBean.getList().size() == 0) {
return false;
}
List<VipLocalDateTimeRangePair> vipLocalDateTimeRangePairList = obtainSortedVipLocalDateTimeRangePairList(vipTimeRangeBean.getList());
if (vipLocalDateTimeRangePairList.size() == 0) {
return false;
}
for (VipLocalDateTimeRangePair vipLocalDateTimeRangePair : vipLocalDateTimeRangePairList) {
LocalDateTime startLocalDateTime = vipLocalDateTimeRangePair.getStartLocalDateTime();
LocalDateTime endLocalDateTime = vipLocalDateTimeRangePair.getEndLocalDateTime();
if (startLocalDateTime.isBefore(targetLocalDateTime) && endLocalDateTime.isAfter(targetLocalDateTime)) {
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
log.info("检查是否属于VIP时间范围时出错详情=" + e.getMessage());
}
return false;
}
/**
* 根据一个字符串格式时间的列表 生成 一个LocalDateTime格式时间的列表
*/
private static List<VipLocalDateTimeRangePair> obtainSortedVipLocalDateTimeRangePairList(List<VipTimeRangeBean.VipTimeRangeItemBean> list) {
List<VipLocalDateTimeRangePair> vipLocalDateTimeRangePairList = new ArrayList<>();
try {
if (list == null || list.size() == 0) {
return vipLocalDateTimeRangePairList;
}
for (VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBean : list) {
String startTime = vipTimeRangeItemBean.getStartTime();
LocalDateTime startLocalDateTime = LocalDateTime.parse(startTime, DateTimeUtils.DATE_TIME_FORMATTER_1);
String endTime = vipTimeRangeItemBean.getEndTime();
LocalDateTime endLocalDateTime = LocalDateTime.parse(endTime, DateTimeUtils.DATE_TIME_FORMATTER_1);
VipLocalDateTimeRangePair vipLocalDateTimeRangePair = new VipLocalDateTimeRangePair();
vipLocalDateTimeRangePair.setStartLocalDateTime(startLocalDateTime);
vipLocalDateTimeRangePair.setEndLocalDateTime(endLocalDateTime);
vipLocalDateTimeRangePairList.add(vipLocalDateTimeRangePair);
}
List<VipLocalDateTimeRangePair> sortedVipLocalDateTimeRangePairList = vipLocalDateTimeRangePairList.stream().sorted((o1, o2) -> {
try {
LocalDateTime startLocalDateTime1 = o1.getStartLocalDateTime();
LocalDateTime endLocalDateTime1 = o1.getEndLocalDateTime();
LocalDateTime startLocalDateTime2 = o2.getStartLocalDateTime();
LocalDateTime endLocalDateTime2 = o2.getEndLocalDateTime();
if (startLocalDateTime1.isBefore(startLocalDateTime2) && endLocalDateTime1.isBefore(endLocalDateTime2)) {
return 1;
}
if (startLocalDateTime1.isAfter(startLocalDateTime2) && endLocalDateTime1.isAfter(endLocalDateTime2)) {
return -1;
}
return 0;
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}).collect(Collectors.toList());
log.info("原始集合size=" + list.size() + "格式化后的集合size=" + vipLocalDateTimeRangePairList.size() + "排序后的集合size=" + sortedVipLocalDateTimeRangePairList.size());
return sortedVipLocalDateTimeRangePairList;
} catch (Exception e) {
e.printStackTrace();
}
return vipLocalDateTimeRangePairList;
}
}