|
@@ -2,6 +2,7 @@ package com.zkqy.system.service.impl;
|
|
|
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.time.Duration;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.time.ZoneOffset;
|
|
import java.time.ZoneOffset;
|
|
import java.time.temporal.ChronoUnit;
|
|
import java.time.temporal.ChronoUnit;
|
|
@@ -13,6 +14,8 @@ import cn.hutool.core.date.LocalDateTimeUtil;
|
|
import cn.hutool.core.util.CharsetUtil;
|
|
import cn.hutool.core.util.CharsetUtil;
|
|
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
|
|
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
|
|
import cn.hutool.crypto.symmetric.SymmetricCrypto;
|
|
import cn.hutool.crypto.symmetric.SymmetricCrypto;
|
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
|
+import com.alibaba.fastjson2.TypeReference;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.zkqy.common.core.domain.AjaxResult;
|
|
import com.zkqy.common.core.domain.AjaxResult;
|
|
import com.zkqy.common.core.domain.entity.SysMenu;
|
|
import com.zkqy.common.core.domain.entity.SysMenu;
|
|
@@ -24,6 +27,7 @@ import com.zkqy.common.utils.ip.IpUtils;
|
|
import com.zkqy.system.domain.SysActivationCodeLog;
|
|
import com.zkqy.system.domain.SysActivationCodeLog;
|
|
import com.zkqy.system.domain.SysTenantMenu;
|
|
import com.zkqy.system.domain.SysTenantMenu;
|
|
import com.zkqy.system.mapper.*;
|
|
import com.zkqy.system.mapper.*;
|
|
|
|
+import com.zkqy.system.service.ILoginPageConfigurationService;
|
|
import com.zkqy.system.service.ISysUserService;
|
|
import com.zkqy.system.service.ISysUserService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
@@ -34,22 +38,18 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 租户信息Service业务层处理
|
|
* 租户信息Service业务层处理
|
|
- *
|
|
|
|
- * @author ruoyi
|
|
|
|
|
|
+ *
|
|
|
|
+ * @author zkqy
|
|
* @date 2023-06-03
|
|
* @date 2023-06-03
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
-public class SysTenantServiceImpl implements ISysTenantService
|
|
|
|
-{
|
|
|
|
|
|
+public class SysTenantServiceImpl implements ISysTenantService {
|
|
@Autowired
|
|
@Autowired
|
|
private SysTenantMapper sysTenantMapper;
|
|
private SysTenantMapper sysTenantMapper;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private SysTenantMenuMapper sysTenantMenuMapper;
|
|
private SysTenantMenuMapper sysTenantMenuMapper;
|
|
|
|
|
|
- @Autowired
|
|
|
|
- private StringRedisTemplate stringRedisTemplate;
|
|
|
|
-
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private SysMenuMapper sysMenuMapper;
|
|
private SysMenuMapper sysMenuMapper;
|
|
|
|
|
|
@@ -59,71 +59,115 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
@Autowired
|
|
@Autowired
|
|
private SysUserMapper sysUserMapper;
|
|
private SysUserMapper sysUserMapper;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private StringRedisTemplate stringRedisTemplate;
|
|
|
|
+
|
|
@Autowired
|
|
@Autowired
|
|
private SysActivationCodeLogMapper sysActivationCodeLogMapper;
|
|
private SysActivationCodeLogMapper sysActivationCodeLogMapper;
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 查询租户信息
|
|
* 查询租户信息
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @param tenantId 租户信息主键
|
|
* @param tenantId 租户信息主键
|
|
* @return 租户信息
|
|
* @return 租户信息
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public SysTenant selectSysTenantByTenantId(Long tenantId)
|
|
|
|
- {
|
|
|
|
|
|
+ public SysTenant selectSysTenantByTenantId(Long tenantId) {
|
|
return sysTenantMapper.selectSysTenantByTenantId(tenantId);
|
|
return sysTenantMapper.selectSysTenantByTenantId(tenantId);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public SysTenant selectSysTenantByTenantCode(String tenantCode) {
|
|
|
|
+ return sysTenantMapper.selectSysTenantByTenantCode(tenantCode);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<SysTenant> selectSysTenantChildrenInfoByTenantId(Long tenantId) {
|
|
|
|
+ return sysTenantMapper.selectSysTenantChildrenInfoByTenantId(tenantId);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 查询租户信息列表
|
|
* 查询租户信息列表
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @param sysTenant 租户信息
|
|
* @param sysTenant 租户信息
|
|
* @return 租户信息
|
|
* @return 租户信息
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public List<SysTenant> selectSysTenantList(SysTenant sysTenant)
|
|
|
|
- {
|
|
|
|
- return sysTenantMapper.selectSysTenantList(sysTenant);
|
|
|
|
|
|
+ public List<SysTenant> selectSysTenantList(SysTenant sysTenant) {
|
|
|
|
+ SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.DES, "sgEsnN6QWq8W7j5H01020304".getBytes());
|
|
|
|
+ List<SysTenant> sysTenants = sysTenantMapper.selectSysTenantList(sysTenant);
|
|
|
|
+ sysTenants.stream().forEach(item -> {
|
|
|
|
+ if (item.getTenantExpirationTime() != null) {
|
|
|
|
+ String decryptStr = symmetricCrypto.decryptStr(item.getTenantExpirationTime(), CharsetUtil.CHARSET_UTF_8);
|
|
|
|
+ LocalDateTime localDateTime = DateUtils.toLocalDateTime(decryptStr.toString(), "yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ LocalDateTime start = LocalDateTimeUtil.parse(LocalDateTime.now().toString());
|
|
|
|
+ LocalDateTime end = LocalDateTimeUtil.parse(localDateTime.toString());
|
|
|
|
+ Duration between = LocalDateTimeUtil.between(start, end);
|
|
|
|
+ Long l = between.toDays();
|
|
|
|
+ if (l < 0) {
|
|
|
|
+ //String endDay = l.toString().replace("-", "").toString();
|
|
|
|
+ //item.setTenantExpirationTime("已到期"+endDay+"天");
|
|
|
|
+ item.setTenantExpirationTime("已到期");
|
|
|
|
+ } else if (l == 0) {
|
|
|
|
+ //计算两个日期相差的小时数
|
|
|
|
+ Long totalMinutes = LocalDateTimeUtil.between(start, end, ChronoUnit.MINUTES);
|
|
|
|
+ //分钟转时间
|
|
|
|
+ int totalMinutesInt = Integer.parseInt(totalMinutes.toString());
|
|
|
|
+ int hours = (totalMinutesInt / 60);
|
|
|
|
+ int remainingMinutes = totalMinutesInt % 60;
|
|
|
|
+ item.setTenantExpirationTime(0 + "天" + hours + "小时" + remainingMinutes + "分钟");
|
|
|
|
+ } else {
|
|
|
|
+ item.setTenantExpirationTime(l.toString());
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ item.setTenantExpirationTime("未激活");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ //return sysTenantMapper.selectSysTenantList(sysTenant);
|
|
|
|
+ return sysTenants;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<SysTenant> selectSysTenantAllList(SysTenant sysTenant) {
|
|
|
|
+ return sysTenantMapper.selectSysTenantAllList(sysTenant);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 新增租户信息
|
|
* 新增租户信息
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @param sysTenant 租户信息
|
|
* @param sysTenant 租户信息
|
|
* @return 结果
|
|
* @return 结果
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public int insertSysTenant(SysTenant sysTenant)
|
|
|
|
- {
|
|
|
|
|
|
+ public int insertSysTenant(SysTenant sysTenant) {
|
|
sysTenant.setCreateTime(DateUtils.getNowDate());
|
|
sysTenant.setCreateTime(DateUtils.getNowDate());
|
|
return sysTenantMapper.insertSysTenant(sysTenant);
|
|
return sysTenantMapper.insertSysTenant(sysTenant);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 修改租户信息
|
|
* 修改租户信息
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @param sysTenant 租户信息
|
|
* @param sysTenant 租户信息
|
|
* @return 结果
|
|
* @return 结果
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public int updateSysTenant(SysTenant sysTenant)
|
|
|
|
- {
|
|
|
|
|
|
+ public int updateSysTenant(SysTenant sysTenant) {
|
|
return sysTenantMapper.updateSysTenant(sysTenant);
|
|
return sysTenantMapper.updateSysTenant(sysTenant);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 批量删除租户信息
|
|
* 批量删除租户信息
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @param tenantIds 需要删除的租户信息主键
|
|
* @param tenantIds 需要删除的租户信息主键
|
|
* @return 结果
|
|
* @return 结果
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
- public int deleteSysTenantByTenantIds(Long[] tenantIds)
|
|
|
|
- {
|
|
|
|
|
|
+ public int deleteSysTenantByTenantIds(Long[] tenantIds) {
|
|
//查询删除用户信息编号
|
|
//查询删除用户信息编号
|
|
Long[] userIds = sysUserMapper.selectUserIdByTenantIds(tenantIds);
|
|
Long[] userIds = sysUserMapper.selectUserIdByTenantIds(tenantIds);
|
|
- if(userIds.length > 0) {
|
|
|
|
|
|
+ if (userIds.length > 0) {
|
|
//删除用户
|
|
//删除用户
|
|
userService.deleteUserByIds(userIds);
|
|
userService.deleteUserByIds(userIds);
|
|
}
|
|
}
|
|
@@ -133,41 +177,21 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
|
|
|
|
/**
|
|
/**
|
|
* 删除租户信息信息
|
|
* 删除租户信息信息
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @param tenantId 租户信息主键
|
|
* @param tenantId 租户信息主键
|
|
* @return 结果
|
|
* @return 结果
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public int deleteSysTenantByTenantId(Long tenantId)
|
|
|
|
- {
|
|
|
|
|
|
+ public int deleteSysTenantByTenantId(Long tenantId) {
|
|
return sysTenantMapper.deleteSysTenantByTenantId(tenantId);
|
|
return sysTenantMapper.deleteSysTenantByTenantId(tenantId);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
public AjaxResult initTenantMenuData(Long tenantId) {
|
|
public AjaxResult initTenantMenuData(Long tenantId) {
|
|
- List<SysMenu> list = new ArrayList<>();
|
|
|
|
- ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
- try {
|
|
|
|
- //获取租户默认菜单信息
|
|
|
|
- List<SysMenu> menus = objectMapper.readValue(new File("ruoyi-system/src/main/resources/sql/initialize_sys_tenant_menu.json"), objectMapper.getTypeFactory().constructCollectionType(List.class, SysMenu.class));
|
|
|
|
-
|
|
|
|
- //筛选出根节点
|
|
|
|
- list = menus.stream().filter(menu -> 0L == menu.getParentId()).peek(
|
|
|
|
- //设置子节点信息
|
|
|
|
- menu -> menu.setChildren(getChildrenList(menu, menus))
|
|
|
|
- ).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- //循环遍历数据新增
|
|
|
|
- for (int i = 0; i < list.size(); i++){
|
|
|
|
- printTree(list.get(i),0L,tenantId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- } catch (IOException e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- return AjaxResult.success(list);
|
|
|
|
|
|
+ return null;
|
|
}
|
|
}
|
|
|
|
+
|
|
//获取子节点信息
|
|
//获取子节点信息
|
|
private List<SysMenu> getChildrenList(SysMenu root, List<SysMenu> menus) {
|
|
private List<SysMenu> getChildrenList(SysMenu root, List<SysMenu> menus) {
|
|
List<SysMenu> list = menus.stream().filter(menu ->
|
|
List<SysMenu> list = menus.stream().filter(menu ->
|
|
@@ -179,8 +203,9 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
+
|
|
//新增菜单
|
|
//新增菜单
|
|
- public void printTree(SysMenu root,Long parentId,Long tenantId) {
|
|
|
|
|
|
+ public void printTree(SysMenu root, Long parentId, Long tenantId) {
|
|
if (root == null) {
|
|
if (root == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -194,18 +219,19 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
sysTenantMenu.setMenuId(root.getMenuId());
|
|
sysTenantMenu.setMenuId(root.getMenuId());
|
|
sysTenantMenuMapper.insertSysTenantMenu(sysTenantMenu);
|
|
sysTenantMenuMapper.insertSysTenantMenu(sysTenantMenu);
|
|
for (SysMenu child : root.getChildren()) { // 遍历子节点
|
|
for (SysMenu child : root.getChildren()) { // 遍历子节点
|
|
- printTree(child,root.getMenuId(),tenantId); // 递归调用
|
|
|
|
|
|
+ printTree(child, root.getMenuId(), tenantId); // 递归调用
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 生成激活码
|
|
* 生成激活码
|
|
|
|
+ *
|
|
* @param tenantId
|
|
* @param tenantId
|
|
* @param tenantExpirationTime
|
|
* @param tenantExpirationTime
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public AjaxResult crateTenantCode(String tenantId,String tenantExpirationTime) throws Exception {
|
|
|
|
|
|
+ public AjaxResult crateTenantCode(String tenantId, String tenantExpirationTime) throws Exception {
|
|
//加密器
|
|
//加密器
|
|
SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DES, "sgEsnN6QWq8W7j5H01020304".getBytes());
|
|
SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DES, "sgEsnN6QWq8W7j5H01020304".getBytes());
|
|
//激活码生成时间
|
|
//激活码生成时间
|
|
@@ -215,16 +241,19 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
LocalDateTime offset = LocalDateTimeUtil.offset(now, 1, ChronoUnit.DAYS);
|
|
LocalDateTime offset = LocalDateTimeUtil.offset(now, 1, ChronoUnit.DAYS);
|
|
String offsetStr = DateUtils.toLocalDateTimeStr(offset);
|
|
String offsetStr = DateUtils.toLocalDateTimeStr(offset);
|
|
//激活码生成时间+租户id+激活码有效期+激活多长时间
|
|
//激活码生成时间+租户id+激活码有效期+激活多长时间
|
|
- String dataStr=nowStr+"_"+tenantId+"_"+offsetStr+"_"+tenantExpirationTime;
|
|
|
|
|
|
+ String dataStr = nowStr + "_" + tenantId + "_" + offsetStr + "_" + tenantExpirationTime;
|
|
//加密信息
|
|
//加密信息
|
|
String encryptHex = des.encryptHex(dataStr);
|
|
String encryptHex = des.encryptHex(dataStr);
|
|
//生成激活码操作
|
|
//生成激活码操作
|
|
activationCodeLog("生成激活码");
|
|
activationCodeLog("生成激活码");
|
|
|
|
+ //生成了就往
|
|
|
|
+ stringRedisTemplate.opsForSet().add("activeCode", encryptHex);
|
|
return AjaxResult.success(encryptHex);
|
|
return AjaxResult.success(encryptHex);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 激活码激活操作
|
|
* 激活码激活操作
|
|
|
|
+ *
|
|
* @param tenantId
|
|
* @param tenantId
|
|
* @param activationCode
|
|
* @param activationCode
|
|
* @return
|
|
* @return
|
|
@@ -232,9 +261,15 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public AjaxResult activationOperation(String tenantId, String activationCode) throws Exception {
|
|
public AjaxResult activationOperation(String tenantId, String activationCode) throws Exception {
|
|
- String activeCode="active:code:"+activationCode;//魔法值后期抽出来
|
|
|
|
|
|
+ //是否是一个假的
|
|
|
|
+ Boolean activeCode1 = stringRedisTemplate.opsForSet().isMember("activeCode", activationCode);
|
|
|
|
+ if (activeCode1 == false) {
|
|
|
|
+ return AjaxResult.error("请输入系统生成的激活码!!!");
|
|
|
|
+ }
|
|
|
|
+ //是否使用过
|
|
|
|
+ String activeCode = "active:code:" + activationCode;//魔法值后期抽出来
|
|
String strCode = stringRedisTemplate.opsForValue().get(activeCode);
|
|
String strCode = stringRedisTemplate.opsForValue().get(activeCode);
|
|
- if(StringUtils.isNotEmpty(strCode)){
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(strCode)) {
|
|
return AjaxResult.error("当前激活码已经被使用过了不能重复使用");
|
|
return AjaxResult.error("当前激活码已经被使用过了不能重复使用");
|
|
}
|
|
}
|
|
//激活码生成时间+租户id+激活码有效期+激活多长时间
|
|
//激活码生成时间+租户id+激活码有效期+激活多长时间
|
|
@@ -242,42 +277,42 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
String decryptStr = symmetricCrypto.decryptStr(activationCode, CharsetUtil.CHARSET_UTF_8);
|
|
String decryptStr = symmetricCrypto.decryptStr(activationCode, CharsetUtil.CHARSET_UTF_8);
|
|
String[] contentString = decryptStr.split("_");
|
|
String[] contentString = decryptStr.split("_");
|
|
//判断激活码是否失效
|
|
//判断激活码是否失效
|
|
- String expirationDateStr=contentString[2];
|
|
|
|
- LocalDateTime expirationDate = DateUtils.toLocalDateTime(expirationDateStr,"yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
+ String expirationDateStr = contentString[2];
|
|
|
|
+ LocalDateTime expirationDate = DateUtils.toLocalDateTime(expirationDateStr, "yyyy-MM-dd HH:mm:ss");
|
|
long expirationDateSecond = expirationDate.toEpochSecond(ZoneOffset.ofHours(8));
|
|
long expirationDateSecond = expirationDate.toEpochSecond(ZoneOffset.ofHours(8));
|
|
long nowSecond = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
|
|
long nowSecond = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
|
|
- if(expirationDateSecond-nowSecond<0){
|
|
|
|
|
|
+ if (expirationDateSecond - nowSecond < 0) {
|
|
return AjaxResult.error("此激活码已经过期,不能在继续使用");
|
|
return AjaxResult.error("此激活码已经过期,不能在继续使用");
|
|
}
|
|
}
|
|
- if(!tenantId.equals(contentString[1])){
|
|
|
|
|
|
+ if (!tenantId.equals(contentString[1])) {
|
|
return AjaxResult.error("当前激活码不能在当前租户使用");
|
|
return AjaxResult.error("当前激活码不能在当前租户使用");
|
|
}
|
|
}
|
|
//先查询、这个用户有没有被激活过
|
|
//先查询、这个用户有没有被激活过
|
|
SysTenant sysTenant = sysTenantMapper.selectSysTenantByTenantId(Long.valueOf(tenantId));
|
|
SysTenant sysTenant = sysTenantMapper.selectSysTenantByTenantId(Long.valueOf(tenantId));
|
|
- SysTenant sysTenantOne=new SysTenant();
|
|
|
|
|
|
+ SysTenant sysTenantOne = new SysTenant();
|
|
sysTenantOne.setTenantId(Long.valueOf(tenantId));
|
|
sysTenantOne.setTenantId(Long.valueOf(tenantId));
|
|
//判断有没有有被激活过、有时间代表激活过
|
|
//判断有没有有被激活过、有时间代表激活过
|
|
- if(StringUtils.isNotEmpty(sysTenant.getTenantExpirationTime())){
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(sysTenant.getTenantExpirationTime())) {
|
|
//解密
|
|
//解密
|
|
String LastActiveTime = symmetricCrypto.decryptStr(sysTenant.getTenantExpirationTime(), CharsetUtil.CHARSET_UTF_8);
|
|
String LastActiveTime = symmetricCrypto.decryptStr(sysTenant.getTenantExpirationTime(), CharsetUtil.CHARSET_UTF_8);
|
|
LocalDateTime localDateTime = DateUtils.toLocalDateTime(LastActiveTime, "yyyy-MM-dd HH:mm:ss");
|
|
LocalDateTime localDateTime = DateUtils.toLocalDateTime(LastActiveTime, "yyyy-MM-dd HH:mm:ss");
|
|
//当前日期时间戳
|
|
//当前日期时间戳
|
|
- long nowTimeSecond =LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
|
|
|
|
|
|
+ long nowTimeSecond = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
|
|
//原来的过期时间
|
|
//原来的过期时间
|
|
- long oldTimeSecond = localDateTime.toEpochSecond(ZoneOffset.ofHours(8));
|
|
|
|
|
|
+ long oldTimeSecond = localDateTime.toEpochSecond(ZoneOffset.ofHours(8));
|
|
//老的过期时间跟当前时间比较 如果小于0证明已经过期好久了
|
|
//老的过期时间跟当前时间比较 如果小于0证明已经过期好久了
|
|
- if(oldTimeSecond-nowTimeSecond<0){
|
|
|
|
|
|
+ if (oldTimeSecond - nowTimeSecond < 0) {
|
|
//新续期的时间从当前时间进行续期操作
|
|
//新续期的时间从当前时间进行续期操作
|
|
renewalTime(symmetricCrypto, contentString, sysTenantOne);
|
|
renewalTime(symmetricCrypto, contentString, sysTenantOne);
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
//老的时间快过期了还没过期(旧到期时间+新到期时间(续期操作))
|
|
//老的时间快过期了还没过期(旧到期时间+新到期时间(续期操作))
|
|
LocalDateTime newActiveDateTime = LocalDateTimeUtil.offset(localDateTime, Long.parseLong(contentString[3]), ChronoUnit.DAYS);
|
|
LocalDateTime newActiveDateTime = LocalDateTimeUtil.offset(localDateTime, Long.parseLong(contentString[3]), ChronoUnit.DAYS);
|
|
//加密
|
|
//加密
|
|
- String newActiveDateTimeStr= symmetricCrypto.encryptHex(DateUtils.toLocalDateTimeStr(newActiveDateTime));
|
|
|
|
|
|
+ String newActiveDateTimeStr = symmetricCrypto.encryptHex(DateUtils.toLocalDateTimeStr(newActiveDateTime));
|
|
//更新到期时间
|
|
//更新到期时间
|
|
sysTenantOne.setTenantExpirationTime(newActiveDateTimeStr);
|
|
sysTenantOne.setTenantExpirationTime(newActiveDateTimeStr);
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
//新续期的时间从当前时间进行续期操作
|
|
//新续期的时间从当前时间进行续期操作
|
|
renewalTime(symmetricCrypto, contentString, sysTenantOne);
|
|
renewalTime(symmetricCrypto, contentString, sysTenantOne);
|
|
}
|
|
}
|
|
@@ -286,12 +321,13 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
//保存验证码操作日志
|
|
//保存验证码操作日志
|
|
activationCodeLog("使用激活码");
|
|
activationCodeLog("使用激活码");
|
|
//24小时之后就删除了我们保存的验证码信息
|
|
//24小时之后就删除了我们保存的验证码信息
|
|
- stringRedisTemplate.opsForValue().set(activeCode,activationCode,24, TimeUnit.HOURS);
|
|
|
|
|
|
+ stringRedisTemplate.opsForValue().set(activeCode, activationCode, 24, TimeUnit.HOURS);
|
|
return AjaxResult.success();
|
|
return AjaxResult.success();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 从当前时间往后续期租户时间
|
|
* 从当前时间往后续期租户时间
|
|
|
|
+ *
|
|
* @param symmetricCrypto
|
|
* @param symmetricCrypto
|
|
* @param contentString
|
|
* @param contentString
|
|
* @param sysTenantOne
|
|
* @param sysTenantOne
|
|
@@ -302,18 +338,19 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
//设置到期时间
|
|
//设置到期时间
|
|
LocalDateTime activeDateTime = LocalDateTimeUtil.offset(localDateTime, Long.parseLong(contentString[3]), ChronoUnit.DAYS);
|
|
LocalDateTime activeDateTime = LocalDateTimeUtil.offset(localDateTime, Long.parseLong(contentString[3]), ChronoUnit.DAYS);
|
|
//加密到期时间
|
|
//加密到期时间
|
|
- String newActiveDateTimeStr= symmetricCrypto.encryptHex(DateUtils.toLocalDateTimeStr(activeDateTime));
|
|
|
|
|
|
+ String newActiveDateTimeStr = symmetricCrypto.encryptHex(DateUtils.toLocalDateTimeStr(activeDateTime));
|
|
sysTenantOne.setTenantExpirationTime(newActiveDateTimeStr);
|
|
sysTenantOne.setTenantExpirationTime(newActiveDateTimeStr);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 保存激活码操作日志
|
|
* 保存激活码操作日志
|
|
|
|
+ *
|
|
* @param msg
|
|
* @param msg
|
|
*/
|
|
*/
|
|
private void activationCodeLog(String msg) {
|
|
private void activationCodeLog(String msg) {
|
|
//保存生成激活码日志
|
|
//保存生成激活码日志
|
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
- SysActivationCodeLog activationCodeLog=new SysActivationCodeLog();
|
|
|
|
|
|
+ SysActivationCodeLog activationCodeLog = new SysActivationCodeLog();
|
|
//生成时间
|
|
//生成时间
|
|
activationCodeLog.setGenerationTime(new Date());
|
|
activationCodeLog.setGenerationTime(new Date());
|
|
//ip
|
|
//ip
|
|
@@ -330,11 +367,25 @@ public class SysTenantServiceImpl implements ISysTenantService
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
//校验充值天数是否正确
|
|
//校验充值天数是否正确
|
|
SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.DES, "sgEsnN6QWq8W7j5H01020304".getBytes());
|
|
SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.DES, "sgEsnN6QWq8W7j5H01020304".getBytes());
|
|
- String a = symmetricCrypto.decryptStr("facb3dad9a590c24584416fd0e9690e6ad8116cefdd53d5f");
|
|
|
|
|
|
+ String a = symmetricCrypto.decryptStr("2d034a7f7f6cc999b23b15c29e1e278c594a628aed13e40a");
|
|
|
|
+ System.out.println(a);
|
|
|
|
+ long between = LocalDateTimeUtil.between(LocalDateTime.now(), DateUtils.toLocalDateTime(a, "yyyy-MM-dd HH:mm:ss"), ChronoUnit.DAYS);
|
|
|
|
+ System.out.println(between);
|
|
|
|
+ if (between == 0) {
|
|
|
|
+ //计算两个日期相差的小时数
|
|
|
|
+ Long totalMinutes = LocalDateTimeUtil.between(LocalDateTime.now(), DateUtils.toLocalDateTime(a, "yyyy-MM-dd HH:mm:ss"), ChronoUnit.MINUTES);
|
|
|
|
+ //分钟转时间
|
|
|
|
+ int totalMinutesInt = Integer.parseInt(totalMinutes.toString());
|
|
|
|
+ int hours = (totalMinutesInt / 60);
|
|
|
|
+ int remainingMinutes = totalMinutesInt % 60;
|
|
|
|
+ System.out.println(hours + "小时" + remainingMinutes + "分钟后就过期了");
|
|
|
|
+ }
|
|
|
|
+
|
|
//判断如果用户过期了
|
|
//判断如果用户过期了
|
|
- LocalDateTime activeDateTime = LocalDateTimeUtil.offset(LocalDateTime.now(), -100, ChronoUnit.DAYS);
|
|
|
|
- String activeDateTimeStr = DateUtils.toLocalDateTimeStr(activeDateTime);
|
|
|
|
- String newActiveDateTimeStr= symmetricCrypto.encryptHex(activeDateTimeStr);
|
|
|
|
|
|
+ //LocalDateTime activeDateTime = LocalDateTimeUtil.offset(LocalDateTime.now(), -100, ChronoUnit.DAYS);
|
|
|
|
+ //String activeDateTimeStr = DateUtils.toLocalDateTimeStr(activeDateTime);
|
|
|
|
+ //String newActiveDateTimeStr= symmetricCrypto.encryptHex(activeDateTimeStr);
|
|
|
|
+ //System.out.println(newActiveDateTimeStr);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|