refactor: 重构目录结构统一规范

- shared/ → common/(constant、enums、model)
- framework/cache/config/ → framework/cache/(扁平化)
- framework/integration/captcha/ → framework/captcha/
- config/property/ → 各模块 config/ 下
- interfaces/ → module/(sse、mail、sms)
- 移除冗余枚举 LogModuleEnum
This commit is contained in:
Ray.Hao
2026-03-28 09:00:35 +08:00
parent 234b12f297
commit 9cd3ff88f8
78 changed files with 161 additions and 275 deletions

View File

@@ -104,15 +104,20 @@ youlai-boot
├── docker/ # Docker 部署 ├── docker/ # Docker 部署
├── sql/ # 数据库脚本 ├── sql/ # 数据库脚本
├── src/main/java/com/youlai/boot/ ├── src/main/java/com/youlai/boot/
│ ├── auth/ # 认证模块 │ ├── auth/ # 认证授权业务
│ ├── system/ # 系统模块(用户、角色、菜单、部门 │ ├── common/ # 全局通用(常量、枚举、工具类、统一响应结果
│ ├── module/ # 业务模块(文件、代码生成 │ ├── framework/ # 底层技术基座(高内聚积木块
│ ├── framework/ # 技术中台(安全、缓存、持久化、集成) │ ├── cache/ # Redis/Caffeine 缓存
│ ├── interfaces/ # 对外接口SSE │ ├── captcha/ # 验证码
│ ├── shared/ # 跨模块共享DTO、枚举、常量 │ ├── integration/ # SMS/Mail/WxMa 集成
│ ├── common/ # 基础能力(结果、异常、切面、工具) │ ├── job/ # XxlJob 定时任务
│ ├── config/ # 全局配置 │ ├── mybatis/ # 数据库/MP配置/拦截器
└── YouLaiBootApplication.java # 启动类 │ ├── openapi/ # OpenAPI/Swagger 文档
│ │ ├── security/ # 鉴权过滤器/Token机制
│ │ └── web/ # 跨域/全局异常/限流/Jackson
│ ├── module/ # 业务模块File、Codegen 等)
│ ├── system/ # 核心系统模块(用户/角色/菜单/部门)
│ └── YouLaiBootApplication.java # 启动类
└── pom.xml # Maven 配置 └── pom.xml # Maven 配置
``` ```

View File

@@ -6,7 +6,7 @@ import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.auth.service.AuthService; import com.youlai.boot.auth.service.AuthService;
import com.youlai.boot.common.annotation.Log; import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.framework.integration.captcha.model.CaptchaInfo; import com.youlai.boot.framework.captcha.model.CaptchaInfo;
import com.youlai.boot.framework.security.model.AuthenticationToken; import com.youlai.boot.framework.security.model.AuthenticationToken;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.auth.service; package com.youlai.boot.auth.service;
import com.youlai.boot.framework.integration.captcha.model.CaptchaInfo; import com.youlai.boot.framework.captcha.model.CaptchaInfo;
import com.youlai.boot.framework.security.model.AuthenticationToken; import com.youlai.boot.framework.security.model.AuthenticationToken;
/** /**

View File

@@ -3,19 +3,15 @@ package com.youlai.boot.auth.service.impl;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.youlai.boot.auth.service.AuthService; import com.youlai.boot.auth.service.AuthService;
import com.youlai.boot.common.constant.RedisConstants; import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.framework.captcha.model.CaptchaInfo;
import com.youlai.boot.common.util.IPUtils; import com.youlai.boot.framework.captcha.service.CaptchaService;
import com.youlai.boot.framework.integration.captcha.model.CaptchaInfo;
import com.youlai.boot.framework.integration.captcha.service.CaptchaService;
import com.youlai.boot.framework.security.model.AuthenticationToken; import com.youlai.boot.framework.security.model.AuthenticationToken;
import com.youlai.boot.framework.security.model.SmsAuthenticationToken; import com.youlai.boot.framework.security.model.SmsAuthenticationToken;
import com.youlai.boot.framework.security.token.TokenManager; import com.youlai.boot.framework.security.token.TokenManager;
import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.framework.integration.sms.enums.SmsTypeEnum; import com.youlai.boot.framework.integration.sms.enums.SmsTypeEnum;
import com.youlai.boot.framework.integration.sms.service.SmsService; import com.youlai.boot.framework.integration.sms.service.SmsService;
import com.youlai.boot.system.model.entity.SysLog;
import com.youlai.boot.system.service.LogService; import com.youlai.boot.system.service.LogService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
@@ -24,10 +20,7 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.shared.constant; package com.youlai.boot.common.constant;
/** /**
* 系统常量 * 系统常量

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.shared.enums; package com.youlai.boot.common.enums;
import com.youlai.boot.common.base.IBaseEnum; import com.youlai.boot.common.base.IBaseEnum;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.shared.enums; package com.youlai.boot.common.enums;
import com.youlai.boot.common.base.IBaseEnum; import com.youlai.boot.common.base.IBaseEnum;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.shared.dto; package com.youlai.boot.common.model;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.shared.dto; package com.youlai.boot.common.model;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.framework.cache.config; package com.youlai.boot.framework.cache;
import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.Caffeine;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.framework.cache.config; package com.youlai.boot.framework.cache;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.cache.autoconfigure.CacheProperties; import org.springframework.boot.cache.autoconfigure.CacheProperties;

View File

@@ -1,9 +1,7 @@
package com.youlai.boot.framework.cache.config; package com.youlai.boot.framework.cache;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@@ -1,9 +1,8 @@
package com.youlai.boot.framework.integration.captcha.config; package com.youlai.boot.framework.captcha.config;
import cn.hutool.captcha.generator.CodeGenerator; import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.captcha.generator.MathGenerator; import cn.hutool.captcha.generator.MathGenerator;
import cn.hutool.captcha.generator.RandomGenerator; import cn.hutool.captcha.generator.RandomGenerator;
import com.youlai.boot.config.property.CaptchaProperties;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.config.property; package com.youlai.boot.framework.captcha.config;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.framework.integration.captcha.exception; package com.youlai.boot.framework.captcha.exception;
import com.youlai.boot.common.result.ResultCode; import com.youlai.boot.common.result.ResultCode;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.framework.integration.captcha.model; package com.youlai.boot.framework.captcha.model;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.framework.integration.captcha.service; package com.youlai.boot.framework.captcha.service;
import cn.hutool.captcha.AbstractCaptcha; import cn.hutool.captcha.AbstractCaptcha;
import cn.hutool.captcha.CaptchaUtil; import cn.hutool.captcha.CaptchaUtil;
@@ -8,9 +8,9 @@ import cn.hutool.core.util.StrUtil;
import com.youlai.boot.common.constant.RedisConstants; import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.enums.CaptchaTypeEnum; import com.youlai.boot.common.enums.CaptchaTypeEnum;
import com.youlai.boot.common.result.ResultCode; import com.youlai.boot.common.result.ResultCode;
import com.youlai.boot.config.property.CaptchaProperties; import com.youlai.boot.framework.captcha.config.CaptchaProperties;
import com.youlai.boot.framework.integration.captcha.exception.CaptchaException; import com.youlai.boot.framework.captcha.exception.CaptchaException;
import com.youlai.boot.framework.integration.captcha.model.CaptchaInfo; import com.youlai.boot.framework.captcha.model.CaptchaInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -1,6 +1,5 @@
package com.youlai.boot.framework.integration.mail.config; package com.youlai.boot.framework.integration.mail.config;
import com.youlai.boot.config.property.MailProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.config.property; package com.youlai.boot.framework.integration.mail.config;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.framework.integration.mail.service; package com.youlai.boot.framework.integration.mail.service;
import com.youlai.boot.config.property.MailProperties; import com.youlai.boot.framework.integration.mail.config.MailProperties;
import jakarta.mail.MessagingException; import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage; import jakarta.mail.internet.MimeMessage;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -16,7 +16,7 @@ import java.io.File;
/** /**
* 邮件服务 * 邮件服务
* *
* @author Ray * @author Ray.Hao
* @since 2024/8/17 * @since 2024/8/17
*/ */
@Service @Service

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.config.property; package com.youlai.boot.framework.integration.sms.config;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -8,7 +8,7 @@ import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType; import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.DefaultProfile;
import com.youlai.boot.config.property.AliyunSmsProperties; import com.youlai.boot.framework.integration.sms.config.AliyunSmsProperties;
import com.youlai.boot.framework.integration.sms.enums.SmsTypeEnum; import com.youlai.boot.framework.integration.sms.enums.SmsTypeEnum;
import com.youlai.boot.framework.integration.sms.service.SmsService; import com.youlai.boot.framework.integration.sms.service.SmsService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -1,9 +1,8 @@
package com.youlai.boot.framework.integration.wxma.config; package com.youlai.boot.framework.integration.wxma;
import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.youlai.boot.config.property.WxMaProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.config.property; package com.youlai.boot.framework.integration.wxma;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.framework.job.config; package com.youlai.boot.framework.job;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -1,12 +1,12 @@
package com.youlai.boot.framework.persistence.config; package com.youlai.boot.framework.mybatis.config;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.youlai.boot.framework.persistence.interceptor.MyDataPermissionHandler; import com.youlai.boot.framework.mybatis.handler.MyMetaObjectHandler;
import com.youlai.boot.framework.persistence.handler.MyMetaObjectHandler; import com.youlai.boot.framework.mybatis.interceptor.MyDataPermissionHandler;
import org.apache.ibatis.mapping.DatabaseIdProvider; import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.mapping.VendorDatabaseIdProvider; import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.framework.persistence.handler; package com.youlai.boot.framework.mybatis.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -1,11 +1,11 @@
package com.youlai.boot.framework.persistence.interceptor; package com.youlai.boot.framework.mybatis.interceptor;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler; import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
import com.youlai.boot.common.annotation.DataPermission; import com.youlai.boot.common.annotation.DataPermission;
import com.youlai.boot.shared.enums.DataScopeEnum; import com.youlai.boot.common.enums.DataScopeEnum;
import com.youlai.boot.framework.security.model.RoleDataScope; import com.youlai.boot.framework.security.model.RoleDataScope;
import com.youlai.boot.framework.security.model.SysUserDetails; import com.youlai.boot.framework.security.model.SysUserDetails;
import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.framework.security.util.SecurityUtils;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.config; package com.youlai.boot.framework.openapi;
import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport;

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.config; package com.youlai.boot.framework.openapi;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import com.youlai.boot.config.property.SecurityProperties; import com.youlai.boot.framework.security.config.SecurityProperties;
import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Contact;

View File

@@ -1,9 +1,8 @@
package com.youlai.boot.framework.security.config; package com.youlai.boot.framework.security.config;
import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaService;
import com.youlai.boot.framework.integration.captcha.service.CaptchaService; import com.youlai.boot.framework.captcha.service.CaptchaService;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import com.youlai.boot.config.property.SecurityProperties;
import com.youlai.boot.framework.web.filter.RateLimiterFilter; import com.youlai.boot.framework.web.filter.RateLimiterFilter;
import com.youlai.boot.framework.security.filter.CaptchaValidationFilter; import com.youlai.boot.framework.security.filter.CaptchaValidationFilter;
import com.youlai.boot.framework.security.filter.TokenAuthenticationFilter; import com.youlai.boot.framework.security.filter.TokenAuthenticationFilter;
@@ -32,9 +31,6 @@ import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import java.util.*;
/** /**
* Spring Security 配置类 * Spring Security 配置类
@@ -59,10 +55,6 @@ public class SecurityConfig {
private final ConfigService configService; private final ConfigService configService;
private final SecurityProperties securityProperties; private final SecurityProperties securityProperties;
private final WxMaService wxMaService;
private final RequestMappingHandlerMapping requestMappingHandlerMapping;
/** /**
* 配置安全过滤链 SecurityFilterChain * 配置安全过滤链 SecurityFilterChain
*/ */

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.config.property; package com.youlai.boot.framework.security.config;
import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;

View File

@@ -6,8 +6,8 @@ import cn.hutool.json.JSONUtil;
import com.youlai.boot.common.constant.SecurityConstants; import com.youlai.boot.common.constant.SecurityConstants;
import com.youlai.boot.common.result.ResultCode; import com.youlai.boot.common.result.ResultCode;
import com.youlai.boot.common.result.ResponseWriter; import com.youlai.boot.common.result.ResponseWriter;
import com.youlai.boot.framework.integration.captcha.exception.CaptchaException; import com.youlai.boot.framework.captcha.exception.CaptchaException;
import com.youlai.boot.framework.integration.captcha.service.CaptchaService; import com.youlai.boot.framework.captcha.service.CaptchaService;
import jakarta.servlet.FilterChain; import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.ServletInputStream; import jakarta.servlet.ServletInputStream;

View File

@@ -14,7 +14,7 @@ import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.constant.SecurityConstants; import com.youlai.boot.common.constant.SecurityConstants;
import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.common.result.ResultCode; import com.youlai.boot.common.result.ResultCode;
import com.youlai.boot.config.property.SecurityProperties; import com.youlai.boot.framework.security.config.SecurityProperties;
import com.youlai.boot.framework.security.model.AuthenticationToken; import com.youlai.boot.framework.security.model.AuthenticationToken;
import com.youlai.boot.framework.security.model.RoleDataScope; import com.youlai.boot.framework.security.model.RoleDataScope;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;

View File

@@ -7,7 +7,7 @@ import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.constant.SecurityConstants; import com.youlai.boot.common.constant.SecurityConstants;
import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.common.result.ResultCode; import com.youlai.boot.common.result.ResultCode;
import com.youlai.boot.config.property.SecurityProperties; import com.youlai.boot.framework.security.config.SecurityProperties;
import com.youlai.boot.framework.security.model.AuthenticationToken; import com.youlai.boot.framework.security.model.AuthenticationToken;
import com.youlai.boot.framework.security.model.UserSession; import com.youlai.boot.framework.security.model.UserSession;
import com.youlai.boot.framework.security.model.SysUserDetails; import com.youlai.boot.framework.security.model.SysUserDetails;

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.framework.security.util;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.youlai.boot.common.constant.SecurityConstants; import com.youlai.boot.common.constant.SecurityConstants;
import com.youlai.boot.shared.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.framework.security.model.RoleDataScope; import com.youlai.boot.framework.security.model.RoleDataScope;
import com.youlai.boot.framework.security.model.SysUserDetails; import com.youlai.boot.framework.security.model.SysUserDetails;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.framework.web.filter;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.youlai.boot.common.constant.RedisConstants; import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.shared.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.common.result.ResultCode; import com.youlai.boot.common.result.ResultCode;
import com.youlai.boot.common.util.IPUtils; import com.youlai.boot.common.util.IPUtils;
import com.youlai.boot.common.result.ResponseWriter; import com.youlai.boot.common.result.ResponseWriter;

View File

@@ -1,17 +0,0 @@
package com.youlai.boot.interfaces.openapi;
/**
* 开放 API 控制器
* <p>
* 面向第三方系统的开放接口,使用 API Key 认证
* </p>
*/
// @RestController
// @RequestMapping("/api/v1/open")
// @Api(tags = "开放API")
public class OpenApiController {
// TODO: 实现 API Key 认证拦截器
// TODO: 定义开放接口规范
}

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.config.property; package com.youlai.boot.module.codegen.config;
import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.module.codegen.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.common.result.PageResult; import com.youlai.boot.common.result.PageResult;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.config.property.CodegenProperties; import com.youlai.boot.module.codegen.config.CodegenProperties;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.module.codegen.service.CodegenService; import com.youlai.boot.module.codegen.service.CodegenService;

View File

@@ -2,8 +2,8 @@ package com.youlai.boot.module.codegen.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.module.codegen.model.bo.ColumnMetaData; import com.youlai.boot.module.codegen.model.vo.ColumnMetaVO;
import com.youlai.boot.module.codegen.model.bo.TableMetaData; import com.youlai.boot.module.codegen.model.vo.TableMetaVO;
import com.youlai.boot.module.codegen.model.query.TableQuery; import com.youlai.boot.module.codegen.model.query.TableQuery;
import com.youlai.boot.module.codegen.model.vo.TablePageVO; import com.youlai.boot.module.codegen.model.vo.TablePageVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -35,13 +35,7 @@ public interface DatabaseMapper extends BaseMapper {
* @param tableName * @param tableName
* @return * @return
*/ */
List<ColumnMetaData> getTableColumns(String tableName); List<ColumnMetaVO> getTableColumns(String tableName);
/** TableMetaVO getTableMetadata(String tableName);
* 获取表元数据
*
* @param tableName
* @return
*/
TableMetaData getTableMetadata(String tableName);
} }

View File

@@ -1,50 +0,0 @@
package com.youlai.boot.module.codegen.model.bo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "数据表字段Vo")
@Data
public class ColumnMetaData {
/**
* 字段名称
*/
private String columnName;
/**
* 字段类型
*/
private String dataType;
/**
* 字段描述
*/
private String columnComment;
/**
* 字段长度
*/
private Long characterMaximumLength;
/**
* 是否主键(1-是 0-否)
*/
private Integer isPrimaryKey;
/**
* 是否可为空(1-是 0-否)
*/
private String isNullable;
/**
* 字符集
*/
private String characterSetName;
/**
* 排序规则
*/
private String collationName;
}

View File

@@ -0,0 +1,26 @@
package com.youlai.boot.module.codegen.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "数据表字段元数据")
@Data
public class ColumnMetaVO {
private String columnName;
private String dataType;
private String columnComment;
private Long characterMaximumLength;
private Integer isPrimaryKey;
private String isNullable;
private String characterSetName;
private String collationName;
}

View File

@@ -1,8 +1,7 @@
package com.youlai.boot.module.codegen.model.bo; package com.youlai.boot.module.codegen.model.vo;
import lombok.Data; import lombok.Data;
/** /**
* 数据表元数据 * 数据表元数据
* *
@@ -10,36 +9,18 @@ import lombok.Data;
* @since 2.10.0 * @since 2.10.0
*/ */
@Data @Data
public class TableMetaData { public class TableMetaVO {
/**
* 表名称
*/
private String tableName; private String tableName;
/**
* 表描述
*/
private String tableComment; private String tableComment;
/**
* 排序规则
*/
private String tableCollation; private String tableCollation;
/**
* 存储引擎
*/
private String engine; private String engine;
/**
* 字符集
*/
private String charset; private String charset;
/**
* 创建时间
*/
private String createTime; private String createTime;
} }

View File

@@ -12,7 +12,7 @@ import cn.hutool.extra.template.TemplateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.module.codegen.enums.JavaTypeEnum; import com.youlai.boot.module.codegen.enums.JavaTypeEnum;
import com.youlai.boot.config.property.CodegenProperties; import com.youlai.boot.module.codegen.config.CodegenProperties;
import com.youlai.boot.module.codegen.service.GenTableService; import com.youlai.boot.module.codegen.service.GenTableService;
import com.youlai.boot.module.codegen.service.GenTableColumnService; import com.youlai.boot.module.codegen.service.GenTableColumnService;
import com.youlai.boot.module.codegen.service.CodegenService; import com.youlai.boot.module.codegen.service.CodegenService;

View File

@@ -11,12 +11,12 @@ import com.youlai.boot.module.codegen.enums.FormTypeEnum;
import com.youlai.boot.module.codegen.enums.JavaTypeEnum; import com.youlai.boot.module.codegen.enums.JavaTypeEnum;
import com.youlai.boot.module.codegen.enums.QueryTypeEnum; import com.youlai.boot.module.codegen.enums.QueryTypeEnum;
import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.config.property.CodegenProperties; import com.youlai.boot.module.codegen.config.CodegenProperties;
import com.youlai.boot.module.codegen.converter.CodegenConverter; import com.youlai.boot.module.codegen.converter.CodegenConverter;
import com.youlai.boot.module.codegen.mapper.DatabaseMapper; import com.youlai.boot.module.codegen.mapper.DatabaseMapper;
import com.youlai.boot.module.codegen.mapper.GenTableMapper; import com.youlai.boot.module.codegen.mapper.GenTableMapper;
import com.youlai.boot.module.codegen.model.bo.ColumnMetaData; import com.youlai.boot.module.codegen.model.vo.ColumnMetaVO;
import com.youlai.boot.module.codegen.model.bo.TableMetaData; import com.youlai.boot.module.codegen.model.vo.TableMetaVO;
import com.youlai.boot.module.codegen.model.entity.GenTable; import com.youlai.boot.module.codegen.model.entity.GenTable;
import com.youlai.boot.module.codegen.model.entity.GenTableColumn; import com.youlai.boot.module.codegen.model.entity.GenTableColumn;
import com.youlai.boot.module.codegen.model.form.GenConfigForm; import com.youlai.boot.module.codegen.model.form.GenConfigForm;
@@ -72,7 +72,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
// 如果没有代码生成配置,则根据表的元数据生成默认配置 // 如果没有代码生成配置,则根据表的元数据生成默认配置
if (genTable == null) { if (genTable == null) {
TableMetaData tableMetadata = databaseMapper.getTableMetadata(tableName); TableMetaVO tableMetadata = databaseMapper.getTableMetadata(tableName);
Assert.isTrue(tableMetadata != null, "未找到表元数据"); Assert.isTrue(tableMetadata != null, "未找到表元数据");
genTable = new GenTable(); genTable = new GenTable();
@@ -100,7 +100,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
List<GenTableColumn> genTableColumns = new ArrayList<>(); List<GenTableColumn> genTableColumns = new ArrayList<>();
// 获取表的列 // 获取表的列
List<ColumnMetaData> tableColumns = databaseMapper.getTableColumns(tableName); List<ColumnMetaVO> tableColumns = databaseMapper.getTableColumns(tableName);
if (CollectionUtil.isNotEmpty(tableColumns)) { if (CollectionUtil.isNotEmpty(tableColumns)) {
// 查询字段生成配置 // 查询字段生成配置
List<GenTableColumn> fieldConfigList = genTableColumnService.list( List<GenTableColumn> fieldConfigList = genTableColumnService.list(
@@ -113,7 +113,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
.filter(Objects::nonNull) // 过滤掉空值 .filter(Objects::nonNull) // 过滤掉空值
.max(Integer::compareTo) .max(Integer::compareTo)
.orElse(0); .orElse(0);
for (ColumnMetaData tableColumn : tableColumns) { for (ColumnMetaVO tableColumn : tableColumns) {
// 根据列名获取字段生成配置 // 根据列名获取字段生成配置
String columnName = tableColumn.getColumnName(); String columnName = tableColumn.getColumnName();
GenTableColumn fieldConfig = fieldConfigList.stream() GenTableColumn fieldConfig = fieldConfigList.stream()
@@ -150,16 +150,16 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
/** /**
* 创建默认字段配置 * 创建默认字段配置
* *
* @param columnMetaData 表字段元数据 * @param columnMetaVO 表字段元数据
* @return * @return
*/ */
private GenTableColumn createDefaultFieldConfig(ColumnMetaData columnMetaData) { private GenTableColumn createDefaultFieldConfig(ColumnMetaVO columnMetaVO) {
GenTableColumn fieldConfig = new GenTableColumn(); GenTableColumn fieldConfig = new GenTableColumn();
fieldConfig.setColumnName(columnMetaData.getColumnName()); fieldConfig.setColumnName(columnMetaVO.getColumnName());
fieldConfig.setColumnType(columnMetaData.getDataType()); fieldConfig.setColumnType(columnMetaVO.getDataType());
fieldConfig.setFieldComment(columnMetaData.getColumnComment()); fieldConfig.setFieldComment(columnMetaVO.getColumnComment());
fieldConfig.setFieldName(StrUtil.toCamelCase(columnMetaData.getColumnName())); fieldConfig.setFieldName(StrUtil.toCamelCase(columnMetaVO.getColumnName()));
fieldConfig.setIsRequired("YES".equals(columnMetaData.getIsNullable()) ? 0 : 1); fieldConfig.setIsRequired("YES".equals(columnMetaVO.getIsNullable()) ? 0 : 1);
String columnType = StrUtil.blankToDefault(fieldConfig.getColumnType(), "").toLowerCase(); String columnType = StrUtil.blankToDefault(fieldConfig.getColumnType(), "").toLowerCase();
if ("date".equals(columnType)) { if ("date".equals(columnType)) {
@@ -171,7 +171,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
} }
fieldConfig.setQueryType(QueryTypeEnum.EQ); fieldConfig.setQueryType(QueryTypeEnum.EQ);
fieldConfig.setMaxLength(columnMetaData.getCharacterMaximumLength()); fieldConfig.setMaxLength(columnMetaVO.getCharacterMaximumLength());
return fieldConfig; return fieldConfig;
} }

View File

@@ -1,9 +1,9 @@
package com.youlai.boot.interfaces.sse.controller; package com.youlai.boot.module.sse.controller;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.framework.security.model.SysUserDetails; import com.youlai.boot.framework.security.model.SysUserDetails;
import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.interfaces.sse.service.SseService; import com.youlai.boot.module.sse.service.SseService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.interfaces.sse.dto; package com.youlai.boot.module.sse.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.interfaces.sse.dto; package com.youlai.boot.module.sse.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.interfaces.sse.job; package com.youlai.boot.module.sse.job;
import com.youlai.boot.interfaces.sse.registry.SseSessionRegistry; import com.youlai.boot.module.sse.registry.SseSessionRegistry;
import com.youlai.boot.interfaces.sse.service.SseService; import com.youlai.boot.module.sse.service.SseService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.interfaces.sse.registry; package com.youlai.boot.module.sse.registry;
import com.youlai.boot.interfaces.sse.dto.OnlineUserDTO; import com.youlai.boot.module.sse.dto.OnlineUserDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

View File

@@ -1,9 +1,9 @@
package com.youlai.boot.interfaces.sse.service; package com.youlai.boot.module.sse.service;
import com.youlai.boot.interfaces.sse.dto.DictChangeEvent; import com.youlai.boot.module.sse.dto.DictChangeEvent;
import com.youlai.boot.interfaces.sse.dto.OnlineUserDTO; import com.youlai.boot.module.sse.dto.OnlineUserDTO;
import com.youlai.boot.interfaces.sse.registry.SseSessionRegistry; import com.youlai.boot.module.sse.registry.SseSessionRegistry;
import com.youlai.boot.interfaces.sse.topic.SseTopics; import com.youlai.boot.module.sse.topic.SseTopics;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.interfaces.sse.topic; package com.youlai.boot.module.sse.topic;
/** /**
* SSE 主题常量 * SSE 主题常量

View File

@@ -1,33 +0,0 @@
package com.youlai.boot.shared.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
/**
* 日志模块枚举
*
* @author Ray
* @since 2.10.0
*/
@Schema(enumAsRef = true)
@Getter
public enum LogModuleEnum {
EXCEPTION("异常"),
LOGIN("登录"),
USER("用户"),
DEPT("部门"),
ROLE("角色"),
MENU("菜单"),
DICT("字典"),
SETTING("系统配置"),
OTHER("其他");
@JsonValue
private final String moduleName;
LogModuleEnum(String moduleName) {
this.moduleName = moduleName;
}
}

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.system.controller;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.annotation.RepeatSubmit; import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.system.model.form.DeptForm; import com.youlai.boot.system.model.form.DeptForm;
import com.youlai.boot.system.model.query.DeptQuery; import com.youlai.boot.system.model.query.DeptQuery;

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.system.controller; package com.youlai.boot.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.common.result.PageResult; import com.youlai.boot.common.result.PageResult;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.ActionTypeEnum;
@@ -17,7 +17,7 @@ import com.youlai.boot.system.model.form.DictForm;
import com.youlai.boot.common.annotation.Log; import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.system.service.DictItemService; import com.youlai.boot.system.service.DictItemService;
import com.youlai.boot.system.service.DictService; import com.youlai.boot.system.service.DictService;
import com.youlai.boot.interfaces.sse.service.SseService; import com.youlai.boot.module.sse.service.SseService;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@@ -4,7 +4,7 @@ import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.common.annotation.RepeatSubmit; import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.system.model.form.MenuForm; import com.youlai.boot.system.model.form.MenuForm;
import com.youlai.boot.system.model.query.MenuQuery; import com.youlai.boot.system.model.query.MenuQuery;

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.annotation.RepeatSubmit; import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.common.result.PageResult; import com.youlai.boot.common.result.PageResult;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.system.model.form.RoleForm; import com.youlai.boot.system.model.form.RoleForm;

View File

@@ -8,7 +8,7 @@ import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.common.result.ExcelResult; import com.youlai.boot.common.result.ExcelResult;
import com.youlai.boot.common.result.PageResult; import com.youlai.boot.common.result.PageResult;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.entity.DictItem;
import com.youlai.boot.system.model.form.DictItemForm; import com.youlai.boot.system.model.form.DictItemForm;
import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.system.model.vo.DictPageVO;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import java.util.List; import java.util.List;

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.system.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.entity.Role; import com.youlai.boot.system.model.entity.Role;
import com.youlai.boot.system.model.vo.RolePageVO; import com.youlai.boot.system.model.vo.RolePageVO;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.form.RoleForm; import com.youlai.boot.system.model.form.RoleForm;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
@@ -21,7 +21,7 @@ import java.util.List;
public interface RoleConverter { public interface RoleConverter {
@Mapping(target = "dataScope", source = "dataScope") @Mapping(target = "dataScope", source = "dataScope")
@Mapping(target = "dataScopeLabel", expression = "java(com.youlai.boot.shared.enums.DataScopeEnum.getByValue(role.getDataScope()) == null ? null : com.youlai.boot.shared.enums.DataScopeEnum.getByValue(role.getDataScope()).getLabel())") @Mapping(target = "dataScopeLabel", expression = "java(com.youlai.boot.common.enums.DataScopeEnum.getByValue(role.getDataScope()) == null ? null : com.youlai.boot.common.enums.DataScopeEnum.getByValue(role.getDataScope()).getLabel())")
RolePageVO toPageVo(Role role); RolePageVO toPageVo(Role role);
Page<RolePageVO> toPageVo(Page<Role> page); Page<RolePageVO> toPageVo(Page<Role> page);

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.system.converter; package com.youlai.boot.system.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.entity.SysUser; import com.youlai.boot.system.model.entity.SysUser;
import com.youlai.boot.system.model.vo.CurrentUserVO; import com.youlai.boot.system.model.vo.CurrentUserVO;
import com.youlai.boot.system.model.form.UserForm; import com.youlai.boot.system.model.form.UserForm;

View File

@@ -9,8 +9,8 @@ import cn.hutool.json.JSONUtil;
import cn.idev.excel.context.AnalysisContext; import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.event.AnalysisEventListener; import cn.idev.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.youlai.boot.shared.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.shared.enums.StatusEnum; import com.youlai.boot.common.enums.StatusEnum;
import com.youlai.boot.common.result.ExcelResult; import com.youlai.boot.common.result.ExcelResult;
import com.youlai.boot.system.converter.UserConverter; import com.youlai.boot.system.converter.UserConverter;
import com.youlai.boot.system.enums.DictCodeEnum; import com.youlai.boot.system.enums.DictCodeEnum;

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.system.model.form; package com.youlai.boot.system.model.form;
import com.youlai.boot.shared.dto.KeyValue; import com.youlai.boot.common.model.KeyValue;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;

View File

@@ -2,7 +2,7 @@ package com.youlai.boot.system.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.entity.Dept; import com.youlai.boot.system.model.entity.Dept;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.form.DeptForm; import com.youlai.boot.system.model.form.DeptForm;
import com.youlai.boot.system.model.query.DeptQuery; import com.youlai.boot.system.model.query.DeptQuery;
import com.youlai.boot.system.model.vo.DeptVO; import com.youlai.boot.system.model.vo.DeptVO;

View File

@@ -2,7 +2,7 @@ package com.youlai.boot.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.entity.Dict;
import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.system.model.form.DictForm;
import com.youlai.boot.system.model.query.DictQuery; import com.youlai.boot.system.model.query.DictQuery;

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.system.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.module.codegen.model.entity.GenTable; import com.youlai.boot.module.codegen.model.entity.GenTable;
import com.youlai.boot.system.model.form.MenuForm; import com.youlai.boot.system.model.form.MenuForm;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.entity.Menu; import com.youlai.boot.system.model.entity.Menu;
import com.youlai.boot.system.model.query.MenuQuery; import com.youlai.boot.system.model.query.MenuQuery;
import com.youlai.boot.system.model.vo.MenuVO; import com.youlai.boot.system.model.vo.MenuVO;

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.framework.security.model.RoleDataScope; import com.youlai.boot.framework.security.model.RoleDataScope;
import com.youlai.boot.system.model.entity.Role; import com.youlai.boot.system.model.entity.Role;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.form.RoleForm; import com.youlai.boot.system.model.form.RoleForm;
import com.youlai.boot.system.model.query.RoleQuery; import com.youlai.boot.system.model.query.RoleQuery;
import com.youlai.boot.system.model.vo.RolePageVO; import com.youlai.boot.system.model.vo.RolePageVO;

View File

@@ -2,7 +2,7 @@ package com.youlai.boot.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.framework.security.model.UserAuthInfo; import com.youlai.boot.framework.security.model.UserAuthInfo;
import com.youlai.boot.system.model.vo.CurrentUserVO; import com.youlai.boot.system.model.vo.CurrentUserVO;
import com.youlai.boot.system.model.vo.UserExportVO; import com.youlai.boot.system.model.vo.UserExportVO;

View File

@@ -13,9 +13,9 @@ import com.youlai.boot.system.model.entity.Dept;
import com.youlai.boot.system.model.form.DeptForm; import com.youlai.boot.system.model.form.DeptForm;
import com.youlai.boot.system.model.query.DeptQuery; import com.youlai.boot.system.model.query.DeptQuery;
import com.youlai.boot.system.model.vo.DeptVO; import com.youlai.boot.system.model.vo.DeptVO;
import com.youlai.boot.shared.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.shared.enums.StatusEnum; import com.youlai.boot.common.enums.StatusEnum;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.service.DeptService; import com.youlai.boot.system.service.DeptService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.converter.DictConverter; import com.youlai.boot.system.converter.DictConverter;
import com.youlai.boot.system.mapper.DictMapper; import com.youlai.boot.system.mapper.DictMapper;
import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.entity.Dict;

View File

@@ -16,11 +16,11 @@ import com.youlai.boot.system.model.form.MenuForm;
import com.youlai.boot.system.model.query.MenuQuery; import com.youlai.boot.system.model.query.MenuQuery;
import com.youlai.boot.system.model.vo.MenuVO; import com.youlai.boot.system.model.vo.MenuVO;
import com.youlai.boot.system.model.vo.RouteVO; import com.youlai.boot.system.model.vo.RouteVO;
import com.youlai.boot.shared.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.system.enums.MenuTypeEnum; import com.youlai.boot.system.enums.MenuTypeEnum;
import com.youlai.boot.shared.enums.StatusEnum; import com.youlai.boot.common.enums.StatusEnum;
import com.youlai.boot.shared.dto.KeyValue; import com.youlai.boot.common.model.KeyValue;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.service.MenuService; import com.youlai.boot.system.service.MenuService;
import com.youlai.boot.system.service.RoleMenuService; import com.youlai.boot.system.service.RoleMenuService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.interfaces.sse.dto.OnlineUserDTO; import com.youlai.boot.module.sse.dto.OnlineUserDTO;
import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.system.converter.NoticeConverter; import com.youlai.boot.system.converter.NoticeConverter;
import com.youlai.boot.system.enums.NoticePublishStatusEnum; import com.youlai.boot.system.enums.NoticePublishStatusEnum;
@@ -26,7 +26,7 @@ import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.service.NoticeService; import com.youlai.boot.system.service.NoticeService;
import com.youlai.boot.system.service.UserNoticeService; import com.youlai.boot.system.service.UserNoticeService;
import com.youlai.boot.system.service.UserService; import com.youlai.boot.system.service.UserService;
import com.youlai.boot.interfaces.sse.service.SseService; import com.youlai.boot.module.sse.service.SseService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

View File

@@ -8,8 +8,8 @@ import com.youlai.boot.framework.security.token.TokenManager;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.shared.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.shared.enums.DataScopeEnum; import com.youlai.boot.common.enums.DataScopeEnum;
import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.framework.security.model.RoleDataScope; import com.youlai.boot.framework.security.model.RoleDataScope;
import com.youlai.boot.system.converter.RoleConverter; import com.youlai.boot.system.converter.RoleConverter;
@@ -19,7 +19,7 @@ import com.youlai.boot.system.model.entity.RoleMenu;
import com.youlai.boot.system.model.form.RoleForm; import com.youlai.boot.system.model.form.RoleForm;
import com.youlai.boot.system.model.query.RoleQuery; import com.youlai.boot.system.model.query.RoleQuery;
import com.youlai.boot.system.model.vo.RolePageVO; import com.youlai.boot.system.model.vo.RolePageVO;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.system.service.RoleDeptService; import com.youlai.boot.system.service.RoleDeptService;
import com.youlai.boot.system.service.RoleMenuService; import com.youlai.boot.system.service.RoleMenuService;

View File

@@ -9,9 +9,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.common.constant.RedisConstants; import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.shared.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.shared.dto.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.framework.integration.mail.service.MailService; import com.youlai.boot.framework.integration.mail.service.MailService;
import com.youlai.boot.framework.integration.sms.enums.SmsTypeEnum; import com.youlai.boot.framework.integration.sms.enums.SmsTypeEnum;
import com.youlai.boot.framework.integration.sms.service.SmsService; import com.youlai.boot.framework.integration.sms.service.SmsService;

View File

@@ -35,7 +35,7 @@
</select> </select>
<!-- 查询数据库表元数据 mysql版本--> <!-- 查询数据库表元数据 mysql版本-->
<select id="getTableMetadata" resultType="com.youlai.boot.module.codegen.model.bo.TableMetaData" databaseId="mysql"> <select id="getTableMetadata" resultType="com.youlai.boot.module.codegen.model.vo.TableMetaVO" databaseId="mysql">
SELECT SELECT
TABLE_NAME , TABLE_NAME ,
TABLE_COMMENT , TABLE_COMMENT ,
@@ -50,7 +50,7 @@
</select> </select>
<!-- 获取数据库表字段元数据 mysql版本--> <!-- 获取数据库表字段元数据 mysql版本-->
<select id="getTableColumns" resultType="com.youlai.boot.module.codegen.model.bo.ColumnMetaData" databaseId="mysql"> <select id="getTableColumns" resultType="com.youlai.boot.module.codegen.model.vo.ColumnMetaVO" databaseId="mysql">
SELECT SELECT
COLUMN_NAME, COLUMN_NAME,
DATA_TYPE, DATA_TYPE,

View File

@@ -34,7 +34,7 @@
INNER JOIN sys_role r ON sur.role_id = r.id INNER JOIN sys_role r ON sur.role_id = r.id
WHERE WHERE
sur.user_id = u.id sur.user_id = u.id
AND r.code = '${@com.youlai.boot.shared.constant.SystemConstants@ROOT_ROLE_CODE}' AND r.code = '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}'
) )
<if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'> <if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'>
AND ( AND (
@@ -186,7 +186,7 @@
INNER JOIN sys_role r ON sur.role_id = r.id INNER JOIN sys_role r ON sur.role_id = r.id
WHERE WHERE
sur.user_id = u.id sur.user_id = u.id
AND r.code = '${@com.youlai.boot.shared.constant.SystemConstants@ROOT_ROLE_CODE}' AND r.code = '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}'
) )
<if test='keywords!=null and keywords.trim() neq ""'> <if test='keywords!=null and keywords.trim() neq ""'>
AND (u.username LIKE CONCAT('%',#{keywords},'%') AND (u.username LIKE CONCAT('%',#{keywords},'%')

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.security.token; package com.youlai.boot.security.token;
import com.youlai.boot.config.property.SecurityProperties; import com.youlai.boot.framework.security.config.SecurityProperties;
import com.youlai.boot.framework.security.model.AuthenticationToken; import com.youlai.boot.framework.security.model.AuthenticationToken;
import com.youlai.boot.framework.security.model.RoleDataScope; import com.youlai.boot.framework.security.model.RoleDataScope;
import com.youlai.boot.framework.security.model.SysUserDetails; import com.youlai.boot.framework.security.model.SysUserDetails;