|
@@ -1,9 +1,34 @@
|
|
|
package com.abi.qms.platform.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.abi.qms.platform.dao.entity.UserInfo;
|
|
|
+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.UserMappingInfoRoleMapper;
|
|
|
+import com.abi.qms.platform.dao.mapper.UserRoleMapper;
|
|
|
import com.abi.qms.platform.dto.req.LoginReq;
|
|
|
+import com.abi.qms.platform.dto.req.ResetPasswordReq;
|
|
|
+import com.abi.qms.platform.dto.req.TokenReq;
|
|
|
+import com.abi.qms.platform.dto.req.UpdatePasswordReq;
|
|
|
+import com.abi.qms.platform.dto.res.LoginRes;
|
|
|
+import com.abi.qms.platform.infrastructure.util.RedisUtils;
|
|
|
+import com.abi.qms.platform.infrastructure.util.UUIDutils;
|
|
|
+import com.abi.qms.platform.infrastructure.util.UserUtil;
|
|
|
import com.abi.qms.platform.service.LoginService;
|
|
|
+import com.abi.task.common.api.base.BaseResponse;
|
|
|
+import com.abi.task.common.utils.AESEncodeTwoUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
|
|
|
* <p>
|
|
|
* 登录
|
|
@@ -11,17 +36,117 @@ import org.springframework.stereotype.Service;
|
|
|
*
|
|
|
* @author Andy.Tan
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
-public class LoginServiceImpl implements LoginService {
|
|
|
+public class LoginServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements LoginService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserInfoMapper userInfoMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserRoleMapper userRoleMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private RedisUtils redisUtil;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserMappingInfoRoleMapper userMappingInfoRoleMapper;
|
|
|
+
|
|
|
|
|
|
-
|
|
|
- * 登录
|
|
|
- **/
|
|
|
@Override
|
|
|
- public void login(LoginReq loginReq) {
|
|
|
-
|
|
|
+ public BaseResponse 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();
|
|
|
+ if (null != one) {
|
|
|
+ QueryWrapper<UserRole> roleQueryWrapper = new QueryWrapper<>();
|
|
|
+ roleQueryWrapper.eq("role_code", one.getRoleCode());
|
|
|
+ roleQueryWrapper.eq("is_delete", 0);
|
|
|
+ UserRole userRole = userRoleMapper.selectOne(roleQueryWrapper);
|
|
|
+ if (Objects.isNull(userRole)) {
|
|
|
+ return BaseResponse.createFail(null, ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getCode(), ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getMessage());
|
|
|
+ }
|
|
|
+ UserUtil.setUser(one);
|
|
|
+ String uuid = UUIDutils.getUUID();
|
|
|
+
|
|
|
+ redisUtil.set(RedisKey.USER_TOKEN_ID + ":" + uuid, one.getId(), BaseFinal.REDIS_USER_EXPIRE_TIME);
|
|
|
+
|
|
|
+ if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + one.getId())) {
|
|
|
+
|
|
|
+ Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + one.getId());
|
|
|
+ if (Objects.nonNull(loginkey)) {
|
|
|
+ redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
|
+ } else {
|
|
|
+ redisUtil.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());
|
|
|
+ } 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void resetPassword(ResetPasswordReq req) {
|
|
|
+ UserInfo userInfo = userInfoMapper.selectById(req.getId());
|
|
|
+ if (ObjectUtil.isNotEmpty(userInfo)) {
|
|
|
+ userInfo.setPassword(req.getPassword());
|
|
|
+ userInfoMapper.updateById(userInfo);
|
|
|
+ UserUtil.releaseUser();
|
|
|
+
|
|
|
+ if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
|
|
|
+
|
|
|
+ Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
+ if (Objects.nonNull(loginkey)) {
|
|
|
+ redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
|
+ }
|
|
|
+ redisUtil.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public BaseResponse updatePassword(UpdatePasswordReq req) {
|
|
|
+ UserInfo userInfo = userInfoMapper.selectById(req.getId());
|
|
|
+ String oldPassword = AESEncodeTwoUtil.decrypt(userInfo.getPassword());
|
|
|
+ if (oldPassword.equals(req.getOldPassword())) {
|
|
|
+ userInfo.setPassword(req.getNewPassword());
|
|
|
+ userInfoMapper.updateById(userInfo);
|
|
|
+
|
|
|
+ if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
|
|
|
+
|
|
|
+ Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
+ if (Objects.nonNull(loginkey)) {
|
|
|
+ redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
|
|
|
+ }
|
|
|
+ redisUtil.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.info("请输入正确的密码");
|
|
|
+ return BaseResponse.create(null, ErrorCodeEnum.PASSWORD_ERROR.getCode(), ErrorCodeEnum.PASSWORD_ERROR.getMessage());
|
|
|
+ }
|
|
|
+ return BaseResponse.create();
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public UserInfo validateToken(TokenReq req) {
|
|
|
+ Object uid = redisUtil.get(RedisKey.USER_TOKEN_ID + ":" + req.getToken());
|
|
|
+ if (Objects.nonNull(uid)) {
|
|
|
+ UserInfo userInfo = getById(uid.toString());
|
|
|
+ if (userInfo != null) {
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ return userInfo;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|