1.设置用户登录 Token 到期时间为租户对应权限到期时间

This commit is contained in:
2025-09-16 16:54:19 +08:00
parent 22a1a8b963
commit e86e561c37
5 changed files with 95 additions and 42 deletions

View File

@@ -2,14 +2,18 @@ package com.yupi.springbootinit.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.yupi.springbootinit.common.ErrorCode;
import com.yupi.springbootinit.exception.BusinessException;
import com.yupi.springbootinit.mapper.SystemTenantMapper;
import com.yupi.springbootinit.model.dto.user.SystemUsersDTO;
import com.yupi.springbootinit.model.entity.SystemTenant;
import com.yupi.springbootinit.model.entity.SystemUsers;
import com.yupi.springbootinit.model.enums.CommonStatusEnum;
import com.yupi.springbootinit.model.enums.LoginSceneEnum;
import com.yupi.springbootinit.model.vo.user.SystemUsersVO;
import com.yupi.springbootinit.service.SystemUsersService;
import com.yupi.springbootinit.utils.DateUtils;
import com.yupi.springbootinit.utils.RedisUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -19,6 +23,8 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -52,6 +58,9 @@ public class LoginService {
@Resource
private RedisUtils redisUtils;
@Resource
private SystemTenantMapper tenantMapper;
/**
* 统一登录入口
*
@@ -85,9 +94,21 @@ public class LoginService {
rabbitAdmin.declareBinding(binding);
}
}
SystemTenant systemTenant = tenantMapper.selectById(user.getTenantId());
// 5. Sa-Token 登录
StpUtil.login(user.getId(), scene.getSaMode());
switch (scene) {
case AI_CHAT:
StpUtil.renewTimeout(DateUtils.dateBetween(systemTenant.getAiExpireTime(),DateUtil.date()));
break;
case HOST:
StpUtil.renewTimeout(DateUtils.dateBetween(systemTenant.getExpireTime(),DateUtil.date()));
break;
case BIG_BROTHER:
StpUtil.renewTimeout(DateUtils.dateBetween(systemTenant.getBrotherExpireTime(),DateUtil.date()));
break;
}
// 6. 封装返回数据
SystemUsersVO vo = new SystemUsersVO();