From 66903f1556bbc8110e990c22812050c0b4ae3932 Mon Sep 17 00:00:00 2001 From: Odboy Date: Thu, 27 Mar 2025 20:13:32 +0800 Subject: [PATCH] =?UTF-8?q?upd:=20=E7=BC=96=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/odboy/constant/SystemConst.java | 26 +++++++++ .../cn/odboy/constant/SystemConstant.java | 16 ------ .../cn/odboy/properties/FileProperties.java | 6 +- .../java/cn/odboy/server/SwaggerConfig.java | 9 ++- .../main/java/cn/odboy/util/SecurityUtil.java | 16 ++---- .../{AuthorityDto.java => RoleCodeDto.java} | 2 +- .../{AuthUserDto.java => UserAuthDto.java} | 2 +- .../dto/{JwtUserDto.java => UserJwtDto.java} | 12 ++-- ...{OnlineUserDto.java => UserOnlineDto.java} | 2 +- .../core/config/SecurityProperties.java | 16 +----- .../core/config/SpringSecurityConfig.java | 4 +- .../core/context/TokenConfigurer.java | 4 +- .../application/core/context/TokenFilter.java | 20 ++++--- .../core/context/TokenProvider.java | 10 ++-- .../core/context/UserDetailsHelper.java | 18 +++--- .../application/core/rest/AuthController.java | 21 +++---- .../core/rest/OnlineController.java | 14 ++--- .../core/service/UserCacheService.java | 8 +-- ...serService.java => UserOnlineService.java} | 18 +++--- .../service/impl/UserCacheServiceImpl.java | 8 +-- ...ceImpl.java => UserOnlineServiceImpl.java} | 56 +++++++++---------- .../system/service/RoleService.java | 4 +- .../service/impl/MonitorServiceImpl.java | 8 +-- .../system/service/impl/RoleServiceImpl.java | 10 ++-- .../system/service/impl/UserServiceImpl.java | 8 +-- sql/cutejava20250321.sql | 13 ++--- 26 files changed, 161 insertions(+), 170 deletions(-) create mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConst.java delete mode 100644 cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConstant.java rename cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/{AuthorityDto.java => RoleCodeDto.java} (87%) rename cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/{AuthUserDto.java => UserAuthDto.java} (95%) rename cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/{JwtUserDto.java => UserJwtDto.java} (87%) rename cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/{OnlineUserDto.java => UserOnlineDto.java} (96%) rename cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/{OnlineUserService.java => UserOnlineService.java} (70%) rename cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/{OnlineUserServiceImpl.java => UserOnlineServiceImpl.java} (64%) diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConst.java b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConst.java new file mode 100644 index 00000000..afefc9cf --- /dev/null +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConst.java @@ -0,0 +1,26 @@ +package cn.odboy.constant; + +/** + * 常用静态常量 + */ +public class SystemConst { + /** + * win 系统 + */ + public static final String WIN = "win"; + + /** + * mac 系统 + */ + public static final String MAC = "mac"; + + /** + * 请求头名称 + */ + public static final String HEADER_NAME = "Authorization"; + + /** + * Token前缀 + */ + public static final String TOKEN_PREFIX = "Bearer"; +} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConstant.java b/cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConstant.java deleted file mode 100644 index 819f37d2..00000000 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/constant/SystemConstant.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.odboy.constant; - -/** - * 常用静态常量 - */ -public class SystemConstant { - /** - * win 系统 - */ - public static final String WIN = "win"; - - /** - * mac 系统 - */ - public static final String MAC = "mac"; -} diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/properties/FileProperties.java b/cutejava/cutejava-common/src/main/java/cn/odboy/properties/FileProperties.java index 0ef92428..4fdc9444 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/properties/FileProperties.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/properties/FileProperties.java @@ -1,6 +1,6 @@ package cn.odboy.properties; -import cn.odboy.constant.SystemConstant; +import cn.odboy.constant.SystemConst; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -28,9 +28,9 @@ public class FileProperties { public ElPath getPath() { String os = System.getProperty("os.name"); - if (os.toLowerCase().startsWith(SystemConstant.WIN)) { + if (os.toLowerCase().startsWith(SystemConst.WIN)) { return windows; - } else if (os.toLowerCase().startsWith(SystemConstant.MAC)) { + } else if (os.toLowerCase().startsWith(SystemConst.MAC)) { return mac; } return linux; diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java b/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java index bb670901..23ce43b9 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/server/SwaggerConfig.java @@ -1,6 +1,8 @@ package cn.odboy.server; +import cn.odboy.constant.SystemConst; import cn.odboy.util.AnonTagUtil; +import cn.odboy.util.SecurityUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Value; @@ -38,9 +40,6 @@ public class SwaggerConfig { @Value("${server.servlet.context-path:}") private String apiPath; - @Value("${jwt.header}") - private String tokenHeader; - @Value("${swagger.enabled}") private Boolean enabled; @@ -72,7 +71,7 @@ public class SwaggerConfig { private List securitySchemes() { //设置请求头信息 List securitySchemes = new ArrayList<>(); - ApiKey apiKey = new ApiKey(tokenHeader, tokenHeader, "header"); + ApiKey apiKey = new ApiKey(SystemConst.HEADER_NAME, SystemConst.HEADER_NAME, "header"); securitySchemes.add(apiKey); return securitySchemes; } @@ -101,7 +100,7 @@ public class SwaggerConfig { AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; - securityReferences.add(new SecurityReference(tokenHeader, authorizationScopes)); + securityReferences.add(new SecurityReference(SystemConst.HEADER_NAME, authorizationScopes)); return securityReferences; } diff --git a/cutejava/cutejava-common/src/main/java/cn/odboy/util/SecurityUtil.java b/cutejava/cutejava-common/src/main/java/cn/odboy/util/SecurityUtil.java index a34ad267..03cc9f4a 100644 --- a/cutejava/cutejava-common/src/main/java/cn/odboy/util/SecurityUtil.java +++ b/cutejava/cutejava-common/src/main/java/cn/odboy/util/SecurityUtil.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.jwt.JWT; import cn.hutool.jwt.JWTUtil; import cn.odboy.constant.DataScopeEnum; +import cn.odboy.constant.SystemConst; import cn.odboy.context.SpringBeanHolder; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; @@ -26,15 +27,6 @@ import java.util.Objects; @Slf4j @Component public class SecurityUtil { - /** - * 请求头名称 - */ - public static final String HEADER = "Authorization"; - /** - * Token前缀 - */ - public static final String TOKEN_PREFIX = "Bearer"; - /** * 获取当前登录的用户 * @@ -117,10 +109,10 @@ public class SecurityUtil { public static String getToken() { HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder .getRequestAttributes())).getRequest(); - String bearerToken = request.getHeader(HEADER); - if (bearerToken != null && bearerToken.startsWith(TOKEN_PREFIX)) { + String bearerToken = request.getHeader(SystemConst.HEADER_NAME); + if (bearerToken != null && bearerToken.startsWith(SystemConst.TOKEN_PREFIX)) { // 去掉令牌前缀 - return bearerToken.replace(TOKEN_PREFIX, ""); + return bearerToken.replace(SystemConst.TOKEN_PREFIX, ""); } else { log.debug("非法Token:{}", bearerToken); } diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/AuthorityDto.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/RoleCodeDto.java similarity index 87% rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/AuthorityDto.java rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/RoleCodeDto.java index cef1d448..ac5aa68a 100644 --- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/AuthorityDto.java +++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/RoleCodeDto.java @@ -12,7 +12,7 @@ import org.springframework.security.core.GrantedAuthority; @Data @NoArgsConstructor @AllArgsConstructor -public class AuthorityDto implements GrantedAuthority { +public class RoleCodeDto implements GrantedAuthority { @ApiModelProperty(value = "角色名") private String authority; diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/AuthUserDto.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserAuthDto.java similarity index 95% rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/AuthUserDto.java rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserAuthDto.java index 8d5ea2d4..375dee40 100644 --- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/AuthUserDto.java +++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserAuthDto.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotBlank; @Getter @Setter -public class AuthUserDto { +public class UserAuthDto { @NotBlank @ApiModelProperty(value = "用户名") diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/JwtUserDto.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserJwtDto.java similarity index 87% rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/JwtUserDto.java rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserJwtDto.java index 21e94d82..756dda49 100644 --- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/JwtUserDto.java +++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserJwtDto.java @@ -13,7 +13,7 @@ import java.util.stream.Collectors; @Getter @AllArgsConstructor -public class JwtUserDto implements UserDetails { +public class UserJwtDto implements UserDetails { @ApiModelProperty(value = "用户") private final User user; @@ -22,10 +22,10 @@ public class JwtUserDto implements UserDetails { private final List dataScopes; @ApiModelProperty(value = "角色") - private final List authorities; + private final List authorities; public Set getRoles() { - return authorities.stream().map(AuthorityDto::getAuthority).collect(Collectors.toSet()); + return authorities.stream().map(RoleCodeDto::getAuthority).collect(Collectors.toSet()); } @Override @@ -40,20 +40,20 @@ public class JwtUserDto implements UserDetails { return user.getUsername(); } - @JSONField(serialize = false) @Override + @JSONField(serialize = false) public boolean isAccountNonExpired() { return true; } - @JSONField(serialize = false) @Override + @JSONField(serialize = false) public boolean isAccountNonLocked() { return true; } - @JSONField(serialize = false) @Override + @JSONField(serialize = false) public boolean isCredentialsNonExpired() { return true; } diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/OnlineUserDto.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserOnlineDto.java similarity index 96% rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/OnlineUserDto.java rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserOnlineDto.java index 771b70b0..4fda5e4b 100644 --- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/OnlineUserDto.java +++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/dto/UserOnlineDto.java @@ -9,7 +9,7 @@ import java.util.Date; * 在线用户 */ @Data -public class OnlineUserDto { +public class UserOnlineDto { @ApiModelProperty(value = "Token编号") private String uid; diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java index 4a8beb79..2ba56014 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SecurityProperties.java @@ -1,5 +1,6 @@ package cn.odboy.application.core.config; +import cn.odboy.util.SecurityUtil; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -11,17 +12,6 @@ import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = "jwt") public class SecurityProperties { - - /** - * Request Headers : Authorization - */ - private String header; - - /** - * 令牌前缀,最后留个空格 Bearer - */ - private String tokenStartWith; - /** * 必须使用最少88位的Base64对该令牌进行编码 */ @@ -41,8 +31,4 @@ public class SecurityProperties { * 续期时间 */ private Long renew; - - public String getTokenStartWith() { - return tokenStartWith + " "; - } } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SpringSecurityConfig.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SpringSecurityConfig.java index b71ce70d..0d69548f 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SpringSecurityConfig.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/config/SpringSecurityConfig.java @@ -4,7 +4,7 @@ import cn.odboy.application.core.context.JwtAccessDeniedHandler; import cn.odboy.application.core.context.JwtAuthenticationEntryPoint; import cn.odboy.application.core.context.TokenConfigurer; import cn.odboy.application.core.context.TokenProvider; -import cn.odboy.application.core.service.impl.OnlineUserServiceImpl; +import cn.odboy.application.core.service.impl.UserOnlineServiceImpl; import cn.odboy.constant.RequestMethodEnum; import cn.odboy.util.AnonTagUtil; import lombok.RequiredArgsConstructor; @@ -36,7 +36,7 @@ public class SpringSecurityConfig { private final JwtAccessDeniedHandler jwtAccessDeniedHandler; private final ApplicationContext applicationContext; private final SecurityProperties securityProperties; - private final OnlineUserServiceImpl onlineUserService; + private final UserOnlineServiceImpl onlineUserService; @Bean GrantedAuthorityDefaults grantedAuthorityDefaults() { diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenConfigurer.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenConfigurer.java index 16ffde15..675464dd 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenConfigurer.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/TokenConfigurer.java @@ -1,7 +1,7 @@ package cn.odboy.application.core.context; import cn.odboy.application.core.config.SecurityProperties; -import cn.odboy.application.core.service.impl.OnlineUserServiceImpl; +import cn.odboy.application.core.service.impl.UserOnlineServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.security.config.annotation.SecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.builders.HttpSecurity; @@ -13,7 +13,7 @@ public class TokenConfigurer extends SecurityConfigurerAdapter claims = new HashMap<>(6); // 设置用户ID @@ -106,8 +108,8 @@ public class TokenProvider implements InitializingBean { } public String getToken(HttpServletRequest request) { - final String requestHeader = request.getHeader(properties.getHeader()); - if (requestHeader != null && requestHeader.startsWith(properties.getTokenStartWith())) { + final String requestHeader = request.getHeader(SystemConst.HEADER_NAME); + if (requestHeader != null && requestHeader.startsWith(SystemConst.TOKEN_PREFIX)) { return requestHeader.substring(7); } return null; diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/UserDetailsHelper.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/UserDetailsHelper.java index 448f2fd6..0cdcf6c1 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/UserDetailsHelper.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/context/UserDetailsHelper.java @@ -6,8 +6,8 @@ import cn.odboy.application.system.service.RoleService; import cn.odboy.application.system.service.UserService; import cn.odboy.exception.BadRequestException; import cn.odboy.model.system.domain.User; -import cn.odboy.model.system.dto.AuthorityDto; -import cn.odboy.model.system.dto.JwtUserDto; +import cn.odboy.model.system.dto.RoleCodeDto; +import cn.odboy.model.system.dto.UserJwtDto; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.userdetails.UserDetailsService; @@ -25,9 +25,9 @@ public class UserDetailsHelper implements UserDetailsService { private final UserCacheService userCacheService; @Override - public JwtUserDto loadUserByUsername(String username) { - JwtUserDto jwtUserDto = userCacheService.getUserCacheByUsername(username); - if (jwtUserDto == null) { + public UserJwtDto loadUserByUsername(String username) { + UserJwtDto userJwtDto = userCacheService.getUserCacheByUsername(username); + if (userJwtDto == null) { User user = userService.getUserByUsername(username); if (user == null) { throw new BadRequestException("用户不存在"); @@ -36,13 +36,13 @@ public class UserDetailsHelper implements UserDetailsService { throw new BadRequestException("账号未激活!"); } // 获取用户的权限 - List authorities = roleService.buildPermissions(user); + List authorities = roleService.buildPermissions(user); // 初始化JwtUserDto - jwtUserDto = new JwtUserDto(user, dataService.selectDeptIdByUserIdWithDeptId(user), authorities); + userJwtDto = new UserJwtDto(user, dataService.selectDeptIdByUserIdWithDeptId(user), authorities); // 添加缓存数据 - userCacheService.addUserCache(username, jwtUserDto); + userCacheService.addUserCache(username, userJwtDto); } } - return jwtUserDto; + return userJwtDto; } } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java index adac247d..01131f19 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/AuthController.java @@ -10,14 +10,15 @@ import cn.odboy.application.core.config.SecurityProperties; import cn.odboy.application.core.constant.LoginCodeEnum; import cn.odboy.application.core.context.TokenProvider; import cn.odboy.application.core.context.UserDetailsHelper; -import cn.odboy.application.core.service.impl.OnlineUserServiceImpl; +import cn.odboy.application.core.service.impl.UserOnlineServiceImpl; +import cn.odboy.constant.SystemConst; import cn.odboy.constant.SystemRedisKey; import cn.odboy.exception.BadRequestException; -import cn.odboy.model.system.dto.AuthUserDto; -import cn.odboy.model.system.dto.JwtUserDto; +import cn.odboy.model.system.dto.UserAuthDto; +import cn.odboy.model.system.dto.UserJwtDto; import cn.odboy.properties.RsaProperties; -import cn.odboy.util.RedisUtil; import cn.odboy.util.RSAEncryptUtil; +import cn.odboy.util.RedisUtil; import cn.odboy.util.SecurityUtil; import cn.odboy.util.StringUtil; import com.wf.captcha.base.Captcha; @@ -54,7 +55,7 @@ import java.util.concurrent.TimeUnit; public class AuthController { private final SecurityProperties properties; private final RedisUtil redisUtil; - private final OnlineUserServiceImpl onlineUserService; + private final UserOnlineServiceImpl onlineUserService; private final TokenProvider tokenProvider; private final CaptchaConfig captchaConfig; private final LoginProperties loginProperties; @@ -63,7 +64,7 @@ public class AuthController { @ApiOperation("登录授权") @AnonymousPostMapping(value = "/login") - public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception { + public ResponseEntity login(@Validated @RequestBody UserAuthDto authUser, HttpServletRequest request) throws Exception { // 密码解密 String password = RSAEncryptUtil.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); // 查询验证码 @@ -77,7 +78,7 @@ public class AuthController { throw new BadRequestException("验证码错误"); } // 获取用户信息 - JwtUserDto jwtUser = userDetailsService.loadUserByUsername(authUser.getUsername()); + UserJwtDto jwtUser = userDetailsService.loadUserByUsername(authUser.getUsername()); // 验证用户密码 if (!passwordEncoder.matches(password, jwtUser.getPassword())) { throw new BadRequestException("登录密码错误"); @@ -87,8 +88,8 @@ public class AuthController { // 生成令牌 String token = tokenProvider.createToken(jwtUser); // 返回 token 与 用户信息 - Map authInfo = new HashMap(2) {{ - put("token", properties.getTokenStartWith() + token); + Map authInfo = new HashMap<>(2) {{ + put("token", String.format("%s %s", SystemConst.TOKEN_PREFIX, token)); put("user", jwtUser); }}; if (loginProperties.isSingleLogin()) { @@ -104,7 +105,7 @@ public class AuthController { @ApiOperation("获取用户信息") @GetMapping(value = "/info") public ResponseEntity getUserInfo() { - JwtUserDto jwtUser = (JwtUserDto) SecurityUtil.getCurrentUser(); + UserJwtDto jwtUser = (UserJwtDto) SecurityUtil.getCurrentUser(); return ResponseEntity.ok(jwtUser); } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/OnlineController.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/OnlineController.java index 8dac500a..dc33b80d 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/OnlineController.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/rest/OnlineController.java @@ -1,8 +1,8 @@ package cn.odboy.application.core.rest; -import cn.odboy.application.core.service.OnlineUserService; +import cn.odboy.application.core.service.UserOnlineService; import cn.odboy.base.PageResult; -import cn.odboy.model.system.dto.OnlineUserDto; +import cn.odboy.model.system.dto.UserOnlineDto; import cn.odboy.util.DESEncryptUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -23,20 +23,20 @@ import java.util.Set; @RequestMapping("/auth/online") @Api(tags = "系统:在线用户管理") public class OnlineController { - private final OnlineUserService onlineUserService; + private final UserOnlineService userOnlineService; @ApiOperation("查询在线用户") @GetMapping @PreAuthorize("@el.check()") - public ResponseEntity> queryOnlineUser(String username, Pageable pageable) { - return new ResponseEntity<>(onlineUserService.queryOnlineUserPage(username, pageable), HttpStatus.OK); + public ResponseEntity> queryOnlineUser(String username, Pageable pageable) { + return new ResponseEntity<>(userOnlineService.queryOnlineUserPage(username, pageable), HttpStatus.OK); } @ApiOperation("导出数据") @GetMapping(value = "/download") @PreAuthorize("@el.check()") public void exportOnlineUser(HttpServletResponse response, String username) throws IOException { - onlineUserService.downloadExcel(onlineUserService.selectOnlineUserByUsername(username), response); + userOnlineService.downloadExcel(userOnlineService.selectOnlineUserByUsername(username), response); } @ApiOperation("踢出用户") @@ -46,7 +46,7 @@ public class OnlineController { for (String token : keys) { // 解密Key token = DESEncryptUtil.desDecrypt(token); - onlineUserService.logoutByToken(token); + userOnlineService.logoutByToken(token); } return new ResponseEntity<>(HttpStatus.OK); } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/UserCacheService.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/UserCacheService.java index 7e84f555..d039ccb7 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/UserCacheService.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/UserCacheService.java @@ -1,6 +1,6 @@ package cn.odboy.application.core.service; -import cn.odboy.model.system.dto.JwtUserDto; +import cn.odboy.model.system.dto.UserJwtDto; import org.springframework.scheduling.annotation.Async; public interface UserCacheService { @@ -8,9 +8,9 @@ public interface UserCacheService { * 返回用户缓存 * * @param username 用户名 - * @return JwtUserDto + * @return UserJwtDto */ - JwtUserDto getUserCacheByUsername(String username); + UserJwtDto getUserCacheByUsername(String username); /** * 添加缓存到Redis @@ -18,7 +18,7 @@ public interface UserCacheService { * @param userName 用户名 */ @Async - void addUserCache(String userName, JwtUserDto user); + void addUserCache(String userName, UserJwtDto user); /** * 清理用户缓存信息 diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/OnlineUserService.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/UserOnlineService.java similarity index 70% rename from cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/OnlineUserService.java rename to cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/UserOnlineService.java index 8cd8de47..28db6cf0 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/OnlineUserService.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/UserOnlineService.java @@ -1,8 +1,8 @@ package cn.odboy.application.core.service; import cn.odboy.base.PageResult; -import cn.odboy.model.system.dto.JwtUserDto; -import cn.odboy.model.system.dto.OnlineUserDto; +import cn.odboy.model.system.dto.UserJwtDto; +import cn.odboy.model.system.dto.UserOnlineDto; import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletRequest; @@ -10,15 +10,15 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; -public interface OnlineUserService { +public interface UserOnlineService { /** * 保存在线用户信息 * - * @param jwtUserDto / + * @param userJwtDto / * @param token / * @param request / */ - void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request); + void save(UserJwtDto userJwtDto, String token, HttpServletRequest request); /** * 查询全部数据 @@ -27,7 +27,7 @@ public interface OnlineUserService { * @param pageable / * @return / */ - PageResult queryOnlineUserPage(String username, Pageable pageable); + PageResult queryOnlineUserPage(String username, Pageable pageable); /** * 查询全部数据,不分页 @@ -35,7 +35,7 @@ public interface OnlineUserService { * @param username / * @return / */ - List selectOnlineUserByUsername(String username); + List selectOnlineUserByUsername(String username); /** * 退出登录 @@ -51,7 +51,7 @@ public interface OnlineUserService { * @param response / * @throws IOException / */ - void downloadExcel(List all, HttpServletResponse response) throws IOException; + void downloadExcel(List all, HttpServletResponse response) throws IOException; /** * 查询用户 @@ -59,7 +59,7 @@ public interface OnlineUserService { * @param key / * @return / */ - OnlineUserDto getOnlineUserByKey(String key); + UserOnlineDto getOnlineUserByKey(String key); /** * 根据用户名强退用户 diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserCacheServiceImpl.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserCacheServiceImpl.java index 33a5ce1d..646a6ff3 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserCacheServiceImpl.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserCacheServiceImpl.java @@ -3,7 +3,7 @@ package cn.odboy.application.core.service.impl; import cn.hutool.core.util.RandomUtil; import cn.odboy.application.core.config.LoginProperties; import cn.odboy.application.core.service.UserCacheService; -import cn.odboy.model.system.dto.JwtUserDto; +import cn.odboy.model.system.dto.UserJwtDto; import cn.odboy.util.RedisUtil; import cn.odboy.util.StringUtil; import org.springframework.stereotype.Service; @@ -19,19 +19,19 @@ public class UserCacheServiceImpl implements UserCacheService { private RedisUtil redisUtil; @Override - public JwtUserDto getUserCacheByUsername(String username) { + public UserJwtDto getUserCacheByUsername(String username) { // 转小写 username = StringUtil.lowerCase(username); if (StringUtil.isNotEmpty(username)) { // 获取数据 - return redisUtil.get(LoginProperties.cacheKey + username, JwtUserDto.class); + return redisUtil.get(LoginProperties.cacheKey + username, UserJwtDto.class); } return null; } @Override - public void addUserCache(String userName, JwtUserDto user) { + public void addUserCache(String userName, UserJwtDto user) { // 转小写 userName = StringUtil.lowerCase(userName); if (StringUtil.isNotEmpty(userName)) { diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/OnlineUserServiceImpl.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserOnlineServiceImpl.java similarity index 64% rename from cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/OnlineUserServiceImpl.java rename to cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserOnlineServiceImpl.java index 58194c72..3064994e 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/OnlineUserServiceImpl.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/core/service/impl/UserOnlineServiceImpl.java @@ -2,11 +2,11 @@ package cn.odboy.application.core.service.impl; import cn.odboy.application.core.config.SecurityProperties; import cn.odboy.application.core.context.TokenProvider; -import cn.odboy.application.core.service.OnlineUserService; +import cn.odboy.application.core.service.UserOnlineService; import cn.odboy.base.PageResult; import cn.odboy.constant.SystemRedisKey; -import cn.odboy.model.system.dto.JwtUserDto; -import cn.odboy.model.system.dto.OnlineUserDto; +import cn.odboy.model.system.dto.UserJwtDto; +import cn.odboy.model.system.dto.UserOnlineDto; import cn.odboy.util.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,52 +23,52 @@ import java.util.concurrent.TimeUnit; @Service @Slf4j @AllArgsConstructor -public class OnlineUserServiceImpl implements OnlineUserService { +public class UserOnlineServiceImpl implements UserOnlineService { private final SecurityProperties properties; private final TokenProvider tokenProvider; private final RedisUtil redisUtil; @Override - public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request) { - String dept = jwtUserDto.getUser().getDept().getName(); + public void save(UserJwtDto userJwtDto, String token, HttpServletRequest request) { + String dept = userJwtDto.getUser().getDept().getName(); String ip = BrowserUtil.getIp(request); String id = tokenProvider.getId(token); String version = BrowserUtil.getVersion(request); String address = IPUtil.getCityInfo(ip); - OnlineUserDto onlineUserDto = null; + UserOnlineDto userOnlineDto = null; try { - onlineUserDto = new OnlineUserDto(); - onlineUserDto.setUid(id); - onlineUserDto.setUserName(jwtUserDto.getUsername()); - onlineUserDto.setNickName(jwtUserDto.getUser().getNickName()); - onlineUserDto.setDept(dept); - onlineUserDto.setBrowser(version); - onlineUserDto.setIp(ip); - onlineUserDto.setAddress(address); - onlineUserDto.setKey(DESEncryptUtil.desEncrypt(token)); - onlineUserDto.setLoginTime(new Date()); + userOnlineDto = new UserOnlineDto(); + userOnlineDto.setUid(id); + userOnlineDto.setUserName(userJwtDto.getUsername()); + userOnlineDto.setNickName(userJwtDto.getUser().getNickName()); + userOnlineDto.setDept(dept); + userOnlineDto.setBrowser(version); + userOnlineDto.setIp(ip); + userOnlineDto.setAddress(address); + userOnlineDto.setKey(DESEncryptUtil.desEncrypt(token)); + userOnlineDto.setLoginTime(new Date()); } catch (Exception e) { log.error(e.getMessage(), e); } String loginKey = tokenProvider.loginKey(token); - redisUtil.set(loginKey, onlineUserDto, properties.getTokenValidityInSeconds(), TimeUnit.MILLISECONDS); + redisUtil.set(loginKey, userOnlineDto, properties.getTokenValidityInSeconds(), TimeUnit.MILLISECONDS); } @Override - public PageResult queryOnlineUserPage(String username, Pageable pageable) { - List onlineUserList = selectOnlineUserByUsername(username); - List paging = PageUtil.softPaging(pageable.getPageNumber(), pageable.getPageSize(), onlineUserList); + public PageResult queryOnlineUserPage(String username, Pageable pageable) { + List onlineUserList = selectOnlineUserByUsername(username); + List paging = PageUtil.softPaging(pageable.getPageNumber(), pageable.getPageSize(), onlineUserList); return PageUtil.toPage(paging, onlineUserList.size()); } @Override - public List selectOnlineUserByUsername(String username) { + public List selectOnlineUserByUsername(String username) { String loginKey = SystemRedisKey.ONLINE_USER + (StringUtil.isBlank(username) ? "" : "*" + username); List keys = redisUtil.scan(loginKey + "*"); Collections.reverse(keys); - List onlineUserList = new ArrayList<>(); + List onlineUserList = new ArrayList<>(); for (String key : keys) { - onlineUserList.add(redisUtil.get(key, OnlineUserDto.class)); + onlineUserList.add(redisUtil.get(key, UserOnlineDto.class)); } onlineUserList.sort((o1, o2) -> o2.getLoginTime().compareTo(o1.getLoginTime())); return onlineUserList; @@ -81,9 +81,9 @@ public class OnlineUserServiceImpl implements OnlineUserService { } @Override - public void downloadExcel(List all, HttpServletResponse response) throws IOException { + public void downloadExcel(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); - for (OnlineUserDto user : all) { + for (UserOnlineDto user : all) { Map map = new LinkedHashMap<>(); map.put("用户名", user.getUserName()); map.put("部门", user.getDept()); @@ -97,8 +97,8 @@ public class OnlineUserServiceImpl implements OnlineUserService { } @Override - public OnlineUserDto getOnlineUserByKey(String key) { - return redisUtil.get(key, OnlineUserDto.class); + public UserOnlineDto getOnlineUserByKey(String key) { + return redisUtil.get(key, UserOnlineDto.class); } @Override diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/RoleService.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/RoleService.java index 13240d42..b084c359 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/RoleService.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/RoleService.java @@ -3,7 +3,7 @@ package cn.odboy.application.system.service; import cn.odboy.base.PageResult; import cn.odboy.model.system.domain.Role; import cn.odboy.model.system.domain.User; -import cn.odboy.model.system.dto.AuthorityDto; +import cn.odboy.model.system.dto.RoleCodeDto; import cn.odboy.model.system.dto.RoleQueryCriteria; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -98,7 +98,7 @@ public interface RoleService extends IService { * @param user 用户信息 * @return 权限信息 */ - List buildPermissions(User user); + List buildPermissions(User user); /** * 导出数据 diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/MonitorServiceImpl.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/MonitorServiceImpl.java index 7f3b2d8f..7add4fe9 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/MonitorServiceImpl.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/MonitorServiceImpl.java @@ -3,9 +3,9 @@ package cn.odboy.application.system.service.impl; import cn.hutool.core.date.BetweenFormatter.Level; import cn.hutool.core.date.DateUtil; import cn.odboy.application.system.service.MonitorService; -import cn.odboy.constant.SystemConstant; +import cn.odboy.constant.SystemConst; import cn.odboy.util.FileUtil; -import cn.odboy.util.StringUtil; +import cn.odboy.util.IPUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import oshi.SystemInfo; @@ -65,7 +65,7 @@ public class MonitorServiceImpl implements MonitorService { long available = 0, total = 0; for (OSFileStore fs : fsArray) { // windows 需要将所有磁盘分区累加,linux 和 mac 直接累加会出现磁盘重复的问题,待修复 - if (osName.toLowerCase().startsWith(SystemConstant.WIN)) { + if (osName.toLowerCase().startsWith(SystemConst.WIN)) { available += fs.getUsableSpace(); total += fs.getTotalSpace(); } else { @@ -178,7 +178,7 @@ public class MonitorServiceImpl implements MonitorService { // 系统信息 systemInfo.put("os", os.toString()); systemInfo.put("day", formatBetween); - systemInfo.put("ip", StringUtil.getLocalIp()); + systemInfo.put("ip", IPUtil.getLocalIp()); return systemInfo; } } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/RoleServiceImpl.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/RoleServiceImpl.java index ceff82d3..65474174 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/RoleServiceImpl.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/RoleServiceImpl.java @@ -15,7 +15,7 @@ import cn.odboy.exception.EntityExistException; import cn.odboy.model.system.domain.Menu; import cn.odboy.model.system.domain.Role; import cn.odboy.model.system.domain.User; -import cn.odboy.model.system.dto.AuthorityDto; +import cn.odboy.model.system.dto.RoleCodeDto; import cn.odboy.model.system.dto.RoleQueryCriteria; import cn.odboy.util.FileUtil; import cn.odboy.util.PageUtil; @@ -160,22 +160,22 @@ public class RoleServiceImpl extends ServiceImpl implements Ro } @Override - public List buildPermissions(User user) { + public List buildPermissions(User user) { String key = SystemRedisKey.ROLE_AUTH + user.getId(); - List authorityList = redisUtil.getList(key, AuthorityDto.class); + List authorityList = redisUtil.getList(key, RoleCodeDto.class); if (CollUtil.isEmpty(authorityList)) { Set permissions = new HashSet<>(); // 如果是管理员直接返回 if (user.getIsAdmin()) { permissions.add("admin"); - return permissions.stream().map(AuthorityDto::new) + return permissions.stream().map(RoleCodeDto::new) .collect(Collectors.toList()); } List roles = roleMapper.selectRoleByUserId(user.getId()); permissions = roles.stream().flatMap(role -> role.getMenus().stream()) .map(Menu::getPermission) .filter(StringUtil::isNotBlank).collect(Collectors.toSet()); - authorityList = permissions.stream().map(AuthorityDto::new) + authorityList = permissions.stream().map(RoleCodeDto::new) .collect(Collectors.toList()); redisUtil.set(key, authorityList, 1, TimeUnit.HOURS); } diff --git a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java index 501e101c..a483edb4 100644 --- a/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java +++ b/cutejava/cutejava-system/src/main/java/cn/odboy/application/system/service/impl/UserServiceImpl.java @@ -1,6 +1,6 @@ package cn.odboy.application.system.service.impl; -import cn.odboy.application.core.service.OnlineUserService; +import cn.odboy.application.core.service.UserOnlineService; import cn.odboy.application.core.service.UserCacheService; import cn.odboy.application.system.mapper.UserJobMapper; import cn.odboy.application.system.mapper.UserMapper; @@ -40,7 +40,7 @@ public class UserServiceImpl extends ServiceImpl implements Us private final FileProperties fileProperties; private final RedisUtil redisUtil; private final UserCacheService userCacheService; - private final OnlineUserService onlineUserService; + private final UserOnlineService userOnlineService; @Override public PageResult queryUserPage(UserQueryCriteria criteria, Page page) { @@ -116,7 +116,7 @@ public class UserServiceImpl extends ServiceImpl implements Us } // 如果用户被禁用,则清除用户登录信息 if (!resources.getEnabled()) { - onlineUserService.kickOutByUsername(resources.getUsername()); + userOnlineService.kickOutByUsername(resources.getUsername()); } user.setDeptId(resources.getDept().getId()); user.setUsername(resources.getUsername()); @@ -191,7 +191,7 @@ public class UserServiceImpl extends ServiceImpl implements Us // 清除缓存 flushCache(user.getUsername()); // 强制退出 - onlineUserService.kickOutByUsername(user.getUsername()); + userOnlineService.kickOutByUsername(user.getUsername()); }); // 重置密码 userMapper.resetPasswordByUserIds(ids, password); diff --git a/sql/cutejava20250321.sql b/sql/cutejava20250321.sql index 0d88ecfb..35eeda81 100644 --- a/sql/cutejava20250321.sql +++ b/sql/cutejava20250321.sql @@ -11,7 +11,7 @@ Target Server Version : 80025 File Encoding : 65001 - Date: 24/03/2025 21:16:20 + Date: 27/03/2025 19:08:22 */ SET NAMES utf8mb4; @@ -391,7 +391,7 @@ CREATE TABLE `sys_menu` ( UNIQUE INDEX `uniq_name`(`name`) USING BTREE, UNIQUE INDEX `uniq_title`(`title`) USING BTREE, INDEX `idx_pid`(`pid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 117 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统菜单' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 123 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统菜单' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sys_menu @@ -491,7 +491,7 @@ INSERT INTO `sys_quartz_job` VALUES (6, 'testTask', '0/5 * * * * ?', b'1', '测 -- ---------------------------- DROP TABLE IF EXISTS `sys_quartz_log`; CREATE TABLE `sys_quartz_log` ( - `log_id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'ID', `bean_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Bean名称', `cron_expression` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'cron 表达式', `is_success` bit(1) NULL DEFAULT NULL COMMENT '是否执行成功', @@ -501,7 +501,7 @@ CREATE TABLE `sys_quartz_log` ( `time` bigint(0) NULL DEFAULT NULL COMMENT '执行耗时', `exception_detail` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '异常详情', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`log_id`) USING BTREE + PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 171 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务日志' ROW_FORMAT = Dynamic; -- ---------------------------- @@ -533,7 +533,6 @@ CREATE TABLE `sys_role` ( INSERT INTO `sys_role` VALUES (1, '超级管理员', 1, '666', '全部', NULL, 'admin', '2018-11-23 11:04:37', '2020-08-06 16:10:24'); INSERT INTO `sys_role` VALUES (2, '普通用户', 2, '-', '本级', NULL, 'admin', '2018-11-23 13:09:06', '2020-09-05 10:45:12'); INSERT INTO `sys_role` VALUES (3, 'd666', 3, NULL, '全部', 'admin', 'admin', NULL, NULL); -INSERT INTO `sys_role` VALUES (4, '666', 3, NULL, '全部', 'admin', 'admin', NULL, NULL); -- ---------------------------- -- Table structure for sys_roles_depts @@ -717,7 +716,7 @@ CREATE TABLE `tool_email_config` ( `config_id` bigint(0) NOT NULL COMMENT 'ID', `from_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '收件人', `host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮件服务器SMTP地址', - `pass` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码', `port` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '端口', `user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发件者用户名', PRIMARY KEY (`config_id`) USING BTREE @@ -744,7 +743,7 @@ CREATE TABLE `tool_local_storage` ( `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '本地存储' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '本地存储' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tool_local_storage