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

@@ -6,7 +6,7 @@ import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.result.Result;
import com.youlai.boot.auth.service.AuthService;
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 io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;

View File

@@ -1,6 +1,6 @@
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;
/**

View File

@@ -3,19 +3,15 @@ package com.youlai.boot.auth.service.impl;
import cn.hutool.core.util.StrUtil;
import com.youlai.boot.auth.service.AuthService;
import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.util.IPUtils;
import com.youlai.boot.framework.integration.captcha.model.CaptchaInfo;
import com.youlai.boot.framework.integration.captcha.service.CaptchaService;
import com.youlai.boot.framework.captcha.model.CaptchaInfo;
import com.youlai.boot.framework.captcha.service.CaptchaService;
import com.youlai.boot.framework.security.model.AuthenticationToken;
import com.youlai.boot.framework.security.model.SmsAuthenticationToken;
import com.youlai.boot.framework.security.token.TokenManager;
import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.framework.integration.sms.enums.SmsTypeEnum;
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 jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.context.SecurityContextHolder;
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.Map;
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 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 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 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 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 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.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.SerializationFeature;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
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.MathGenerator;
import cn.hutool.captcha.generator.RandomGenerator;
import com.youlai.boot.config.property.CaptchaProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
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 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 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 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.CaptchaUtil;
@@ -8,9 +8,9 @@ import cn.hutool.core.util.StrUtil;
import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.enums.CaptchaTypeEnum;
import com.youlai.boot.common.result.ResultCode;
import com.youlai.boot.config.property.CaptchaProperties;
import com.youlai.boot.framework.integration.captcha.exception.CaptchaException;
import com.youlai.boot.framework.integration.captcha.model.CaptchaInfo;
import com.youlai.boot.framework.captcha.config.CaptchaProperties;
import com.youlai.boot.framework.captcha.exception.CaptchaException;
import com.youlai.boot.framework.captcha.model.CaptchaInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

View File

@@ -1,6 +1,5 @@
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.context.annotation.Bean;
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 org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,6 +1,6 @@
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.internet.MimeMessage;
import lombok.RequiredArgsConstructor;
@@ -16,7 +16,7 @@ import java.io.File;
/**
* 邮件服务
*
* @author Ray
* @author Ray.Hao
* @since 2024/8/17
*/
@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 org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -8,7 +8,7 @@ import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
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.service.SmsService;
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.impl.WxMaServiceImpl;
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.context.annotation.Bean;
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 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 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.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.youlai.boot.framework.persistence.interceptor.MyDataPermissionHandler;
import com.youlai.boot.framework.persistence.handler.MyMetaObjectHandler;
import com.youlai.boot.framework.mybatis.handler.MyMetaObjectHandler;
import com.youlai.boot.framework.mybatis.interceptor.MyDataPermissionHandler;
import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
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 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.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
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.SysUserDetails;
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;

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.config;
package com.youlai.boot.framework.openapi;
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.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;

View File

@@ -1,9 +1,8 @@
package com.youlai.boot.framework.security.config;
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 com.youlai.boot.config.property.SecurityProperties;
import com.youlai.boot.framework.web.filter.RateLimiterFilter;
import com.youlai.boot.framework.security.filter.CaptchaValidationFilter;
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.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import java.util.*;
/**
* Spring Security 配置类
@@ -59,10 +55,6 @@ public class SecurityConfig {
private final ConfigService configService;
private final SecurityProperties securityProperties;
private final WxMaService wxMaService;
private final RequestMappingHandlerMapping requestMappingHandlerMapping;
/**
* 配置安全过滤链 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.NotEmpty;

View File

@@ -6,8 +6,8 @@ import cn.hutool.json.JSONUtil;
import com.youlai.boot.common.constant.SecurityConstants;
import com.youlai.boot.common.result.ResultCode;
import com.youlai.boot.common.result.ResponseWriter;
import com.youlai.boot.framework.integration.captcha.exception.CaptchaException;
import com.youlai.boot.framework.integration.captcha.service.CaptchaService;
import com.youlai.boot.framework.captcha.exception.CaptchaException;
import com.youlai.boot.framework.captcha.service.CaptchaService;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
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.exception.BusinessException;
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.RoleDataScope;
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.exception.BusinessException;
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.UserSession;
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.util.StrUtil;
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.SysUserDetails;
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.util.StrUtil;
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.util.IPUtils;
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.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.youlai.boot.common.result.PageResult;
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.LogModuleEnum;
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.extension.plugins.pagination.Page;
import com.youlai.boot.module.codegen.model.bo.ColumnMetaData;
import com.youlai.boot.module.codegen.model.bo.TableMetaData;
import com.youlai.boot.module.codegen.model.vo.ColumnMetaVO;
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.vo.TablePageVO;
import org.apache.ibatis.annotations.Mapper;
@@ -35,13 +35,7 @@ public interface DatabaseMapper extends BaseMapper {
* @param tableName
* @return
*/
List<ColumnMetaData> getTableColumns(String tableName);
List<ColumnMetaVO> getTableColumns(String tableName);
/**
* 获取表元数据
*
* @param tableName
* @return
*/
TableMetaData getTableMetadata(String tableName);
TableMetaVO 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;
/**
* 数据表元数据
*
@@ -10,36 +9,18 @@ import lombok.Data;
* @since 2.10.0
*/
@Data
public class TableMetaData {
public class TableMetaVO {
/**
* 表名称
*/
private String tableName;
/**
* 表描述
*/
private String tableComment;
/**
* 排序规则
*/
private String tableCollation;
/**
* 存储引擎
*/
private String engine;
/**
* 字符集
*/
private String charset;
/**
* 创建时间
*/
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.extension.plugins.pagination.Page;
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.GenTableColumnService;
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.QueryTypeEnum;
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.mapper.DatabaseMapper;
import com.youlai.boot.module.codegen.mapper.GenTableMapper;
import com.youlai.boot.module.codegen.model.bo.ColumnMetaData;
import com.youlai.boot.module.codegen.model.bo.TableMetaData;
import com.youlai.boot.module.codegen.model.vo.ColumnMetaVO;
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.GenTableColumn;
import com.youlai.boot.module.codegen.model.form.GenConfigForm;
@@ -72,7 +72,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
// 如果没有代码生成配置,则根据表的元数据生成默认配置
if (genTable == null) {
TableMetaData tableMetadata = databaseMapper.getTableMetadata(tableName);
TableMetaVO tableMetadata = databaseMapper.getTableMetadata(tableName);
Assert.isTrue(tableMetadata != null, "未找到表元数据");
genTable = new GenTable();
@@ -100,7 +100,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
List<GenTableColumn> genTableColumns = new ArrayList<>();
// 获取表的列
List<ColumnMetaData> tableColumns = databaseMapper.getTableColumns(tableName);
List<ColumnMetaVO> tableColumns = databaseMapper.getTableColumns(tableName);
if (CollectionUtil.isNotEmpty(tableColumns)) {
// 查询字段生成配置
List<GenTableColumn> fieldConfigList = genTableColumnService.list(
@@ -113,7 +113,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
.filter(Objects::nonNull) // 过滤掉空值
.max(Integer::compareTo)
.orElse(0);
for (ColumnMetaData tableColumn : tableColumns) {
for (ColumnMetaVO tableColumn : tableColumns) {
// 根据列名获取字段生成配置
String columnName = tableColumn.getColumnName();
GenTableColumn fieldConfig = fieldConfigList.stream()
@@ -150,16 +150,16 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
/**
* 创建默认字段配置
*
* @param columnMetaData 表字段元数据
* @param columnMetaVO 表字段元数据
* @return
*/
private GenTableColumn createDefaultFieldConfig(ColumnMetaData columnMetaData) {
private GenTableColumn createDefaultFieldConfig(ColumnMetaVO columnMetaVO) {
GenTableColumn fieldConfig = new GenTableColumn();
fieldConfig.setColumnName(columnMetaData.getColumnName());
fieldConfig.setColumnType(columnMetaData.getDataType());
fieldConfig.setFieldComment(columnMetaData.getColumnComment());
fieldConfig.setFieldName(StrUtil.toCamelCase(columnMetaData.getColumnName()));
fieldConfig.setIsRequired("YES".equals(columnMetaData.getIsNullable()) ? 0 : 1);
fieldConfig.setColumnName(columnMetaVO.getColumnName());
fieldConfig.setColumnType(columnMetaVO.getDataType());
fieldConfig.setFieldComment(columnMetaVO.getColumnComment());
fieldConfig.setFieldName(StrUtil.toCamelCase(columnMetaVO.getColumnName()));
fieldConfig.setIsRequired("YES".equals(columnMetaVO.getIsNullable()) ? 0 : 1);
String columnType = StrUtil.blankToDefault(fieldConfig.getColumnType(), "").toLowerCase();
if ("date".equals(columnType)) {
@@ -171,7 +171,7 @@ public class GenTableServiceImpl extends ServiceImpl<GenTableMapper, GenTable> i
}
fieldConfig.setQueryType(QueryTypeEnum.EQ);
fieldConfig.setMaxLength(columnMetaData.getCharacterMaximumLength());
fieldConfig.setMaxLength(columnMetaVO.getCharacterMaximumLength());
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.framework.security.model.SysUserDetails;
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.tags.Tag;
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.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.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.interfaces.sse.service.SseService;
import com.youlai.boot.module.sse.registry.SseSessionRegistry;
import com.youlai.boot.module.sse.service.SseService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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 org.springframework.stereotype.Component;
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.interfaces.sse.dto.OnlineUserDTO;
import com.youlai.boot.interfaces.sse.registry.SseSessionRegistry;
import com.youlai.boot.interfaces.sse.topic.SseTopics;
import com.youlai.boot.module.sse.dto.DictChangeEvent;
import com.youlai.boot.module.sse.dto.OnlineUserDTO;
import com.youlai.boot.module.sse.registry.SseSessionRegistry;
import com.youlai.boot.module.sse.topic.SseTopics;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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 主题常量

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.LogModuleEnum;
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.system.model.form.DeptForm;
import com.youlai.boot.system.model.query.DeptQuery;

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.system.controller;
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.Result;
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.system.service.DictItemService;
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.tags.Tag;
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.enums.ActionTypeEnum;
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.system.model.form.MenuForm;
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.LogModuleEnum;
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.Result;
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.LogModuleEnum;
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.PageResult;
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.form.DictItemForm;
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 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.youlai.boot.system.model.entity.Role;
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 org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@@ -21,7 +21,7 @@ import java.util.List;
public interface RoleConverter {
@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);
Page<RolePageVO> toPageVo(Page<Role> page);

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.system.converter;
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.vo.CurrentUserVO;
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.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.youlai.boot.shared.constant.SystemConstants;
import com.youlai.boot.shared.enums.StatusEnum;
import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.common.enums.StatusEnum;
import com.youlai.boot.common.result.ExcelResult;
import com.youlai.boot.system.converter.UserConverter;
import com.youlai.boot.system.enums.DictCodeEnum;

View File

@@ -1,6 +1,6 @@
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 lombok.Data;
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.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.query.DeptQuery;
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.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.form.DictForm;
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.youlai.boot.module.codegen.model.entity.GenTable;
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.query.MenuQuery;
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.youlai.boot.framework.security.model.RoleDataScope;
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.query.RoleQuery;
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.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.system.model.vo.CurrentUserVO;
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.query.DeptQuery;
import com.youlai.boot.system.model.vo.DeptVO;
import com.youlai.boot.shared.constant.SystemConstants;
import com.youlai.boot.shared.enums.StatusEnum;
import com.youlai.boot.shared.dto.Option;
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.DeptService;
import lombok.RequiredArgsConstructor;
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.service.impl.ServiceImpl;
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.mapper.DictMapper;
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.vo.MenuVO;
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.shared.enums.StatusEnum;
import com.youlai.boot.shared.dto.KeyValue;
import com.youlai.boot.shared.dto.Option;
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.MenuService;
import com.youlai.boot.system.service.RoleMenuService;
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.service.impl.ServiceImpl;
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.system.converter.NoticeConverter;
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.UserNoticeService;
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 org.springframework.stereotype.Service;
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.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.shared.constant.SystemConstants;
import com.youlai.boot.shared.enums.DataScopeEnum;
import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.common.enums.DataScopeEnum;
import com.youlai.boot.common.exception.BusinessException;
import com.youlai.boot.framework.security.model.RoleDataScope;
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.query.RoleQuery;
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.system.service.RoleDeptService;
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.service.impl.ServiceImpl;
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.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.sms.enums.SmsTypeEnum;
import com.youlai.boot.framework.integration.sms.service.SmsService;