ADD file via upload

杜韦注释
p2x9nfpei 4 months ago
parent 0c7e3c8635
commit beac827c04

@ -0,0 +1,121 @@
// 声明该类所在的包为 com.service.impl
package com.service.impl;
// 导入 Java 中的 Calendar 类,用于处理日期和时间
import java.util.Calendar;
// 导入 Java 中的 Date 类,用于表示日期和时间
import java.util.Date;
// 导入 Java 中的 List 接口,用于存储一组对象
import java.util.List;
// 导入 Java 中的 Map 接口,用于存储键值对
import java.util.Map;
// 导入 Spring 框架的 Service 注解,用于将该类标记为服务层组件
import org.springframework.stereotype.Service;
// 导入 MyBatis-Plus 的 EntityWrapper 类,用于构建 SQL 查询条件
import com.baomidou.mybatisplus.mapper.EntityWrapper;
// 导入 MyBatis-Plus 的 Wrapper 接口,是 EntityWrapper 的父接口
import com.baomidou.mybatisplus.mapper.Wrapper;
// 导入 MyBatis-Plus 的 Page 类,用于分页查询
import com.baomidou.mybatisplus.plugins.Page;
// 导入 MyBatis-Plus 的 ServiceImpl 类,作为服务实现类的基类
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
// 导入 Token 数据访问对象接口
import com.dao.TokenDao;
// 导入 Token 实体类
import com.entity.TokenEntity;
// 重复导入 Token 实体类,此处可删除该重复导入
import com.entity.TokenEntity;
// 导入 Token 服务接口
import com.service.TokenService;
// 导入自定义的通用工具类
import com.utils.CommonUtil;
// 导入自定义的分页工具类
import com.utils.PageUtils;
// 导入自定义的查询工具类
import com.utils.Query;
// 使用 Service 注解将该类标记为 Spring 服务组件,名称为 tokenService
@Service("tokenService")
// 定义 Token 服务实现类,继承自 MyBatis-Plus 的 ServiceImpl 类,并实现 TokenService 接口
public class TokenServiceImpl extends ServiceImpl<TokenDao, TokenEntity> implements TokenService {
// 重写 TokenService 接口中的 queryPage 方法,用于分页查询 Token 数据
@Override
public PageUtils queryPage(Map<String, Object> params) {
// 根据传入的参数创建一个 TokenEntity 类型的分页对象
Page<TokenEntity> page = this.selectPage(
// 通过 Query 工具类根据参数获取分页信息
new Query<TokenEntity>(params).getPage(),
// 创建一个空的查询条件包装器
new EntityWrapper<TokenEntity>()
);
// 根据分页对象创建 PageUtils 对象并返回
return new PageUtils(page);
}
// 重写 TokenService 接口中的 selectListView 方法,用于查询 Token 列表数据
@Override
public List<TokenEntity> selectListView(Wrapper<TokenEntity> wrapper) {
// 调用数据访问对象的 selectListView 方法,根据查询条件包装器查询列表数据并返回
return baseMapper.selectListView(wrapper);
}
// 重写 TokenService 接口中的 queryPage 方法,支持带查询条件的分页查询 Token 数据
@Override
public PageUtils queryPage(Map<String, Object> params,
Wrapper<TokenEntity> wrapper) {
// 根据传入的参数创建一个 TokenEntity 类型的分页对象
Page<TokenEntity> page = new Query<TokenEntity>(params).getPage();
// 调用数据访问对象的 selectListView 方法,根据分页对象和查询条件包装器查询列表数据并设置到分页对象中
page.setRecords(baseMapper.selectListView(page, wrapper));
// 根据分页对象创建 PageUtils 对象
PageUtils pageUtil = new PageUtils(page);
// 返回 PageUtils 对象
return pageUtil;
}
// 重写 TokenService 接口中的 generateToken 方法,用于生成 Token
@Override
public String generateToken(Integer userid, String username, String tableName, String role) {
// 根据用户 ID 和角色查询 Token 实体对象
TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
// 调用通用工具类的方法生成一个 32 位的随机字符串作为 Token
String token = CommonUtil.getRandomString(32);
// 获取当前时间的 Calendar 实例
Calendar cal = Calendar.getInstance();
// 设置 Calendar 的时间为当前日期和时间
cal.setTime(new Date());
// 将 Calendar 的时间增加 1 小时,作为 Token 的过期时间
cal.add(Calendar.HOUR_OF_DAY, 1);
// 如果查询到了 Token 实体对象
if (tokenEntity != null) {
// 更新 Token 实体对象的 Token 字段
tokenEntity.setToken(token);
// 更新 Token 实体对象的过期时间字段
tokenEntity.setExpiratedtime(cal.getTime());
// 调用更新方法更新 Token 实体对象
this.updateById(tokenEntity);
} else {
// 如果未查询到 Token 实体对象,创建一个新的 Token 实体对象并插入数据库
this.insert(new TokenEntity(userid, username, tableName, role, token, cal.getTime()));
}
// 返回生成的 Token
return token;
}
// 重写 TokenService 接口中的 getTokenEntity 方法,用于根据 Token 获取 Token 实体对象
@Override
public TokenEntity getTokenEntity(String token) {
// 根据 Token 查询 Token 实体对象
TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("token", token));
// 如果未查询到 Token 实体对象或者 Token 已过期
if (tokenEntity == null || tokenEntity.getExpiratedtime().getTime() < new Date().getTime()) {
// 返回 null
return null;
}
// 返回查询到的 Token 实体对象
return tokenEntity;
}
}
Loading…
Cancel
Save