|
@@ -3,7 +3,9 @@ package com.backendsys.service.v1.System;
|
|
|
import com.backendsys.config.Kaptcha.KaptchaUtil;
|
|
|
import com.backendsys.config.Redis.RedisCache;
|
|
|
import com.backendsys.config.Security.service.TokenService;
|
|
|
+import com.backendsys.dao.System.SysUserInfoDao;
|
|
|
import com.backendsys.entity.v1.System.SysUserDTO;
|
|
|
+import com.backendsys.entity.v2.System.SysUserInfo;
|
|
|
import com.backendsys.exception.CustomException;
|
|
|
import com.backendsys.service.v1.SDKService.SDKTencent.SDKTencentSMSService;
|
|
|
import com.backendsys.utils.CountUtil;
|
|
@@ -11,7 +13,9 @@ import com.backendsys.utils.UserUtils;
|
|
|
import com.backendsys.utils.response.ResultEnum;
|
|
|
import com.backendsys.mapper.System.SysUserMapper;
|
|
|
import com.backendsys.config.Security.utils.JwtUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.google.code.kaptcha.Producer;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import jakarta.servlet.ServletOutputStream;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
@@ -79,6 +83,9 @@ public class SysAuthServiceImpl implements SysAuthService {
|
|
|
@Autowired
|
|
|
private SDKTencentSMSService sdkTencentSMSService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysUserInfoDao sysUserInfoDao;
|
|
|
+
|
|
|
/**
|
|
|
* 渲染 图形验证码
|
|
|
*/
|
|
@@ -136,20 +143,14 @@ public class SysAuthServiceImpl implements SysAuthService {
|
|
|
*/
|
|
|
private Map<String, Object> loginSuccess(HttpServletRequest request, SysUserDTO sysUserDTO) {
|
|
|
|
|
|
- Boolean isRemember = sysUserDTO.getIs_remember();
|
|
|
-
|
|
|
String uuid = String.valueOf(UUID.randomUUID());
|
|
|
Long userId = sysUserDTO.getUser_id();
|
|
|
Map<String, Object> sysUserDetail = sysUserMapper.queryUserDetail(userId);
|
|
|
|
|
|
// 判断用户是否已审核
|
|
|
Integer auditStatus = (Integer) sysUserDetail.get("audit_status");
|
|
|
- if (auditStatus == 1) {
|
|
|
- throw new CustomException("请等待管理员审核");
|
|
|
- }
|
|
|
- if (auditStatus == -1) {
|
|
|
- throw new CustomException("审核未通过,请联系客服获取详细信息");
|
|
|
- }
|
|
|
+ if (auditStatus == 1) throw new CustomException("请等待管理员审核");
|
|
|
+ if (auditStatus == -1) throw new CustomException("审核未通过,请联系客服获取详细信息");
|
|
|
|
|
|
// [Redis] 删除旧 Redis Key
|
|
|
String old_uuid = (String) sysUserDetail.get("last_login_uuid");
|
|
@@ -180,6 +181,7 @@ public class SysAuthServiceImpl implements SysAuthService {
|
|
|
|
|
|
// 5.生成 Token 并存入 Redis
|
|
|
// 生成 Token 过期时间 (存入Token/带出Result返回值)
|
|
|
+ Boolean isRemember = sysUserDTO.getIs_remember();
|
|
|
Long tokenDuration = (isRemember != null && isRemember) ? TOKEN_DURATION_SYSTEM * 7 : TOKEN_DURATION_SYSTEM;
|
|
|
Date tokenExpiration = new Date((new Date()).getTime() + tokenDuration);
|
|
|
sysUserDetail.put("token_expiration", tokenExpiration);
|
|
@@ -194,16 +196,13 @@ public class SysAuthServiceImpl implements SysAuthService {
|
|
|
stringRedisTemplate.opsForValue().set(tokenRedisKey, token, tokenDuration, TimeUnit.MILLISECONDS);
|
|
|
|
|
|
// 6.[更新] 用户最后登录时间、登录IP
|
|
|
- SysUserDTO sysUserLastlogin = new SysUserDTO();
|
|
|
- sysUserLastlogin.setUser_id(userId);
|
|
|
- sysUserLastlogin.setLast_login_ip(request.getRemoteAddr());
|
|
|
- sysUserLastlogin.setLast_login_uuid(uuid);
|
|
|
-
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
- String formattedDateTime = now.toString();
|
|
|
- sysUserLastlogin.setLast_login_time(formattedDateTime);
|
|
|
-
|
|
|
- sysUserMapper.updateUserInfo(sysUserLastlogin);
|
|
|
+ SysUserInfo userInfo = new SysUserInfo();
|
|
|
+ userInfo.setLast_login_ip(request.getRemoteAddr());
|
|
|
+ userInfo.setLast_login_uuid(uuid);
|
|
|
+ userInfo.setLast_login_time(DateUtil.now());
|
|
|
+ QueryWrapper<SysUserInfo> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("user_id", userId);
|
|
|
+ sysUserInfoDao.update(userInfo, wrapper);
|
|
|
|
|
|
// 7.[格式化] 将 Token 拼接到输出结果
|
|
|
Map<String, Object> result = new LinkedHashMap<>(sysUserDetail);
|