|
|
@ -1,176 +1,185 @@
|
|
|
|
package com.yf.exam.modules.sys.user.service.impl;
|
|
|
|
package com.yf.exam.modules.sys.user.service.impl; // 包名:表示该类属于 sys.user.service.impl 包
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSON; // 导入 Fastjson 库,用于 JSON 处理
|
|
|
|
import com.alibaba.fastjson.TypeReference;
|
|
|
|
import com.alibaba.fastjson.TypeReference; // 导入 Fastjson 的 TypeReference,用于泛型类型的转换
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; // 导入 MyBatis-Plus 的 QueryWrapper,用于构建查询条件
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; // 导入 MyBatis-Plus 分页接口
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker; // 导入 MyBatis-Plus 的 IdWorker,用于生成唯一ID
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入 MyBatis-Plus 分页类
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 导入 MyBatis-Plus 的 ServiceImpl 类,提供基础的数据库操作
|
|
|
|
import com.yf.exam.core.api.ApiError;
|
|
|
|
import com.yf.exam.core.api.ApiError; // 导入 ApiError 用于错误码定义
|
|
|
|
import com.yf.exam.core.api.dto.PagingReqDTO;
|
|
|
|
import com.yf.exam.core.api.dto.PagingReqDTO; // 导入分页请求 DTO
|
|
|
|
import com.yf.exam.core.enums.CommonState;
|
|
|
|
import com.yf.exam.core.enums.CommonState; // 导入公共状态枚举,定义正常与异常状态
|
|
|
|
import com.yf.exam.core.exception.ServiceException;
|
|
|
|
import com.yf.exam.core.exception.ServiceException; // 导入 ServiceException,用于抛出自定义异常
|
|
|
|
import com.yf.exam.core.utils.BeanMapper;
|
|
|
|
import com.yf.exam.core.utils.BeanMapper; // 导入 BeanMapper 工具类,用于对象之间的属性拷贝
|
|
|
|
import com.yf.exam.core.utils.passwd.PassHandler;
|
|
|
|
import com.yf.exam.core.utils.passwd.PassHandler; // 导入 PassHandler 用于密码处理
|
|
|
|
import com.yf.exam.core.utils.passwd.PassInfo;
|
|
|
|
import com.yf.exam.core.utils.passwd.PassInfo; // 导入 PassInfo 用于存储密码和盐
|
|
|
|
import com.yf.exam.ability.shiro.jwt.JwtUtils;
|
|
|
|
import com.yf.exam.ability.shiro.jwt.JwtUtils; // 导入 JwtUtils 用于生成和验证 JWT
|
|
|
|
import com.yf.exam.modules.sys.user.dto.SysUserDTO;
|
|
|
|
import com.yf.exam.modules.sys.user.dto.SysUserDTO; // 导入 SysUserDTO 数据传输对象,用于封装用户数据
|
|
|
|
import com.yf.exam.modules.sys.user.dto.request.SysUserSaveReqDTO;
|
|
|
|
import com.yf.exam.modules.sys.user.dto.request.SysUserSaveReqDTO; // 导入 SysUserSaveReqDTO 请求 DTO,用于保存用户信息
|
|
|
|
import com.yf.exam.modules.sys.user.dto.response.SysUserLoginDTO;
|
|
|
|
import com.yf.exam.modules.sys.user.dto.response.SysUserLoginDTO; // 导入 SysUserLoginDTO 响应 DTO,用于返回登录信息
|
|
|
|
import com.yf.exam.modules.sys.user.entity.SysUser;
|
|
|
|
import com.yf.exam.modules.sys.user.entity.SysUser; // 导入 SysUser 实体类,表示管理员用户
|
|
|
|
import com.yf.exam.modules.sys.user.mapper.SysUserMapper;
|
|
|
|
import com.yf.exam.modules.sys.user.mapper.SysUserMapper; // 导入 SysUserMapper,用于数据库操作
|
|
|
|
import com.yf.exam.modules.sys.user.service.SysUserRoleService;
|
|
|
|
import com.yf.exam.modules.sys.user.service.SysUserRoleService; // 导入 SysUserRoleService 服务接口,用于角色操作
|
|
|
|
import com.yf.exam.modules.sys.user.service.SysUserService;
|
|
|
|
import com.yf.exam.modules.sys.user.service.SysUserService; // 导入 SysUserService 服务接口,用于用户操作
|
|
|
|
import com.yf.exam.modules.user.UserUtils;
|
|
|
|
import com.yf.exam.modules.user.UserUtils; // 导入 UserUtils 工具类,用于获取当前用户信息
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.apache.commons.lang3.StringUtils; // 导入 StringUtils 工具类,用于判断字符串是否为空
|
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
|
import org.apache.shiro.SecurityUtils; // 导入 Shiro 的 SecurityUtils,用于获取和处理用户会话
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 注解,用于自动注入依赖
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service; // 导入 Spring 的 Service 注解,标识该类为服务层组件
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional; // 导入 Spring 的事务注解,支持事务管理
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
import org.springframework.util.CollectionUtils; // 导入 Spring 的 CollectionUtils 工具类,用于判断集合是否为空
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList; // 导入 ArrayList 类,用于创建列表
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List; // 导入 List 接口,用于存储角色列表
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* <p>
|
|
|
|
* <p>
|
|
|
|
* 语言设置 服务实现类
|
|
|
|
* 用户服务实现类
|
|
|
|
* </p>
|
|
|
|
* </p>
|
|
|
|
*
|
|
|
|
* 该类实现了 SysUserService 接口,提供了与用户相关的业务逻辑
|
|
|
|
* @author 聪明笨狗
|
|
|
|
*
|
|
|
|
* @since 2020-04-13 16:57
|
|
|
|
* @作者 聪明笨狗
|
|
|
|
*/
|
|
|
|
* @版本 2020-04-13 16:57
|
|
|
|
@Service
|
|
|
|
*/
|
|
|
|
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
|
|
|
|
@Service // 标识该类为服务层组件
|
|
|
|
|
|
|
|
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService { // 继承 MyBatis-Plus 的 ServiceImpl,自动提供基础的 CRUD 操作
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private SysUserRoleService sysUserRoleService;
|
|
|
|
private SysUserRoleService sysUserRoleService; // 注入 SysUserRoleService,用于用户角色管理
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public IPage<SysUserDTO> paging(PagingReqDTO<SysUserDTO> reqDTO) {
|
|
|
|
public IPage<SysUserDTO> paging(PagingReqDTO<SysUserDTO> reqDTO) { // 实现分页查询方法
|
|
|
|
|
|
|
|
|
|
|
|
//创建分页对象
|
|
|
|
// 创建分页对象,设置当前页和每页显示的条数
|
|
|
|
IPage<SysUser> query = new Page<>(reqDTO.getCurrent(), reqDTO.getSize());
|
|
|
|
IPage<SysUser> query = new Page<>(reqDTO.getCurrent(), reqDTO.getSize());
|
|
|
|
|
|
|
|
|
|
|
|
//查询条件
|
|
|
|
// 创建查询条件对象
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
|
|
|
|
|
|
|
|
SysUserDTO params = reqDTO.getParams();
|
|
|
|
SysUserDTO params = reqDTO.getParams();
|
|
|
|
|
|
|
|
|
|
|
|
if(params!=null){
|
|
|
|
// 根据传入的参数设置查询条件
|
|
|
|
if(!StringUtils.isBlank(params.getUserName())){
|
|
|
|
if (params != null) {
|
|
|
|
|
|
|
|
if (!StringUtils.isBlank(params.getUserName())) {
|
|
|
|
wrapper.lambda().like(SysUser::getUserName, params.getUserName());
|
|
|
|
wrapper.lambda().like(SysUser::getUserName, params.getUserName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!StringUtils.isBlank(params.getRealName())){
|
|
|
|
if (!StringUtils.isBlank(params.getRealName())) {
|
|
|
|
wrapper.lambda().like(SysUser::getRealName, params.getRealName());
|
|
|
|
wrapper.lambda().like(SysUser::getRealName, params.getRealName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//获得数据
|
|
|
|
// 查询数据,获取分页结果
|
|
|
|
IPage<SysUser> page = this.page(query, wrapper);
|
|
|
|
IPage<SysUser> page = this.page(query, wrapper);
|
|
|
|
//转换结果
|
|
|
|
|
|
|
|
IPage<SysUserDTO> pageData = JSON.parseObject(JSON.toJSONString(page), new TypeReference<Page<SysUserDTO>>(){});
|
|
|
|
// 将查询结果转换为 SysUserDTO 类型的分页结果
|
|
|
|
|
|
|
|
IPage<SysUserDTO> pageData = JSON.parseObject(JSON.toJSONString(page), new TypeReference<Page<SysUserDTO>>() {});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 返回分页数据
|
|
|
|
return pageData;
|
|
|
|
return pageData;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public SysUserLoginDTO login(String userName, String password) {
|
|
|
|
public SysUserLoginDTO login(String userName, String password) { // 用户登录方法
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查询用户是否存在
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, userName);
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, userName);
|
|
|
|
|
|
|
|
|
|
|
|
SysUser user = this.getOne(wrapper, false);
|
|
|
|
SysUser user = this.getOne(wrapper, false);
|
|
|
|
if(user == null){
|
|
|
|
if (user == null) {
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010002);
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010002); // 用户不存在,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 被禁用
|
|
|
|
// 检查用户是否被禁用
|
|
|
|
if(user.getState().equals(CommonState.ABNORMAL)){
|
|
|
|
if (user.getState().equals(CommonState.ABNORMAL)) {
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010005);
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010005); // 用户被禁用,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
boolean check = PassHandler.checkPass(password,user.getSalt(), user.getPassword());
|
|
|
|
// 校验密码
|
|
|
|
if(!check){
|
|
|
|
boolean check = PassHandler.checkPass(password, user.getSalt(), user.getPassword());
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010002);
|
|
|
|
if (!check) {
|
|
|
|
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010002); // 密码不正确,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置 JWT token 并返回登录信息
|
|
|
|
return this.setToken(user);
|
|
|
|
return this.setToken(user);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public SysUserLoginDTO token(String token) {
|
|
|
|
public SysUserLoginDTO token(String token) { // 根据 token 获取用户会话信息
|
|
|
|
|
|
|
|
|
|
|
|
// 获得会话
|
|
|
|
// 获取 token 中的用户名
|
|
|
|
String username = JwtUtils.getUsername(token);
|
|
|
|
String username = JwtUtils.getUsername(token);
|
|
|
|
|
|
|
|
|
|
|
|
// 校验结果
|
|
|
|
// 校验 token 是否有效
|
|
|
|
boolean check = JwtUtils.verify(token, username);
|
|
|
|
boolean check = JwtUtils.verify(token, username);
|
|
|
|
|
|
|
|
|
|
|
|
if(!check){
|
|
|
|
if (!check) {
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010002);
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010002); // token 无效,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查询用户信息
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, username);
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, username);
|
|
|
|
|
|
|
|
|
|
|
|
SysUser user = this.getOne(wrapper, false);
|
|
|
|
SysUser user = this.getOne(wrapper, false);
|
|
|
|
if(user == null){
|
|
|
|
if (user == null) {
|
|
|
|
throw new ServiceException(ApiError.ERROR_10010002);
|
|
|
|
throw new ServiceException(ApiError.ERROR_10010002); // 用户不存在,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 被禁用
|
|
|
|
// 检查用户是否被禁用
|
|
|
|
if(user.getState().equals(CommonState.ABNORMAL)){
|
|
|
|
if (user.getState().equals(CommonState.ABNORMAL)) {
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010005);
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010005); // 用户被禁用,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置 JWT token 并返回登录信息
|
|
|
|
return this.setToken(user);
|
|
|
|
return this.setToken(user);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void logout(String token) {
|
|
|
|
public void logout(String token) { // 用户登出方法
|
|
|
|
|
|
|
|
|
|
|
|
// 仅退出当前会话
|
|
|
|
// 退出当前会话
|
|
|
|
SecurityUtils.getSubject().logout();
|
|
|
|
SecurityUtils.getSubject().logout();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void update(SysUserDTO reqDTO) {
|
|
|
|
public void update(SysUserDTO reqDTO) { // 更新用户信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String pass = reqDTO.getPassword();
|
|
|
|
String pass = reqDTO.getPassword();
|
|
|
|
if (!StringUtils.isBlank(pass)) {
|
|
|
|
if(!StringUtils.isBlank(pass)){
|
|
|
|
// 如果提供了新密码,则更新密码
|
|
|
|
PassInfo passInfo = PassHandler.buildPassword(pass);
|
|
|
|
PassInfo passInfo = PassHandler.buildPassword(pass);
|
|
|
|
SysUser user = this.getById(UserUtils.getUserId());
|
|
|
|
SysUser user = this.getById(UserUtils.getUserId());
|
|
|
|
user.setPassword(passInfo.getPassword());
|
|
|
|
user.setPassword(passInfo.getPassword());
|
|
|
|
user.setSalt(passInfo.getSalt());
|
|
|
|
user.setSalt(passInfo.getSalt());
|
|
|
|
this.updateById(user);
|
|
|
|
this.updateById(user); // 更新用户数据
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class) // 启用事务管理,保证数据一致性
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void save(SysUserSaveReqDTO reqDTO) {
|
|
|
|
public void save(SysUserSaveReqDTO reqDTO) { // 保存或修改用户信息
|
|
|
|
|
|
|
|
|
|
|
|
List<String> roles = reqDTO.getRoles();
|
|
|
|
List<String> roles = reqDTO.getRoles();
|
|
|
|
|
|
|
|
|
|
|
|
if(CollectionUtils.isEmpty(roles)){
|
|
|
|
if (CollectionUtils.isEmpty(roles)) {
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010003);
|
|
|
|
throw new ServiceException(ApiError.ERROR_90010003); // 角色列表不能为空,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 保存基本信息
|
|
|
|
// 保存基本信息
|
|
|
|
SysUser user = new SysUser();
|
|
|
|
SysUser user = new SysUser();
|
|
|
|
BeanMapper.copy(reqDTO, user);
|
|
|
|
BeanMapper.copy(reqDTO, user);
|
|
|
|
|
|
|
|
|
|
|
|
// 添加模式
|
|
|
|
// 添加模式,生成新的 ID
|
|
|
|
if(StringUtils.isBlank(user.getId())){
|
|
|
|
if (StringUtils.isBlank(user.getId())) {
|
|
|
|
user.setId(IdWorker.getIdStr());
|
|
|
|
user.setId(IdWorker.getIdStr());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 修改密码
|
|
|
|
// 如果提供了密码,则加密并保存
|
|
|
|
if(!StringUtils.isBlank(reqDTO.getPassword())){
|
|
|
|
if (!StringUtils.isBlank(reqDTO.getPassword())) {
|
|
|
|
PassInfo pass = PassHandler.buildPassword(reqDTO.getPassword());
|
|
|
|
PassInfo pass = PassHandler.buildPassword(reqDTO.getPassword());
|
|
|
|
user.setPassword(pass.getPassword());
|
|
|
|
user.setPassword(pass.getPassword());
|
|
|
|
user.setSalt(pass.getSalt());
|
|
|
|
user.setSalt(pass.getSalt());
|
|
|
@ -179,23 +188,23 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
// 保存角色信息
|
|
|
|
// 保存角色信息
|
|
|
|
String roleIds = sysUserRoleService.saveRoles(user.getId(), roles);
|
|
|
|
String roleIds = sysUserRoleService.saveRoles(user.getId(), roles);
|
|
|
|
user.setRoleIds(roleIds);
|
|
|
|
user.setRoleIds(roleIds);
|
|
|
|
this.saveOrUpdate(user);
|
|
|
|
|
|
|
|
|
|
|
|
this.saveOrUpdate(user); // 保存或更新用户信息
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class) // 启用事务管理
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public SysUserLoginDTO reg(SysUserDTO reqDTO) {
|
|
|
|
public SysUserLoginDTO reg(SysUserDTO reqDTO) { // 用户注册方法
|
|
|
|
|
|
|
|
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, reqDTO.getUserName());
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, reqDTO.getUserName());
|
|
|
|
|
|
|
|
|
|
|
|
int count = this.count(wrapper);
|
|
|
|
int count = this.count(wrapper);
|
|
|
|
|
|
|
|
|
|
|
|
if(count > 0){
|
|
|
|
if (count > 0) {
|
|
|
|
throw new ServiceException(1, "用户名已存在,换一个吧!");
|
|
|
|
throw new ServiceException(1, "用户名已存在,换一个吧!"); // 用户名已存在,抛出异常
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 保存用户
|
|
|
|
// 保存用户
|
|
|
|
SysUser user = new SysUser();
|
|
|
|
SysUser user = new SysUser();
|
|
|
|
user.setId(IdWorker.getIdStr());
|
|
|
|
user.setId(IdWorker.getIdStr());
|
|
|
@ -212,21 +221,22 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
user.setRoleIds(roleIds);
|
|
|
|
user.setRoleIds(roleIds);
|
|
|
|
this.save(user);
|
|
|
|
this.save(user);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 返回生成的 token
|
|
|
|
return this.setToken(user);
|
|
|
|
return this.setToken(user);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public SysUserLoginDTO quickReg(SysUserDTO reqDTO) {
|
|
|
|
public SysUserLoginDTO quickReg(SysUserDTO reqDTO) { // 快速注册方法
|
|
|
|
|
|
|
|
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, reqDTO.getUserName());
|
|
|
|
wrapper.lambda().eq(SysUser::getUserName, reqDTO.getUserName());
|
|
|
|
wrapper.last(" LIMIT 1 ");
|
|
|
|
wrapper.last(" LIMIT 1 ");
|
|
|
|
SysUser user = this.getOne(wrapper);
|
|
|
|
SysUser user = this.getOne(wrapper);
|
|
|
|
if(user!=null){
|
|
|
|
if (user != null) {
|
|
|
|
return this.setToken(user);
|
|
|
|
return this.setToken(user); // 如果用户已存在,直接返回登录信息
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return this.reg(reqDTO);
|
|
|
|
return this.reg(reqDTO); // 如果用户不存在,进行注册
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -235,16 +245,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
* @param user
|
|
|
|
* @param user
|
|
|
|
* @return
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private SysUserLoginDTO setToken(SysUser user){
|
|
|
|
private SysUserLoginDTO setToken(SysUser user) { // 生成并设置用户的 JWT token
|
|
|
|
|
|
|
|
|
|
|
|
SysUserLoginDTO respDTO = new SysUserLoginDTO();
|
|
|
|
SysUserLoginDTO respDTO = new SysUserLoginDTO();
|
|
|
|
BeanMapper.copy(user, respDTO);
|
|
|
|
BeanMapper.copy(user, respDTO);
|
|
|
|
|
|
|
|
|
|
|
|
// 生成Token
|
|
|
|
// 生成 JWT token
|
|
|
|
String token = JwtUtils.sign(user.getUserName());
|
|
|
|
String token = JwtUtils.sign(user.getUserName());
|
|
|
|
respDTO.setToken(token);
|
|
|
|
respDTO.setToken(token);
|
|
|
|
|
|
|
|
|
|
|
|
// 填充角色
|
|
|
|
// 填充角色信息
|
|
|
|
List<String> roles = sysUserRoleService.listRoles(user.getId());
|
|
|
|
List<String> roles = sysUserRoleService.listRoles(user.getId());
|
|
|
|
respDTO.setRoles(roles);
|
|
|
|
respDTO.setRoles(roles);
|
|
|
|
|
|
|
|
|
|
|
|