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

107 lines
6.3 KiB
Java
Raw Normal View History

package com.xkrs.straw.utils;
import com.xkrs.straw.dao.FirePointOrdinaryDao;
import com.xkrs.straw.dao.FirePointPreciseDao;
import com.xkrs.straw.model.bean.FirePointQueryResultBean;
import com.xkrs.straw.model.bean.VipTimeRangeBean;
import com.xkrs.straw.model.entity.SysUserEntity;
import com.xkrs.utils.DateTimeUtil;
import com.xkrs.utils.DateTimeUtils;
import com.xkrs.utils.FirePointCodeUtils;
import org.apache.hc.core5.util.TextUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Component
public class FirePointQueryManager {
@Resource
private FirePointOrdinaryDao firePointOrdinaryDao;
@Resource
private FirePointPreciseDao firePointPreciseDao;
public FirePointQueryResultBean queryFirePointBelongToUser(SysUserEntity sysUserEntity, String startTime, String endTime, String satelliteType, String landType) {
String mNoRedundantUserCode = null;
final List<VipTimeRangeBean.VipTimeRangeItemBean> mVipTimeRangeItemList = new ArrayList<>();
try {
//获取用户注册的区划编码
String userCode = sysUserEntity.getCountyCode();
//如果用户注册的区划编码是空,就返回失败
if (TextUtils.isEmpty(userCode)) {
return new FirePointQueryResultBean(false, "User CountyCode Error 1, userCode = " + userCode, null);
}
//对用户区划编码进行格式化,获得没有冗余数据的区划编码
String noRedundantUserCode = FirePointCodeUtils.getFormatCutCode(userCode);
//如果格式化后的用户区划编码是空,就返回失败
if (TextUtils.isEmpty(noRedundantUserCode)) {
return new FirePointQueryResultBean(false, "User CountyCode Error 2, userCode = " + userCode + ", noRedundantUserCode = " + noRedundantUserCode, null);
}
//获取用户的VIP时间范围
String vipTimeRangeJson = sysUserEntity.getVipTimeRangeJson();
//如果用户的VIP时间范围数据是空就返回失败
if (TextUtils.isEmpty(vipTimeRangeJson)) {
return new FirePointQueryResultBean(false, "User VipTimeRangeJson Error 1, vipTimeRangeJson = " + vipTimeRangeJson, null);
}
//反序列化用户的VIP时间范围得到对象
VipTimeRangeBean vipTimeRangeBean = JsonUtils.deserialize(vipTimeRangeJson, VipTimeRangeBean.class);
//用户注册时有初始VIP时间范围反序列化失败或无数据说明该用户的数据发生了异常返回失败
if (vipTimeRangeBean == null || vipTimeRangeBean.getList() == null || vipTimeRangeBean.getList().size() == 0) {
return new FirePointQueryResultBean(false, "User VipTimeRangeJson Error 2, 已保存的VIP时间范围反序列化失败, vipTimeRangeJson = " + vipTimeRangeJson, null);
}
//得到由<开始时间 + 结束时间>组成的集合
List<VipTimeRangeBean.VipTimeRangeItemBean> vipTimeRangeItemList = vipTimeRangeBean.getList();
for (VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemA : vipTimeRangeItemList) {
//校验用户VIP开始时间合法性
if (!DateTimeUtil.isValidDateTime(vipTimeRangeItemA.getStartTime())) {
return new FirePointQueryResultBean(false, "User VIP 开始时间格式不合法1, StartTime = " + vipTimeRangeItemA.getStartTime(), null);
}
//校验用户VIP结束时间合法性
if (!DateTimeUtil.isValidDateTime(vipTimeRangeItemA.getEndTime())) {
return new FirePointQueryResultBean(false, "User VIP 结束时间格式不合法2, EndTime = " + vipTimeRangeItemA.getEndTime(), null);
}
LocalDateTime userStartLocalDateTimeA = LocalDateTime.parse(vipTimeRangeItemA.getStartTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
LocalDateTime userEndLocalDateTimeA = LocalDateTime.parse(vipTimeRangeItemA.getEndTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
for (VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemB : vipTimeRangeItemList) {
if (vipTimeRangeItemA != vipTimeRangeItemB) {
//校验用户VIP开始时间合法性
if (!DateTimeUtil.isValidDateTime(vipTimeRangeItemB.getStartTime())) {
return new FirePointQueryResultBean(false, "User VIP 开始时间格式不合法3, StartTime = " + vipTimeRangeItemB.getStartTime(), null);
}
//校验用户VIP结束时间合法性
if (!DateTimeUtil.isValidDateTime(vipTimeRangeItemB.getEndTime())) {
return new FirePointQueryResultBean(false, "User VIP 结束时间格式不合法4, EndTime = " + vipTimeRangeItemB.getEndTime(), null);
}
LocalDateTime userStartLocalDateTimeB = LocalDateTime.parse(vipTimeRangeItemB.getStartTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
LocalDateTime userEndLocalDateTimeB = LocalDateTime.parse(vipTimeRangeItemB.getEndTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
//校验用户VIP开始结束时间是否存在交叉现象
if (userStartLocalDateTimeB.isBefore(userStartLocalDateTimeA) && userEndLocalDateTimeB.isAfter(userStartLocalDateTimeA)) {
return new FirePointQueryResultBean(false, "User VIP 开始结束时间格式不合法5, 存在交叉现象", null);
}
if (userStartLocalDateTimeB.isBefore(userEndLocalDateTimeA) && userEndLocalDateTimeB.isAfter(userEndLocalDateTimeA)) {
return new FirePointQueryResultBean(false, "User VIP 开始结束时间格式不合法6, 存在交叉现象", null);
}
}
}
}
mNoRedundantUserCode = noRedundantUserCode;
mVipTimeRangeItemList.addAll(vipTimeRangeItemList);
} catch (Exception e) {
e.printStackTrace();
return new FirePointQueryResultBean(false, e.getMessage(), null);
}
return null;
}
}