Files
tkcrawl-client/src/main/java/com/yupi/springbootinit/service/impl/SystemUsersServiceImpl.java
ziin 5fec4cb020 refactor(core): 升级时间字段为 LocalDateTime
- 将 SystemTenant 及相关 VO 的过期时间字段由 java.util.Date 替换为 java.time.LocalDateTime
- 同步修改 DateUtils.dateBetween 签名并适配 LocalDateTime 计算
- 调整 FeatureAuthController 与 LoginService 中的时间比较逻辑
- 保持功能不变,提升类型安全与时区清晰度
2026-03-30 09:04:36 +08:00

134 lines
4.8 KiB
Java

package com.yupi.springbootinit.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yupi.springbootinit.common.ErrorCode;
import com.yupi.springbootinit.exception.BusinessException;
import com.yupi.springbootinit.mapper.SystemTenantMapper;
import com.yupi.springbootinit.model.entity.SystemTenant;
import com.yupi.springbootinit.model.entity.SystemUsers;
import com.yupi.springbootinit.mapper.SystemUsersMapper;
import com.yupi.springbootinit.model.vo.user.SystemUsersVO;
import com.yupi.springbootinit.service.SystemUsersService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/*
* @author: ziin
* @date: 2025/6/11 20:13
*/
@Service
public class SystemUsersServiceImpl extends ServiceImpl<SystemUsersMapper,SystemUsers> implements SystemUsersService{
@Value("${md5.salt}")
private String MD5_SALT;
@Resource
private SystemTenantMapper systemTenantMapper;
@Override
public SystemUsers getUserByUserName(String username,Long tenantId) {
QueryWrapper <SystemUsers> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username",username);
queryWrapper.eq("tenant_id",tenantId);
queryWrapper.eq("deleted",false);
return baseMapper.selectOne(queryWrapper);
}
@Override
public boolean isPasswordMatch(String rawPassword, String encodedPassword) {
String s = SecureUtil.md5(MD5_SALT + rawPassword);
return s.equals(encodedPassword);
}
@Override
public boolean isExpired(Long tendId) {
SystemTenant systemTenant = systemTenantMapper.selectById(tendId);
long between = DateUtil.between(DateUtil.date(systemTenant.getExpireTime()), DateUtil.date(), DateUnit.DAY);
return between < 0;
}
@Override
public Long getTenantExpiredTime(Long tenantId) {
SystemTenant systemTenant = systemTenantMapper.selectById(tenantId);
long between = DateUtil.between(DateUtil.date(systemTenant.getExpireTime()), DateUtil.date(), DateUnit.SECOND);
if (between > 0 ) {
return between;
}
return 0L;
}
@Override
public boolean checkCrawlRole(Long userId) {
SystemUsers systemUsers = baseMapper.selectById(userId);
return systemUsers.getCrawl() == 1;
}
@Override
public boolean checkbigBrotherlRole(Long userId) {
SystemUsers systemUsers = baseMapper.selectById(userId);
return systemUsers.getBigBrother() == 1;
}
@Override
public boolean checkAiCHatLoginRole(Long userId) {
SystemUsers systemUsers = baseMapper.selectById(userId);
return systemUsers.getAiChat() == 1;
}
@Override
public boolean checkWebAILoginRole(Long userId) {
SystemUsers systemUsers = baseMapper.selectById(userId);
return systemUsers.getWebAi() == 1;
}
@Override
public SystemUsersVO getCurrentUserInfo() {
Long userId = StpUtil.getLoginIdAsLong();
SystemUsers user = baseMapper.selectById(userId);
if (user == null || Boolean.TRUE.equals(user.getDeleted())) {
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "用户不存在");
}
SystemTenant tenant = systemTenantMapper.selectById(user.getTenantId());
if (tenant == null || Boolean.TRUE.equals(tenant.getDeleted())) {
throw new BusinessException(ErrorCode.TENANT_NAME_NOT_EXISTS);
}
return buildSystemUsersVO(user, tenant);
}
private SystemUsersVO buildSystemUsersVO(SystemUsers user, SystemTenant tenant) {
SystemUsersVO userVO = new SystemUsersVO();
BeanUtil.copyProperties(user, userVO);
userVO.setTokenName(StpUtil.getTokenName());
userVO.setTokenValue(StpUtil.getTokenValue());
userVO.setExpireTime(tenant.getExpireTime());
userVO.setCrawlExpireTime(tenant.getCrawlExpireTime());
userVO.setBrotherExpireTime(tenant.getBrotherExpireTime());
userVO.setAiExpireTime(tenant.getAiExpireTime());
fillFeatureEnabled(userVO, user);
return userVO;
}
private void fillFeatureEnabled(SystemUsersVO userVO, SystemUsers user) {
userVO.setAiReplayEnabled(isEnabled(user.getAiReplay()));
userVO.setCrawlEnabled(isEnabled(user.getCrawl()));
userVO.setBigBrotherEnabled(isEnabled(user.getBigBrother()));
userVO.setAiChatEnabled(isEnabled(user.getAiChat()));
userVO.setWebAiEnabled(isEnabled(user.getWebAi()));
}
private boolean isEnabled(Byte value) {
return value != null && value == 1;
}
}