|
@@ -3,9 +3,6 @@ package com.abi.qms.platform.service.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import com.abi.qms.platform.dao.entity.UserInfo;
|
|
import com.abi.qms.platform.dao.entity.UserInfo;
|
|
import com.abi.qms.platform.dao.entity.UserRole;
|
|
import com.abi.qms.platform.dao.entity.UserRole;
|
|
-import com.abi.qms.platform.dao.enums.BaseFinal;
|
|
|
|
-import com.abi.qms.platform.dao.enums.ErrorCodeEnum;
|
|
|
|
-import com.abi.qms.platform.dao.enums.RedisKey;
|
|
|
|
import com.abi.qms.platform.dao.mapper.UserInfoMapper;
|
|
import com.abi.qms.platform.dao.mapper.UserInfoMapper;
|
|
import com.abi.qms.platform.dao.mapper.UserRoleMapper;
|
|
import com.abi.qms.platform.dao.mapper.UserRoleMapper;
|
|
import com.abi.qms.platform.dto.req.LoginReq;
|
|
import com.abi.qms.platform.dto.req.LoginReq;
|
|
@@ -13,19 +10,21 @@ import com.abi.qms.platform.dto.req.ResetPasswordReq;
|
|
import com.abi.qms.platform.dto.req.TokenReq;
|
|
import com.abi.qms.platform.dto.req.TokenReq;
|
|
import com.abi.qms.platform.dto.req.UpdatePasswordReq;
|
|
import com.abi.qms.platform.dto.req.UpdatePasswordReq;
|
|
import com.abi.qms.platform.dto.res.LoginRes;
|
|
import com.abi.qms.platform.dto.res.LoginRes;
|
|
|
|
+import com.abi.qms.platform.infrastructure.constant.BaseFinal;
|
|
|
|
+import com.abi.qms.platform.infrastructure.constant.RedisKey;
|
|
import com.abi.qms.platform.infrastructure.util.RedisUtils;
|
|
import com.abi.qms.platform.infrastructure.util.RedisUtils;
|
|
import com.abi.qms.platform.infrastructure.util.UUIDutils;
|
|
import com.abi.qms.platform.infrastructure.util.UUIDutils;
|
|
import com.abi.qms.platform.infrastructure.util.UserUtil;
|
|
import com.abi.qms.platform.infrastructure.util.UserUtil;
|
|
import com.abi.qms.platform.service.LoginService;
|
|
import com.abi.qms.platform.service.LoginService;
|
|
-import com.abi.task.common.api.base.BaseResponse;
|
|
|
|
|
|
+import com.abi.task.common.api.exception.BusinessException;
|
|
import com.abi.task.common.utils.AESEncodeTwoUtil;
|
|
import com.abi.task.common.utils.AESEncodeTwoUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import javax.annotation.Resource;
|
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -45,12 +44,13 @@ public class LoginServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> impl
|
|
@Autowired
|
|
@Autowired
|
|
private UserRoleMapper userRoleMapper;
|
|
private UserRoleMapper userRoleMapper;
|
|
|
|
|
|
- @Resource
|
|
|
|
- private RedisUtils redisUtil;
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private RedisUtils redisUtils;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public BaseResponse login(LoginReq req) {
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public LoginRes login(LoginReq req) {
|
|
UserInfo one = lambdaQuery().eq(UserInfo::getUserName, req.getUserName().trim()).eq(UserInfo::getPassword, req.getPassword()).eq(UserInfo::getIsEnable, 1).eq(UserInfo::getIsDelete, 0).select(UserInfo::getId).one();
|
|
UserInfo one = lambdaQuery().eq(UserInfo::getUserName, req.getUserName().trim()).eq(UserInfo::getPassword, req.getPassword()).eq(UserInfo::getIsEnable, 1).eq(UserInfo::getIsDelete, 0).select(UserInfo::getId).one();
|
|
if (Objects.nonNull(one)) {
|
|
if (Objects.nonNull(one)) {
|
|
UserInfo userInfo = userInfoMapper.selectById(one.getId());
|
|
UserInfo userInfo = userInfoMapper.selectById(one.getId());
|
|
@@ -59,33 +59,33 @@ public class LoginServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> impl
|
|
roleQueryWrapper.eq("is_delete", 0);
|
|
roleQueryWrapper.eq("is_delete", 0);
|
|
UserRole userRole = userRoleMapper.selectOne(roleQueryWrapper);
|
|
UserRole userRole = userRoleMapper.selectOne(roleQueryWrapper);
|
|
if (Objects.isNull(userRole)) {
|
|
if (Objects.isNull(userRole)) {
|
|
- return BaseResponse.createFail(null, ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getCode(), ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getMessage());
|
|
|
|
|
|
+ throw new BusinessException("该用户的角色不存在");
|
|
}
|
|
}
|
|
UserUtil.setUser(userInfo);
|
|
UserUtil.setUser(userInfo);
|
|
String uuid = UUIDutils.getUUID();
|
|
String uuid = UUIDutils.getUUID();
|
|
//token为key,id为value。过期时间30天
|
|
//token为key,id为value。过期时间30天
|
|
- redisUtil.set(RedisKey.USER_TOKEN_ID + ":" + uuid, one.getId(), BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
|
|
|
|
+ redisUtils.set(RedisKey.USER_TOKEN_ID + ":" + uuid, one.getId(), BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
//异地登录状态
|
|
//异地登录状态
|
|
- if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + one.getId())) {
|
|
|
|
|
|
+ if (redisUtils.exists(RedisKey.USER_ID_TOKEN + ":" + one.getId())) {
|
|
//有key,value为null的情况;就把key删掉
|
|
//有key,value为null的情况;就把key删掉
|
|
- Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + one.getId());
|
|
|
|
|
|
+ Object loginkey = redisUtils.get(RedisKey.USER_ID_TOKEN + ":" + one.getId());
|
|
if (Objects.nonNull(loginkey)) {
|
|
if (Objects.nonNull(loginkey)) {
|
|
- redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
|
|
|
|
+ redisUtils.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
} else {
|
|
} else {
|
|
- redisUtil.del(RedisKey.USER_ID_TOKEN + ":" + one.getId());
|
|
|
|
|
|
+ redisUtils.del(RedisKey.USER_ID_TOKEN + ":" + one.getId());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
;
|
|
//登录状态
|
|
//登录状态
|
|
- redisUtil.set(RedisKey.USER_ID_TOKEN + ":" + one.getId(), uuid, BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
|
|
- return new BaseResponse<>(LoginRes.builder().token(uuid).id(one.getId()).roleCode(one.getRoleCode()).build());
|
|
|
|
|
|
+ redisUtils.set(RedisKey.USER_ID_TOKEN + ":" + one.getId(), uuid, BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
|
|
+ LoginRes build = LoginRes.builder()
|
|
|
|
+ .token(uuid)
|
|
|
|
+ .id(one.getId())
|
|
|
|
+ .roleCode(one.getRoleCode())
|
|
|
|
+ .build();
|
|
|
|
+ return build;
|
|
} else {
|
|
} else {
|
|
- //查询是否有该用户
|
|
|
|
- UserInfo manager = lambdaQuery().eq(UserInfo::getUserName, req.getUserName().trim()).select(UserInfo::getId).one();
|
|
|
|
- if (null != manager) {
|
|
|
|
- return BaseResponse.createFail(null, ErrorCodeEnum.PASSWORD_ERROR.getCode(), ErrorCodeEnum.PASSWORD_ERROR.getMessage());
|
|
|
|
- }
|
|
|
|
- return BaseResponse.createFail(null, ErrorCodeEnum.USER_NOT_EXISTED.getCode(), ErrorCodeEnum.USER_NOT_EXISTED.getMessage());
|
|
|
|
|
|
+ throw new BusinessException("登录账号或密码错误");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -98,49 +98,48 @@ public class LoginServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> impl
|
|
userInfoMapper.updateById(userInfo);
|
|
userInfoMapper.updateById(userInfo);
|
|
UserUtil.releaseUser();
|
|
UserUtil.releaseUser();
|
|
//删除redis用户token信息
|
|
//删除redis用户token信息
|
|
- if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
|
|
|
|
|
|
+ if (redisUtils.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
|
|
//有key,value为null的情况;就把key删掉
|
|
//有key,value为null的情况;就把key删掉
|
|
- Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
|
|
|
+ Object loginkey = redisUtils.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
if (Objects.nonNull(loginkey)) {
|
|
if (Objects.nonNull(loginkey)) {
|
|
- redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
|
|
|
|
+ redisUtils.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
}
|
|
}
|
|
- redisUtil.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
|
|
|
+ redisUtils.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public BaseResponse updatePassword(UpdatePasswordReq req) {
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void updatePassword(UpdatePasswordReq req) {
|
|
UserInfo userInfo = userInfoMapper.selectById(req.getId());
|
|
UserInfo userInfo = userInfoMapper.selectById(req.getId());
|
|
- String oldPassword = AESEncodeTwoUtil.decrypt(userInfo.getPassword());
|
|
|
|
- if (oldPassword.equals(req.getOldPassword())) {
|
|
|
|
|
|
+ String oldPassword = AESEncodeTwoUtil.encrypt(req.getOldPassword());
|
|
|
|
+ if (oldPassword.equals(userInfo.getPassword())) {
|
|
userInfo.setPassword(req.getNewPassword());
|
|
userInfo.setPassword(req.getNewPassword());
|
|
userInfoMapper.updateById(userInfo);
|
|
userInfoMapper.updateById(userInfo);
|
|
//删除redis用户token信息
|
|
//删除redis用户token信息
|
|
- if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
|
|
|
|
|
|
+ if (redisUtils.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
|
|
//有key,value为null的情况;就把key删掉
|
|
//有key,value为null的情况;就把key删掉
|
|
- Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
|
|
|
+ Object loginkey = redisUtils.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
if (Objects.nonNull(loginkey)) {
|
|
if (Objects.nonNull(loginkey)) {
|
|
- redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
|
|
|
|
+ redisUtils.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
}
|
|
}
|
|
- redisUtil.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
|
|
|
+ redisUtils.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- log.info("请输入正确的密码");
|
|
|
|
- return BaseResponse.create(null, ErrorCodeEnum.PASSWORD_ERROR.getCode(), ErrorCodeEnum.PASSWORD_ERROR.getMessage());
|
|
|
|
|
|
+ throw new BusinessException("请输入正确的密码");
|
|
}
|
|
}
|
|
- return BaseResponse.create();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public UserInfo validateToken(TokenReq req) {
|
|
public UserInfo validateToken(TokenReq req) {
|
|
- Object uid = redisUtil.get(RedisKey.USER_TOKEN_ID + ":" + req.getToken());
|
|
|
|
|
|
+ Object uid = redisUtils.get(RedisKey.USER_TOKEN_ID + ":" + req.getToken());
|
|
if (Objects.nonNull(uid)) {
|
|
if (Objects.nonNull(uid)) {
|
|
UserInfo userInfo = getById(uid.toString());
|
|
UserInfo userInfo = getById(uid.toString());
|
|
if (userInfo != null) {
|
|
if (userInfo != null) {
|
|
//刷新token
|
|
//刷新token
|
|
- redisUtil.set(RedisKey.USER_TOKEN_ID + ":" + req.getToken(), userInfo.getId(), BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
|
|
- redisUtil.set(RedisKey.USER_ID_TOKEN + ":" + userInfo.getId(), req.getToken(), BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
|
|
|
|
+ redisUtils.set(RedisKey.USER_TOKEN_ID + ":" + req.getToken(), userInfo.getId(), BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
|
|
+ redisUtils.set(RedisKey.USER_ID_TOKEN + ":" + userInfo.getId(), req.getToken(), BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
}
|
|
}
|
|
return userInfo;
|
|
return userInfo;
|
|
}
|
|
}
|