mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	初始化 c 端的登录逻辑
This commit is contained in:
		| @@ -1,19 +0,0 @@ | ||||
| package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog; | ||||
|  | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
|  | ||||
| @ApiModel(value = "登录日志创建 Request VO", | ||||
|         description = "暂时提供给前端,仅仅后端记录登录日志时,进行使用") | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @ToString(callSuper = true) | ||||
| public class SysLoginLogCreateReqVO extends SysLoginLogBaseVO { | ||||
|  | ||||
|     @ApiModelProperty(value = "用户编号", example = "1") | ||||
|     private Long userId; | ||||
|  | ||||
| } | ||||
| @@ -1,7 +1,7 @@ | ||||
| package cn.iocoder.yudao.adminserver.modules.system.convert.logger; | ||||
|  | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; | ||||
| @@ -15,7 +15,7 @@ public interface SysLoginLogConvert { | ||||
|  | ||||
|     SysLoginLogConvert INSTANCE = Mappers.getMapper(SysLoginLogConvert.class); | ||||
|  | ||||
|     SysLoginLogDO convert(SysLoginLogCreateReqVO bean); | ||||
|     SysLoginLogDO convert(SysLoginLogCreateReqDTO bean); | ||||
|  | ||||
|     PageResult<SysLoginLogRespVO> convertPage(PageResult<SysLoginLogDO> page); | ||||
|  | ||||
|   | ||||
| @@ -38,6 +38,12 @@ public class SysUserSessionDO extends BaseDO { | ||||
|      * 关联 {@link SysUserDO#getId()} | ||||
|      */ | ||||
|     private Long userId; | ||||
|     /** | ||||
|      * 用户类型 | ||||
|      * | ||||
|      * 枚举 {@link UserTypeEnum} | ||||
|      */ | ||||
|     private Integer userType; | ||||
|  | ||||
|     /** | ||||
|      * 用户账号 | ||||
|   | ||||
| @@ -14,7 +14,7 @@ import lombok.ToString; | ||||
|  * | ||||
|  * 注意,包括登录和登出两种行为 | ||||
|  * | ||||
|  * @author ruoyi | ||||
|  * @author 芋道源码 | ||||
|  */ | ||||
| @TableName("sys_login_log") | ||||
| @Data | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| package cn.iocoder.yudao.adminserver.modules.system.enums; | ||||
|  | ||||
| import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.config.ErrorCodeConfiguration; | ||||
| import cn.iocoder.yudao.framework.common.exception.ErrorCode; | ||||
| import org.springframework.validation.Errors; | ||||
|  | ||||
| /** | ||||
|  * System 错误码枚举类 | ||||
| @@ -14,7 +12,7 @@ public interface SysErrorCodeConstants { | ||||
|     // ========== AUTH 模块 1002000000 ========== | ||||
|     ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1002000000, "登录失败,账号密码不正确"); | ||||
|     ErrorCode AUTH_LOGIN_USER_DISABLED = new ErrorCode(1002000001, "登录失败,账号被禁用"); | ||||
|     ErrorCode AUTH_LOGIN_FAIL_UNKNOWN = new ErrorCode(1002000002, "登录失败"); // 登录失败的兜底,位置原因 | ||||
|     ErrorCode AUTH_LOGIN_FAIL_UNKNOWN = new ErrorCode(1002000002, "登录失败"); // 登录失败的兜底,未知原因 | ||||
|     ErrorCode AUTH_LOGIN_CAPTCHA_NOT_FOUND = new ErrorCode(1002000003, "验证码不存在"); | ||||
|     ErrorCode AUTH_LOGIN_CAPTCHA_CODE_ERROR = new ErrorCode(1002000004, "验证码不正确"); | ||||
|     ErrorCode AUTH_THIRD_LOGIN_NOT_BIND = new ErrorCode(1002000005, "未绑定账号,需要进行绑定"); | ||||
|   | ||||
| @@ -13,6 +13,8 @@ public enum SysLoginLogTypeEnum { | ||||
|     LOGIN_USERNAME(100), // 使用账号登录 | ||||
|     LOGIN_SOCIAL(101), // 使用社交登录 | ||||
|     LOGIN_MOCK(102), // 使用 Mock 登录 | ||||
|     LOGIN_MOBILE(103), // 使用手机登陆 | ||||
|     LOGIN_SMS(104), // 使用短信登陆 | ||||
|  | ||||
|     LOGOUT_SELF(200),  // 自己主动登出 | ||||
|     LOGOUT_TIMEOUT(201), // 超时登出 | ||||
|   | ||||
| @@ -13,8 +13,8 @@ public enum SysLoginResultEnum { | ||||
|     SUCCESS(0), // 成功 | ||||
|     BAD_CREDENTIALS(10), // 账号或密码不正确 | ||||
|     USER_DISABLED(20), // 用户被禁用 | ||||
|     CAPTCHA_NOT_FOUND(30), // 验证码不存在 | ||||
|     CAPTCHA_CODE_ERROR(31), // 验证码不正确 | ||||
|     CAPTCHA_NOT_FOUND(30), // 图片验证码不存在 | ||||
|     CAPTCHA_CODE_ERROR(31), // 图片验证码不正确 | ||||
|  | ||||
|     UNKNOWN_ERROR(100), // 未知异常 | ||||
|     ; | ||||
|   | ||||
| @@ -45,13 +45,6 @@ public interface SysUserSessionService { | ||||
|      */ | ||||
|     LoginUser getLoginUser(String sessionId); | ||||
|  | ||||
|     /** | ||||
|      * 获取当前登录用户信息 | ||||
|      * @param username 用户名称 | ||||
|      * @return 在线用户 | ||||
|      */ | ||||
|     String getSessionId(String username); | ||||
|  | ||||
|     /** | ||||
|      * 获得 Session 超时时间,单位:毫秒 | ||||
|      * | ||||
|   | ||||
| @@ -5,7 +5,6 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAu | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialBindReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; | ||||
| @@ -15,6 +14,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; | ||||
| @@ -158,20 +158,20 @@ public class SysAuthServiceImpl implements SysAuthService { | ||||
|         // 获得用户 | ||||
|         SysUserDO user = userService.getUserByUsername(username); | ||||
|         // 插入登录日志 | ||||
|         SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO(); | ||||
|         reqVO.setLogType(logTypeEnum.getType()); | ||||
|         reqVO.setTraceId(TracerUtils.getTraceId()); | ||||
|         SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | ||||
|         reqDTO.setLogType(logTypeEnum.getType()); | ||||
|         reqDTO.setTraceId(TracerUtils.getTraceId()); | ||||
|         if (user != null) { | ||||
|             reqVO.setUserId(user.getId()); | ||||
|             reqDTO.setUserId(user.getId()); | ||||
|         } | ||||
|         reqVO.setUsername(username); | ||||
|         reqVO.setUserAgent(ServletUtils.getUserAgent()); | ||||
|         reqVO.setUserIp(ServletUtils.getClientIP()); | ||||
|         reqVO.setResult(loginResult.getResult()); | ||||
|         loginLogService.createLoginLog(reqVO); | ||||
|         reqDTO.setUsername(username); | ||||
|         reqDTO.setUserAgent(ServletUtils.getUserAgent()); | ||||
|         reqDTO.setUserIp(ServletUtils.getClientIP()); | ||||
|         reqDTO.setResult(loginResult.getResult()); | ||||
|         loginLogService.createLoginLog(reqDTO); | ||||
|         // 更新最后登录时间 | ||||
|         if (user != null && Objects.equals(SysLoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { | ||||
|  | ||||
|             userService.updateUserLogin(user.getId(), ServletUtils.getClientIP()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -258,14 +258,14 @@ public class SysAuthServiceImpl implements SysAuthService { | ||||
|     } | ||||
|  | ||||
|     private void createLogoutLog(String username) { | ||||
|         SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO(); | ||||
|         reqVO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType()); | ||||
|         reqVO.setTraceId(TracerUtils.getTraceId()); | ||||
|         reqVO.setUsername(username); | ||||
|         reqVO.setUserAgent(ServletUtils.getUserAgent()); | ||||
|         reqVO.setUserIp(ServletUtils.getClientIP()); | ||||
|         reqVO.setResult(SysLoginResultEnum.SUCCESS.getResult()); | ||||
|         loginLogService.createLoginLog(reqVO); | ||||
|         SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | ||||
|         reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType()); | ||||
|         reqDTO.setTraceId(TracerUtils.getTraceId()); | ||||
|         reqDTO.setUsername(username); | ||||
|         reqDTO.setUserAgent(ServletUtils.getUserAgent()); | ||||
|         reqDTO.setUserIp(ServletUtils.getClientIP()); | ||||
|         reqDTO.setResult(SysLoginResultEnum.SUCCESS.getResult()); | ||||
|         loginLogService.createLoginLog(reqDTO); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -3,12 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl; | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.hutool.core.util.IdUtil; | ||||
| import cn.hutool.core.util.StrUtil; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||||
| import cn.iocoder.yudao.framework.security.core.LoginUser; | ||||
| import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth.SysUserSessionMapper; | ||||
| @@ -17,10 +12,13 @@ import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeE | ||||
| import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; | ||||
| import com.baomidou.mybatisplus.core.conditions.Wrapper; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||
| import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | ||||
| import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||||
| import cn.iocoder.yudao.framework.security.core.LoginUser; | ||||
| import com.google.common.collect.Lists; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.stereotype.Service; | ||||
| @@ -62,7 +60,8 @@ public class SysUserSessionServiceImpl implements SysUserSessionService { | ||||
|         loginUserRedisDAO.set(sessionId, loginUser); | ||||
|         // 写入 DB 中 | ||||
|         SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) | ||||
|                 .userId(loginUser.getId()).userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) | ||||
|                 .userId(loginUser.getId()).userType(UserTypeEnum.ADMIN.getValue()) | ||||
|                 .userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) | ||||
|                 .sessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))) | ||||
|                 .build(); | ||||
|         userSessionMapper.insert(userSession); | ||||
| @@ -96,15 +95,6 @@ public class SysUserSessionServiceImpl implements SysUserSessionService { | ||||
|         return loginUserRedisDAO.get(sessionId); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String getSessionId(String username) { | ||||
|         QueryWrapper<SysUserSessionDO> wrapper = new QueryWrapper<>(); | ||||
|         wrapper.eq("username", username); | ||||
|         wrapper.orderByDesc("create_time"); | ||||
|         SysUserSessionDO sysUserSessionDO = userSessionMapper.selectOne(wrapper); | ||||
|         return sysUserSessionDO.getId(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Long getSessionTimeoutMillis() { | ||||
|         return securityProperties.getSessionTimeout().toMillis(); | ||||
| @@ -142,14 +132,14 @@ public class SysUserSessionServiceImpl implements SysUserSessionService { | ||||
|  | ||||
|     private void createTimeoutLogoutLog(Collection<SysUserSessionDO> timeoutSessionDOS) { | ||||
|         for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) { | ||||
|             SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO(); | ||||
|             reqVO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType()); | ||||
|             reqVO.setTraceId(TracerUtils.getTraceId()); | ||||
|             reqVO.setUsername(timeoutSessionDO.getUsername()); | ||||
|             reqVO.setUserAgent(timeoutSessionDO.getUserAgent()); | ||||
|             reqVO.setUserIp(timeoutSessionDO.getUserIp()); | ||||
|             reqVO.setResult(SysLoginResultEnum.SUCCESS.getResult()); | ||||
|             loginLogService.createLoginLog(reqVO); | ||||
|             SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | ||||
|             reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType()); | ||||
|             reqDTO.setTraceId(TracerUtils.getTraceId()); | ||||
|             reqDTO.setUsername(timeoutSessionDO.getUsername()); | ||||
|             reqDTO.setUserAgent(timeoutSessionDO.getUserAgent()); | ||||
|             reqDTO.setUserIp(timeoutSessionDO.getUserIp()); | ||||
|             reqDTO.setResult(SysLoginResultEnum.SUCCESS.getResult()); | ||||
|             loginLogService.createLoginLog(reqDTO); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| package cn.iocoder.yudao.adminserver.modules.system.service.logger; | ||||
|  | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; | ||||
| @@ -16,9 +16,9 @@ public interface SysLoginLogService { | ||||
|     /** | ||||
|      * 创建登录日志 | ||||
|      * | ||||
|      * @param reqVO 日志信息 | ||||
|      * @param reqDTO 日志信息 | ||||
|      */ | ||||
|     void createLoginLog(SysLoginLogCreateReqVO reqVO); | ||||
|     void createLoginLog(SysLoginLogCreateReqDTO reqDTO); | ||||
|  | ||||
|     /** | ||||
|      * 获得登录日志分页 | ||||
|   | ||||
| @@ -0,0 +1,57 @@ | ||||
| package cn.iocoder.yudao.adminserver.modules.system.service.logger.dto; | ||||
|  | ||||
| import lombok.Data; | ||||
|  | ||||
| import javax.validation.constraints.NotBlank; | ||||
| import javax.validation.constraints.NotEmpty; | ||||
| import javax.validation.constraints.NotNull; | ||||
| import javax.validation.constraints.Size; | ||||
|  | ||||
| /** | ||||
|  * 登录日志创建 Request DTO | ||||
|  * | ||||
|  * @author 芋道源码 | ||||
|  */ | ||||
| @Data | ||||
| public class SysLoginLogCreateReqDTO { | ||||
|  | ||||
|     /** | ||||
|      * 日志类型 | ||||
|      */ | ||||
|     @NotNull(message = "日志类型不能为空") | ||||
|     private Integer logType; | ||||
|     /** | ||||
|      * 链路追踪编号 | ||||
|      */ | ||||
|     @NotEmpty(message = "链路追踪编号不能为空") | ||||
|     private String traceId; | ||||
|  | ||||
|     /** | ||||
|      * 用户编号 | ||||
|      */ | ||||
|     private Long userId; | ||||
|     /** | ||||
|      * 用户账号 | ||||
|      */ | ||||
|     @NotBlank(message = "用户账号不能为空") | ||||
|     @Size(max = 30, message = "用户账号长度不能超过30个字符") | ||||
|     private String username; | ||||
|  | ||||
|     /** | ||||
|      * 登录结果 | ||||
|      */ | ||||
|     @NotNull(message = "登录结果不能为空") | ||||
|     private Integer result; | ||||
|  | ||||
|     /** | ||||
|      * 用户 IP | ||||
|      */ | ||||
|     @NotEmpty(message = "用户 IP 不能为空") | ||||
|     private String userIp; | ||||
|     /** | ||||
|      * 浏览器 UserAgent | ||||
|      */ | ||||
|     @NotEmpty(message = "浏览器 UserAgent 不能为空") | ||||
|     private String userAgent; | ||||
|  | ||||
| } | ||||
| @@ -1,16 +1,14 @@ | ||||
| package cn.iocoder.yudao.adminserver.modules.system.service.logger.impl; | ||||
|  | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; | ||||
| import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysLoginLogConvert; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysLoginLogMapper; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; | ||||
| import cn.iocoder.yudao.adminserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||||
| import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| @@ -26,8 +24,8 @@ public class SysLoginLogServiceImpl implements SysLoginLogService { | ||||
|     private SysLoginLogMapper loginLogMapper; | ||||
|  | ||||
|     @Override | ||||
|     public void createLoginLog(SysLoginLogCreateReqVO reqVO) { | ||||
|         SysLoginLogDO loginLog = SysLoginLogConvert.INSTANCE.convert(reqVO); | ||||
|     public void createLoginLog(SysLoginLogCreateReqDTO reqDTO) { | ||||
|         SysLoginLogDO loginLog = SysLoginLogConvert.INSTANCE.convert(reqDTO); | ||||
|         loginLog.setUserType(UserTypeEnum.ADMIN.getValue()); | ||||
|         // 插入 | ||||
|         loginLogMapper.insert(loginLog); | ||||
|   | ||||
| @@ -41,6 +41,14 @@ public interface SysUserService { | ||||
|      */ | ||||
|     void updateUser(SysUserUpdateReqVO reqVO); | ||||
|  | ||||
|     /** | ||||
|      * 更新用户的最后登陆信息 | ||||
|      * | ||||
|      * @param id 用户编号 | ||||
|      * @param loginIp 登陆 IP | ||||
|      */ | ||||
|     void updateUserLogin(Long id, String loginIp); | ||||
|  | ||||
|     /** | ||||
|      * 修改用户个人信息 | ||||
|      * | ||||
|   | ||||
| @@ -84,6 +84,11 @@ public class SysUserServiceImpl implements SysUserService { | ||||
|         userMapper.updateById(updateObj); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void updateUserLogin(Long id, String loginIp) { | ||||
|         userMapper.updateById(new SysUserDO().setId(id).setLoginIp(loginIp).setLoginDate(new Date())); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void updateUserProfile(Long id, SysUserProfileUpdateReqVO reqVO) { | ||||
|         // 校验正确性 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV