refactor: 目录结构调整和代码优化
This commit is contained in:
97
README.md
97
README.md
@@ -43,47 +43,62 @@
|
||||
```
|
||||
youlai-boot
|
||||
├── sql # SQL脚本
|
||||
├── mysql5 # MySQL5 脚本
|
||||
├── mysql8 # MySQL8 脚本
|
||||
│ ├── mysql5 # MySQL5 脚本
|
||||
│ └── mysql8 # MySQL8 脚本
|
||||
├── src # 源码目录
|
||||
├── common # 公共模块
|
||||
├── config # 自动装配配置
|
||||
├── CorsConfig # 跨域共享配置
|
||||
├── MybatisConfig # Mybatis 自动装配配置
|
||||
├── RedisCacheConfig # Redis 缓存自动装配配置
|
||||
├── RedisConfig # Redis 自动装配配置
|
||||
├── SecurityConfig # Spring Security 自动装配配置
|
||||
├── SwaggerConfig # API 接口文档配置
|
||||
├── WebMvcConfig # WebMvc 配置
|
||||
├── WebSocketConfig # WebSocket 自动装配配置
|
||||
├── XxlJobConfig # XXL-JOB 自动装配配置
|
||||
├── controller # 控制层
|
||||
├── converter # MapStruct 转换器
|
||||
├── filter # 过滤器
|
||||
├── RequestLogFilter # 请求日志过滤器
|
||||
├── VerifyCodeFilter # 验证码过滤器
|
||||
├── model # 模型层
|
||||
├── bo # 业务对象
|
||||
├── dto # 数据传输对象
|
||||
├── entity # 实体对象
|
||||
├── form # 表单对象
|
||||
├── query # 查询参数对象
|
||||
├── vo # 视图对象
|
||||
├── mapper # 数据库访问层
|
||||
├── plugin # 插件(可选)
|
||||
├── captcha # 验证码插件,用于生成验证码
|
||||
├── dupsubmit # 防重提交插件,用于防止表单重复提交
|
||||
├── mybatis # Mybatis 插件,数据权限、字段填充
|
||||
├── easyexcel # EasyExcel 插件,Excel 文件的读写
|
||||
├── xxljob # XXL-JOB 插件,分布式任务调度和执行
|
||||
├── security # Spring Security 安全配置和扩展
|
||||
├── util # 工具类
|
||||
├── JwtUtils # JWT 工具类,用于生成和解析 JWT
|
||||
├── SecurityUtils # Spring Security 工具类,用于获取当前登录用户
|
||||
├── service # 业务逻辑层
|
||||
|
||||
|
||||
└── end
|
||||
│ ├── common # 公共模块
|
||||
│ │ ├── annotation # 注解定义
|
||||
│ │ ├── base # 基础类
|
||||
│ │ ├── constant # 常量
|
||||
│ │ ├── enums # 枚举类型
|
||||
│ │ ├── exception # 异常处理
|
||||
│ │ ├── model # 数据模型
|
||||
│ │ ├── result # 结果封装
|
||||
│ │ └── util # 工具类
|
||||
│ ├── config # 自动装配配置
|
||||
│ │ ├── CorsConfig # 跨域共享配置
|
||||
│ │ ├── MybatisConfig # Mybatis 自动装配配置
|
||||
│ │ ├── RedisCacheConfig # Redis 缓存自动装配配置
|
||||
│ │ ├── RedisConfig # Redis 自动装配配置
|
||||
│ │ ├── SecurityConfig # Spring Security 自动装配配置
|
||||
│ │ ├── SwaggerConfig # API 接口文档配置
|
||||
│ │ ├── WebMvcConfig # WebMvc 配置
|
||||
│ │ ├── WebSocketConfig # WebSocket 自动装配配置
|
||||
│ │ └── XxlJobConfig # XXL-JOB 自动装配配置
|
||||
│ ├── core # 核心功能模块
|
||||
│ │ ├── aspect # 切面
|
||||
│ │ │ ├── LogAspect # 日志切面
|
||||
│ │ │ └── RepeatSubmitAspect # 防重提交切面
|
||||
│ │ ├── filter # 过滤器
|
||||
│ │ │ ├── RateLimiterFilter # 限流过滤器
|
||||
│ │ │ └── RequestLogFilter # 请求日志过滤器
|
||||
│ │ ├── handler # 处理器
|
||||
│ │ │ ├── MyDataPermissionHandler # 数据权限处理器
|
||||
│ │ │ └── MyMetaObjectHandler # 元对象字段填充处理器
|
||||
│ │ └── security # Security 安全中心
|
||||
│ ├── platform # 平台基础设施模块
|
||||
│ │ ├── auth # 授权
|
||||
│ │ ├── file # 文件处理
|
||||
│ │ ├── generator # 代码生成器
|
||||
│ │ ├── mail # 邮件处理
|
||||
│ │ └── sms # 短信处理
|
||||
│ ├── system # 系统模块
|
||||
│ │ ├── controller # 控制层
|
||||
│ │ ├── converter # MapStruct 转换器
|
||||
│ │ ├── event # 事件处理
|
||||
│ │ ├── handler # 处理器
|
||||
│ │ ├── listener # 监听器
|
||||
│ │ ├── model # 模型层
|
||||
│ │ │ ├── bo # 业务对象
|
||||
│ │ │ ├── dto # 数据传输对象
|
||||
│ │ │ ├── entity # 实体对象
|
||||
│ │ │ ├── form # 表单对象
|
||||
│ │ │ ├── query # 查询参数对象
|
||||
│ │ │ └── vo # 视图对象
|
||||
│ │ ├── mapper # 数据库访问层
|
||||
│ │ └── service # 业务逻辑层
|
||||
│ └── YouLaiApplication # 启动类
|
||||
└── end
|
||||
```
|
||||
|
||||
## 🌺 前端工程
|
||||
@@ -111,7 +126,7 @@ youlai-boot
|
||||
|
||||
3. **启动项目**
|
||||
|
||||
执行 [SystemApplication.java](src/main/java/com/youlai/system/SystemApplication.java) 的 main 方法完成后端项目启动;
|
||||
执行 [SystemApplication.java](src/main/java/com/youlai/boot/YouLaiApplication.java) 的 main 方法完成后端项目启动;
|
||||
|
||||
访问接口文档地址 [http://localhost:8989/doc.html](http://localhost:8989/doc.html) 验证项目启动是否成功。
|
||||
|
||||
|
||||
@@ -6,16 +6,18 @@ import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
/**
|
||||
* 应用启动类
|
||||
*
|
||||
* @author Ray
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@ConfigurationPropertiesScan
|
||||
@EnableScheduling
|
||||
public class YouLaiBootApplication {
|
||||
public class YouLaiApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(YouLaiBootApplication.class, args);
|
||||
SpringApplication.run(YouLaiApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package com.youlai.boot.common.annotation;
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* MP数据权限注解
|
||||
* 数据权限注解
|
||||
*
|
||||
* @author zc
|
||||
* @since 2.0.0
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.lang.annotation.*;
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.METHOD)
|
||||
@Documented
|
||||
public @interface LogAnnotation {
|
||||
public @interface Log {
|
||||
|
||||
String value() default "";
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@Inherited
|
||||
public @interface NoRepeat {
|
||||
public @interface RepeatSubmit {
|
||||
|
||||
/**
|
||||
* 锁过期时间(秒)
|
||||
@@ -9,7 +9,7 @@ import com.youlai.boot.core.security.exception.MyAccessDeniedHandler;
|
||||
import com.youlai.boot.core.security.exception.MyAuthenticationEntryPoint;
|
||||
import com.youlai.boot.core.security.filter.JwtValidationFilter;
|
||||
import com.youlai.boot.core.security.filter.CaptchaValidationFilter;
|
||||
import com.youlai.boot.system.service.SysConfigService;
|
||||
import com.youlai.boot.system.service.ConfigService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -45,7 +45,7 @@ public class SecurityConfig {
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
||||
private final CodeGenerator codeGenerator;
|
||||
private final SecurityProperties securityProperties;
|
||||
private final SysConfigService sysConfigService;
|
||||
private final ConfigService configService;
|
||||
|
||||
@Bean
|
||||
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||
@@ -66,7 +66,7 @@ public class SecurityConfig {
|
||||
|
||||
;
|
||||
// 限流过滤器
|
||||
http.addFilterBefore(new RateLimiterFilter(redisTemplate, sysConfigService), UsernamePasswordAuthenticationFilter.class);
|
||||
http.addFilterBefore(new RateLimiterFilter(redisTemplate, configService), UsernamePasswordAuthenticationFilter.class);
|
||||
// 验证码校验过滤器
|
||||
http.addFilterBefore(new CaptchaValidationFilter(redisTemplate, codeGenerator), UsernamePasswordAuthenticationFilter.class);
|
||||
// JWT 校验过滤器
|
||||
|
||||
@@ -5,7 +5,6 @@ import cn.hutool.jwt.JWTPayload;
|
||||
import cn.hutool.jwt.JWTUtil;
|
||||
import com.youlai.boot.common.constant.SecurityConstants;
|
||||
import com.youlai.boot.system.event.UserConnectionEvent;
|
||||
import com.youlai.boot.system.service.WebsocketService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
|
||||
@@ -7,10 +7,9 @@ import cn.hutool.http.useragent.UserAgent;
|
||||
import cn.hutool.http.useragent.UserAgentUtil;
|
||||
import com.youlai.boot.common.constant.SecurityConstants;
|
||||
import com.youlai.boot.common.util.IPUtils;
|
||||
import com.youlai.boot.system.model.entity.SysLog;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.system.model.entity.Log;
|
||||
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||
import com.youlai.boot.system.service.SysLogService;
|
||||
import com.youlai.boot.system.service.LogService;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -32,15 +31,15 @@ import org.springframework.stereotype.Component;
|
||||
@Slf4j
|
||||
public class LogAspect {
|
||||
|
||||
private final SysLogService logService;
|
||||
private final LogService logService;
|
||||
private final HttpServletRequest request;
|
||||
|
||||
@Pointcut("@annotation(com.youlai.boot.common.annotation.LogAnnotation)")
|
||||
@Pointcut("@annotation(com.youlai.boot.common.annotation.Log)")
|
||||
public void logPointcut() {
|
||||
}
|
||||
|
||||
@Around("logPointcut() && @annotation(logAnnotation)")
|
||||
public Object logExecutionTime(ProceedingJoinPoint joinPoint, LogAnnotation logAnnotation) throws Throwable {
|
||||
public Object logExecutionTime(ProceedingJoinPoint joinPoint, com.youlai.boot.common.annotation.Log logAnnotation) throws Throwable {
|
||||
String requestURI = request.getRequestURI();
|
||||
|
||||
Long userId = null;
|
||||
@@ -55,7 +54,7 @@ public class LogAspect {
|
||||
long executionTime = timer.interval();
|
||||
|
||||
// 创建日志记录
|
||||
SysLog log = new SysLog();
|
||||
Log log = new Log();
|
||||
log.setModule(logAnnotation.module());
|
||||
log.setContent(logAnnotation.value());
|
||||
log.setRequestUri(requestURI);
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.youlai.boot.common.constant.RedisConstants;
|
||||
import com.youlai.boot.common.constant.SecurityConstants;
|
||||
import com.youlai.boot.common.result.ResultCode;
|
||||
import com.youlai.boot.common.exception.BusinessException;
|
||||
import com.youlai.boot.common.annotation.NoRepeat;
|
||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -34,24 +34,24 @@ import java.util.concurrent.TimeUnit;
|
||||
@Component
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class NoRepeatAspect {
|
||||
public class RepeatSubmitAspect {
|
||||
|
||||
private final RedissonClient redissonClient;
|
||||
|
||||
/**
|
||||
* 防重复提交切点
|
||||
*/
|
||||
@Pointcut("@annotation(noRepeat)")
|
||||
public void preventDuplicateSubmitPointCut(NoRepeat noRepeat) {
|
||||
@Pointcut("@annotation(repeatSubmit)")
|
||||
public void preventDuplicateSubmitPointCut(RepeatSubmit repeatSubmit) {
|
||||
log.info("定义防重复提交切点");
|
||||
}
|
||||
|
||||
@Around("preventDuplicateSubmitPointCut(noRepeat)")
|
||||
public Object doAround(ProceedingJoinPoint pjp, NoRepeat noRepeat) throws Throwable {
|
||||
@Around("preventDuplicateSubmitPointCut(repeatSubmit)")
|
||||
public Object doAround(ProceedingJoinPoint pjp, RepeatSubmit repeatSubmit) throws Throwable {
|
||||
|
||||
String resubmitLockKey = generateResubmitLockKey();
|
||||
if (resubmitLockKey != null) {
|
||||
int expire = noRepeat.expire(); // 防重提交锁过期时间
|
||||
int expire = repeatSubmit.expire(); // 防重提交锁过期时间
|
||||
RLock lock = redissonClient.getLock(resubmitLockKey);
|
||||
boolean lockResult = lock.tryLock(0, expire, TimeUnit.SECONDS); // 获取锁失败,直接返回 false
|
||||
if (!lockResult) {
|
||||
@@ -4,7 +4,7 @@ import com.youlai.boot.common.constant.RedisConstants;
|
||||
import com.youlai.boot.common.result.ResultCode;
|
||||
import com.youlai.boot.common.util.IPUtils;
|
||||
import com.youlai.boot.common.util.ResponseUtils;
|
||||
import com.youlai.boot.system.service.SysConfigService;
|
||||
import com.youlai.boot.system.service.ConfigService;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
@@ -27,11 +27,11 @@ import java.util.concurrent.TimeUnit;
|
||||
public class RateLimiterFilter extends OncePerRequestFilter {
|
||||
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
||||
private final SysConfigService sysConfigService;
|
||||
private final ConfigService configService;
|
||||
|
||||
public RateLimiterFilter(RedisTemplate<String, Object> redisTemplate, SysConfigService sysConfigService) {
|
||||
public RateLimiterFilter(RedisTemplate<String, Object> redisTemplate, ConfigService configService) {
|
||||
this.redisTemplate = redisTemplate;
|
||||
this.sysConfigService = sysConfigService;
|
||||
this.configService = configService;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -48,7 +48,7 @@ public class RateLimiterFilter extends OncePerRequestFilter {
|
||||
if (count == null || count == 1) {
|
||||
redisTemplate.expire(key,1, TimeUnit.SECONDS);
|
||||
}
|
||||
Object systemConfig = sysConfigService.getSystemConfig(RedisConstants.IP_QPS_THRESHOLD_LIMIT_KEY);
|
||||
Object systemConfig = configService.getSystemConfig(RedisConstants.IP_QPS_THRESHOLD_LIMIT_KEY);
|
||||
long limit = 10;
|
||||
if(systemConfig != null){
|
||||
limit = Long.parseLong(systemConfig.toString());
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.core.security.service;
|
||||
|
||||
import com.youlai.boot.core.security.model.SysUserDetails;
|
||||
import com.youlai.boot.system.model.dto.UserAuthInfo;
|
||||
import com.youlai.boot.system.service.SysUserService;
|
||||
import com.youlai.boot.system.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
@@ -21,7 +21,7 @@ import org.springframework.stereotype.Service;
|
||||
@Slf4j
|
||||
public class SysUserDetailsService implements UserDetailsService {
|
||||
|
||||
private final SysUserService sysUserService;
|
||||
private final UserService userService;
|
||||
|
||||
/**
|
||||
* 根据用户名获取用户信息
|
||||
@@ -33,7 +33,7 @@ public class SysUserDetailsService implements UserDetailsService {
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
try {
|
||||
UserAuthInfo userAuthInfo = sysUserService.getUserAuthInfo(username);
|
||||
UserAuthInfo userAuthInfo = userService.getUserAuthInfo(username);
|
||||
if (userAuthInfo == null) {
|
||||
throw new UsernameNotFoundException(username);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.youlai.boot.infrastructure.auth.controller;
|
||||
package com.youlai.boot.platform.auth.controller;
|
||||
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.infrastructure.auth.service.AuthService;
|
||||
import com.youlai.boot.platform.auth.service.AuthService;
|
||||
import com.youlai.boot.system.model.dto.CaptchaResult;
|
||||
import com.youlai.boot.system.model.dto.LoginResult;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -30,7 +30,7 @@ public class AuthController {
|
||||
|
||||
@Operation(summary = "登录")
|
||||
@PostMapping("/login")
|
||||
@LogAnnotation(value = "登录", module = LogModuleEnum.LOGIN)
|
||||
@Log(value = "登录", module = LogModuleEnum.LOGIN)
|
||||
public Result<LoginResult> login(
|
||||
@Parameter(description = "用户名", example = "admin") @RequestParam String username,
|
||||
@Parameter(description = "密码", example = "123456") @RequestParam String password
|
||||
@@ -41,7 +41,7 @@ public class AuthController {
|
||||
|
||||
@Operation(summary = "注销")
|
||||
@DeleteMapping("/logout")
|
||||
@LogAnnotation(value = "注销", module = LogModuleEnum.LOGIN)
|
||||
@Log(value = "注销", module = LogModuleEnum.LOGIN)
|
||||
public Result<?> logout() {
|
||||
authService.logout();
|
||||
return Result.success();
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.auth.service;
|
||||
package com.youlai.boot.platform.auth.service;
|
||||
|
||||
import com.youlai.boot.system.model.dto.CaptchaResult;
|
||||
import com.youlai.boot.system.model.dto.LoginResult;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.auth.service.impl;
|
||||
package com.youlai.boot.platform.auth.service.impl;
|
||||
|
||||
import cn.hutool.captcha.AbstractCaptcha;
|
||||
import cn.hutool.captcha.CaptchaUtil;
|
||||
@@ -10,7 +10,7 @@ import cn.hutool.jwt.JWTPayload;
|
||||
import cn.hutool.jwt.JWTUtil;
|
||||
import com.youlai.boot.common.constant.SecurityConstants;
|
||||
import com.youlai.boot.common.enums.CaptchaTypeEnum;
|
||||
import com.youlai.boot.infrastructure.auth.service.AuthService;
|
||||
import com.youlai.boot.platform.auth.service.AuthService;
|
||||
import com.youlai.boot.system.model.dto.CaptchaResult;
|
||||
import com.youlai.boot.system.model.dto.LoginResult;
|
||||
import com.youlai.boot.config.property.CaptchaProperties;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.infrastructure.file.controller;
|
||||
package com.youlai.boot.platform.file.controller;
|
||||
|
||||
import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.infrastructure.file.service.FileService;
|
||||
import com.youlai.boot.platform.file.service.FileService;
|
||||
import com.youlai.boot.system.model.dto.FileInfo;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
@@ -30,7 +30,13 @@ public class FileController {
|
||||
@PostMapping
|
||||
@Operation(summary = "文件上传")
|
||||
public Result<FileInfo> uploadFile(
|
||||
@Parameter(name = "file", description = "表单文件对象", required = true, in = ParameterIn.DEFAULT, schema = @Schema(name = "file", format = "binary"))
|
||||
@Parameter(
|
||||
name = "file",
|
||||
description = "表单文件对象",
|
||||
required = true,
|
||||
in = ParameterIn.DEFAULT,
|
||||
schema = @Schema(name = "file", format = "binary")
|
||||
)
|
||||
@RequestPart(value = "file") MultipartFile file
|
||||
) {
|
||||
FileInfo fileInfo = fileService.uploadFile(file);
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.file.service;
|
||||
package com.youlai.boot.platform.file.service;
|
||||
|
||||
import com.youlai.boot.system.model.dto.FileInfo;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.file.service.impl;
|
||||
package com.youlai.boot.platform.file.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
@@ -8,7 +8,7 @@ import com.aliyun.oss.OSS;
|
||||
import com.aliyun.oss.OSSClientBuilder;
|
||||
import com.aliyun.oss.model.ObjectMetadata;
|
||||
import com.aliyun.oss.model.PutObjectRequest;
|
||||
import com.youlai.boot.infrastructure.file.service.FileService;
|
||||
import com.youlai.boot.platform.file.service.FileService;
|
||||
import com.youlai.boot.system.model.dto.FileInfo;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.Data;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.youlai.boot.infrastructure.file.service.impl;
|
||||
package com.youlai.boot.platform.file.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.youlai.boot.infrastructure.file.service.FileService;
|
||||
import com.youlai.boot.platform.file.service.FileService;
|
||||
import com.youlai.boot.system.model.dto.FileInfo;
|
||||
import io.minio.*;
|
||||
import io.minio.errors.*;
|
||||
@@ -1,16 +1,16 @@
|
||||
package com.youlai.boot.infrastructure.generator.controller;
|
||||
package com.youlai.boot.platform.generator.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.common.result.PageResult;
|
||||
import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.config.property.GeneratorProperties;
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.infrastructure.generator.service.GeneratorService;
|
||||
import com.youlai.boot.infrastructure.generator.model.form.GenConfigForm;
|
||||
import com.youlai.boot.platform.generator.service.GeneratorService;
|
||||
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -41,7 +41,7 @@ public class GeneratorController {
|
||||
|
||||
@Operation(summary = "获取数据表分页列表")
|
||||
@GetMapping("/table/page")
|
||||
@LogAnnotation(value = "代码生成分页列表", module = LogModuleEnum.OTHER)
|
||||
@Log(value = "代码生成分页列表", module = LogModuleEnum.OTHER)
|
||||
public PageResult<TablePageVO> getTablePage(
|
||||
TablePageQuery queryParams
|
||||
) {
|
||||
@@ -60,7 +60,7 @@ public class GeneratorController {
|
||||
|
||||
@Operation(summary = "保存代码生成配置")
|
||||
@PostMapping("/{tableName}/config")
|
||||
@LogAnnotation(value = "生成代码", module = LogModuleEnum.OTHER)
|
||||
@Log(value = "生成代码", module = LogModuleEnum.OTHER)
|
||||
public Result<?> saveGenConfig(@RequestBody GenConfigForm formData) {
|
||||
generatorService.saveGenConfig(formData);
|
||||
return Result.success();
|
||||
@@ -77,7 +77,7 @@ public class GeneratorController {
|
||||
|
||||
@Operation(summary = "获取预览生成代码")
|
||||
@GetMapping("/{tableName}/preview")
|
||||
@LogAnnotation(value = "预览生成代码", module = LogModuleEnum.OTHER)
|
||||
@Log(value = "预览生成代码", module = LogModuleEnum.OTHER)
|
||||
public Result<List<GeneratorPreviewVO>> getTablePreviewData(@PathVariable String tableName) {
|
||||
List<GeneratorPreviewVO> list = generatorService.getTablePreviewData(tableName);
|
||||
return Result.success(list);
|
||||
@@ -85,7 +85,7 @@ public class GeneratorController {
|
||||
|
||||
@Operation(summary = "下载代码")
|
||||
@GetMapping("/{tableName}/download")
|
||||
@LogAnnotation(value = "下载代码", module = LogModuleEnum.OTHER)
|
||||
@Log(value = "下载代码", module = LogModuleEnum.OTHER)
|
||||
public void downloadZip(HttpServletResponse response, @PathVariable String tableName) throws IOException {
|
||||
String[] tableNames = tableName.split(",");
|
||||
byte[] data = generatorService.downloadCode(tableNames);
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.youlai.boot.infrastructure.generator.mapper;
|
||||
package com.youlai.boot.platform.generator.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.bo.ColumnMetaData;
|
||||
import com.youlai.boot.system.model.bo.TableMetaData;
|
||||
import com.youlai.boot.system.model.entity.SysDept;
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -13,7 +13,7 @@ import java.util.List;
|
||||
|
||||
|
||||
@Mapper
|
||||
public interface DatabaseMapper extends BaseMapper<SysDept> {
|
||||
public interface DatabaseMapper extends BaseMapper<Dept> {
|
||||
|
||||
|
||||
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams);
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.infrastructure.generator.mapper;
|
||||
package com.youlai.boot.platform.generator.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.infrastructure.generator.mapper;
|
||||
package com.youlai.boot.platform.generator.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.generator.model.entity;
|
||||
package com.youlai.boot.platform.generator.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.generator.model.entity;
|
||||
package com.youlai.boot.platform.generator.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.generator.model.form;
|
||||
package com.youlai.boot.platform.generator.model.form;
|
||||
|
||||
import com.youlai.boot.common.enums.FormTypeEnum;
|
||||
import com.youlai.boot.common.enums.QueryTypeEnum;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.infrastructure.generator.service;
|
||||
package com.youlai.boot.platform.generator.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||
|
||||
/**
|
||||
* 代码生成配置接口
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.infrastructure.generator.service;
|
||||
package com.youlai.boot.platform.generator.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||
|
||||
/**
|
||||
* 代码生成配置接口
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.infrastructure.generator.service;
|
||||
package com.youlai.boot.platform.generator.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.infrastructure.generator.model.form.GenConfigForm;
|
||||
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.youlai.boot.infrastructure.generator.service.impl;
|
||||
package com.youlai.boot.platform.generator.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.infrastructure.generator.mapper.GenConfigMapper;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.infrastructure.generator.service.GenConfigService;
|
||||
import com.youlai.boot.platform.generator.mapper.GenConfigMapper;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.platform.generator.service.GenConfigService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.youlai.boot.infrastructure.generator.service.impl;
|
||||
package com.youlai.boot.platform.generator.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.infrastructure.generator.mapper.GenFieldConfigMapper;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.infrastructure.generator.service.GenFieldConfigService;
|
||||
import com.youlai.boot.platform.generator.mapper.GenFieldConfigMapper;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.platform.generator.service.GenFieldConfigService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.generator.service.impl;
|
||||
package com.youlai.boot.platform.generator.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
@@ -11,26 +11,26 @@ import cn.hutool.extra.template.TemplateEngine;
|
||||
import cn.hutool.extra.template.TemplateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.YouLaiBootApplication;
|
||||
import com.youlai.boot.YouLaiApplication;
|
||||
import com.youlai.boot.common.enums.FormTypeEnum;
|
||||
import com.youlai.boot.common.enums.JavaTypeEnum;
|
||||
import com.youlai.boot.common.enums.QueryTypeEnum;
|
||||
import com.youlai.boot.config.property.GeneratorProperties;
|
||||
import com.youlai.boot.infrastructure.generator.service.GenConfigService;
|
||||
import com.youlai.boot.infrastructure.generator.service.GenFieldConfigService;
|
||||
import com.youlai.boot.infrastructure.generator.service.GeneratorService;
|
||||
import com.youlai.boot.platform.generator.service.GenConfigService;
|
||||
import com.youlai.boot.platform.generator.service.GenFieldConfigService;
|
||||
import com.youlai.boot.platform.generator.service.GeneratorService;
|
||||
import com.youlai.boot.system.converter.GenConfigConverter;
|
||||
import com.youlai.boot.common.exception.BusinessException;
|
||||
import com.youlai.boot.infrastructure.generator.mapper.DatabaseMapper;
|
||||
import com.youlai.boot.platform.generator.mapper.DatabaseMapper;
|
||||
import com.youlai.boot.system.model.bo.ColumnMetaData;
|
||||
import com.youlai.boot.system.model.bo.TableMetaData;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.infrastructure.generator.model.form.GenConfigForm;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||
import com.youlai.boot.system.service.SysMenuService;
|
||||
import com.youlai.boot.system.service.MenuService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -58,7 +58,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
private final GenConfigService genConfigService;
|
||||
private final GenFieldConfigService genFieldConfigService;
|
||||
private final GenConfigConverter genConfigConverter;
|
||||
private final SysMenuService menuService;
|
||||
private final MenuService menuService;
|
||||
|
||||
@Value("${spring.profiles.active}")
|
||||
private String springProfilesActive;
|
||||
@@ -112,7 +112,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
String entityName = StrUtil.toCamelCase(StrUtil.removePrefix(tableName, tableName.split("_")[0]));
|
||||
genConfig.setEntityName(entityName);
|
||||
|
||||
String packageName = YouLaiBootApplication.class.getPackageName();
|
||||
String packageName = YouLaiApplication.class.getPackageName();
|
||||
genConfig.setPackageName(StrUtil.subBefore(packageName, ".", true));
|
||||
genConfig.setModuleName(StrUtil.subAfter(packageName, ".", true));
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.youlai.boot.platform.mail.controller;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 邮件控制层
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2.10.0
|
||||
*/
|
||||
@RestController
|
||||
public class MailController {
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.mail.service;
|
||||
package com.youlai.boot.platform.mail.service;
|
||||
|
||||
/**
|
||||
* 邮件服务接口层
|
||||
@@ -16,7 +16,7 @@ public interface MailService {
|
||||
* @param subject 邮件主题
|
||||
* @param text 邮件内容
|
||||
*/
|
||||
boolean sendSimpleMail(String to, String subject, String text) ;
|
||||
void sendMail(String to, String subject, String text) ;
|
||||
|
||||
/**
|
||||
* 发送带附件的邮件
|
||||
@@ -26,6 +26,6 @@ public interface MailService {
|
||||
* @param text 邮件内容
|
||||
* @param filePath 附件路径
|
||||
*/
|
||||
boolean sendMailWithAttachment(String to, String subject, String text, String filePath);
|
||||
void sendMailWithAttachment(String to, String subject, String text, String filePath);
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.infrastructure.mail.service.impl;
|
||||
package com.youlai.boot.platform.mail.service.impl;
|
||||
|
||||
import com.youlai.boot.config.property.MailProperties;
|
||||
import com.youlai.boot.infrastructure.mail.service.MailService;
|
||||
import com.youlai.boot.platform.mail.service.MailService;
|
||||
import jakarta.mail.MessagingException;
|
||||
import jakarta.mail.internet.MimeMessage;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -37,7 +37,7 @@ public class MailServiceImpl implements MailService {
|
||||
* @param text 邮件内容
|
||||
*/
|
||||
@Override
|
||||
public boolean sendSimpleMail(String to, String subject, String text) {
|
||||
public void sendMail(String to, String subject, String text) {
|
||||
try {
|
||||
SimpleMailMessage message = new SimpleMailMessage();
|
||||
message.setFrom(mailProperties.getFrom());
|
||||
@@ -45,11 +45,8 @@ public class MailServiceImpl implements MailService {
|
||||
message.setSubject(subject);
|
||||
message.setText(text);
|
||||
mailSender.send(message);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("发送邮件失败{}", e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +59,7 @@ public class MailServiceImpl implements MailService {
|
||||
* @param filePath 附件路径
|
||||
*/
|
||||
@Override
|
||||
public boolean sendMailWithAttachment(String to, String subject, String text, String filePath) {
|
||||
public void sendMailWithAttachment(String to, String subject, String text, String filePath) {
|
||||
MimeMessage message = mailSender.createMimeMessage();
|
||||
try {
|
||||
MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
||||
@@ -75,9 +72,8 @@ public class MailServiceImpl implements MailService {
|
||||
helper.addAttachment(file.getFilename(), file);
|
||||
|
||||
mailSender.send(message);
|
||||
return true;
|
||||
} catch (MessagingException e) {
|
||||
return false;
|
||||
log.error("发送邮件失败{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.youlai.boot.platform.sms.controller;
|
||||
|
||||
import com.youlai.boot.platform.sms.service.SmsService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 短信控制层
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2.10.0
|
||||
*/
|
||||
public class SmsController {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.sms.service;
|
||||
package com.youlai.boot.platform.sms.service;
|
||||
|
||||
/**
|
||||
* 短信服务接口层
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.infrastructure.sms.service.impl;
|
||||
package com.youlai.boot.platform.sms.service.impl;
|
||||
|
||||
import com.aliyuncs.CommonRequest;
|
||||
import com.aliyuncs.CommonResponse;
|
||||
@@ -9,7 +9,7 @@ import com.aliyuncs.exceptions.ServerException;
|
||||
import com.aliyuncs.http.MethodType;
|
||||
import com.aliyuncs.profile.DefaultProfile;
|
||||
import com.youlai.boot.config.property.AliyunSmsProperties;
|
||||
import com.youlai.boot.infrastructure.sms.service.SmsService;
|
||||
import com.youlai.boot.platform.sms.service.SmsService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.system.controller;
|
||||
package com.youlai.boot.platform.websocket.controller;
|
||||
|
||||
import com.youlai.boot.system.model.dto.ChatMessage;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.boot.system.service;
|
||||
package com.youlai.boot.platform.websocket.service;
|
||||
|
||||
public interface WebsocketService {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.service.impl;
|
||||
package com.youlai.boot.platform.websocket.service.impl;
|
||||
|
||||
import com.youlai.boot.system.event.UserConnectionEvent;
|
||||
import com.youlai.boot.system.service.WebsocketService;
|
||||
import com.youlai.boot.platform.websocket.service.WebsocketService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.event.EventListener;
|
||||
@@ -6,7 +6,7 @@ import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import com.youlai.boot.system.model.query.ConfigPageQuery;
|
||||
import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
import com.youlai.boot.system.service.SysConfigService;
|
||||
import com.youlai.boot.system.service.ConfigService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -29,15 +29,15 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
||||
@RequiredArgsConstructor
|
||||
@Tag(name = "10.系统配置")
|
||||
@RequestMapping("/api/v1/config")
|
||||
public class SysConfigController {
|
||||
public class ConfigController {
|
||||
|
||||
private final SysConfigService sysConfigService;
|
||||
private final ConfigService configService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "系统配置分页列表")
|
||||
@PreAuthorize("@ss.hasPerm('sys:config:query')")
|
||||
public PageResult<ConfigVO> page(@ParameterObject ConfigPageQuery configPageQuery) {
|
||||
IPage<ConfigVO> result = sysConfigService.page(configPageQuery);
|
||||
IPage<ConfigVO> result = configService.page(configPageQuery);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ public class SysConfigController {
|
||||
@PostMapping
|
||||
@PreAuthorize("@ss.hasPerm('sys:config:add')")
|
||||
public Result<?> save(@RequestBody @Valid ConfigForm configForm) {
|
||||
return Result.judge(sysConfigService.save(configForm));
|
||||
return Result.judge(configService.save(configForm));
|
||||
}
|
||||
|
||||
@Operation(summary = "获取系统配置表单数据")
|
||||
@@ -53,7 +53,7 @@ public class SysConfigController {
|
||||
public Result<ConfigForm> getConfigForm(
|
||||
@Parameter(description = "系统配置ID") @PathVariable Long id
|
||||
) {
|
||||
ConfigForm formData = sysConfigService.getConfigFormData(id);
|
||||
ConfigForm formData = configService.getConfigFormData(id);
|
||||
return Result.success(formData);
|
||||
}
|
||||
|
||||
@@ -61,21 +61,21 @@ public class SysConfigController {
|
||||
@PatchMapping
|
||||
@PreAuthorize("@ss.hasPerm('sys:config:refresh')")
|
||||
public Result<ConfigForm> refreshCache() {
|
||||
return Result.judge(sysConfigService.refreshCache());
|
||||
return Result.judge(configService.refreshCache());
|
||||
}
|
||||
|
||||
@PutMapping(value = "/{id}")
|
||||
@Operation(summary = "修改系统配置")
|
||||
@PreAuthorize("@ss.hasPerm('sys:config:update')")
|
||||
public Result<?> update(@Valid @PathVariable Long id, @RequestBody ConfigForm configForm) {
|
||||
return Result.judge(sysConfigService.edit(id, configForm));
|
||||
return Result.judge(configService.edit(id, configForm));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
@Operation(summary = "删除系统配置")
|
||||
@PreAuthorize("@ss.hasPerm('sys:config:delete')")
|
||||
public Result<?> delete(@PathVariable Long id) {
|
||||
return Result.judge(sysConfigService.delete(id));
|
||||
return Result.judge(configService.delete(id));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.youlai.boot.system.controller;
|
||||
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.common.annotation.NoRepeat;
|
||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import com.youlai.boot.system.model.query.DeptQuery;
|
||||
import com.youlai.boot.system.model.vo.DeptVO;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.system.service.SysDeptService;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.system.service.DeptService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -29,13 +29,13 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/dept")
|
||||
@RequiredArgsConstructor
|
||||
public class SysDeptController {
|
||||
public class DeptController {
|
||||
|
||||
private final SysDeptService deptService;
|
||||
private final DeptService deptService;
|
||||
|
||||
@Operation(summary = "部门列表")
|
||||
@GetMapping
|
||||
@LogAnnotation( value = "部门列表",module = LogModuleEnum.DEPT)
|
||||
@Log( value = "部门列表",module = LogModuleEnum.DEPT)
|
||||
public Result<List<DeptVO>> getDeptList(
|
||||
DeptQuery queryParams
|
||||
) {
|
||||
@@ -53,7 +53,7 @@ public class SysDeptController {
|
||||
@Operation(summary = "新增部门")
|
||||
@PostMapping
|
||||
@PreAuthorize("@ss.hasPerm('sys:dept:add')")
|
||||
@NoRepeat
|
||||
@RepeatSubmit
|
||||
public Result<?> saveDept(
|
||||
@Valid @RequestBody DeptForm formData
|
||||
) {
|
||||
@@ -7,10 +7,10 @@ import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import com.youlai.boot.common.annotation.NoRepeat;
|
||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.system.service.SysDictService;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.system.service.DictService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -30,13 +30,13 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/dict")
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictController {
|
||||
public class DictController {
|
||||
|
||||
private final SysDictService dictService;
|
||||
private final DictService dictService;
|
||||
|
||||
@Operation(summary = "字典分页列表")
|
||||
@GetMapping("/page")
|
||||
@LogAnnotation( value = "字典分页列表",module = LogModuleEnum.DICT)
|
||||
@Log( value = "字典分页列表",module = LogModuleEnum.DICT)
|
||||
public PageResult<DictPageVO> getDictPage(
|
||||
DictPageQuery queryParams
|
||||
) {
|
||||
@@ -72,7 +72,7 @@ public class SysDictController {
|
||||
@Operation(summary = "新增字典")
|
||||
@PostMapping
|
||||
@PreAuthorize("@ss.hasPerm('sys:dict:add')")
|
||||
@NoRepeat
|
||||
@RepeatSubmit
|
||||
public Result<?> saveDict(@RequestBody DictForm formData) {
|
||||
boolean result = dictService.saveDict(formData);
|
||||
return Result.judge(result);
|
||||
@@ -7,7 +7,7 @@ import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVO;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVO;
|
||||
import com.youlai.boot.system.service.SysLogService;
|
||||
import com.youlai.boot.system.service.LogService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -28,9 +28,9 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/logs")
|
||||
@RequiredArgsConstructor
|
||||
public class SysLogController {
|
||||
public class LogController {
|
||||
|
||||
private final SysLogService logService;
|
||||
private final LogService logService;
|
||||
|
||||
@Operation(summary = "日志分页列表")
|
||||
@GetMapping("/page")
|
||||
@@ -2,15 +2,15 @@ package com.youlai.boot.system.controller;
|
||||
|
||||
import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.common.annotation.NoRepeat;
|
||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||
import com.youlai.boot.system.model.form.MenuForm;
|
||||
import com.youlai.boot.system.model.query.MenuQuery;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.vo.RouteVO;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||
import com.youlai.boot.system.service.SysMenuService;
|
||||
import com.youlai.boot.system.service.MenuService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -33,13 +33,13 @@ import java.util.Set;
|
||||
@RequestMapping("/api/v1/menus")
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SysMenuController {
|
||||
public class MenuController {
|
||||
|
||||
private final SysMenuService menuService;
|
||||
private final MenuService menuService;
|
||||
|
||||
@Operation(summary = "菜单列表")
|
||||
@GetMapping
|
||||
@LogAnnotation( value = "菜单列表",module = LogModuleEnum.MENU)
|
||||
@Log( value = "菜单列表",module = LogModuleEnum.MENU)
|
||||
public Result<List<MenuVO>> listMenus(MenuQuery queryParams) {
|
||||
List<MenuVO> menuList = menuService.listMenus(queryParams);
|
||||
return Result.success(menuList);
|
||||
@@ -75,7 +75,7 @@ public class SysMenuController {
|
||||
@Operation(summary = "新增菜单")
|
||||
@PostMapping
|
||||
@PreAuthorize("@ss.hasPerm('sys:menu:add')")
|
||||
@NoRepeat
|
||||
@RepeatSubmit
|
||||
public Result<?> addMenu(@RequestBody MenuForm menuForm) {
|
||||
boolean result = menuService.saveMenu(menuForm);
|
||||
return Result.judge(result);
|
||||
@@ -2,15 +2,15 @@ package com.youlai.boot.system.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.common.annotation.NoRepeat;
|
||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.common.result.PageResult;
|
||||
import com.youlai.boot.common.result.Result;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
import com.youlai.boot.system.model.query.RolePageQuery;
|
||||
import com.youlai.boot.system.model.vo.RolePageVO;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.system.service.SysRoleService;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.system.service.RoleService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -33,13 +33,13 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/roles")
|
||||
@RequiredArgsConstructor
|
||||
public class SysRoleController {
|
||||
public class RoleController {
|
||||
|
||||
private final SysRoleService roleService;
|
||||
private final RoleService roleService;
|
||||
|
||||
@Operation(summary = "角色分页列表")
|
||||
@GetMapping("/page")
|
||||
@LogAnnotation( value = "角色分页列表",module = LogModuleEnum.ROLE)
|
||||
@Log( value = "角色分页列表",module = LogModuleEnum.ROLE)
|
||||
public PageResult<RolePageVO> getRolePage(
|
||||
RolePageQuery queryParams
|
||||
) {
|
||||
@@ -57,7 +57,7 @@ public class SysRoleController {
|
||||
@Operation(summary = "新增角色")
|
||||
@PostMapping
|
||||
@PreAuthorize("@ss.hasPerm('sys:role:add')")
|
||||
@NoRepeat
|
||||
@RepeatSubmit
|
||||
public Result<?> addRole(@Valid @RequestBody RoleForm roleForm) {
|
||||
boolean result = roleService.saveRole(roleForm);
|
||||
return Result.judge(result);
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.ExcelWriter;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.form.*;
|
||||
import com.youlai.boot.common.result.PageResult;
|
||||
import com.youlai.boot.common.result.Result;
|
||||
@@ -13,15 +14,14 @@ import com.youlai.boot.core.security.util.SecurityUtils;
|
||||
import com.youlai.boot.common.util.ExcelUtils;
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.system.model.dto.UserImportDTO;
|
||||
import com.youlai.boot.common.annotation.NoRepeat;
|
||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||
import com.youlai.boot.system.listener.UserImportListener;
|
||||
import com.youlai.boot.system.model.entity.SysUser;
|
||||
import com.youlai.boot.system.model.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.dto.UserExportDTO;
|
||||
import com.youlai.boot.system.model.vo.UserInfoVO;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
import com.youlai.boot.common.annotation.LogAnnotation;
|
||||
import com.youlai.boot.system.service.SysUserService;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.system.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -52,13 +52,13 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/users")
|
||||
@RequiredArgsConstructor
|
||||
public class SysUserController {
|
||||
public class UserController {
|
||||
|
||||
private final SysUserService userService;
|
||||
private final UserService userService;
|
||||
|
||||
@Operation(summary = "用户分页列表")
|
||||
@GetMapping("/page")
|
||||
@LogAnnotation(value = "用户分页列表", module = LogModuleEnum.USER)
|
||||
@Log(value = "用户分页列表", module = LogModuleEnum.USER)
|
||||
public PageResult<UserPageVO> listPagedUsers(
|
||||
UserPageQuery queryParams
|
||||
) {
|
||||
@@ -69,7 +69,7 @@ public class SysUserController {
|
||||
@Operation(summary = "新增用户")
|
||||
@PostMapping
|
||||
@PreAuthorize("@ss.hasPerm('sys:user:add')")
|
||||
@NoRepeat
|
||||
@RepeatSubmit
|
||||
public Result<?> saveUser(
|
||||
@RequestBody @Valid UserForm userForm
|
||||
) {
|
||||
@@ -112,9 +112,9 @@ public class SysUserController {
|
||||
@Parameter(description = "用户ID") @PathVariable Long userId,
|
||||
@Parameter(description = "用户状态(1:启用;0:禁用)") @RequestParam Integer status
|
||||
) {
|
||||
boolean result = userService.update(new LambdaUpdateWrapper<SysUser>()
|
||||
.eq(SysUser::getId, userId)
|
||||
.set(SysUser::getStatus, status)
|
||||
boolean result = userService.update(new LambdaUpdateWrapper<User>()
|
||||
.eq(User::getId, userId)
|
||||
.set(User::getStatus, status)
|
||||
);
|
||||
return Result.judge(result);
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.SysConfig;
|
||||
import com.youlai.boot.system.model.entity.Config;
|
||||
import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -15,9 +15,9 @@ import org.mapstruct.Mapper;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ConfigConverter {
|
||||
|
||||
Page<ConfigVO> toPageVo(Page<SysConfig> page);
|
||||
Page<ConfigVO> toPageVo(Page<Config> page);
|
||||
|
||||
SysConfig toEntity(ConfigForm configForm);
|
||||
Config toEntity(ConfigForm configForm);
|
||||
|
||||
ConfigForm toForm(SysConfig entity);
|
||||
ConfigForm toForm(Config entity);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.youlai.boot.system.model.entity.SysDept;
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.system.model.vo.DeptVO;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -14,10 +14,10 @@ import org.mapstruct.Mapper;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DeptConverter {
|
||||
|
||||
DeptForm toForm(SysDept entity);
|
||||
DeptForm toForm(Dept entity);
|
||||
|
||||
DeptVO toVo(SysDept entity);
|
||||
DeptVO toVo(Dept entity);
|
||||
|
||||
SysDept toEntity(DeptForm deptForm);
|
||||
Dept toEntity(DeptForm deptForm);
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.SysDict;
|
||||
import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -15,9 +15,9 @@ import org.mapstruct.Mapper;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DictConverter {
|
||||
|
||||
Page<DictPageVO> toPageVo(Page<SysDict> page);
|
||||
Page<DictPageVO> toPageVo(Page<Dict> page);
|
||||
|
||||
DictForm toForm(SysDict entity);
|
||||
DictForm toForm(Dict entity);
|
||||
|
||||
SysDict toEntity(DictForm entity);
|
||||
Dict toEntity(DictForm entity);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.SysDictItem;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
@@ -20,20 +20,20 @@ import java.util.List;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DictItemConverter {
|
||||
|
||||
Page<DictPageVO> toPageVo(Page<SysDictItem> page);
|
||||
Page<DictPageVO> toPageVo(Page<DictItem> page);
|
||||
|
||||
DictForm toForm(SysDictItem entity);
|
||||
DictForm toForm(DictItem entity);
|
||||
|
||||
SysDictItem toEntity(DictForm.DictItem dictItems);
|
||||
List<SysDictItem> toEntity(List<DictForm.DictItem> dictItems);
|
||||
DictItem toEntity(DictForm.DictItem dictItems);
|
||||
List<DictItem> toEntity(List<DictForm.DictItem> dictItems);
|
||||
|
||||
DictForm.DictItem toDictItem(SysDictItem entity);
|
||||
List<DictForm.DictItem> toDictItem(List<SysDictItem> entities);
|
||||
DictForm.DictItem toDictItem(DictItem entity);
|
||||
List<DictForm.DictItem> toDictItem(List<DictItem> entities);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "value", source = "value"),
|
||||
@Mapping(target = "label", source = "name")
|
||||
})
|
||||
Option<Long> toOption(SysDictItem dictItem);
|
||||
List<Option<Long>> toOption(List<SysDictItem> dictItems);
|
||||
Option<Long> toOption(DictItem dictItem);
|
||||
List<Option<Long>> toOption(List<DictItem> dictItems);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.infrastructure.generator.model.form.GenConfigForm;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.youlai.boot.system.model.entity.SysMenu;
|
||||
import com.youlai.boot.system.model.entity.Menu;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
import com.youlai.boot.system.model.form.MenuForm;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -15,12 +15,12 @@ import org.mapstruct.Mapping;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface MenuConverter {
|
||||
|
||||
MenuVO toVo(SysMenu entity);
|
||||
MenuVO toVo(Menu entity);
|
||||
|
||||
@Mapping(target = "params", ignore = true)
|
||||
MenuForm toForm(SysMenu entity);
|
||||
MenuForm toForm(Menu entity);
|
||||
|
||||
@Mapping(target = "params", ignore = true)
|
||||
SysMenu toEntity(MenuForm menuForm);
|
||||
Menu toEntity(MenuForm menuForm);
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.SysRole;
|
||||
import com.youlai.boot.system.model.entity.Role;
|
||||
import com.youlai.boot.system.model.vo.RolePageVO;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
@@ -20,17 +20,17 @@ import java.util.List;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface RoleConverter {
|
||||
|
||||
Page<RolePageVO> toPageVo(Page<SysRole> page);
|
||||
Page<RolePageVO> toPageVo(Page<Role> page);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "value", source = "id"),
|
||||
@Mapping(target = "label", source = "name")
|
||||
})
|
||||
Option<Long> entity2Option(SysRole role);
|
||||
Option<Long> entity2Option(Role role);
|
||||
|
||||
List<Option<Long>> entities2Options(List<SysRole> roles);
|
||||
List<Option<Long>> entities2Options(List<Role> roles);
|
||||
|
||||
SysRole toEntity(RoleForm roleForm);
|
||||
Role toEntity(RoleForm roleForm);
|
||||
|
||||
RoleForm toForm(SysRole entity);
|
||||
RoleForm toForm(Role entity);
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.SysUser;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.vo.UserInfoVO;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVO;
|
||||
@@ -30,20 +30,20 @@ public interface UserConverter {
|
||||
|
||||
Page<UserPageVO> toPageVo(Page<UserBO> bo);
|
||||
|
||||
UserForm toForm(SysUser entity);
|
||||
UserForm toForm(User entity);
|
||||
|
||||
@InheritInverseConfiguration(name = "toForm")
|
||||
SysUser toEntity(UserForm entity);
|
||||
User toEntity(UserForm entity);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "userId", source = "id")
|
||||
})
|
||||
UserInfoVO toUserInfoVo(SysUser entity);
|
||||
UserInfoVO toUserInfoVo(User entity);
|
||||
|
||||
SysUser toEntity(UserImportDTO vo);
|
||||
User toEntity(UserImportDTO vo);
|
||||
|
||||
|
||||
UserProfileVO toProfileVO(UserBO bo);
|
||||
|
||||
SysUser toEntity(UserProfileForm formData);
|
||||
User toEntity(UserProfileForm formData);
|
||||
}
|
||||
|
||||
@@ -8,20 +8,20 @@ import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.excel.context.AnalysisContext;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.youlai.boot.common.base.BaseAnalysisEventListener;
|
||||
import com.youlai.boot.system.model.entity.SysDept;
|
||||
import com.youlai.boot.system.model.entity.SysRole;
|
||||
import com.youlai.boot.system.model.entity.SysUser;
|
||||
import com.youlai.boot.system.model.entity.SysUserRole;
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.system.model.entity.Role;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.entity.UserRole;
|
||||
import com.youlai.boot.common.base.IBaseEnum;
|
||||
import com.youlai.boot.common.constant.SystemConstants;
|
||||
import com.youlai.boot.common.enums.GenderEnum;
|
||||
import com.youlai.boot.common.enums.StatusEnum;
|
||||
import com.youlai.boot.system.converter.UserConverter;
|
||||
import com.youlai.boot.system.model.dto.UserImportDTO;
|
||||
import com.youlai.boot.system.service.SysDeptService;
|
||||
import com.youlai.boot.system.service.SysRoleService;
|
||||
import com.youlai.boot.system.service.SysUserRoleService;
|
||||
import com.youlai.boot.system.service.SysUserService;
|
||||
import com.youlai.boot.system.service.DeptService;
|
||||
import com.youlai.boot.system.service.RoleService;
|
||||
import com.youlai.boot.system.service.UserRoleService;
|
||||
import com.youlai.boot.system.service.UserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
|
||||
@@ -49,19 +49,19 @@ public class UserImportListener extends BaseAnalysisEventListener<UserImportDTO>
|
||||
// 导入返回信息
|
||||
StringBuilder msg = new StringBuilder();
|
||||
|
||||
private final SysUserService userService;
|
||||
private final UserService userService;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
private final UserConverter userConverter;
|
||||
private final SysRoleService roleService;
|
||||
private final SysUserRoleService userRoleService;
|
||||
private final SysDeptService deptService;
|
||||
private final RoleService roleService;
|
||||
private final UserRoleService userRoleService;
|
||||
private final DeptService deptService;
|
||||
|
||||
public UserImportListener() {
|
||||
this.userService = SpringUtil.getBean(SysUserService.class);
|
||||
this.userService = SpringUtil.getBean(UserService.class);
|
||||
this.passwordEncoder = SpringUtil.getBean(PasswordEncoder.class);
|
||||
this.roleService = SpringUtil.getBean(SysRoleService.class);
|
||||
this.userRoleService = SpringUtil.getBean(SysUserRoleService.class);
|
||||
this.deptService = SpringUtil.getBean(SysDeptService.class);
|
||||
this.roleService = SpringUtil.getBean(RoleService.class);
|
||||
this.userRoleService = SpringUtil.getBean(UserRoleService.class);
|
||||
this.deptService = SpringUtil.getBean(DeptService.class);
|
||||
this.userConverter = SpringUtil.getBean(UserConverter.class);
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ public class UserImportListener extends BaseAnalysisEventListener<UserImportDTO>
|
||||
if (StrUtil.isBlank(username)) {
|
||||
validationMsg.append("用户名为空;");
|
||||
} else {
|
||||
long count = userService.count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username));
|
||||
long count = userService.count(new LambdaQueryWrapper<User>().eq(User::getUsername, username));
|
||||
if (count > 0) {
|
||||
validationMsg.append("用户名已存在;");
|
||||
}
|
||||
@@ -105,7 +105,7 @@ public class UserImportListener extends BaseAnalysisEventListener<UserImportDTO>
|
||||
|
||||
if (validationMsg.isEmpty()) {
|
||||
// 校验通过,持久化至数据库
|
||||
SysUser entity = userConverter.toEntity(userImportDTO);
|
||||
User entity = userConverter.toEntity(userImportDTO);
|
||||
entity.setPassword(passwordEncoder.encode(SystemConstants.DEFAULT_PASSWORD)); // 默认密码
|
||||
// 性别翻译
|
||||
String genderLabel = userImportDTO.getGenderLabel();
|
||||
@@ -119,19 +119,19 @@ public class UserImportListener extends BaseAnalysisEventListener<UserImportDTO>
|
||||
List<Long> roleIds = null;
|
||||
if (StrUtil.isNotBlank(roleCodes)) {
|
||||
roleIds = roleService.list(
|
||||
new LambdaQueryWrapper<SysRole>()
|
||||
.in(SysRole::getCode, (Object) roleCodes.split(","))
|
||||
.eq(SysRole::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(SysRole::getId)
|
||||
new LambdaQueryWrapper<Role>()
|
||||
.in(Role::getCode, (Object) roleCodes.split(","))
|
||||
.eq(Role::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(Role::getId)
|
||||
).stream()
|
||||
.map(SysRole::getId)
|
||||
.map(Role::getId)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
// 部门解析
|
||||
String deptCode = userImportDTO.getDeptCode();
|
||||
if (StrUtil.isNotBlank(deptCode)) {
|
||||
SysDept dept = deptService.getOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getCode, deptCode)
|
||||
.select(SysDept::getId)
|
||||
Dept dept = deptService.getOne(new LambdaQueryWrapper<Dept>().eq(Dept::getCode, deptCode)
|
||||
.select(Dept::getId)
|
||||
);
|
||||
if (dept != null) {
|
||||
entity.setDeptId(dept.getId());
|
||||
@@ -144,8 +144,8 @@ public class UserImportListener extends BaseAnalysisEventListener<UserImportDTO>
|
||||
validCount++;
|
||||
// 保存用户角色关联
|
||||
if (CollectionUtil.isNotEmpty(roleIds)) {
|
||||
List<SysUserRole> userRoles = roleIds.stream()
|
||||
.map(roleId -> new SysUserRole(entity.getId(), roleId))
|
||||
List<UserRole> userRoles = roleIds.stream()
|
||||
.map(roleId -> new UserRole(entity.getId(), roleId))
|
||||
.collect(Collectors.toList());
|
||||
userRoleService.saveBatch(userRoles);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.system.model.entity.SysConfig;
|
||||
import com.youlai.boot.system.model.entity.Config;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -11,6 +11,6 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @since 2024-7-29 11:41:04
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysConfigMapper extends BaseMapper<SysConfig> {
|
||||
public interface ConfigMapper extends BaseMapper<Config> {
|
||||
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.youlai.boot.common.annotation.DataPermission;
|
||||
import com.youlai.boot.system.model.entity.SysDept;
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -12,9 +12,9 @@ import java.util.List;
|
||||
|
||||
|
||||
@Mapper
|
||||
public interface SysDeptMapper extends BaseMapper<SysDept> {
|
||||
public interface DeptMapper extends BaseMapper<Dept> {
|
||||
|
||||
@DataPermission(deptIdColumnName = "id")
|
||||
@Override
|
||||
List<SysDept> selectList(@Param(Constants.WRAPPER) Wrapper<SysDept> queryWrapper);
|
||||
List<Dept> selectList(@Param(Constants.WRAPPER) Wrapper<Dept> queryWrapper);
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.system.model.entity.SysDictItem;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @since 2.9.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
|
||||
public interface DictItemMapper extends BaseMapper<DictItem> {
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.SysDict;
|
||||
import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @since 2.9.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysDictMapper extends BaseMapper<SysDict> {
|
||||
public interface DictMapper extends BaseMapper<Dict> {
|
||||
|
||||
/**
|
||||
* 字典分页列表
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.bo.VisitCount;
|
||||
import com.youlai.boot.system.model.entity.SysLog;
|
||||
import com.youlai.boot.system.model.entity.Log;
|
||||
import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVO;
|
||||
@@ -19,7 +19,7 @@ import java.util.List;
|
||||
* @since 2.10.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysLogMapper extends BaseMapper<SysLog> {
|
||||
public interface LogMapper extends BaseMapper<Log> {
|
||||
|
||||
/**
|
||||
* 获取日志分页列表
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.system.model.bo.RouteBO;
|
||||
import com.youlai.boot.system.model.entity.SysMenu;
|
||||
import com.youlai.boot.system.model.entity.Menu;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@@ -16,7 +16,7 @@ import java.util.Set;
|
||||
*/
|
||||
|
||||
@Mapper
|
||||
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||
public interface MenuMapper extends BaseMapper<Menu> {
|
||||
|
||||
/**
|
||||
* 获取菜单路由列表
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.system.model.entity.SysRole;
|
||||
import com.youlai.boot.system.model.entity.Role;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Mapper
|
||||
public interface SysRoleMapper extends BaseMapper<SysRole> {
|
||||
public interface RoleMapper extends BaseMapper<Role> {
|
||||
|
||||
|
||||
/**
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.system.model.bo.RolePermsBO;
|
||||
import com.youlai.boot.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.boot.system.model.entity.RoleMenu;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@@ -15,7 +15,7 @@ import java.util.Set;
|
||||
* @since 2022/6/4
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
|
||||
public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
|
||||
|
||||
/**
|
||||
* 获取角色拥有的菜单ID集合
|
||||
@@ -3,7 +3,7 @@ package com.youlai.boot.system.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.bo.UserBO;
|
||||
import com.youlai.boot.system.model.entity.SysUser;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.form.UserForm;
|
||||
import com.youlai.boot.common.annotation.DataPermission;
|
||||
@@ -20,7 +20,7 @@ import java.util.List;
|
||||
* @since 2022/1/14
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysUserMapper extends BaseMapper<SysUser> {
|
||||
public interface UserMapper extends BaseMapper<User> {
|
||||
|
||||
/**
|
||||
* 获取用户分页列表
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.system.model.entity.SysUserRole;
|
||||
import com.youlai.boot.system.model.entity.UserRole;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @since 2022/1/15
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
|
||||
public interface UserRoleMapper extends BaseMapper<UserRole> {
|
||||
|
||||
/**
|
||||
* 获取角色绑定的用户数
|
||||
@@ -14,7 +14,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@Schema(description = "系统配置")
|
||||
@TableName("sys_config")
|
||||
@Data
|
||||
public class SysConfig extends BaseEntity {
|
||||
public class Config extends BaseEntity {
|
||||
|
||||
@Schema(description = "配置名称")
|
||||
private String configName;
|
||||
@@ -1,18 +1,20 @@
|
||||
package com.youlai.boot.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.youlai.boot.common.base.BaseEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 部门 实体
|
||||
* 部门实体
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2024/06/23
|
||||
*/
|
||||
@TableName("sys_dept")
|
||||
@Getter
|
||||
@Setter
|
||||
public class SysDept extends BaseEntity {
|
||||
public class Dept extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.youlai.boot.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.youlai.boot.common.base.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -9,8 +10,9 @@ import lombok.Data;
|
||||
* @author haoxr
|
||||
* @since 2022/12/17
|
||||
*/
|
||||
@TableName("sys_dict")
|
||||
@Data
|
||||
public class SysDict extends BaseEntity {
|
||||
public class Dict extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -13,8 +14,9 @@ import lombok.Data;
|
||||
* @author haoxr
|
||||
* @since 2022/12/17
|
||||
*/
|
||||
@TableName("sys_dict_item")
|
||||
@Data
|
||||
public class SysDictItem implements Serializable {
|
||||
public class DictItem implements Serializable {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@@ -14,8 +14,9 @@ import lombok.Data;
|
||||
* @author Ray
|
||||
* @since 2.10.0
|
||||
*/
|
||||
@TableName("sys_log")
|
||||
@Data
|
||||
public class SysLog implements Serializable {
|
||||
public class Log implements Serializable {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@@ -9,14 +9,15 @@ import lombok.Setter;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 菜单 实体
|
||||
* 菜单实体
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2023/3/6
|
||||
*/
|
||||
@TableName("sys_menu")
|
||||
@Getter
|
||||
@Setter
|
||||
public class SysMenu {
|
||||
public class Menu {
|
||||
/**
|
||||
* 菜单ID
|
||||
*/
|
||||
@@ -1,18 +1,20 @@
|
||||
package com.youlai.boot.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.youlai.boot.common.base.BaseEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 角色 实体
|
||||
* 角色实体
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2024/6/23
|
||||
*/
|
||||
@TableName("sys_role")
|
||||
@Getter
|
||||
@Setter
|
||||
public class SysRole extends BaseEntity {
|
||||
public class Role extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.youlai.boot.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -9,10 +10,11 @@ import lombok.NoArgsConstructor;
|
||||
/**
|
||||
* 角色和菜单关联表
|
||||
*/
|
||||
@TableName("sys_role_menu")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SysRoleMenu {
|
||||
public class RoleMenu {
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
@@ -1,15 +1,17 @@
|
||||
package com.youlai.boot.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.youlai.boot.common.base.BaseEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 用户 实体
|
||||
* 用户实体
|
||||
*/
|
||||
@TableName("sys_user")
|
||||
@Getter
|
||||
@Setter
|
||||
public class SysUser extends BaseEntity {
|
||||
public class User extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.youlai.boot.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -12,10 +13,11 @@ import lombok.NoArgsConstructor;
|
||||
* @author haoxr
|
||||
* @since 2022/12/17
|
||||
*/
|
||||
@TableName("sys_user_role")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SysUserRole {
|
||||
public class UserRole {
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.SysConfig;
|
||||
import com.youlai.boot.system.model.entity.Config;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import com.youlai.boot.system.model.query.ConfigPageQuery;
|
||||
import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
@@ -13,7 +13,7 @@ import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
* @author Theo
|
||||
* @since 2024-07-29 11:17:26
|
||||
*/
|
||||
public interface SysConfigService extends IService<SysConfig> {
|
||||
public interface ConfigService extends IService<Config> {
|
||||
|
||||
/**
|
||||
* 分页查询系统配置
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.SysDept;
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import com.youlai.boot.system.model.query.DeptQuery;
|
||||
@@ -15,7 +15,7 @@ import java.util.List;
|
||||
* @author haoxr
|
||||
* @since 2021/8/22
|
||||
*/
|
||||
public interface SysDeptService extends IService<SysDept> {
|
||||
public interface DeptService extends IService<Dept> {
|
||||
/**
|
||||
* 部门列表
|
||||
*
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.SysDictItem;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
|
||||
/**
|
||||
* 字典项 接口
|
||||
@@ -9,6 +9,6 @@ import com.youlai.boot.system.model.entity.SysDictItem;
|
||||
* @author Ray Hao
|
||||
* @since 2023/3/4
|
||||
*/
|
||||
public interface SysDictItemService extends IService<SysDictItem> {
|
||||
public interface DictItemService extends IService<DictItem> {
|
||||
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package com.youlai.boot.system.service;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.entity.SysDict;
|
||||
import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
@@ -16,7 +16,7 @@ import java.util.List;
|
||||
* @author haoxr
|
||||
* @since 2022/10/12
|
||||
*/
|
||||
public interface SysDictService extends IService<SysDict> {
|
||||
public interface DictService extends IService<Dict> {
|
||||
|
||||
/**
|
||||
* 字典分页列表
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.SysLog;
|
||||
import com.youlai.boot.system.model.entity.Log;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
@@ -17,7 +17,7 @@ import java.util.List;
|
||||
* @author Ray
|
||||
* @since 2.10.0
|
||||
*/
|
||||
public interface SysLogService extends IService<SysLog> {
|
||||
public interface LogService extends IService<Log> {
|
||||
|
||||
/**
|
||||
* 获取日志分页列表
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.youlai.boot.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.system.model.form.MenuForm;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.entity.SysMenu;
|
||||
import com.youlai.boot.system.model.entity.Menu;
|
||||
import com.youlai.boot.system.model.query.MenuQuery;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
import com.youlai.boot.system.model.vo.RouteVO;
|
||||
@@ -18,7 +18,7 @@ import java.util.Set;
|
||||
* @author haoxr
|
||||
* @since 2020/11/06
|
||||
*/
|
||||
public interface SysMenuService extends IService<SysMenu> {
|
||||
public interface MenuService extends IService<Menu> {
|
||||
|
||||
/**
|
||||
* 获取菜单表格列表
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.service;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.boot.system.model.entity.RoleMenu;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -13,7 +13,7 @@ import java.util.Set;
|
||||
* @author haoxr
|
||||
* @since 2.5.0
|
||||
*/
|
||||
public interface SysRoleMenuService extends IService<SysRoleMenu> {
|
||||
public interface RoleMenuService extends IService<RoleMenu> {
|
||||
|
||||
/**
|
||||
* 获取角色拥有的菜单ID集合
|
||||
@@ -3,7 +3,7 @@ package com.youlai.boot.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.SysRole;
|
||||
import com.youlai.boot.system.model.entity.Role;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
import com.youlai.boot.system.model.query.RolePageQuery;
|
||||
@@ -18,7 +18,7 @@ import java.util.Set;
|
||||
* @author haoxr
|
||||
* @since 2022/6/3
|
||||
*/
|
||||
public interface SysRoleService extends IService<SysRole> {
|
||||
public interface RoleService extends IService<Role> {
|
||||
|
||||
/**
|
||||
* 角色分页列表
|
||||
@@ -2,11 +2,11 @@ package com.youlai.boot.system.service;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.SysUserRole;
|
||||
import com.youlai.boot.system.model.entity.UserRole;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface SysUserRoleService extends IService<SysUserRole> {
|
||||
public interface UserRoleService extends IService<UserRole> {
|
||||
|
||||
/**
|
||||
* 保存用户角色
|
||||
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.common.enums.ContactType;
|
||||
import com.youlai.boot.system.model.dto.UserAuthInfo;
|
||||
import com.youlai.boot.system.model.dto.UserExportDTO;
|
||||
import com.youlai.boot.system.model.entity.SysUser;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.vo.UserInfoVO;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
* @author haoxr
|
||||
* @since 2022/1/14
|
||||
*/
|
||||
public interface SysUserService extends IService<SysUser> {
|
||||
public interface UserService extends IService<User> {
|
||||
|
||||
/**
|
||||
* 用户分页列表
|
||||
@@ -6,12 +6,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.common.constant.RedisConstants;
|
||||
import com.youlai.boot.system.converter.ConfigConverter;
|
||||
import com.youlai.boot.system.mapper.SysConfigMapper;
|
||||
import com.youlai.boot.system.model.entity.SysConfig;
|
||||
import com.youlai.boot.system.mapper.ConfigMapper;
|
||||
import com.youlai.boot.system.model.entity.Config;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import com.youlai.boot.system.model.query.ConfigPageQuery;
|
||||
import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
import com.youlai.boot.system.service.SysConfigService;
|
||||
import com.youlai.boot.system.service.ConfigService;
|
||||
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -32,9 +32,9 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {
|
||||
public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> implements ConfigService {
|
||||
|
||||
private final SysConfigMapper sysConfigMapper;
|
||||
private final ConfigMapper configMapper;
|
||||
|
||||
private final ConfigConverter configConverter;
|
||||
|
||||
@@ -57,15 +57,15 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
|
||||
*/
|
||||
@Override
|
||||
public IPage<ConfigVO> page(ConfigPageQuery configPageQuery) {
|
||||
Page<SysConfig> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize());
|
||||
Page<Config> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize());
|
||||
String keywords = configPageQuery.getKeywords();
|
||||
LambdaQueryWrapper<SysConfig> query = new LambdaQueryWrapper<SysConfig>()
|
||||
LambdaQueryWrapper<Config> query = new LambdaQueryWrapper<Config>()
|
||||
.and(StringUtils.isNotBlank(keywords),
|
||||
q -> q.like(SysConfig::getConfigKey, keywords)
|
||||
q -> q.like(Config::getConfigKey, keywords)
|
||||
.or()
|
||||
.like(SysConfig::getConfigName, keywords)
|
||||
.like(Config::getConfigName, keywords)
|
||||
);
|
||||
Page<SysConfig> pageList = this.page(page, query);
|
||||
Page<Config> pageList = this.page(page, query);
|
||||
return configConverter.toPageVo(pageList);
|
||||
}
|
||||
|
||||
@@ -78,11 +78,11 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
|
||||
@Override
|
||||
public boolean save(ConfigForm configForm) {
|
||||
Assert.isTrue(
|
||||
super.count(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, configForm.getConfigKey())) == 0,
|
||||
super.count(new LambdaQueryWrapper<Config>().eq(Config::getConfigKey, configForm.getConfigKey())) == 0,
|
||||
"配置键已存在");
|
||||
SysConfig sysConfig = configConverter.toEntity(configForm);
|
||||
sysConfig.setCreateBy(SecurityUtils.getUserId());
|
||||
return this.save(sysConfig);
|
||||
Config config = configConverter.toEntity(configForm);
|
||||
config.setCreateBy(SecurityUtils.getUserId());
|
||||
return this.save(config);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,7 +93,7 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
|
||||
*/
|
||||
@Override
|
||||
public ConfigForm getConfigFormData(Long id) {
|
||||
SysConfig entity = this.getById(id);
|
||||
Config entity = this.getById(id);
|
||||
return configConverter.toForm(entity);
|
||||
}
|
||||
|
||||
@@ -107,11 +107,11 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
|
||||
@Override
|
||||
public boolean edit(Long id, ConfigForm configForm) {
|
||||
Assert.isTrue(
|
||||
super.count(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, configForm.getConfigKey()).ne(SysConfig::getId, id)) == 0,
|
||||
super.count(new LambdaQueryWrapper<Config>().eq(Config::getConfigKey, configForm.getConfigKey()).ne(Config::getId, id)) == 0,
|
||||
"配置键已存在");
|
||||
SysConfig sysConfig = configConverter.toEntity(configForm);
|
||||
sysConfig.setUpdateBy(SecurityUtils.getUserId());
|
||||
return this.updateById(sysConfig);
|
||||
Config config = configConverter.toEntity(configForm);
|
||||
config.setUpdateBy(SecurityUtils.getUserId());
|
||||
return this.updateById(config);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,7 +123,7 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
|
||||
@Override
|
||||
public boolean delete(Long id) {
|
||||
if (id != null) {
|
||||
return super.remove(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getId,id));
|
||||
return super.remove(new LambdaQueryWrapper<Config>().eq(Config::getId,id));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -136,9 +136,9 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
|
||||
@Override
|
||||
public boolean refreshCache() {
|
||||
redisTemplate.delete(RedisConstants.SYSTEM_CONFIG_KEY);
|
||||
List<SysConfig> list = this.list();
|
||||
List<Config> list = this.list();
|
||||
if (list != null) {
|
||||
Map<String, String> map = list.stream().collect(Collectors.toMap(SysConfig::getConfigKey, SysConfig::getConfigValue));
|
||||
Map<String, String> map = list.stream().collect(Collectors.toMap(Config::getConfigKey, Config::getConfigValue));
|
||||
redisTemplate.opsForHash().putAll(RedisConstants.SYSTEM_CONFIG_KEY, map);
|
||||
return true;
|
||||
}
|
||||
@@ -6,8 +6,8 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.converter.DeptConverter;
|
||||
import com.youlai.boot.system.mapper.SysDeptMapper;
|
||||
import com.youlai.boot.system.model.entity.SysDept;
|
||||
import com.youlai.boot.system.mapper.DeptMapper;
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import com.youlai.boot.system.model.query.DeptQuery;
|
||||
import com.youlai.boot.system.model.vo.DeptVO;
|
||||
@@ -15,7 +15,7 @@ import com.youlai.boot.common.constant.SymbolConstant;
|
||||
import com.youlai.boot.common.constant.SystemConstants;
|
||||
import com.youlai.boot.common.enums.StatusEnum;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.service.SysDeptService;
|
||||
import com.youlai.boot.system.service.DeptService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements SysDeptService {
|
||||
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements DeptService {
|
||||
|
||||
|
||||
private final DeptConverter deptConverter;
|
||||
@@ -47,11 +47,11 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
Integer status = queryParams.getStatus();
|
||||
|
||||
// 查询数据
|
||||
List<SysDept> deptList = this.list(
|
||||
new LambdaQueryWrapper<SysDept>()
|
||||
.like(StrUtil.isNotBlank(keywords), SysDept::getName, keywords)
|
||||
.eq(status != null, SysDept::getStatus, status)
|
||||
.orderByAsc(SysDept::getSort)
|
||||
List<Dept> deptList = this.list(
|
||||
new LambdaQueryWrapper<Dept>()
|
||||
.like(StrUtil.isNotBlank(keywords), Dept::getName, keywords)
|
||||
.eq(status != null, Dept::getStatus, status)
|
||||
.orderByAsc(Dept::getSort)
|
||||
);
|
||||
|
||||
if (CollectionUtil.isEmpty(deptList)) {
|
||||
@@ -60,11 +60,11 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
|
||||
// 获取所有部门ID
|
||||
Set<Long> deptIds = deptList.stream()
|
||||
.map(SysDept::getId)
|
||||
.map(Dept::getId)
|
||||
.collect(Collectors.toSet());
|
||||
// 获取父节点ID
|
||||
Set<Long> parentIds = deptList.stream()
|
||||
.map(SysDept::getParentId)
|
||||
.map(Dept::getParentId)
|
||||
.collect(Collectors.toSet());
|
||||
// 获取根节点ID(递归的起点),即父节点ID中不包含在部门ID中的节点,注意这里不能拿顶级部门 O 作为根节点,因为部门筛选的时候 O 会被过滤掉
|
||||
List<Long> rootIds = CollectionUtil.subtractToList(parentIds, deptIds);
|
||||
@@ -82,7 +82,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
* @param deptList 部门列表
|
||||
* @return 部门树形列表
|
||||
*/
|
||||
public List<DeptVO> recurDeptList(Long parentId, List<SysDept> deptList) {
|
||||
public List<DeptVO> recurDeptList(Long parentId, List<Dept> deptList) {
|
||||
return deptList.stream()
|
||||
.filter(dept -> dept.getParentId().equals(parentId))
|
||||
.map(dept -> {
|
||||
@@ -101,21 +101,21 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
@Override
|
||||
public List<Option<Long>> listDeptOptions() {
|
||||
|
||||
List<SysDept> deptList = this.list(new LambdaQueryWrapper<SysDept>()
|
||||
.eq(SysDept::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(SysDept::getId, SysDept::getParentId, SysDept::getName)
|
||||
.orderByAsc(SysDept::getSort)
|
||||
List<Dept> deptList = this.list(new LambdaQueryWrapper<Dept>()
|
||||
.eq(Dept::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(Dept::getId, Dept::getParentId, Dept::getName)
|
||||
.orderByAsc(Dept::getSort)
|
||||
);
|
||||
if (CollectionUtil.isEmpty(deptList)) {
|
||||
return Collections.EMPTY_LIST;
|
||||
}
|
||||
|
||||
Set<Long> deptIds = deptList.stream()
|
||||
.map(SysDept::getId)
|
||||
.map(Dept::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Set<Long> parentIds = deptList.stream()
|
||||
.map(SysDept::getParentId)
|
||||
.map(Dept::getParentId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<Long> rootIds = CollectionUtil.subtractToList(parentIds, deptIds);
|
||||
@@ -136,13 +136,13 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
public Long saveDept(DeptForm formData) {
|
||||
// 校验部门名称是否存在
|
||||
String code = formData.getCode();
|
||||
long count = this.count(new LambdaQueryWrapper<SysDept>()
|
||||
.eq(SysDept::getCode, code)
|
||||
long count = this.count(new LambdaQueryWrapper<Dept>()
|
||||
.eq(Dept::getCode, code)
|
||||
);
|
||||
Assert.isTrue(count == 0, "部门编号已存在");
|
||||
|
||||
// form->entity
|
||||
SysDept entity = deptConverter.toEntity(formData);
|
||||
Dept entity = deptConverter.toEntity(formData);
|
||||
|
||||
// 生成部门路径(tree_path),格式:父节点tree_path + , + 父节点ID,用于删除部门时级联删除子部门
|
||||
String treePath = generateDeptTreePath(formData.getParentId());
|
||||
@@ -164,7 +164,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
*/
|
||||
@Override
|
||||
public DeptForm getDeptForm(Long deptId) {
|
||||
SysDept entity = this.getById(deptId);
|
||||
Dept entity = this.getById(deptId);
|
||||
return deptConverter.toForm(entity);
|
||||
}
|
||||
|
||||
@@ -180,15 +180,15 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
public Long updateDept(Long deptId, DeptForm formData) {
|
||||
// 校验部门名称/部门编号是否存在
|
||||
String code = formData.getCode();
|
||||
long count = this.count(new LambdaQueryWrapper<SysDept>()
|
||||
.ne(SysDept::getId, deptId)
|
||||
.eq(SysDept::getCode, code)
|
||||
long count = this.count(new LambdaQueryWrapper<Dept>()
|
||||
.ne(Dept::getId, deptId)
|
||||
.eq(Dept::getCode, code)
|
||||
);
|
||||
Assert.isTrue(count == 0, "部门编号已存在");
|
||||
|
||||
|
||||
// form->entity
|
||||
SysDept entity = deptConverter.toEntity(formData);
|
||||
Dept entity = deptConverter.toEntity(formData);
|
||||
entity.setId(deptId);
|
||||
|
||||
// 生成部门路径(tree_path),格式:父节点tree_path + , + 父节点ID,用于删除部门时级联删除子部门
|
||||
@@ -209,7 +209,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
* @param deptList 部门列表
|
||||
* @return 部门表格层级列表
|
||||
*/
|
||||
public static List<Option<Long>> recurDeptTreeOptions(long parentId, List<SysDept> deptList) {
|
||||
public static List<Option<Long>> recurDeptTreeOptions(long parentId, List<Dept> deptList) {
|
||||
return CollectionUtil.emptyIfNull(deptList).stream()
|
||||
.filter(dept -> dept.getParentId().equals(parentId))
|
||||
.map(dept -> {
|
||||
@@ -236,8 +236,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
if (StrUtil.isNotBlank(ids)) {
|
||||
String[] menuIds = ids.split(SymbolConstant.COMMA);
|
||||
for (String deptId : menuIds) {
|
||||
this.remove(new LambdaQueryWrapper<SysDept>()
|
||||
.eq(SysDept::getId, deptId)
|
||||
this.remove(new LambdaQueryWrapper<Dept>()
|
||||
.eq(Dept::getId, deptId)
|
||||
.or()
|
||||
.apply("CONCAT (',',tree_path,',') LIKE CONCAT('%,',{0},',%')", deptId));
|
||||
}
|
||||
@@ -257,7 +257,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
if (SystemConstants.ROOT_NODE_ID.equals(parentId)) {
|
||||
treePath = String.valueOf(parentId);
|
||||
} else {
|
||||
SysDept parent = this.getById(parentId);
|
||||
Dept parent = this.getById(parentId);
|
||||
if (parent != null) {
|
||||
treePath = parent.getTreePath() + SymbolConstant.COMMA + parent.getId();
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.youlai.boot.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.mapper.SysDictItemMapper;
|
||||
import com.youlai.boot.system.model.entity.SysDictItem;
|
||||
import com.youlai.boot.system.service.SysDictItemService;
|
||||
import com.youlai.boot.system.mapper.DictItemMapper;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.service.DictItemService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDictItem> implements SysDictItemService {
|
||||
public class DictItemServiceImpl extends ServiceImpl<DictItemMapper, DictItem> implements DictItemService {
|
||||
|
||||
}
|
||||
|
||||
@@ -8,15 +8,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.converter.DictConverter;
|
||||
import com.youlai.boot.system.converter.DictItemConverter;
|
||||
import com.youlai.boot.system.mapper.SysDictMapper;
|
||||
import com.youlai.boot.system.model.entity.SysDict;
|
||||
import com.youlai.boot.system.model.entity.SysDictItem;
|
||||
import com.youlai.boot.system.mapper.DictMapper;
|
||||
import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.service.SysDictItemService;
|
||||
import com.youlai.boot.system.service.SysDictService;
|
||||
import com.youlai.boot.system.service.DictItemService;
|
||||
import com.youlai.boot.system.service.DictService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -32,9 +32,9 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
|
||||
public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements DictService {
|
||||
|
||||
private final SysDictItemService dictItemService;
|
||||
private final DictItemService dictItemService;
|
||||
private final DictConverter dictConverter;
|
||||
private final DictItemConverter dictItemConverter;
|
||||
|
||||
@@ -61,11 +61,11 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public boolean saveDict(DictForm dictForm) {
|
||||
// 保存字典
|
||||
SysDict entity = dictConverter.toEntity(dictForm);
|
||||
Dict entity = dictConverter.toEntity(dictForm);
|
||||
|
||||
// 校验 code 是否唯一
|
||||
long count = this.count(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getCode, entity.getCode())
|
||||
long count = this.count(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, entity.getCode())
|
||||
);
|
||||
Assert.isTrue(count == 0, "字典编码已存在");
|
||||
|
||||
@@ -73,7 +73,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
// 保存字典项
|
||||
if (result) {
|
||||
List<DictForm.DictItem> dictFormDictItems = dictForm.getDictItems();
|
||||
List<SysDictItem> dictItems = dictItemConverter.toEntity(dictFormDictItems);
|
||||
List<DictItem> dictItems = dictItemConverter.toEntity(dictFormDictItems);
|
||||
dictItems.forEach(dictItem -> dictItem.setDictId(entity.getId()));
|
||||
dictItemService.saveBatch(dictItems);
|
||||
}
|
||||
@@ -89,13 +89,13 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public DictForm getDictForm(Long id) {
|
||||
// 获取字典
|
||||
SysDict entity = this.getById(id);
|
||||
Dict entity = this.getById(id);
|
||||
Assert.isTrue(entity != null, "字典不存在");
|
||||
DictForm dictForm = dictConverter.toForm(entity);
|
||||
|
||||
// 获取字典项集合
|
||||
List<SysDictItem> dictItems = dictItemService.list(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getDictId, id)
|
||||
List<DictItem> dictItems = dictItemService.list(new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictId, id)
|
||||
);
|
||||
// 转换数据项
|
||||
List<DictForm.DictItem> dictItemList = dictItemConverter.toDictItem(dictItems);
|
||||
@@ -112,12 +112,12 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public boolean updateDict(Long id, DictForm dictForm) {
|
||||
// 更新字典
|
||||
SysDict entity = dictConverter.toEntity(dictForm);
|
||||
Dict entity = dictConverter.toEntity(dictForm);
|
||||
|
||||
// 校验 code 是否唯一
|
||||
long count = this.count(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getCode, entity.getCode())
|
||||
.ne(SysDict::getId, id)
|
||||
long count = this.count(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, entity.getCode())
|
||||
.ne(Dict::getId, id)
|
||||
);
|
||||
Assert.isTrue(count == 0, "字典编码已存在");
|
||||
|
||||
@@ -126,21 +126,21 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
if (result) {
|
||||
// 更新字典项
|
||||
List<DictForm.DictItem> dictFormDictItems = dictForm.getDictItems();
|
||||
List<SysDictItem> dictItems = dictItemConverter.toEntity(dictFormDictItems);
|
||||
List<DictItem> dictItems = dictItemConverter.toEntity(dictFormDictItems);
|
||||
|
||||
// 获取当前数据库中的字典项
|
||||
List<SysDictItem> currentDictItemEntities = dictItemService.list(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getDictId, id)
|
||||
List<DictItem> currentDictItemEntities = dictItemService.list(new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictId, id)
|
||||
);
|
||||
|
||||
// 获取当前数据库中存在的字典项ID集合
|
||||
Set<Long> currentDictItemIds = currentDictItemEntities.stream()
|
||||
.map(SysDictItem::getId)
|
||||
.map(DictItem::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 获取新提交的字典项ID集合
|
||||
Set<Long> newAttrIds = dictItems.stream()
|
||||
.map(SysDictItem::getId)
|
||||
.map(DictItem::getId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
@@ -154,7 +154,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
}
|
||||
|
||||
// 更新或新增字典项
|
||||
for (SysDictItem dictItem : dictItems) {
|
||||
for (DictItem dictItem : dictItems) {
|
||||
if (dictItem.getId() != null && currentDictItemIds.contains(dictItem.getId())) {
|
||||
// 更新现有字典项
|
||||
dictItemService.updateById(dictItem);
|
||||
@@ -187,8 +187,8 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
if (result) {
|
||||
// 删除字典下的字典项
|
||||
dictItemService.remove(
|
||||
new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getDictId, id)
|
||||
new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictId, id)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -202,9 +202,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public List<Option<Long>> listDictItemsByCode(String code) {
|
||||
// 根据字典编码获取字典ID
|
||||
SysDict dict = this.getOne(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getCode, code)
|
||||
.select(SysDict::getId)
|
||||
Dict dict = this.getOne(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, code)
|
||||
.select(Dict::getId)
|
||||
.last("limit 1")
|
||||
);
|
||||
// 如果字典不存在,则返回空集合
|
||||
@@ -213,9 +213,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
}
|
||||
|
||||
// 获取字典项
|
||||
List<SysDictItem> dictItems = dictItemService.list(
|
||||
new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getDictId, dict.getId())
|
||||
List<DictItem> dictItems = dictItemService.list(
|
||||
new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictId, dict.getId())
|
||||
);
|
||||
|
||||
// 转换为 Option
|
||||
@@ -227,9 +227,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
*/
|
||||
@Override
|
||||
public List<Option<String>> getDictList() {
|
||||
return this.list(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getStatus, 1)
|
||||
.select(SysDict::getName, SysDict::getCode)
|
||||
return this.list(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getStatus, 1)
|
||||
.select(Dict::getName, Dict::getCode)
|
||||
).stream()
|
||||
.map(dict -> new Option<>(dict.getCode(), dict.getName()))
|
||||
.toList();
|
||||
@@ -2,14 +2,14 @@ package com.youlai.boot.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.mapper.SysLogMapper;
|
||||
import com.youlai.boot.system.mapper.LogMapper;
|
||||
import com.youlai.boot.system.model.bo.VisitCount;
|
||||
import com.youlai.boot.system.model.entity.SysLog;
|
||||
import com.youlai.boot.system.model.entity.Log;
|
||||
import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVO;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVO;
|
||||
import com.youlai.boot.system.service.SysLogService;
|
||||
import com.youlai.boot.system.service.LogService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -26,8 +26,8 @@ import java.util.stream.Collectors;
|
||||
* @since 2.10.0
|
||||
*/
|
||||
@Service
|
||||
public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog>
|
||||
implements SysLogService {
|
||||
public class LogServiceImpl extends ServiceImpl<LogMapper, Log>
|
||||
implements LogService {
|
||||
|
||||
/**
|
||||
* 获取日志分页列表
|
||||
@@ -11,10 +11,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.youlai.boot.system.converter.MenuConverter;
|
||||
import com.youlai.boot.system.mapper.SysMenuMapper;
|
||||
import com.youlai.boot.system.mapper.MenuMapper;
|
||||
import com.youlai.boot.system.model.bo.RouteBO;
|
||||
import com.youlai.boot.infrastructure.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.system.model.entity.SysMenu;
|
||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||
import com.youlai.boot.system.model.entity.Menu;
|
||||
import com.youlai.boot.system.model.form.MenuForm;
|
||||
import com.youlai.boot.system.model.query.MenuQuery;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
@@ -24,8 +24,8 @@ import com.youlai.boot.common.enums.MenuTypeEnum;
|
||||
import com.youlai.boot.common.enums.StatusEnum;
|
||||
import com.youlai.boot.common.model.KeyValue;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.service.SysMenuService;
|
||||
import com.youlai.boot.system.service.SysRoleMenuService;
|
||||
import com.youlai.boot.system.service.MenuService;
|
||||
import com.youlai.boot.system.service.RoleMenuService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
@@ -42,11 +42,11 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
|
||||
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {
|
||||
|
||||
private final MenuConverter menuConverter;
|
||||
|
||||
private final SysRoleMenuService roleMenuService;
|
||||
private final RoleMenuService roleMenuService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -56,18 +56,18 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public List<MenuVO> listMenus(MenuQuery queryParams) {
|
||||
List<SysMenu> menus = this.list(new LambdaQueryWrapper<SysMenu>()
|
||||
.like(StrUtil.isNotBlank(queryParams.getKeywords()), SysMenu::getName, queryParams.getKeywords())
|
||||
.orderByAsc(SysMenu::getSort)
|
||||
List<Menu> menus = this.list(new LambdaQueryWrapper<Menu>()
|
||||
.like(StrUtil.isNotBlank(queryParams.getKeywords()), Menu::getName, queryParams.getKeywords())
|
||||
.orderByAsc(Menu::getSort)
|
||||
);
|
||||
// 获取所有菜单ID
|
||||
Set<Long> menuIds = menus.stream()
|
||||
.map(SysMenu::getId)
|
||||
.map(Menu::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 获取所有父级ID
|
||||
Set<Long> parentIds = menus.stream()
|
||||
.map(SysMenu::getParentId)
|
||||
.map(Menu::getParentId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 获取根节点ID(递归的起点),即父节点ID中不包含在部门ID中的节点,注意这里不能拿顶级菜单 O 作为根节点,因为菜单筛选的时候 O 会被过滤掉
|
||||
@@ -88,7 +88,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
* @param menuList 菜单列表
|
||||
* @return 菜单列表
|
||||
*/
|
||||
private List<MenuVO> buildMenuTree(Long parentId, List<SysMenu> menuList) {
|
||||
private List<MenuVO> buildMenuTree(Long parentId, List<Menu> menuList) {
|
||||
return CollectionUtil.emptyIfNull(menuList)
|
||||
.stream()
|
||||
.filter(menu -> menu.getParentId().equals(parentId))
|
||||
@@ -107,9 +107,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public List<Option> listMenuOptions(boolean onlyParent) {
|
||||
List<SysMenu> menuList = this.list(new LambdaQueryWrapper<SysMenu>()
|
||||
.in(onlyParent, SysMenu::getType, MenuTypeEnum.CATALOG.getValue(), MenuTypeEnum.MENU.getValue())
|
||||
.orderByAsc(SysMenu::getSort)
|
||||
List<Menu> menuList = this.list(new LambdaQueryWrapper<Menu>()
|
||||
.in(onlyParent, Menu::getType, MenuTypeEnum.CATALOG.getValue(), MenuTypeEnum.MENU.getValue())
|
||||
.orderByAsc(Menu::getSort)
|
||||
);
|
||||
return buildMenuOptions(SystemConstants.ROOT_NODE_ID, menuList);
|
||||
}
|
||||
@@ -121,10 +121,10 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
* @param menuList 菜单列表
|
||||
* @return 菜单下拉列表
|
||||
*/
|
||||
private List<Option> buildMenuOptions(Long parentId, List<SysMenu> menuList) {
|
||||
private List<Option> buildMenuOptions(Long parentId, List<Menu> menuList) {
|
||||
List<Option> menuOptions = new ArrayList<>();
|
||||
|
||||
for (SysMenu menu : menuList) {
|
||||
for (Menu menu : menuList) {
|
||||
if (menu.getParentId().equals(parentId)) {
|
||||
Option option = new Option(menu.getId(), menu.getName());
|
||||
List<Option> subMenuOptions = buildMenuOptions(menu.getId(), menuList);
|
||||
@@ -242,7 +242,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
menuForm.setComponent(null);
|
||||
}
|
||||
|
||||
SysMenu entity = menuConverter.toEntity(menuForm);
|
||||
Menu entity = menuConverter.toEntity(menuForm);
|
||||
String treePath = generateMenuTreePath(menuForm.getParentId());
|
||||
entity.setTreePath(treePath);
|
||||
|
||||
@@ -255,9 +255,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
entity.setParams(null);
|
||||
}
|
||||
if (menuType != MenuTypeEnum.BUTTON) {
|
||||
Assert.isFalse(this.exists(new LambdaQueryWrapper<SysMenu>()
|
||||
.eq(SysMenu::getRouteName, entity.getRouteName())
|
||||
.ne(menuForm.getId() != null, SysMenu::getId, menuForm.getId())
|
||||
Assert.isFalse(this.exists(new LambdaQueryWrapper<Menu>()
|
||||
.eq(Menu::getRouteName, entity.getRouteName())
|
||||
.ne(menuForm.getId() != null, Menu::getId, menuForm.getId())
|
||||
), "路由名称已存在");
|
||||
}
|
||||
|
||||
@@ -281,7 +281,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
if (SystemConstants.ROOT_NODE_ID.equals(parentId)) {
|
||||
return String.valueOf(parentId);
|
||||
} else {
|
||||
SysMenu parent = this.getById(parentId);
|
||||
Menu parent = this.getById(parentId);
|
||||
return parent != null ? parent.getTreePath() + "," + parent.getId() : null;
|
||||
}
|
||||
}
|
||||
@@ -297,9 +297,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
@Override
|
||||
@CacheEvict(cacheNames = "menu", key = "'routes'")
|
||||
public boolean updateMenuVisible(Long menuId, Integer visible) {
|
||||
return this.update(new LambdaUpdateWrapper<SysMenu>()
|
||||
.eq(SysMenu::getId, menuId)
|
||||
.set(SysMenu::getVisible, visible)
|
||||
return this.update(new LambdaUpdateWrapper<Menu>()
|
||||
.eq(Menu::getId, menuId)
|
||||
.set(Menu::getVisible, visible)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -311,7 +311,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public MenuForm getMenuForm(Long id) {
|
||||
SysMenu entity = this.getById(id);
|
||||
Menu entity = this.getById(id);
|
||||
Assert.isTrue(entity != null, "菜单不存在");
|
||||
MenuForm formData = menuConverter.toForm(entity);
|
||||
// 路由参数字符串 {"id":"1","name":"张三"} 转换为 [{key:"id", value:"1"}, {key:"name", value:"张三"}]
|
||||
@@ -347,8 +347,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
@Override
|
||||
@CacheEvict(cacheNames = "menu", key = "'routes'")
|
||||
public boolean deleteMenu(Long id) {
|
||||
boolean result = this.remove(new LambdaQueryWrapper<SysMenu>()
|
||||
.eq(SysMenu::getId, id)
|
||||
boolean result = this.remove(new LambdaQueryWrapper<Menu>()
|
||||
.eq(Menu::getId, id)
|
||||
.or()
|
||||
.apply("CONCAT (',',tree_path,',') LIKE CONCAT('%,',{0},',%')", id));
|
||||
|
||||
@@ -369,19 +369,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public void saveMenu(Long parentMenuId, GenConfig genConfig) {
|
||||
SysMenu parentMenu = this.getById(parentMenuId);
|
||||
Menu parentMenu = this.getById(parentMenuId);
|
||||
Assert.notNull(parentMenu, "上级菜单不存在");
|
||||
|
||||
String entityName = genConfig.getEntityName();
|
||||
|
||||
long count = this.count(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getRouteName, entityName));
|
||||
long count = this.count(new LambdaQueryWrapper<Menu>().eq(Menu::getRouteName, entityName));
|
||||
if (count > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取父级菜单子菜单最带的排序
|
||||
SysMenu maxSortMenu = this.getOne(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, parentMenuId)
|
||||
.orderByDesc(SysMenu::getSort)
|
||||
Menu maxSortMenu = this.getOne(new LambdaQueryWrapper<Menu>().eq(Menu::getParentId, parentMenuId)
|
||||
.orderByDesc(Menu::getSort)
|
||||
.last("limit 1")
|
||||
);
|
||||
int sort = 1;
|
||||
@@ -390,7 +390,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
}
|
||||
|
||||
|
||||
SysMenu menu = new SysMenu();
|
||||
Menu menu = new Menu();
|
||||
menu.setParentId(parentMenuId);
|
||||
menu.setName(genConfig.getBusinessName());
|
||||
|
||||
@@ -414,7 +414,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
String[] perms = {"query", "add", "edit", "delete"};
|
||||
|
||||
for (int i = 0; i < actions.length; i++) {
|
||||
SysMenu button = new SysMenu();
|
||||
Menu button = new Menu();
|
||||
button.setParentId(menu.getId());
|
||||
button.setType(MenuTypeEnum.BUTTON);
|
||||
button.setName(actions[i]);
|
||||
@@ -2,11 +2,11 @@ package com.youlai.boot.system.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.mapper.SysRoleMenuMapper;
|
||||
import com.youlai.boot.system.mapper.RoleMenuMapper;
|
||||
import com.youlai.boot.system.model.bo.RolePermsBO;
|
||||
import com.youlai.boot.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.boot.system.model.entity.RoleMenu;
|
||||
import com.youlai.boot.common.constant.SecurityConstants;
|
||||
import com.youlai.boot.system.service.SysRoleMenuService;
|
||||
import com.youlai.boot.system.service.RoleMenuService;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -26,7 +26,7 @@ import java.util.Set;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
|
||||
public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
|
||||
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@@ -8,18 +8,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.converter.RoleConverter;
|
||||
import com.youlai.boot.system.mapper.SysRoleMapper;
|
||||
import com.youlai.boot.system.model.entity.SysRole;
|
||||
import com.youlai.boot.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.boot.system.mapper.RoleMapper;
|
||||
import com.youlai.boot.system.model.entity.Role;
|
||||
import com.youlai.boot.system.model.entity.RoleMenu;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
import com.youlai.boot.system.model.query.RolePageQuery;
|
||||
import com.youlai.boot.system.model.vo.RolePageVO;
|
||||
import com.youlai.boot.common.constant.SystemConstants;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||
import com.youlai.boot.system.service.SysRoleMenuService;
|
||||
import com.youlai.boot.system.service.SysRoleService;
|
||||
import com.youlai.boot.system.service.SysUserRoleService;
|
||||
import com.youlai.boot.system.service.RoleMenuService;
|
||||
import com.youlai.boot.system.service.RoleService;
|
||||
import com.youlai.boot.system.service.UserRoleService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -37,10 +37,10 @@ import java.util.Set;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
|
||||
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
|
||||
|
||||
private final SysRoleMenuService roleMenuService;
|
||||
private final SysUserRoleService userRoleService;
|
||||
private final RoleMenuService roleMenuService;
|
||||
private final UserRoleService userRoleService;
|
||||
private final RoleConverter roleConverter;
|
||||
|
||||
/**
|
||||
@@ -57,15 +57,15 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
String keywords = queryParams.getKeywords();
|
||||
|
||||
// 查询数据
|
||||
Page<SysRole> rolePage = this.page(new Page<>(pageNum, pageSize),
|
||||
new LambdaQueryWrapper<SysRole>()
|
||||
Page<Role> rolePage = this.page(new Page<>(pageNum, pageSize),
|
||||
new LambdaQueryWrapper<Role>()
|
||||
.and(StrUtil.isNotBlank(keywords),
|
||||
wrapper ->
|
||||
wrapper.like(StrUtil.isNotBlank(keywords), SysRole::getName, keywords)
|
||||
wrapper.like(StrUtil.isNotBlank(keywords), Role::getName, keywords)
|
||||
.or()
|
||||
.like(StrUtil.isNotBlank(keywords), SysRole::getCode, keywords)
|
||||
.like(StrUtil.isNotBlank(keywords), Role::getCode, keywords)
|
||||
)
|
||||
.ne(!SecurityUtils.isRoot(), SysRole::getCode, SystemConstants.ROOT_ROLE_CODE) // 非超级管理员不显示超级管理员角色
|
||||
.ne(!SecurityUtils.isRoot(), Role::getCode, SystemConstants.ROOT_ROLE_CODE) // 非超级管理员不显示超级管理员角色
|
||||
);
|
||||
|
||||
// 实体转换
|
||||
@@ -80,10 +80,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
@Override
|
||||
public List<Option<Long>> listRoleOptions() {
|
||||
// 查询数据
|
||||
List<SysRole> roleList = this.list(new LambdaQueryWrapper<SysRole>()
|
||||
.ne(!SecurityUtils.isRoot(), SysRole::getCode, SystemConstants.ROOT_ROLE_CODE)
|
||||
.select(SysRole::getId, SysRole::getName)
|
||||
.orderByAsc(SysRole::getSort)
|
||||
List<Role> roleList = this.list(new LambdaQueryWrapper<Role>()
|
||||
.ne(!SecurityUtils.isRoot(), Role::getCode, SystemConstants.ROOT_ROLE_CODE)
|
||||
.select(Role::getId, Role::getName)
|
||||
.orderByAsc(Role::getSort)
|
||||
);
|
||||
|
||||
// 实体转换
|
||||
@@ -102,22 +102,22 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
Long roleId = roleForm.getId();
|
||||
|
||||
// 编辑角色时,判断角色是否存在
|
||||
SysRole oldRole = null;
|
||||
Role oldRole = null;
|
||||
if (roleId != null) {
|
||||
oldRole = this.getById(roleId);
|
||||
Assert.isTrue(oldRole != null, "角色不存在");
|
||||
}
|
||||
|
||||
String roleCode = roleForm.getCode();
|
||||
long count = this.count(new LambdaQueryWrapper<SysRole>()
|
||||
.ne(roleId != null, SysRole::getId, roleId)
|
||||
long count = this.count(new LambdaQueryWrapper<Role>()
|
||||
.ne(roleId != null, Role::getId, roleId)
|
||||
.and(wrapper ->
|
||||
wrapper.eq(SysRole::getCode, roleCode).or().eq(SysRole::getName, roleForm.getName())
|
||||
wrapper.eq(Role::getCode, roleCode).or().eq(Role::getName, roleForm.getName())
|
||||
));
|
||||
Assert.isTrue(count == 0, "角色名称或角色编码已存在,请修改后重试!");
|
||||
|
||||
// 实体转换
|
||||
SysRole role = roleConverter.toEntity(roleForm);
|
||||
Role role = roleConverter.toEntity(roleForm);
|
||||
|
||||
boolean result = this.saveOrUpdate(role);
|
||||
if (result) {
|
||||
@@ -141,7 +141,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
*/
|
||||
@Override
|
||||
public RoleForm getRoleForm(Long roleId) {
|
||||
SysRole entity = this.getById(roleId);
|
||||
Role entity = this.getById(roleId);
|
||||
return roleConverter.toForm(entity);
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
@Override
|
||||
public boolean updateRoleStatus(Long roleId, Integer status) {
|
||||
|
||||
SysRole role = this.getById(roleId);
|
||||
Role role = this.getById(roleId);
|
||||
Assert.isTrue(role != null, "角色不存在");
|
||||
|
||||
role.setStatus(status);
|
||||
@@ -181,7 +181,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
.toList();
|
||||
|
||||
for (Long roleId : roleIds) {
|
||||
SysRole role = this.getById(roleId);
|
||||
Role role = this.getById(roleId);
|
||||
Assert.isTrue(role != null, "角色不存在");
|
||||
|
||||
// 判断角色是否被用户关联
|
||||
@@ -219,19 +219,19 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
@Transactional
|
||||
@CacheEvict(cacheNames = "menu", key = "'routes'")
|
||||
public boolean assignMenusToRole(Long roleId, List<Long> menuIds) {
|
||||
SysRole role = this.getById(roleId);
|
||||
Role role = this.getById(roleId);
|
||||
Assert.isTrue(role != null, "角色不存在");
|
||||
|
||||
// 删除角色菜单
|
||||
roleMenuService.remove(
|
||||
new LambdaQueryWrapper<SysRoleMenu>()
|
||||
.eq(SysRoleMenu::getRoleId, roleId)
|
||||
new LambdaQueryWrapper<RoleMenu>()
|
||||
.eq(RoleMenu::getRoleId, roleId)
|
||||
);
|
||||
// 新增角色菜单
|
||||
if (CollectionUtil.isNotEmpty(menuIds)) {
|
||||
List<SysRoleMenu> roleMenus = menuIds
|
||||
List<RoleMenu> roleMenus = menuIds
|
||||
.stream()
|
||||
.map(menuId -> new SysRoleMenu(roleId, menuId))
|
||||
.map(menuId -> new RoleMenu(roleId, menuId))
|
||||
.toList();
|
||||
roleMenuService.saveBatch(roleMenus);
|
||||
}
|
||||
@@ -3,16 +3,16 @@ package com.youlai.boot.system.service.impl;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.mapper.SysUserRoleMapper;
|
||||
import com.youlai.boot.system.model.entity.SysUserRole;
|
||||
import com.youlai.boot.system.service.SysUserRoleService;
|
||||
import com.youlai.boot.system.mapper.UserRoleMapper;
|
||||
import com.youlai.boot.system.model.entity.UserRole;
|
||||
import com.youlai.boot.system.service.UserRoleService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
|
||||
public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements UserRoleService {
|
||||
|
||||
/**
|
||||
* 保存用户角色
|
||||
@@ -29,10 +29,10 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
|
||||
}
|
||||
|
||||
// 用户原角色ID集合
|
||||
List<Long> userRoleIds = this.list(new LambdaQueryWrapper<SysUserRole>()
|
||||
.eq(SysUserRole::getUserId, userId))
|
||||
List<Long> userRoleIds = this.list(new LambdaQueryWrapper<UserRole>()
|
||||
.eq(UserRole::getUserId, userId))
|
||||
.stream()
|
||||
.map(SysUserRole::getRoleId)
|
||||
.map(UserRole::getRoleId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 新增用户角色
|
||||
@@ -45,9 +45,9 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
List<SysUserRole> saveUserRoles = saveRoleIds
|
||||
List<UserRole> saveUserRoles = saveRoleIds
|
||||
.stream()
|
||||
.map(roleId -> new SysUserRole(userId, roleId))
|
||||
.map(roleId -> new UserRole(userId, roleId))
|
||||
.collect(Collectors.toList());
|
||||
this.saveBatch(saveUserRoles);
|
||||
|
||||
@@ -58,9 +58,9 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtil.isNotEmpty(removeRoleIds)) {
|
||||
this.remove(new LambdaQueryWrapper<SysUserRole>()
|
||||
.eq(SysUserRole::getUserId, userId)
|
||||
.in(SysUserRole::getRoleId, removeRoleIds)
|
||||
this.remove(new LambdaQueryWrapper<UserRole>()
|
||||
.eq(UserRole::getUserId, userId)
|
||||
.in(UserRole::getRoleId, removeRoleIds)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -11,27 +11,27 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.common.constant.RedisConstants;
|
||||
import com.youlai.boot.common.constant.SystemConstants;
|
||||
import com.youlai.boot.common.enums.ContactType;
|
||||
import com.youlai.boot.infrastructure.mail.service.MailService;
|
||||
import com.youlai.boot.infrastructure.sms.service.SmsService;
|
||||
import com.youlai.boot.platform.mail.service.MailService;
|
||||
import com.youlai.boot.platform.sms.service.SmsService;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.form.*;
|
||||
import com.youlai.boot.config.property.AliyunSmsProperties;
|
||||
import com.youlai.boot.system.converter.UserConverter;
|
||||
import com.youlai.boot.common.exception.BusinessException;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVO;
|
||||
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||
import com.youlai.boot.system.mapper.SysUserMapper;
|
||||
import com.youlai.boot.system.mapper.UserMapper;
|
||||
import com.youlai.boot.system.model.dto.UserAuthInfo;
|
||||
import com.youlai.boot.system.model.bo.UserBO;
|
||||
import com.youlai.boot.system.model.entity.SysUser;
|
||||
import com.youlai.boot.system.model.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.dto.UserExportDTO;
|
||||
import com.youlai.boot.system.model.vo.UserInfoVO;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
import com.youlai.boot.core.security.service.PermissionService;
|
||||
import com.youlai.boot.system.service.SysRoleMenuService;
|
||||
import com.youlai.boot.system.service.SysRoleService;
|
||||
import com.youlai.boot.system.service.SysUserRoleService;
|
||||
import com.youlai.boot.system.service.SysUserService;
|
||||
import com.youlai.boot.system.service.RoleMenuService;
|
||||
import com.youlai.boot.system.service.RoleService;
|
||||
import com.youlai.boot.system.service.UserRoleService;
|
||||
import com.youlai.boot.system.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
@@ -52,17 +52,17 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
|
||||
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
|
||||
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
private final SysUserRoleService userRoleService;
|
||||
private final UserRoleService userRoleService;
|
||||
|
||||
private final UserConverter userConverter;
|
||||
|
||||
private final SysRoleMenuService roleMenuService;
|
||||
private final RoleMenuService roleMenuService;
|
||||
|
||||
private final SysRoleService roleService;
|
||||
private final RoleService roleService;
|
||||
|
||||
private final PermissionService permissionService;
|
||||
|
||||
@@ -116,11 +116,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
|
||||
String username = userForm.getUsername();
|
||||
|
||||
long count = this.count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username));
|
||||
long count = this.count(new LambdaQueryWrapper<User>().eq(User::getUsername, username));
|
||||
Assert.isTrue(count == 0, "用户名已存在");
|
||||
|
||||
// 实体转换 form->entity
|
||||
SysUser entity = userConverter.toEntity(userForm);
|
||||
User entity = userConverter.toEntity(userForm);
|
||||
|
||||
// 设置默认加密密码
|
||||
String defaultEncryptPwd = passwordEncoder.encode(SystemConstants.DEFAULT_PASSWORD);
|
||||
@@ -149,14 +149,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
|
||||
String username = userForm.getUsername();
|
||||
|
||||
long count = this.count(new LambdaQueryWrapper<SysUser>()
|
||||
.eq(SysUser::getUsername, username)
|
||||
.ne(SysUser::getId, userId)
|
||||
long count = this.count(new LambdaQueryWrapper<User>()
|
||||
.eq(User::getUsername, username)
|
||||
.ne(User::getId, userId)
|
||||
);
|
||||
Assert.isTrue(count == 0, "用户名已存在");
|
||||
|
||||
// form -> entity
|
||||
SysUser entity = userConverter.toEntity(userForm);
|
||||
User entity = userConverter.toEntity(userForm);
|
||||
|
||||
// 修改用户
|
||||
boolean result = this.updateById(entity);
|
||||
@@ -231,13 +231,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
String username = SecurityUtils.getUsername();
|
||||
|
||||
// 获取登录用户基础信息
|
||||
SysUser user = this.getOne(new LambdaQueryWrapper<SysUser>()
|
||||
.eq(SysUser::getUsername, username)
|
||||
User user = this.getOne(new LambdaQueryWrapper<User>()
|
||||
.eq(User::getUsername, username)
|
||||
.select(
|
||||
SysUser::getId,
|
||||
SysUser::getUsername,
|
||||
SysUser::getNickname,
|
||||
SysUser::getAvatar
|
||||
User::getId,
|
||||
User::getUsername,
|
||||
User::getNickname,
|
||||
User::getAvatar
|
||||
)
|
||||
);
|
||||
// entity->VO
|
||||
@@ -276,7 +276,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
@Override
|
||||
public boolean updateUserProfile(UserProfileForm formData) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
SysUser entity = userConverter.toEntity(formData);
|
||||
User entity = userConverter.toEntity(formData);
|
||||
entity.setId(userId);
|
||||
return this.updateById(entity);
|
||||
}
|
||||
@@ -292,7 +292,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
@Override
|
||||
public boolean changePassword(Long userId, PasswordChangeForm data) {
|
||||
|
||||
SysUser user = this.getById(userId);
|
||||
User user = this.getById(userId);
|
||||
if (user == null) {
|
||||
throw new BusinessException("用户不存在");
|
||||
}
|
||||
@@ -309,9 +309,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
}
|
||||
|
||||
String newPassword = data.getNewPassword();
|
||||
return this.update(new LambdaUpdateWrapper<SysUser>()
|
||||
.eq(SysUser::getId, userId)
|
||||
.set(SysUser::getPassword, passwordEncoder.encode(newPassword))
|
||||
return this.update(new LambdaUpdateWrapper<User>()
|
||||
.eq(User::getId, userId)
|
||||
.set(User::getPassword, passwordEncoder.encode(newPassword))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -324,9 +324,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
*/
|
||||
@Override
|
||||
public boolean resetPassword(Long userId, String password) {
|
||||
return this.update(new LambdaUpdateWrapper<SysUser>()
|
||||
.eq(SysUser::getId, userId)
|
||||
.set(SysUser::getPassword, passwordEncoder.encode(password))
|
||||
return this.update(new LambdaUpdateWrapper<User>()
|
||||
.eq(User::getId, userId)
|
||||
.set(User::getPassword, passwordEncoder.encode(password))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -353,7 +353,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
verificationCodePrefix = RedisConstants.MOBILE_VERIFICATION_CODE_PREFIX;
|
||||
break;
|
||||
case EMAIL:
|
||||
mailService.sendSimpleMail(contact, "验证码", "您的验证码是:" + code);
|
||||
mailService.sendMail(contact, "验证码", "您的验证码是:" + code);
|
||||
verificationCodePrefix = RedisConstants.EMAIL_VERIFICATION_CODE_PREFIX;
|
||||
break;
|
||||
default:
|
||||
@@ -373,7 +373,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
@Override
|
||||
public boolean bindMobile(MobileBindingForm data) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
SysUser user = this.getById(userId);
|
||||
User user = this.getById(userId);
|
||||
if (user == null) {
|
||||
throw new BusinessException("用户不存在");
|
||||
}
|
||||
@@ -386,9 +386,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
throw new BusinessException("验证码错误");
|
||||
}
|
||||
// 更新手机号码
|
||||
return this.update(new LambdaUpdateWrapper<SysUser>()
|
||||
.eq(SysUser::getId, userId)
|
||||
.set(SysUser::getMobile, contact)
|
||||
return this.update(new LambdaUpdateWrapper<User>()
|
||||
.eq(User::getId, userId)
|
||||
.set(User::getMobile, contact)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -401,7 +401,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
@Override
|
||||
public boolean bindEmail(EmailChangeForm data) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
SysUser user = this.getById(userId);
|
||||
User user = this.getById(userId);
|
||||
if (user == null) {
|
||||
throw new BusinessException("用户不存在");
|
||||
}
|
||||
@@ -414,9 +414,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
throw new BusinessException("验证码错误");
|
||||
}
|
||||
// 更新邮箱
|
||||
return this.update(new LambdaUpdateWrapper<SysUser>()
|
||||
.eq(SysUser::getId, userId)
|
||||
.set(SysUser::getEmail, email)
|
||||
return this.update(new LambdaUpdateWrapper<User>()
|
||||
.eq(User::getId, userId)
|
||||
.set(User::getEmail, email)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
server:
|
||||
port: 8989
|
||||
|
||||
|
||||
spring:
|
||||
jackson:
|
||||
@@ -147,11 +146,12 @@ springdoc:
|
||||
path: /v3/api-docs
|
||||
group-configs:
|
||||
- group: '系统管理'
|
||||
paths-to-match: '/**'
|
||||
packages-to-scan: com.youlai.boot.system.controller
|
||||
- group: '登录认证'
|
||||
paths-to-match: '/**'
|
||||
packages-to-scan: com.youlai.boot.infrastructure.auth.controller
|
||||
paths-to-match: "/**"
|
||||
packages-to-scan:
|
||||
- com.youlai.boot.system.controller
|
||||
- com.youlai.boot.platform.auth.controller
|
||||
- com.youlai.boot.platform.file.controller
|
||||
- com.youlai.boot.platform.generator.controller
|
||||
default-flat-param-object: true
|
||||
|
||||
# knife4j 接口文档配置
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
server:
|
||||
port: 8989
|
||||
|
||||
spring:
|
||||
jackson:
|
||||
## 默认序列化时间格式
|
||||
@@ -130,9 +127,13 @@ springdoc:
|
||||
api-docs:
|
||||
path: /v3/api-docs
|
||||
group-configs:
|
||||
- group: 'default'
|
||||
paths-to-match: '/**'
|
||||
packages-to-scan: com.**.controller
|
||||
- group: '系统管理'
|
||||
paths-to-match: "/**"
|
||||
packages-to-scan:
|
||||
- com.youlai.boot.system.controller
|
||||
- com.youlai.boot.platform.auth.controller
|
||||
- com.youlai.boot.platform.file.controller
|
||||
- com.youlai.boot.platform.generator.controller
|
||||
default-flat-param-object: true
|
||||
|
||||
# knife4j 接口文档配置
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
server:
|
||||
port: 8989
|
||||
spring:
|
||||
main:
|
||||
allow-circular-references: true
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.boot.system.mapper.SysDeptMapper">
|
||||
<mapper namespace="com.youlai.boot.system.mapper.ConfigMapper">
|
||||
|
||||
</mapper>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user