火点重构-完善防火季订阅
This commit is contained in:
parent
2632d73c42
commit
83e87fab0f
@ -6,7 +6,7 @@ import com.xkrs.model.entity.FirePointOrdinaryEntity;
|
||||
import com.xkrs.model.entity.SysUserEntity;
|
||||
import com.xkrs.utilsnew.DateTimeUtils;
|
||||
import com.xkrs.utilsnew.FirePointCodeUtils;
|
||||
import com.xkrs.utilsnew.VipTimeRangeUtils;
|
||||
import com.xkrs.utilsnew.TimeRangeUtils;
|
||||
import org.apache.hc.core5.util.TextUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -90,11 +90,10 @@ public class FirePointQueryManager {
|
||||
};
|
||||
//未审核的普通火点列表
|
||||
List<FirePointOrdinaryEntity> firePointList = firePointOrdinaryDao.findAll(specificationOrdinary, Sort.by(Sort.Direction.DESC, "satelliteTime"));
|
||||
boolean inVipTimeRange = VipTimeRangeUtils.checkIfInVipTimeRange(sysUserEntity.getVipTimeRangeJson());//查询火点后的步骤
|
||||
if ((!"管理员".equals(sysUserEntity.getAccountType())) && (!inVipTimeRange)) {
|
||||
//该账号不是管理员,并且不在VIP时间范围内。(过期的普通用户)那就清空火点的研判标志
|
||||
if ((!"管理员".equals(sysUserEntity.getAccountType())) && TimeRangeUtils.checkIfAllExpired(sysUserEntity)) {
|
||||
//过期的普通用户看不到火点的研判标志
|
||||
for (FirePointOrdinaryEntity firePoint : firePointList) {
|
||||
firePoint.setFireStatus(null);//过期的普通用户看不到火点的研判标志
|
||||
firePoint.setFireStatus(null);
|
||||
}
|
||||
}
|
||||
return new FirePointQueryResultBean(true, "", firePointList, firePointList.size());
|
||||
|
@ -51,9 +51,8 @@ public class FirePointCodeUtils {
|
||||
if ("管理员".equals(sysUser.getAccountType())) {//管理员用户不发短信
|
||||
continue;
|
||||
}
|
||||
boolean inVipTimeRange = VipTimeRangeUtils.checkIfInVipTimeRange(sysUser.getVipTimeRangeJson());
|
||||
if (!inVipTimeRange) {
|
||||
//普通用户最多可以接收3条短信
|
||||
if (TimeRangeUtils.checkIfAllExpired(sysUser)) {
|
||||
//过期用户最多可以接收3条短信
|
||||
Long receiveSmsCount = sysUser.getReceiveSmsCount();
|
||||
if (receiveSmsCount != null && receiveSmsCount >= 3) {
|
||||
continue;
|
||||
|
@ -2,22 +2,37 @@ package com.xkrs.utilsnew;
|
||||
|
||||
import com.xkrs.model.bean.DataWrapper2;
|
||||
import com.xkrs.model.bean.VipTimeRangeBean;
|
||||
import com.xkrs.model.entity.SysUserEntity;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 时间范围工具类
|
||||
*/
|
||||
public class TimeRangeUtils {
|
||||
|
||||
private TimeRangeUtils() {
|
||||
}
|
||||
|
||||
public static boolean checkIfAllExpired(SysUserEntity sysUserEntity) {
|
||||
boolean probationExpired = checkIfProbationExpired(sysUserEntity.getAddTime(), sysUserEntity.getDayNum());//试用期是否过期
|
||||
boolean vipExpired = checkIfVipExpired(sysUserEntity.getVipTimeRangeJson());//VIP是否过期
|
||||
return probationExpired && vipExpired;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查VIP是否有效
|
||||
*/
|
||||
public static boolean checkIfVipValid(String vipTimeRangeJson) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<DataWrapper2<LocalDateTime, LocalDateTime>> vipRangeList = getVipRangeList(vipTimeRangeJson);
|
||||
for (DataWrapper2<LocalDateTime, LocalDateTime> vipRange : vipRangeList) {
|
||||
if (checkIfInTargetRange(vipRange.getData1(), vipRange.getData2(), now)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -53,14 +68,13 @@ public class TimeRangeUtils {
|
||||
return vipRangeList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查试用期是否有效
|
||||
*/
|
||||
public static boolean checkIfProbationValid(String addTime, Long dayNum) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
DataWrapper2<LocalDateTime, LocalDateTime> probationRange = getProbationRange(addTime, dayNum);
|
||||
return false;
|
||||
return checkIfInTargetRange(probationRange.getData1(), probationRange.getData2(), now);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -80,4 +94,11 @@ public class TimeRangeUtils {
|
||||
return new DataWrapper2<>(start, end);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断test是否在rangeStart和rangeEnd之间
|
||||
*/
|
||||
public static boolean checkIfInTargetRange(LocalDateTime rangeStart, LocalDateTime rangeEnd, LocalDateTime test) {
|
||||
return rangeStart.isBefore(test) && rangeEnd.isAfter(test);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.xkrs.utilsnew;
|
||||
|
||||
import com.xkrs.model.bean.VipLocalDateTimeRangePair;
|
||||
import com.xkrs.model.bean.VipTimeRangeBean;
|
||||
import org.apache.hc.core5.util.TextUtils;
|
||||
import org.slf4j.Logger;
|
||||
@ -9,7 +8,6 @@ import org.slf4j.LoggerFactory;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class VipTimeRangeUtils {
|
||||
|
||||
@ -86,98 +84,6 @@ public class VipTimeRangeUtils {
|
||||
return LocalDateTime.parse(lastVipTimeRangeItemBean.getEndTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
|
||||
}
|
||||
|
||||
public static boolean checkIfInTryTimeRange(String addTime, Long dayNum) {
|
||||
return checkIfInTryTimeRange(addTime, dayNum, LocalDateTime.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验传入的时间是否在指定的试用期过期时间之前
|
||||
*/
|
||||
public static boolean checkIfInTryTimeRange(String addTime, Long dayNum, LocalDateTime targetLocalDateTime) {
|
||||
LocalDateTime addLocalDateTime = LocalDateTime.parse(addTime, DateTimeUtils.DATE_TIME_FORMATTER_1);
|
||||
LocalDateTime tryLocalDateTime = addLocalDateTime.plusDays(dayNum);
|
||||
return targetLocalDateTime.isBefore(tryLocalDateTime);
|
||||
}
|
||||
|
||||
public static boolean checkIfInVipTimeRange(String vipTimeRangeJson) {
|
||||
return checkIfInVipTimeRange(vipTimeRangeJson, LocalDateTime.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验传入的时间是否在指定的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());
|
||||
return sortedVipLocalDateTimeRangePairList;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return vipLocalDateTimeRangePairList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成一个新的 VipTimeRangeJson
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user