This commit is contained in:
liuchengqian 2023-03-06 15:54:31 +08:00
parent d171bff036
commit f3cc6ca645
4 changed files with 294 additions and 12 deletions

View File

@ -11,12 +11,11 @@ import com.xkrs.straw.model.qo.SysUserQo;
import com.xkrs.straw.model.qo.SysUserReceiveSmsQo; import com.xkrs.straw.model.qo.SysUserReceiveSmsQo;
import com.xkrs.straw.model.qo.SysUserRemarkQo; import com.xkrs.straw.model.qo.SysUserRemarkQo;
import com.xkrs.straw.model.qo.SysUserVipLevelQo; import com.xkrs.straw.model.qo.SysUserVipLevelQo;
import com.xkrs.straw.model.vo.SysUserVo;
import com.xkrs.straw.service.SysUserService; import com.xkrs.straw.service.SysUserService;
import com.xkrs.straw.utils.SysUserConvertUtils;
import com.xkrs.straw.utils.VipTimeRangeUtils; import com.xkrs.straw.utils.VipTimeRangeUtils;
import com.xkrs.utils.AliYunSmsUtils; import com.xkrs.utils.*;
import com.xkrs.utils.ListUtils;
import com.xkrs.utils.RandomUtil;
import com.xkrs.utils.TokenUtil;
import org.apache.hc.core5.util.TextUtils; import org.apache.hc.core5.util.TextUtils;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
@ -80,7 +79,7 @@ public class SysUserController {
SysUserEntity targetEntity = targetEntityOptional.get(); SysUserEntity targetEntity = targetEntityOptional.get();
if (!TextUtils.isEmpty(overTime)) { if (!TextUtils.isEmpty(overTime)) {
//获取LocalDateTime格式的过期时间 //获取LocalDateTime格式的过期时间
LocalDateTime newLocalDateTime = VipTimeRangeUtils.convert(overTime); LocalDateTime newLocalDateTime = LocalDateTime.parse(overTime, DateTimeUtils.DATE_TIME_FORMATTER_1);
//生成新的VIP时间范围Json内容 //生成新的VIP时间范围Json内容
String newVipTimeRangeJson = VipTimeRangeUtils.obtainNewVipTimeRangeJson(targetEntity.getVipTimeRangeJson(), newLocalDateTime); String newVipTimeRangeJson = VipTimeRangeUtils.obtainNewVipTimeRangeJson(targetEntity.getVipTimeRangeJson(), newLocalDateTime);
//更新字段 //更新字段
@ -262,10 +261,11 @@ public class SysUserController {
return outputEncapsulationObject(PromptMessageEnum.USER_LOGIN_ERROR, "您还没有注册登录,请先注册登录", locale); return outputEncapsulationObject(PromptMessageEnum.USER_LOGIN_ERROR, "您还没有注册登录,请先注册登录", locale);
} }
List<SysUserEntity> sysUserEntityList = sysUserService.selectAllUser(); List<SysUserEntity> sysUserEntityList = sysUserService.selectAllUser();
if (sysUserEntityList == null || sysUserEntityList.size() == 0) { List<SysUserVo> sysUserVoList = new ArrayList<>();
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE, "暂时还没有任何用户数据", locale); for (SysUserEntity sysUser : sysUserEntityList) {
sysUserVoList.add(SysUserConvertUtils.convert(sysUser));
} }
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, sysUserEntityList, locale); return outputEncapsulationObject(PromptMessageEnum.SUCCESS, sysUserVoList, locale);
} }
/** /**

View File

@ -0,0 +1,212 @@
package com.xkrs.straw.model.vo;
public class SysUserVo {
/**
* 指定主键建立自增序列主键值取自序列
*/
private Long id;
/**
* 用户名
*/
private String userName;
/**
* 用户真实姓名
*/
private String reallyName;
/**
* 手机号
*/
private String telephone;
private String countyCode;
private String countyName;
/**
* 0正常用户
* 1被禁用的用户
*/
private Integer activeFlag;
private String addTime;
/**
* 账号类别
*/
private String accountType;
/**
* 登录次数
*/
private Integer loginNum;
/**
* 用户最新登录时间
*/
private String loginLastTime;
/**
* vip等级
*/
private Integer vipLevel;
/**
* 是否接收短信
*/
private Integer receiveSms;
/**
* 一共接收了多少条短信
*/
private Long receiveSmsCount;
/**
* 备注
*/
private String remark;
/**
* 过期时间
*/
private String overTime;
public SysUserVo() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getReallyName() {
return reallyName;
}
public void setReallyName(String reallyName) {
this.reallyName = reallyName;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getCountyCode() {
return countyCode;
}
public void setCountyCode(String countyCode) {
this.countyCode = countyCode;
}
public String getCountyName() {
return countyName;
}
public void setCountyName(String countyName) {
this.countyName = countyName;
}
public Integer getActiveFlag() {
return activeFlag;
}
public void setActiveFlag(Integer activeFlag) {
this.activeFlag = activeFlag;
}
public String getAddTime() {
return addTime;
}
public void setAddTime(String addTime) {
this.addTime = addTime;
}
public String getAccountType() {
return accountType;
}
public void setAccountType(String accountType) {
this.accountType = accountType;
}
public Integer getLoginNum() {
return loginNum;
}
public void setLoginNum(Integer loginNum) {
this.loginNum = loginNum;
}
public String getLoginLastTime() {
return loginLastTime;
}
public void setLoginLastTime(String loginLastTime) {
this.loginLastTime = loginLastTime;
}
public Integer getVipLevel() {
return vipLevel;
}
public void setVipLevel(Integer vipLevel) {
this.vipLevel = vipLevel;
}
public Integer getReceiveSms() {
return receiveSms;
}
public void setReceiveSms(Integer receiveSms) {
this.receiveSms = receiveSms;
}
public Long getReceiveSmsCount() {
return receiveSmsCount;
}
public void setReceiveSmsCount(Long receiveSmsCount) {
this.receiveSmsCount = receiveSmsCount;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getOverTime() {
return overTime;
}
public void setOverTime(String overTime) {
this.overTime = overTime;
}
@Override
public String toString() {
return "SysUserVo{" + "id=" + id + ", userName='" + userName + '\'' + ", reallyName='" + reallyName + '\'' + ", telephone='" + telephone + '\'' + ", countyCode='" + countyCode + '\'' + ", countyName='" + countyName + '\'' + ", activeFlag=" + activeFlag + ", addTime='" + addTime + '\'' + ", accountType='" + accountType + '\'' + ", loginNum=" + loginNum + ", loginLastTime='" + loginLastTime + '\'' + ", vipLevel=" + vipLevel + ", receiveSms=" + receiveSms + ", receiveSmsCount=" + receiveSmsCount + ", remark='" + remark + '\'' + ", overTime='" + overTime + '\'' + '}';
}
}

View File

@ -0,0 +1,32 @@
package com.xkrs.straw.utils;
import com.xkrs.straw.model.entity.SysUserEntity;
import com.xkrs.straw.model.vo.SysUserVo;
public class SysUserConvertUtils {
private SysUserConvertUtils() {
}
public static SysUserVo convert(SysUserEntity entity) {
SysUserVo sysUserVo = new SysUserVo();
sysUserVo.setId(entity.getId());
sysUserVo.setUserName(entity.getUserName());
sysUserVo.setReallyName(entity.getReallyName());
sysUserVo.setTelephone(entity.getTelephone());
sysUserVo.setCountyCode(entity.getCountyCode());
sysUserVo.setCountyName(entity.getCountyName());
sysUserVo.setActiveFlag(entity.getActiveFlag());
sysUserVo.setAddTime(entity.getAddTime());
sysUserVo.setAccountType(entity.getAccountType());
sysUserVo.setLoginNum(entity.getLoginNum());
sysUserVo.setLoginLastTime(entity.getLoginLastTime());
sysUserVo.setVipLevel(entity.getVipLevel());
sysUserVo.setReceiveSms(entity.getReceiveSms());
sysUserVo.setReceiveSmsCount(entity.getReceiveSmsCount());
sysUserVo.setRemark(entity.getRemark());
sysUserVo.setOverTime(VipTimeRangeUtils.obtainLastOverTime(entity.getVipTimeRangeJson()));
return sysUserVo;
}
}

View File

@ -99,6 +99,48 @@ public class VipTimeRangeUtils {
return vipLocalDateTimeRangePairList; return vipLocalDateTimeRangePairList;
} }
public static String obtainLastOverTime(String oldVipTimeRangeJson) {
//oldVipTimeRangeJson不为空说明不是新注册用户解析该用户的VIP时间范围
VipTimeRangeBean vipTimeRangeBean = JsonUtils.deserialize(oldVipTimeRangeJson, VipTimeRangeBean.class);
if (vipTimeRangeBean == null || vipTimeRangeBean.getList() == null || vipTimeRangeBean.getList().size() == 0) {
throw new RuntimeException("已保存的VIP时间范围反序列化失败");
}
List<VipTimeRangeBean.VipTimeRangeItemBean> list = vipTimeRangeBean.getList();
if (list == null || list.size() == 0) {
return "";
}
//校验数据合法性
for (VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBeanA : list) {
for (VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBeanB : list) {
if (vipTimeRangeItemBeanA != vipTimeRangeItemBeanB) {
LocalDateTime startLocalDateTimeA = LocalDateTime.parse(vipTimeRangeItemBeanA.getStartTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
LocalDateTime endLocalDateTimeA = LocalDateTime.parse(vipTimeRangeItemBeanA.getEndTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
LocalDateTime startLocalDateTimeB = LocalDateTime.parse(vipTimeRangeItemBeanB.getStartTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
LocalDateTime endLocalDateTimeB = LocalDateTime.parse(vipTimeRangeItemBeanB.getEndTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
if (startLocalDateTimeB.isBefore(startLocalDateTimeA) && endLocalDateTimeB.isAfter(startLocalDateTimeA)) {
throw new RuntimeException("VIP开始结束时间存在交叉现象1系统数据错误");
}
if (startLocalDateTimeB.isBefore(endLocalDateTimeA) && endLocalDateTimeB.isAfter(endLocalDateTimeA)) {
throw new RuntimeException("VIP开始结束时间存在交叉现象2系统数据错误");
}
}
}
}
//获取结束时间最大的那个Pair
VipTimeRangeBean.VipTimeRangeItemBean lastVipTimeRangeItemBean = list.get(0);
for (VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBean : list) {
if (lastVipTimeRangeItemBean != vipTimeRangeItemBean) {
LocalDateTime endLocalDateTime = LocalDateTime.parse(vipTimeRangeItemBean.getEndTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
LocalDateTime lastEndLocalDateTime = LocalDateTime.parse(lastVipTimeRangeItemBean.getEndTime(), DateTimeUtils.DATE_TIME_FORMATTER_1);
if (endLocalDateTime.isAfter(lastEndLocalDateTime)) {
lastVipTimeRangeItemBean = vipTimeRangeItemBean;
}
}
}
return lastVipTimeRangeItemBean.getEndTime();
}
/** /**
* 生成一个新的 VipTimeRangeJson * 生成一个新的 VipTimeRangeJson
*/ */
@ -181,10 +223,6 @@ public class VipTimeRangeUtils {
} }
} }
public static LocalDateTime convert(String formattedTime) {
return LocalDateTime.parse(formattedTime, DateTimeUtils.DATE_TIME_FORMATTER_1);
}
public static void main(String[] args) { public static void main(String[] args) {
VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBean1 = new VipTimeRangeBean.VipTimeRangeItemBean(); VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBean1 = new VipTimeRangeBean.VipTimeRangeItemBean();
vipTimeRangeItemBean1.setStartTime("2022-06-27 11:15:00"); vipTimeRangeItemBean1.setStartTime("2022-06-27 11:15:00");