Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot into feature/noticews
# Conflicts: # src/main/java/com/youlai/boot/platform/websocket/service/impl/WebsocketServiceImpl.java # src/main/java/com/youlai/boot/system/controller/NoticeController.java # src/main/java/com/youlai/boot/system/controller/NoticeStatusController.java # src/main/java/com/youlai/boot/system/converter/NoticeConverter.java # src/main/java/com/youlai/boot/system/converter/NoticeStatusConverter.java # src/main/java/com/youlai/boot/system/mapper/NoticeMapper.java # src/main/java/com/youlai/boot/system/mapper/NoticeStatusMapper.java # src/main/java/com/youlai/boot/system/model/entity/Notice.java # src/main/java/com/youlai/boot/system/model/entity/NoticeStatus.java # src/main/java/com/youlai/boot/system/model/form/NoticeForm.java # src/main/java/com/youlai/boot/system/model/form/NoticeStatusForm.java # src/main/java/com/youlai/boot/system/model/query/NoticeQuery.java # src/main/java/com/youlai/boot/system/model/query/NoticeStatusQuery.java # src/main/java/com/youlai/boot/system/model/vo/NoticeStatusVO.java # src/main/java/com/youlai/boot/system/model/vo/NoticeVO.java # src/main/java/com/youlai/boot/system/service/NoticeService.java # src/main/java/com/youlai/boot/system/service/NoticeStatusService.java # src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java # src/main/java/com/youlai/boot/system/service/impl/NoticeStatusServiceImpl.java
This commit is contained in:
95
README.md
95
README.md
@@ -43,46 +43,61 @@
|
|||||||
```
|
```
|
||||||
youlai-boot
|
youlai-boot
|
||||||
├── sql # SQL脚本
|
├── sql # SQL脚本
|
||||||
├── mysql5 # MySQL5 脚本
|
│ ├── mysql5 # MySQL5 脚本
|
||||||
├── mysql8 # MySQL8 脚本
|
│ └── mysql8 # MySQL8 脚本
|
||||||
├── src # 源码目录
|
├── src # 源码目录
|
||||||
├── common # 公共模块
|
│ ├── common # 公共模块
|
||||||
├── config # 自动装配配置
|
│ │ ├── annotation # 注解定义
|
||||||
├── CorsConfig # 跨域共享配置
|
│ │ ├── base # 基础类
|
||||||
├── MybatisConfig # Mybatis 自动装配配置
|
│ │ ├── constant # 常量
|
||||||
├── RedisCacheConfig # Redis 缓存自动装配配置
|
│ │ ├── enums # 枚举类型
|
||||||
├── RedisConfig # Redis 自动装配配置
|
│ │ ├── exception # 异常处理
|
||||||
├── SecurityConfig # Spring Security 自动装配配置
|
│ │ ├── model # 数据模型
|
||||||
├── SwaggerConfig # API 接口文档配置
|
│ │ ├── result # 结果封装
|
||||||
├── WebMvcConfig # WebMvc 配置
|
│ │ └── util # 工具类
|
||||||
├── WebSocketConfig # WebSocket 自动装配配置
|
│ ├── config # 自动装配配置
|
||||||
├── XxlJobConfig # XXL-JOB 自动装配配置
|
│ │ ├── CorsConfig # 跨域共享配置
|
||||||
├── controller # 控制层
|
│ │ ├── MybatisConfig # Mybatis 自动装配配置
|
||||||
├── converter # MapStruct 转换器
|
│ │ ├── RedisCacheConfig # Redis 缓存自动装配配置
|
||||||
├── filter # 过滤器
|
│ │ ├── RedisConfig # Redis 自动装配配置
|
||||||
├── RequestLogFilter # 请求日志过滤器
|
│ │ ├── SecurityConfig # Spring Security 自动装配配置
|
||||||
├── VerifyCodeFilter # 验证码过滤器
|
│ │ ├── SwaggerConfig # API 接口文档配置
|
||||||
├── model # 模型层
|
│ │ ├── WebMvcConfig # WebMvc 配置
|
||||||
├── bo # 业务对象
|
│ │ ├── WebSocketConfig # WebSocket 自动装配配置
|
||||||
├── dto # 数据传输对象
|
│ │ └── XxlJobConfig # XXL-JOB 自动装配配置
|
||||||
├── entity # 实体对象
|
│ ├── core # 核心功能模块
|
||||||
├── form # 表单对象
|
│ │ ├── aspect # 切面
|
||||||
├── query # 查询参数对象
|
│ │ │ ├── LogAspect # 日志切面
|
||||||
├── vo # 视图对象
|
│ │ │ └── RepeatSubmitAspect # 防重提交切面
|
||||||
├── mapper # 数据库访问层
|
│ │ ├── filter # 过滤器
|
||||||
├── plugin # 插件(可选)
|
│ │ │ ├── RateLimiterFilter # 限流过滤器
|
||||||
├── captcha # 验证码插件,用于生成验证码
|
│ │ │ └── RequestLogFilter # 请求日志过滤器
|
||||||
├── dupsubmit # 防重提交插件,用于防止表单重复提交
|
│ │ ├── handler # 处理器
|
||||||
├── mybatis # Mybatis 插件,数据权限、字段填充
|
│ │ │ ├── MyDataPermissionHandler # 数据权限处理器
|
||||||
├── easyexcel # EasyExcel 插件,Excel 文件的读写
|
│ │ │ └── MyMetaObjectHandler # 元对象字段填充处理器
|
||||||
├── xxljob # XXL-JOB 插件,分布式任务调度和执行
|
│ │ └── security # Security 安全中心
|
||||||
├── security # Spring Security 安全配置和扩展
|
│ ├── platform # 平台基础设施模块
|
||||||
├── util # 工具类
|
│ │ ├── auth # 授权
|
||||||
├── JwtUtils # JWT 工具类,用于生成和解析 JWT
|
│ │ ├── file # 文件处理
|
||||||
├── SecurityUtils # Spring Security 工具类,用于获取当前登录用户
|
│ │ ├── generator # 代码生成器
|
||||||
├── service # 业务逻辑层
|
│ │ ├── mail # 邮件处理
|
||||||
|
│ │ └── sms # 短信处理
|
||||||
|
│ ├── system # 系统模块
|
||||||
|
│ │ ├── controller # 控制层
|
||||||
|
│ │ ├── converter # MapStruct 转换器
|
||||||
|
│ │ ├── event # 事件处理
|
||||||
|
│ │ ├── handler # 处理器
|
||||||
|
│ │ ├── listener # 监听器
|
||||||
|
│ │ ├── model # 模型层
|
||||||
|
│ │ │ ├── bo # 业务对象
|
||||||
|
│ │ │ ├── dto # 数据传输对象
|
||||||
|
│ │ │ ├── entity # 实体对象
|
||||||
|
│ │ │ ├── form # 表单对象
|
||||||
|
│ │ │ ├── query # 查询参数对象
|
||||||
|
│ │ │ └── vo # 视图对象
|
||||||
|
│ │ ├── mapper # 数据库访问层
|
||||||
|
│ │ └── service # 业务逻辑层
|
||||||
|
│ └── YouLaiApplication # 启动类
|
||||||
└── end
|
└── end
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -111,7 +126,7 @@ youlai-boot
|
|||||||
|
|
||||||
3. **启动项目**
|
3. **启动项目**
|
||||||
|
|
||||||
执行 [SystemApplication.java](src/main/java/com/youlai/system/SystemApplication.java) 的 main 方法完成后端项目启动;
|
执行 [SystemApplication.java](src/main/java/com/youlai/boot/YouLaiApplication.java) 的 main 方法完成后端项目启动;
|
||||||
|
|
||||||
访问接口文档地址 [http://localhost:8989/doc.html](http://localhost:8989/doc.html) 验证项目启动是否成功。
|
访问接口文档地址 [http://localhost:8989/doc.html](http://localhost:8989/doc.html) 验证项目启动是否成功。
|
||||||
|
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>com.youlai</groupId>
|
<groupId>com.youlai</groupId>
|
||||||
<artifactId>youlai-boot</artifactId>
|
<artifactId>youlai-boot</artifactId>
|
||||||
<version>2.9.0</version>
|
<version>2.10.0</version>
|
||||||
<description>基于 Java 17 + SpringBoot 3 + Spring Security 构建的权限管理系统。</description>
|
<description>基于 Java 17 + SpringBoot 3 + Spring Security 构建的权限管理系统。</description>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ INSERT INTO `sys_menu` VALUES (110, 0, '0', '路由参数', 2, NULL, '/route-par
|
|||||||
INSERT INTO `sys_menu` VALUES (111, 110, '0,110', '参数(type=1)', 1, NULL, 'route-param-type1', 'demo/route-param', NULL, 0, 1, 1, 1, 'el-icon-Star', NULL, '2024-05-26 21:59:24', '2024-05-26 21:59:37', '{\"type\": \"1\"}');
|
INSERT INTO `sys_menu` VALUES (111, 110, '0,110', '参数(type=1)', 1, NULL, 'route-param-type1', 'demo/route-param', NULL, 0, 1, 1, 1, 'el-icon-Star', NULL, '2024-05-26 21:59:24', '2024-05-26 21:59:37', '{\"type\": \"1\"}');
|
||||||
INSERT INTO `sys_menu` VALUES (112, 110, '0,110', '参数(type=2)', 1, NULL, 'route-param-type2', 'demo/route-param', NULL, 0, 1, 1, 2, 'el-icon-StarFilled', NULL, '2024-05-26 21:46:55', '2024-05-26 21:59:45', '{\"type\": \"2\"}');
|
INSERT INTO `sys_menu` VALUES (112, 110, '0,110', '参数(type=2)', 1, NULL, 'route-param-type2', 'demo/route-param', NULL, 0, 1, 1, 2, 'el-icon-StarFilled', NULL, '2024-05-26 21:46:55', '2024-05-26 21:59:45', '{\"type\": \"2\"}');
|
||||||
INSERT INTO `sys_menu` VALUES (117, 1, '0,1', '系统日志', 1, 'Log', 'log', 'system/log/index', NULL, 0, 1, 1, 6, 'document', NULL, '2024-06-28 07:43:16', '2024-06-28 07:43:16', NULL);
|
INSERT INTO `sys_menu` VALUES (117, 1, '0,1', '系统日志', 1, 'Log', 'log', 'system/log/index', NULL, 0, 1, 1, 6, 'document', NULL, '2024-06-28 07:43:16', '2024-06-28 07:43:16', NULL);
|
||||||
INSERT INTO `sys_menu` VALUES (118, 0, '0', '系统工具', 2, NULL, '/tool', 'Layout', NULL, 0, 1, 1, 2, 'menu', NULL, '2024-07-13 08:41:07', '2024-07-13 08:41:07', NULL);
|
INSERT INTO `sys_menu` VALUES (118, 0, '0', '系统工具', 2, NULL, '/generator', 'Layout', NULL, 0, 1, 1, 2, 'menu', NULL, '2024-07-13 08:41:07', '2024-07-13 08:41:07', NULL);
|
||||||
INSERT INTO `sys_menu` VALUES (119, 118, '0,118', '代码生成(Alpha)', 1, 'Generator', 'generator', 'generator/index', NULL, 0, 1, 1, 1, 'code', NULL, '2024-07-13 08:44:51', '2024-07-13 08:44:51', NULL);
|
INSERT INTO `sys_menu` VALUES (119, 118, '0,118', '代码生成(Alpha)', 1, 'Generator', 'generator', 'generator/index', NULL, 0, 1, 1, 1, 'code', NULL, '2024-07-13 08:44:51', '2024-07-13 08:44:51', NULL);
|
||||||
INSERT INTO `sys_menu` VALUES (120, 1, '0,1', '系统配置', 1, 'Config', 'config', 'system/config/index', NULL, 0, 1, 1, 7, 'setting', NULL, '2024-07-30 16:29:24', '2024-07-30 16:29:32', NULL);
|
INSERT INTO `sys_menu` VALUES (120, 1, '0,1', '系统配置', 1, 'Config', 'config', 'system/config/index', NULL, 0, 1, 1, 7, 'setting', NULL, '2024-07-30 16:29:24', '2024-07-30 16:29:32', NULL);
|
||||||
INSERT INTO `sys_menu` VALUES (121, 120, '0,1,120', '查询系统配置', 4, NULL, '', NULL, 'sys:config:query', 0, 1, 1, 1, '', NULL, '2024-07-30 16:29:54', '2024-07-30 16:29:54', NULL);
|
INSERT INTO `sys_menu` VALUES (121, 120, '0,1,120', '查询系统配置', 4, NULL, '', NULL, 'sys:config:query', 0, 1, 1, 1, '', NULL, '2024-07-30 16:29:54', '2024-07-30 16:29:54', NULL);
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ INSERT INTO `sys_menu` VALUES (110, 0, '0', '路由参数', 2, NULL, '/route-par
|
|||||||
INSERT INTO `sys_menu` VALUES (111, 110, '0,110', '参数(type=1)', 1, NULL, 'route-param-type1', 'demo/route-param', NULL, 0, 1, 1, 1, 'el-icon-Star', NULL, '2024-05-26 21:59:24', '2024-05-26 21:59:37', '{\"type\": \"1\"}');
|
INSERT INTO `sys_menu` VALUES (111, 110, '0,110', '参数(type=1)', 1, NULL, 'route-param-type1', 'demo/route-param', NULL, 0, 1, 1, 1, 'el-icon-Star', NULL, '2024-05-26 21:59:24', '2024-05-26 21:59:37', '{\"type\": \"1\"}');
|
||||||
INSERT INTO `sys_menu` VALUES (112, 110, '0,110', '参数(type=2)', 1, NULL, 'route-param-type2', 'demo/route-param', NULL, 0, 1, 1, 2, 'el-icon-StarFilled', NULL, '2024-05-26 21:46:55', '2024-05-26 21:59:45', '{\"type\": \"2\"}');
|
INSERT INTO `sys_menu` VALUES (112, 110, '0,110', '参数(type=2)', 1, NULL, 'route-param-type2', 'demo/route-param', NULL, 0, 1, 1, 2, 'el-icon-StarFilled', NULL, '2024-05-26 21:46:55', '2024-05-26 21:59:45', '{\"type\": \"2\"}');
|
||||||
INSERT INTO `sys_menu` VALUES (117, 1, '0,1', '系统日志', 1, 'Log', 'log', 'system/log/index', NULL, 0, 1, 1, 6, 'document', NULL, '2024-06-28 07:43:16', '2024-06-28 07:43:16', NULL);
|
INSERT INTO `sys_menu` VALUES (117, 1, '0,1', '系统日志', 1, 'Log', 'log', 'system/log/index', NULL, 0, 1, 1, 6, 'document', NULL, '2024-06-28 07:43:16', '2024-06-28 07:43:16', NULL);
|
||||||
INSERT INTO `sys_menu` VALUES (118, 0, '0', '系统工具', 2, NULL, '/tool', 'Layout', NULL, 0, 1, 1, 2, 'menu', NULL, '2024-07-13 08:41:07', '2024-07-13 08:41:07', NULL);
|
INSERT INTO `sys_menu` VALUES (118, 0, '0', '系统工具', 2, NULL, '/generator', 'Layout', NULL, 0, 1, 1, 2, 'menu', NULL, '2024-07-13 08:41:07', '2024-07-13 08:41:07', NULL);
|
||||||
INSERT INTO `sys_menu` VALUES (119, 118, '0,118', '代码生成(Alpha)', 1, 'Generator', 'generator', 'generator/index', NULL, 0, 1, 1, 1, 'code', NULL, '2024-07-13 08:44:51', '2024-07-13 08:44:51', NULL);
|
INSERT INTO `sys_menu` VALUES (119, 118, '0,118', '代码生成(Alpha)', 1, 'Generator', 'generator', 'generator/index', NULL, 0, 1, 1, 1, 'code', NULL, '2024-07-13 08:44:51', '2024-07-13 08:44:51', NULL);
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
|||||||
@@ -1,15 +1,23 @@
|
|||||||
package com.youlai.system;
|
package com.youlai.boot;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
|
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用启动类
|
||||||
|
*
|
||||||
|
* @author Ray
|
||||||
|
* @since 0.0.1
|
||||||
|
*/
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@ConfigurationPropertiesScan
|
@ConfigurationPropertiesScan
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
public class SystemApplication {
|
public class YouLaiApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(SystemApplication.class, args);
|
SpringApplication.run(YouLaiApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.plugin.mybatis.annotation;
|
package com.youlai.boot.common.annotation;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MP数据权限注解
|
* 数据权限注解
|
||||||
*
|
*
|
||||||
* @author zc
|
* @author zc
|
||||||
* @since 2.0.0
|
* @since 2.0.0
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.plugin.syslog.annotation;
|
package com.youlai.boot.common.annotation;
|
||||||
|
|
||||||
import com.youlai.system.enums.LogModuleEnum;
|
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ import java.lang.annotation.*;
|
|||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
@Documented
|
@Documented
|
||||||
public @interface LogAnnotation {
|
public @interface Log {
|
||||||
|
|
||||||
String value() default "";
|
String value() default "";
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.plugin.norepeat.annotation;
|
package com.youlai.boot.common.annotation;
|
||||||
|
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
|
|||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Documented
|
@Documented
|
||||||
@Inherited
|
@Inherited
|
||||||
public @interface PreventRepeatSubmit {
|
public @interface RepeatSubmit {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 锁过期时间(秒)
|
* 锁过期时间(秒)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.plugin.easyexcel;
|
package com.youlai.boot.common.base;
|
||||||
|
|
||||||
import com.alibaba.excel.event.AnalysisEventListener;
|
import com.alibaba.excel.event.AnalysisEventListener;
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ import com.alibaba.excel.event.AnalysisEventListener;
|
|||||||
* @author haoxr
|
* @author haoxr
|
||||||
* @since 2023/03/01
|
* @since 2023/03/01
|
||||||
*/
|
*/
|
||||||
public abstract class MyAnalysisEventListener<T> extends AnalysisEventListener<T> {
|
public abstract class BaseAnalysisEventListener<T> extends AnalysisEventListener<T> {
|
||||||
|
|
||||||
private String msg;
|
private String msg;
|
||||||
public abstract String getMsg();
|
public abstract String getMsg();
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.base;
|
package com.youlai.boot.common.base;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.base;
|
package com.youlai.boot.common.base;
|
||||||
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.base;
|
package com.youlai.boot.common.base;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.base;
|
package com.youlai.boot.common.base;
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.constant;
|
package com.youlai.boot.common.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JWT Claims声明常量
|
* JWT Claims声明常量
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.constant;
|
package com.youlai.boot.common.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Redis Key常量
|
* Redis Key常量
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.constant;
|
package com.youlai.boot.common.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存常量
|
* 缓存常量
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.constant;
|
package com.youlai.boot.common.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 符号和特殊符号常用类
|
* 符号和特殊符号常用类
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.constant;
|
package com.youlai.boot.common.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统常量
|
* 系统常量
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EasyCaptcha 验证码类型枚举
|
* EasyCaptcha 验证码类型枚举
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 联系方式类型
|
* 联系方式类型
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.boot.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||||
import com.fasterxml.jackson.annotation.JsonValue;
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.boot.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.boot.common.base.IBaseEnum;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonValue;
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.boot.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||||
import com.fasterxml.jackson.annotation.JsonValue;
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.boot.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.boot.common.enums;
|
||||||
|
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.boot.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.exception;
|
package com.youlai.boot.common.exception;
|
||||||
|
|
||||||
import com.youlai.system.common.result.IResultCode;
|
import com.youlai.boot.common.result.IResultCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.slf4j.helpers.MessageFormatter;
|
import org.slf4j.helpers.MessageFormatter;
|
||||||
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.exception;
|
package com.youlai.boot.common.exception;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.youlai.system.common.result.Result;
|
import com.youlai.boot.common.result.Result;
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.TypeMismatchException;
|
import org.springframework.beans.TypeMismatchException;
|
||||||
import org.springframework.context.support.DefaultMessageSourceResolvable;
|
import org.springframework.context.support.DefaultMessageSourceResolvable;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.model;
|
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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.model;
|
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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.result;
|
package com.youlai.boot.common.result;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 响应码接口
|
* 响应码接口
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.result;
|
package com.youlai.boot.common.result;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.result;
|
package com.youlai.boot.common.result;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.common.result;
|
package com.youlai.boot.common.result;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
package com.youlai.system.util;
|
package com.youlai.boot.common.util;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.util;
|
package com.youlai.boot.common.util;
|
||||||
|
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import com.youlai.system.plugin.easyexcel.MyAnalysisEventListener;
|
import com.youlai.boot.common.base.BaseAnalysisEventListener;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ import java.io.InputStream;
|
|||||||
*/
|
*/
|
||||||
public class ExcelUtils {
|
public class ExcelUtils {
|
||||||
|
|
||||||
public static <T> String importExcel(InputStream is, Class clazz, MyAnalysisEventListener<T> listener) {
|
public static <T> String importExcel(InputStream is, Class clazz, BaseAnalysisEventListener<T> listener) {
|
||||||
EasyExcel.read(is, clazz, listener).sheet().doRead();
|
EasyExcel.read(is, clazz, listener).sheet().doRead();
|
||||||
return listener.getMsg();
|
return listener.getMsg();
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.util;
|
package com.youlai.boot.common.util;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.system.util;
|
package com.youlai.boot.common.util;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.youlai.system.common.result.Result;
|
import com.youlai.boot.common.result.Result;
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.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.system.config.property.CaptchaProperties;
|
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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import com.youlai.system.config.property.MailProperties;
|
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;
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.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.system.plugin.mybatis.handler.MyDataPermissionHandler;
|
import com.youlai.boot.core.handler.MyDataPermissionHandler;
|
||||||
import com.youlai.system.plugin.mybatis.handler.MyMetaObjectHandler;
|
import com.youlai.boot.core.handler.MyMetaObjectHandler;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.cache.CacheProperties;
|
import org.springframework.boot.autoconfigure.cache.CacheProperties;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import cn.hutool.captcha.generator.CodeGenerator;
|
import cn.hutool.captcha.generator.CodeGenerator;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.youlai.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.config.property.SecurityProperties;
|
import com.youlai.boot.config.property.SecurityProperties;
|
||||||
import com.youlai.system.filter.RedisRateLimiterFilter;
|
import com.youlai.boot.core.filter.RateLimiterFilter;
|
||||||
import com.youlai.system.security.exception.MyAccessDeniedHandler;
|
import com.youlai.boot.core.security.exception.MyAccessDeniedHandler;
|
||||||
import com.youlai.system.security.exception.MyAuthenticationEntryPoint;
|
import com.youlai.boot.core.security.exception.MyAuthenticationEntryPoint;
|
||||||
import com.youlai.system.filter.JwtValidationFilter;
|
import com.youlai.boot.core.security.filter.JwtValidationFilter;
|
||||||
import com.youlai.system.filter.CaptchaValidationFilter;
|
import com.youlai.boot.core.security.filter.CaptchaValidationFilter;
|
||||||
import com.youlai.system.service.SysConfigService;
|
import com.youlai.boot.system.service.ConfigService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@@ -45,9 +45,7 @@ public class SecurityConfig {
|
|||||||
private final RedisTemplate<String, Object> redisTemplate;
|
private final RedisTemplate<String, Object> redisTemplate;
|
||||||
private final CodeGenerator codeGenerator;
|
private final CodeGenerator codeGenerator;
|
||||||
private final SecurityProperties securityProperties;
|
private final SecurityProperties securityProperties;
|
||||||
private final SysConfigService sysConfigService;
|
private final ConfigService configService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||||
@@ -68,7 +66,7 @@ public class SecurityConfig {
|
|||||||
|
|
||||||
;
|
;
|
||||||
// 限流过滤器
|
// 限流过滤器
|
||||||
http.addFilterBefore(new RedisRateLimiterFilter(redisTemplate, sysConfigService), UsernamePasswordAuthenticationFilter.class);
|
http.addFilterBefore(new RateLimiterFilter(redisTemplate, configService), UsernamePasswordAuthenticationFilter.class);
|
||||||
// 验证码校验过滤器
|
// 验证码校验过滤器
|
||||||
http.addFilterBefore(new CaptchaValidationFilter(redisTemplate, codeGenerator), UsernamePasswordAuthenticationFilter.class);
|
http.addFilterBefore(new CaptchaValidationFilter(redisTemplate, codeGenerator), UsernamePasswordAuthenticationFilter.class);
|
||||||
// JWT 校验过滤器
|
// JWT 校验过滤器
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
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;
|
||||||
@@ -68,7 +68,7 @@ public class SwaggerConfig {
|
|||||||
if (openApi.getPaths() != null) {
|
if (openApi.getPaths() != null) {
|
||||||
openApi.getPaths().forEach((s, pathItem) -> {
|
openApi.getPaths().forEach((s, pathItem) -> {
|
||||||
// 登录接口/验证码不需要添加鉴权参数
|
// 登录接口/验证码不需要添加鉴权参数
|
||||||
if (s.equals("/api/v1/auth/login") || s.equals("/api/v1/auth/captcha")) {
|
if ("/api/v1/auth/login".equals(s) || "/api/v1/auth/captcha".equals(s)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 接口添加鉴权参数
|
// 接口添加鉴权参数
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
import com.fasterxml.jackson.core.JsonParser;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@@ -21,9 +21,7 @@ import org.springframework.validation.beanvalidation.SpringConstraintValidatorFa
|
|||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.TimeZone;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebMvc 自动装配配置
|
* WebMvc 自动装配配置
|
||||||
@@ -1,16 +1,12 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.jwt.JWTPayload;
|
import cn.hutool.jwt.JWTPayload;
|
||||||
import cn.hutool.jwt.JWTUtil;
|
import cn.hutool.jwt.JWTUtil;
|
||||||
import com.youlai.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.event.UserConnectionEvent;
|
import com.youlai.boot.system.event.UserConnectionEvent;
|
||||||
import com.youlai.system.service.WebsocketService;
|
|
||||||
import groovy.lang.Lazy;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config;
|
package com.youlai.boot.config;
|
||||||
|
|
||||||
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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config.property;
|
package com.youlai.boot.config.property;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config.property;
|
package com.youlai.boot.config.property;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config.property;
|
package com.youlai.boot.config.property;
|
||||||
|
|
||||||
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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config.property;
|
package com.youlai.boot.config.property;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.config.property;
|
package com.youlai.boot.config.property;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
@@ -1,16 +1,15 @@
|
|||||||
package com.youlai.system.plugin.syslog.aspect;
|
package com.youlai.boot.core.aspect;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.date.TimeInterval;
|
import cn.hutool.core.date.TimeInterval;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.http.useragent.UserAgent;
|
import cn.hutool.http.useragent.UserAgent;
|
||||||
import cn.hutool.http.useragent.UserAgentUtil;
|
import cn.hutool.http.useragent.UserAgentUtil;
|
||||||
import com.youlai.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.util.IPUtils;
|
import com.youlai.boot.common.util.IPUtils;
|
||||||
import com.youlai.system.model.entity.SysLog;
|
import com.youlai.boot.system.model.entity.Log;
|
||||||
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
|
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||||
import com.youlai.system.security.util.SecurityUtils;
|
import com.youlai.boot.system.service.LogService;
|
||||||
import com.youlai.system.service.SysLogService;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -32,15 +31,15 @@ import org.springframework.stereotype.Component;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class LogAspect {
|
public class LogAspect {
|
||||||
|
|
||||||
private final SysLogService logService;
|
private final LogService logService;
|
||||||
private final HttpServletRequest request;
|
private final HttpServletRequest request;
|
||||||
|
|
||||||
@Pointcut("@annotation(com.youlai.system.plugin.syslog.annotation.LogAnnotation)")
|
@Pointcut("@annotation(com.youlai.boot.common.annotation.Log)")
|
||||||
public void logPointcut() {
|
public void logPointcut() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Around("logPointcut() && @annotation(logAnnotation)")
|
@Around("logPointcut() && @annotation(logAnnotation)")
|
||||||
public Object logExecutionTime(ProceedingJoinPoint joinPoint, LogAnnotation logAnnotation) throws Throwable {
|
public Object logExecutionTime(ProceedingJoinPoint joinPoint, com.youlai.boot.common.annotation.Log logAnnotation) throws Throwable {
|
||||||
String requestURI = request.getRequestURI();
|
String requestURI = request.getRequestURI();
|
||||||
|
|
||||||
Long userId = null;
|
Long userId = null;
|
||||||
@@ -55,7 +54,7 @@ public class LogAspect {
|
|||||||
long executionTime = timer.interval();
|
long executionTime = timer.interval();
|
||||||
|
|
||||||
// 创建日志记录
|
// 创建日志记录
|
||||||
SysLog log = new SysLog();
|
Log log = new Log();
|
||||||
log.setModule(logAnnotation.module());
|
log.setModule(logAnnotation.module());
|
||||||
log.setContent(logAnnotation.value());
|
log.setContent(logAnnotation.value());
|
||||||
log.setRequestUri(requestURI);
|
log.setRequestUri(requestURI);
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.youlai.system.plugin.norepeat.aspect;
|
package com.youlai.boot.core.aspect;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.jwt.JWTUtil;
|
import cn.hutool.jwt.JWTUtil;
|
||||||
import cn.hutool.jwt.RegisteredPayload;
|
import cn.hutool.jwt.RegisteredPayload;
|
||||||
import com.youlai.system.common.constant.RedisConstants;
|
import com.youlai.boot.common.constant.RedisConstants;
|
||||||
import com.youlai.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.exception.BusinessException;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.exception.BusinessException;
|
||||||
import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit;
|
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -34,24 +34,24 @@ import java.util.concurrent.TimeUnit;
|
|||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class DuplicateSubmitAspect {
|
public class RepeatSubmitAspect {
|
||||||
|
|
||||||
private final RedissonClient redissonClient;
|
private final RedissonClient redissonClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 防重复提交切点
|
* 防重复提交切点
|
||||||
*/
|
*/
|
||||||
@Pointcut("@annotation(preventRepeatSubmit)")
|
@Pointcut("@annotation(repeatSubmit)")
|
||||||
public void preventDuplicateSubmitPointCut(PreventRepeatSubmit preventRepeatSubmit) {
|
public void preventDuplicateSubmitPointCut(RepeatSubmit repeatSubmit) {
|
||||||
log.info("定义防重复提交切点");
|
log.info("定义防重复提交切点");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Around("preventDuplicateSubmitPointCut(preventRepeatSubmit)")
|
@Around("preventDuplicateSubmitPointCut(repeatSubmit)")
|
||||||
public Object doAround(ProceedingJoinPoint pjp, PreventRepeatSubmit preventRepeatSubmit) throws Throwable {
|
public Object doAround(ProceedingJoinPoint pjp, RepeatSubmit repeatSubmit) throws Throwable {
|
||||||
|
|
||||||
String resubmitLockKey = generateResubmitLockKey();
|
String resubmitLockKey = generateResubmitLockKey();
|
||||||
if (resubmitLockKey != null) {
|
if (resubmitLockKey != null) {
|
||||||
int expire = preventRepeatSubmit.expire(); // 防重提交锁过期时间
|
int expire = repeatSubmit.expire(); // 防重提交锁过期时间
|
||||||
RLock lock = redissonClient.getLock(resubmitLockKey);
|
RLock lock = redissonClient.getLock(resubmitLockKey);
|
||||||
boolean lockResult = lock.tryLock(0, expire, TimeUnit.SECONDS); // 获取锁失败,直接返回 false
|
boolean lockResult = lock.tryLock(0, expire, TimeUnit.SECONDS); // 获取锁失败,直接返回 false
|
||||||
if (!lockResult) {
|
if (!lockResult) {
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.youlai.system.filter;
|
package com.youlai.boot.core.filter;
|
||||||
|
|
||||||
import com.youlai.system.common.constant.RedisConstants;
|
import com.youlai.boot.common.constant.RedisConstants;
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import com.youlai.system.service.SysConfigService;
|
import com.youlai.boot.common.util.IPUtils;
|
||||||
import com.youlai.system.util.IPUtils;
|
import com.youlai.boot.common.util.ResponseUtils;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.boot.system.service.ConfigService;
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
import jakarta.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
@@ -24,14 +24,14 @@ import java.util.concurrent.TimeUnit;
|
|||||||
* @since 2024/08/10 14:38
|
* @since 2024/08/10 14:38
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class RedisRateLimiterFilter extends OncePerRequestFilter {
|
public class RateLimiterFilter extends OncePerRequestFilter {
|
||||||
|
|
||||||
private final RedisTemplate<String, Object> redisTemplate;
|
private final RedisTemplate<String, Object> redisTemplate;
|
||||||
private final SysConfigService sysConfigService;
|
private final ConfigService configService;
|
||||||
|
|
||||||
public RedisRateLimiterFilter(RedisTemplate<String, Object> redisTemplate, SysConfigService sysConfigService) {
|
public RateLimiterFilter(RedisTemplate<String, Object> redisTemplate, ConfigService configService) {
|
||||||
this.redisTemplate = redisTemplate;
|
this.redisTemplate = redisTemplate;
|
||||||
this.sysConfigService = sysConfigService;
|
this.configService = configService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,7 +48,7 @@ public class RedisRateLimiterFilter extends OncePerRequestFilter {
|
|||||||
if (count == null || count == 1) {
|
if (count == null || count == 1) {
|
||||||
redisTemplate.expire(key,1, TimeUnit.SECONDS);
|
redisTemplate.expire(key,1, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
Object systemConfig = sysConfigService.getSystemConfig(RedisConstants.IP_QPS_THRESHOLD_LIMIT_KEY);
|
Object systemConfig = configService.getSystemConfig(RedisConstants.IP_QPS_THRESHOLD_LIMIT_KEY);
|
||||||
long limit = 10;
|
long limit = 10;
|
||||||
if(systemConfig != null){
|
if(systemConfig != null){
|
||||||
limit = Long.parseLong(systemConfig.toString());
|
limit = Long.parseLong(systemConfig.toString());
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.filter;
|
package com.youlai.boot.core.filter;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.youlai.system.plugin.mybatis.handler;
|
package com.youlai.boot.core.handler;
|
||||||
|
|
||||||
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.system.plugin.mybatis.annotation.DataPermission;
|
import com.youlai.boot.common.annotation.DataPermission;
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.boot.common.base.IBaseEnum;
|
||||||
import com.youlai.system.enums.DataScopeEnum;
|
import com.youlai.boot.common.enums.DataScopeEnum;
|
||||||
import com.youlai.system.security.util.SecurityUtils;
|
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.sf.jsqlparser.expression.Expression;
|
import net.sf.jsqlparser.expression.Expression;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.plugin.mybatis.handler;
|
package com.youlai.boot.core.handler;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||||
import org.apache.ibatis.reflection.MetaObject;
|
import org.apache.ibatis.reflection.MetaObject;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.security.exception;
|
package com.youlai.boot.core.security.exception;
|
||||||
|
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.boot.common.util.ResponseUtils;
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
import org.springframework.security.web.access.AccessDeniedHandler;
|
import org.springframework.security.web.access.AccessDeniedHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.security.exception;
|
package com.youlai.boot.core.security.exception;
|
||||||
|
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.boot.common.util.ResponseUtils;
|
||||||
import org.springframework.security.authentication.BadCredentialsException;
|
import org.springframework.security.authentication.BadCredentialsException;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
import org.springframework.security.web.AuthenticationEntryPoint;
|
import org.springframework.security.web.AuthenticationEntryPoint;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.youlai.system.filter;
|
package com.youlai.boot.core.security.filter;
|
||||||
|
|
||||||
import cn.hutool.captcha.generator.CodeGenerator;
|
import cn.hutool.captcha.generator.CodeGenerator;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.youlai.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.boot.common.util.ResponseUtils;
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
import jakarta.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
package com.youlai.system.filter;
|
package com.youlai.boot.core.security.filter;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.jwt.JWT;
|
import cn.hutool.jwt.JWT;
|
||||||
import cn.hutool.jwt.JWTPayload;
|
import cn.hutool.jwt.JWTPayload;
|
||||||
import cn.hutool.jwt.JWTUtil;
|
import cn.hutool.jwt.JWTUtil;
|
||||||
import com.youlai.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.boot.common.result.ResultCode;
|
||||||
import com.youlai.system.security.util.JwtUtils;
|
import com.youlai.boot.core.security.util.JwtUtils;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.boot.common.util.ResponseUtils;
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
import jakarta.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.system.security.model;
|
package com.youlai.boot.core.security.model;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.youlai.system.model.dto.UserAuthInfo;
|
import com.youlai.boot.system.model.dto.UserAuthInfo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.security.service;
|
package com.youlai.boot.core.security.service;
|
||||||
|
|
||||||
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.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.security.util.SecurityUtils;
|
import com.youlai.boot.core.security.util.SecurityUtils;
|
||||||
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;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.system.security.service;
|
package com.youlai.boot.core.security.service;
|
||||||
|
|
||||||
import com.youlai.system.security.model.SysUserDetails;
|
import com.youlai.boot.core.security.model.SysUserDetails;
|
||||||
import com.youlai.system.model.dto.UserAuthInfo;
|
import com.youlai.boot.system.model.dto.UserAuthInfo;
|
||||||
import com.youlai.system.service.SysUserService;
|
import com.youlai.boot.system.service.UserService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
@@ -21,7 +21,7 @@ import org.springframework.stereotype.Service;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class SysUserDetailsService implements UserDetailsService {
|
public class SysUserDetailsService implements UserDetailsService {
|
||||||
|
|
||||||
private final SysUserService sysUserService;
|
private final UserService userService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据用户名获取用户信息
|
* 根据用户名获取用户信息
|
||||||
@@ -33,7 +33,7 @@ public class SysUserDetailsService implements UserDetailsService {
|
|||||||
@Override
|
@Override
|
||||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||||
try {
|
try {
|
||||||
UserAuthInfo userAuthInfo = sysUserService.getUserAuthInfo(username);
|
UserAuthInfo userAuthInfo = userService.getUserAuthInfo(username);
|
||||||
if (userAuthInfo == null) {
|
if (userAuthInfo == null) {
|
||||||
throw new UsernameNotFoundException(username);
|
throw new UsernameNotFoundException(username);
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.security.util;
|
package com.youlai.boot.core.security.util;
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
@@ -6,8 +6,8 @@ import cn.hutool.core.util.IdUtil;
|
|||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.jwt.JWTPayload;
|
import cn.hutool.jwt.JWTPayload;
|
||||||
import cn.hutool.jwt.JWTUtil;
|
import cn.hutool.jwt.JWTUtil;
|
||||||
import com.youlai.system.common.constant.JwtClaimConstants;
|
import com.youlai.boot.common.constant.JwtClaimConstants;
|
||||||
import com.youlai.system.security.model.SysUserDetails;
|
import com.youlai.boot.core.security.model.SysUserDetails;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.security.util;
|
package com.youlai.boot.core.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.system.common.constant.SystemConstants;
|
import com.youlai.boot.common.constant.SystemConstants;
|
||||||
import com.youlai.system.security.model.SysUserDetails;
|
import com.youlai.boot.core.security.model.SysUserDetails;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.youlai.system.controller;
|
package com.youlai.boot.platform.auth.controller;
|
||||||
|
|
||||||
import com.youlai.system.enums.LogModuleEnum;
|
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||||
import com.youlai.system.common.result.Result;
|
import com.youlai.boot.common.result.Result;
|
||||||
import com.youlai.system.model.dto.CaptchaResult;
|
import com.youlai.boot.platform.auth.service.AuthService;
|
||||||
import com.youlai.system.model.dto.LoginResult;
|
import com.youlai.boot.system.model.dto.CaptchaResult;
|
||||||
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
|
import com.youlai.boot.system.model.dto.LoginResult;
|
||||||
import com.youlai.system.service.AuthService;
|
import com.youlai.boot.common.annotation.Log;
|
||||||
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;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@@ -30,7 +30,7 @@ public class AuthController {
|
|||||||
|
|
||||||
@Operation(summary = "登录")
|
@Operation(summary = "登录")
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
@LogAnnotation(value = "登录", module = LogModuleEnum.LOGIN)
|
@Log(value = "登录", module = LogModuleEnum.LOGIN)
|
||||||
public Result<LoginResult> login(
|
public Result<LoginResult> login(
|
||||||
@Parameter(description = "用户名", example = "admin") @RequestParam String username,
|
@Parameter(description = "用户名", example = "admin") @RequestParam String username,
|
||||||
@Parameter(description = "密码", example = "123456") @RequestParam String password
|
@Parameter(description = "密码", example = "123456") @RequestParam String password
|
||||||
@@ -41,7 +41,7 @@ public class AuthController {
|
|||||||
|
|
||||||
@Operation(summary = "注销")
|
@Operation(summary = "注销")
|
||||||
@DeleteMapping("/logout")
|
@DeleteMapping("/logout")
|
||||||
@LogAnnotation(value = "注销", module = LogModuleEnum.LOGIN)
|
@Log(value = "注销", module = LogModuleEnum.LOGIN)
|
||||||
public Result<?> logout() {
|
public Result<?> logout() {
|
||||||
authService.logout();
|
authService.logout();
|
||||||
return Result.success();
|
return Result.success();
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.auth.service;
|
||||||
|
|
||||||
import com.youlai.system.model.dto.CaptchaResult;
|
import com.youlai.boot.system.model.dto.CaptchaResult;
|
||||||
import com.youlai.system.model.dto.LoginResult;
|
import com.youlai.boot.system.model.dto.LoginResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 认证服务接口
|
* 认证服务接口
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service.impl;
|
package com.youlai.boot.platform.auth.service.impl;
|
||||||
|
|
||||||
import cn.hutool.captcha.AbstractCaptcha;
|
import cn.hutool.captcha.AbstractCaptcha;
|
||||||
import cn.hutool.captcha.CaptchaUtil;
|
import cn.hutool.captcha.CaptchaUtil;
|
||||||
@@ -8,13 +8,13 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.jwt.JWTPayload;
|
import cn.hutool.jwt.JWTPayload;
|
||||||
import cn.hutool.jwt.JWTUtil;
|
import cn.hutool.jwt.JWTUtil;
|
||||||
import com.youlai.system.common.constant.SecurityConstants;
|
import com.youlai.boot.common.constant.SecurityConstants;
|
||||||
import com.youlai.system.enums.CaptchaTypeEnum;
|
import com.youlai.boot.common.enums.CaptchaTypeEnum;
|
||||||
import com.youlai.system.model.dto.CaptchaResult;
|
import com.youlai.boot.platform.auth.service.AuthService;
|
||||||
import com.youlai.system.model.dto.LoginResult;
|
import com.youlai.boot.system.model.dto.CaptchaResult;
|
||||||
import com.youlai.system.config.property.CaptchaProperties;
|
import com.youlai.boot.system.model.dto.LoginResult;
|
||||||
import com.youlai.system.service.AuthService;
|
import com.youlai.boot.config.property.CaptchaProperties;
|
||||||
import com.youlai.system.security.util.JwtUtils;
|
import com.youlai.boot.core.security.util.JwtUtils;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.system.controller;
|
package com.youlai.boot.platform.file.controller;
|
||||||
|
|
||||||
import com.youlai.system.common.result.Result;
|
import com.youlai.boot.common.result.Result;
|
||||||
import com.youlai.system.model.dto.FileInfo;
|
import com.youlai.boot.platform.file.service.FileService;
|
||||||
import com.youlai.system.service.OssService;
|
import com.youlai.boot.system.model.dto.FileInfo;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
@@ -25,15 +25,21 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class FileController {
|
public class FileController {
|
||||||
|
|
||||||
private final OssService ossService;
|
private final FileService fileService;
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@Operation(summary = "文件上传")
|
@Operation(summary = "文件上传")
|
||||||
public Result<FileInfo> uploadFile(
|
public Result<FileInfo> uploadFile(
|
||||||
@Parameter(name = "file", description = "表单文件对象", required = true, in = ParameterIn.DEFAULT, schema = @Schema(name = "file", format = "binary"))
|
@Parameter(
|
||||||
|
name = "file",
|
||||||
|
description = "表单文件对象",
|
||||||
|
required = true,
|
||||||
|
in = ParameterIn.DEFAULT,
|
||||||
|
schema = @Schema(name = "file", format = "binary")
|
||||||
|
)
|
||||||
@RequestPart(value = "file") MultipartFile file
|
@RequestPart(value = "file") MultipartFile file
|
||||||
) {
|
) {
|
||||||
FileInfo fileInfo = ossService.uploadFile(file);
|
FileInfo fileInfo = fileService.uploadFile(file);
|
||||||
return Result.success(fileInfo);
|
return Result.success(fileInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +49,7 @@ public class FileController {
|
|||||||
public Result<?> deleteFile(
|
public Result<?> deleteFile(
|
||||||
@Parameter(description = "文件路径") @RequestParam String filePath
|
@Parameter(description = "文件路径") @RequestParam String filePath
|
||||||
) {
|
) {
|
||||||
boolean result = ossService.deleteFile(filePath);
|
boolean result = fileService.deleteFile(filePath);
|
||||||
return Result.judge(result);
|
return Result.judge(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.file.service;
|
||||||
|
|
||||||
import com.youlai.system.model.dto.FileInfo;
|
import com.youlai.boot.system.model.dto.FileInfo;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -9,7 +9,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
* @author haoxr
|
* @author haoxr
|
||||||
* @since 2022/11/19
|
* @since 2022/11/19
|
||||||
*/
|
*/
|
||||||
public interface OssService {
|
public interface FileService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传文件
|
* 上传文件
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service.impl.oss;
|
package com.youlai.boot.platform.file.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
@@ -8,8 +8,8 @@ import com.aliyun.oss.OSS;
|
|||||||
import com.aliyun.oss.OSSClientBuilder;
|
import com.aliyun.oss.OSSClientBuilder;
|
||||||
import com.aliyun.oss.model.ObjectMetadata;
|
import com.aliyun.oss.model.ObjectMetadata;
|
||||||
import com.aliyun.oss.model.PutObjectRequest;
|
import com.aliyun.oss.model.PutObjectRequest;
|
||||||
import com.youlai.system.model.dto.FileInfo;
|
import com.youlai.boot.platform.file.service.FileService;
|
||||||
import com.youlai.system.service.OssService;
|
import com.youlai.boot.system.model.dto.FileInfo;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -33,7 +33,7 @@ import java.time.LocalDateTime;
|
|||||||
@ConfigurationProperties(prefix = "oss.aliyun")
|
@ConfigurationProperties(prefix = "oss.aliyun")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
public class AliyunOssService implements OssService {
|
public class AliyunFileService implements FileService {
|
||||||
/**
|
/**
|
||||||
* 服务Endpoint
|
* 服务Endpoint
|
||||||
*/
|
*/
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.youlai.system.service.impl.oss;
|
package com.youlai.boot.platform.file.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.youlai.system.model.dto.FileInfo;
|
import com.youlai.boot.platform.file.service.FileService;
|
||||||
import com.youlai.system.service.OssService;
|
import com.youlai.boot.system.model.dto.FileInfo;
|
||||||
import io.minio.*;
|
import io.minio.*;
|
||||||
import io.minio.errors.*;
|
import io.minio.errors.*;
|
||||||
import io.minio.http.Method;
|
import io.minio.http.Method;
|
||||||
@@ -36,7 +36,7 @@ import java.time.LocalDateTime;
|
|||||||
@ConfigurationProperties(prefix = "oss.minio")
|
@ConfigurationProperties(prefix = "oss.minio")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
public class MinioOssService implements OssService {
|
public class MinioFileService implements FileService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务Endpoint
|
* 服务Endpoint
|
||||||
@@ -102,7 +102,8 @@ public class MinioOssService implements OssService {
|
|||||||
|
|
||||||
// 返回文件路径
|
// 返回文件路径
|
||||||
String fileUrl;
|
String fileUrl;
|
||||||
if (StrUtil.isBlank(customDomain)) { // 未配置自定义域名
|
// 未配置自定义域名
|
||||||
|
if (StrUtil.isBlank(customDomain)) {
|
||||||
GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder()
|
GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder()
|
||||||
.bucket(bucketName).object(fileName)
|
.bucket(bucketName).object(fileName)
|
||||||
.method(Method.GET)
|
.method(Method.GET)
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
package com.youlai.system.controller;
|
package com.youlai.boot.platform.generator.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.system.common.result.PageResult;
|
import com.youlai.boot.common.result.PageResult;
|
||||||
import com.youlai.system.common.result.Result;
|
import com.youlai.boot.common.result.Result;
|
||||||
import com.youlai.system.config.property.GeneratorProperties;
|
import com.youlai.boot.config.property.GeneratorProperties;
|
||||||
import com.youlai.system.enums.LogModuleEnum;
|
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||||
import com.youlai.system.model.form.GenConfigForm;
|
import com.youlai.boot.platform.generator.service.GeneratorService;
|
||||||
import com.youlai.system.model.query.TablePageQuery;
|
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||||
import com.youlai.system.model.vo.GeneratorPreviewVO;
|
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||||
import com.youlai.system.model.vo.TablePageVO;
|
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
||||||
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
|
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||||
import com.youlai.system.service.GeneratorService;
|
import com.youlai.boot.common.annotation.Log;
|
||||||
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;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@@ -18,7 +18,6 @@ import jakarta.servlet.http.HttpServletResponse;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.util.UriUtils;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
@@ -42,7 +41,7 @@ public class GeneratorController {
|
|||||||
|
|
||||||
@Operation(summary = "获取数据表分页列表")
|
@Operation(summary = "获取数据表分页列表")
|
||||||
@GetMapping("/table/page")
|
@GetMapping("/table/page")
|
||||||
@LogAnnotation(value = "代码生成分页列表", module = LogModuleEnum.OTHER)
|
@Log(value = "代码生成分页列表", module = LogModuleEnum.OTHER)
|
||||||
public PageResult<TablePageVO> getTablePage(
|
public PageResult<TablePageVO> getTablePage(
|
||||||
TablePageQuery queryParams
|
TablePageQuery queryParams
|
||||||
) {
|
) {
|
||||||
@@ -61,7 +60,7 @@ public class GeneratorController {
|
|||||||
|
|
||||||
@Operation(summary = "保存代码生成配置")
|
@Operation(summary = "保存代码生成配置")
|
||||||
@PostMapping("/{tableName}/config")
|
@PostMapping("/{tableName}/config")
|
||||||
@LogAnnotation(value = "生成代码", module = LogModuleEnum.OTHER)
|
@Log(value = "生成代码", module = LogModuleEnum.OTHER)
|
||||||
public Result<?> saveGenConfig(@RequestBody GenConfigForm formData) {
|
public Result<?> saveGenConfig(@RequestBody GenConfigForm formData) {
|
||||||
generatorService.saveGenConfig(formData);
|
generatorService.saveGenConfig(formData);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
@@ -78,7 +77,7 @@ public class GeneratorController {
|
|||||||
|
|
||||||
@Operation(summary = "获取预览生成代码")
|
@Operation(summary = "获取预览生成代码")
|
||||||
@GetMapping("/{tableName}/preview")
|
@GetMapping("/{tableName}/preview")
|
||||||
@LogAnnotation(value = "预览生成代码", module = LogModuleEnum.OTHER)
|
@Log(value = "预览生成代码", module = LogModuleEnum.OTHER)
|
||||||
public Result<List<GeneratorPreviewVO>> getTablePreviewData(@PathVariable String tableName) {
|
public Result<List<GeneratorPreviewVO>> getTablePreviewData(@PathVariable String tableName) {
|
||||||
List<GeneratorPreviewVO> list = generatorService.getTablePreviewData(tableName);
|
List<GeneratorPreviewVO> list = generatorService.getTablePreviewData(tableName);
|
||||||
return Result.success(list);
|
return Result.success(list);
|
||||||
@@ -86,7 +85,7 @@ public class GeneratorController {
|
|||||||
|
|
||||||
@Operation(summary = "下载代码")
|
@Operation(summary = "下载代码")
|
||||||
@GetMapping("/{tableName}/download")
|
@GetMapping("/{tableName}/download")
|
||||||
@LogAnnotation(value = "下载代码", module = LogModuleEnum.OTHER)
|
@Log(value = "下载代码", module = LogModuleEnum.OTHER)
|
||||||
public void downloadZip(HttpServletResponse response, @PathVariable String tableName) throws IOException {
|
public void downloadZip(HttpServletResponse response, @PathVariable String tableName) throws IOException {
|
||||||
String[] tableNames = tableName.split(",");
|
String[] tableNames = tableName.split(",");
|
||||||
byte[] data = generatorService.downloadCode(tableNames);
|
byte[] data = generatorService.downloadCode(tableNames);
|
||||||
@@ -1,25 +1,24 @@
|
|||||||
package com.youlai.system.mapper;
|
package com.youlai.boot.platform.generator.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.system.model.bo.ColumnMetaData;
|
import com.youlai.boot.system.model.bo.ColumnMetaData;
|
||||||
import com.youlai.system.model.bo.TableMetaData;
|
import com.youlai.boot.system.model.bo.TableMetaData;
|
||||||
import com.youlai.system.model.entity.SysDept;
|
import com.youlai.boot.system.model.entity.Dept;
|
||||||
import com.youlai.system.model.query.TablePageQuery;
|
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||||
import com.youlai.system.model.vo.TablePageVO;
|
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface DatabaseMapper extends BaseMapper<SysDept> {
|
public interface DatabaseMapper extends BaseMapper<Dept> {
|
||||||
|
|
||||||
|
|
||||||
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams);
|
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams);
|
||||||
|
|
||||||
List<ColumnMetaData> getTableColumns(String tableName);
|
List<ColumnMetaData> getTableColumns(String tableName);
|
||||||
|
|
||||||
|
|
||||||
TableMetaData getTableMetadata(String tableName);
|
TableMetaData getTableMetadata(String tableName);
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.mapper;
|
package com.youlai.boot.platform.generator.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.youlai.system.model.entity.GenConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.mapper;
|
package com.youlai.boot.platform.generator.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.youlai.system.model.entity.GenFieldConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.youlai.system.model.entity;
|
package com.youlai.boot.platform.generator.model.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
|
||||||
import com.youlai.system.common.base.BaseEntity;
|
import com.youlai.boot.common.base.BaseEntity;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
package com.youlai.system.model.entity;
|
package com.youlai.boot.platform.generator.model.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.youlai.system.common.base.BaseEntity;
|
import com.youlai.boot.common.base.BaseEntity;
|
||||||
import com.youlai.system.enums.FormTypeEnum;
|
import com.youlai.boot.common.enums.FormTypeEnum;
|
||||||
import com.youlai.system.enums.QueryTypeEnum;
|
import com.youlai.boot.common.enums.QueryTypeEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.model.form;
|
package com.youlai.boot.platform.generator.model.form;
|
||||||
|
|
||||||
import com.youlai.system.enums.FormTypeEnum;
|
import com.youlai.boot.common.enums.FormTypeEnum;
|
||||||
import com.youlai.system.enums.QueryTypeEnum;
|
import com.youlai.boot.common.enums.QueryTypeEnum;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.generator.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.youlai.system.model.entity.GenConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代码生成配置接口
|
* 代码生成配置接口
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.generator.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.youlai.system.model.entity.GenConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||||
import com.youlai.system.model.entity.GenFieldConfig;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代码生成配置接口
|
* 代码生成配置接口
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.generator.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.system.model.form.GenConfigForm;
|
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||||
import com.youlai.system.model.query.TablePageQuery;
|
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||||
import com.youlai.system.model.vo.GeneratorPreviewVO;
|
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
||||||
import com.youlai.system.model.vo.TablePageVO;
|
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.service.impl;
|
package com.youlai.boot.platform.generator.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.system.mapper.GenConfigMapper;
|
import com.youlai.boot.platform.generator.mapper.GenConfigMapper;
|
||||||
import com.youlai.system.model.entity.GenConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||||
import com.youlai.system.service.GenConfigService;
|
import com.youlai.boot.platform.generator.service.GenConfigService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.youlai.system.service.impl;
|
package com.youlai.boot.platform.generator.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.system.mapper.GenFieldConfigMapper;
|
import com.youlai.boot.platform.generator.mapper.GenFieldConfigMapper;
|
||||||
import com.youlai.system.model.entity.GenFieldConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||||
import com.youlai.system.service.GenFieldConfigService;
|
import com.youlai.boot.platform.generator.service.GenFieldConfigService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service.impl;
|
package com.youlai.boot.platform.generator.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
@@ -11,26 +11,26 @@ import cn.hutool.extra.template.TemplateEngine;
|
|||||||
import cn.hutool.extra.template.TemplateUtil;
|
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.system.SystemApplication;
|
import com.youlai.boot.YouLaiApplication;
|
||||||
import com.youlai.system.config.property.GeneratorProperties;
|
import com.youlai.boot.common.enums.FormTypeEnum;
|
||||||
import com.youlai.system.converter.GenConfigConverter;
|
import com.youlai.boot.common.enums.JavaTypeEnum;
|
||||||
import com.youlai.system.enums.FormTypeEnum;
|
import com.youlai.boot.common.enums.QueryTypeEnum;
|
||||||
import com.youlai.system.enums.JavaTypeEnum;
|
import com.youlai.boot.config.property.GeneratorProperties;
|
||||||
import com.youlai.system.enums.QueryTypeEnum;
|
import com.youlai.boot.platform.generator.service.GenConfigService;
|
||||||
import com.youlai.system.exception.BusinessException;
|
import com.youlai.boot.platform.generator.service.GenFieldConfigService;
|
||||||
import com.youlai.system.mapper.DatabaseMapper;
|
import com.youlai.boot.platform.generator.service.GeneratorService;
|
||||||
import com.youlai.system.model.bo.ColumnMetaData;
|
import com.youlai.boot.system.converter.GenConfigConverter;
|
||||||
import com.youlai.system.model.bo.TableMetaData;
|
import com.youlai.boot.common.exception.BusinessException;
|
||||||
import com.youlai.system.model.entity.GenConfig;
|
import com.youlai.boot.platform.generator.mapper.DatabaseMapper;
|
||||||
import com.youlai.system.model.entity.GenFieldConfig;
|
import com.youlai.boot.system.model.bo.ColumnMetaData;
|
||||||
import com.youlai.system.model.form.GenConfigForm;
|
import com.youlai.boot.system.model.bo.TableMetaData;
|
||||||
import com.youlai.system.model.query.TablePageQuery;
|
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||||
import com.youlai.system.model.vo.GeneratorPreviewVO;
|
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||||
import com.youlai.system.model.vo.TablePageVO;
|
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||||
import com.youlai.system.service.GeneratorService;
|
import com.youlai.boot.system.model.query.TablePageQuery;
|
||||||
import com.youlai.system.service.GenConfigService;
|
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
||||||
import com.youlai.system.service.GenFieldConfigService;
|
import com.youlai.boot.system.model.vo.TablePageVO;
|
||||||
import com.youlai.system.service.SysMenuService;
|
import com.youlai.boot.system.service.MenuService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@@ -40,7 +40,6 @@ import java.io.ByteArrayOutputStream;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
|
||||||
@@ -59,7 +58,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
|||||||
private final GenConfigService genConfigService;
|
private final GenConfigService genConfigService;
|
||||||
private final GenFieldConfigService genFieldConfigService;
|
private final GenFieldConfigService genFieldConfigService;
|
||||||
private final GenConfigConverter genConfigConverter;
|
private final GenConfigConverter genConfigConverter;
|
||||||
private final SysMenuService menuService;
|
private final MenuService menuService;
|
||||||
|
|
||||||
@Value("${spring.profiles.active}")
|
@Value("${spring.profiles.active}")
|
||||||
private String springProfilesActive;
|
private String springProfilesActive;
|
||||||
@@ -113,7 +112,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
|||||||
String entityName = StrUtil.toCamelCase(StrUtil.removePrefix(tableName, tableName.split("_")[0]));
|
String entityName = StrUtil.toCamelCase(StrUtil.removePrefix(tableName, tableName.split("_")[0]));
|
||||||
genConfig.setEntityName(entityName);
|
genConfig.setEntityName(entityName);
|
||||||
|
|
||||||
String packageName = SystemApplication.class.getPackageName();
|
String packageName = YouLaiApplication.class.getPackageName();
|
||||||
genConfig.setPackageName(StrUtil.subBefore(packageName, ".", true));
|
genConfig.setPackageName(StrUtil.subBefore(packageName, ".", true));
|
||||||
genConfig.setModuleName(StrUtil.subAfter(packageName, ".", true));
|
genConfig.setModuleName(StrUtil.subAfter(packageName, ".", true));
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.youlai.boot.platform.mail.controller;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邮件控制层
|
||||||
|
*
|
||||||
|
* @author Ray
|
||||||
|
* @since 2.10.0
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
public class MailController {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.mail.service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 邮件服务接口层
|
* 邮件服务接口层
|
||||||
@@ -16,7 +16,7 @@ public interface MailService {
|
|||||||
* @param subject 邮件主题
|
* @param subject 邮件主题
|
||||||
* @param text 邮件内容
|
* @param text 邮件内容
|
||||||
*/
|
*/
|
||||||
boolean sendSimpleMail(String to, String subject, String text) ;
|
void sendMail(String to, String subject, String text) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送带附件的邮件
|
* 发送带附件的邮件
|
||||||
@@ -26,6 +26,6 @@ public interface MailService {
|
|||||||
* @param text 邮件内容
|
* @param text 邮件内容
|
||||||
* @param filePath 附件路径
|
* @param filePath 附件路径
|
||||||
*/
|
*/
|
||||||
boolean sendMailWithAttachment(String to, String subject, String text, String filePath);
|
void sendMailWithAttachment(String to, String subject, String text, String filePath);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.service.impl.mail;
|
package com.youlai.boot.platform.mail.service.impl;
|
||||||
|
|
||||||
import com.youlai.system.config.property.MailProperties;
|
import com.youlai.boot.config.property.MailProperties;
|
||||||
import com.youlai.system.service.MailService;
|
import com.youlai.boot.platform.mail.service.MailService;
|
||||||
import jakarta.mail.MessagingException;
|
import jakarta.mail.MessagingException;
|
||||||
import jakarta.mail.internet.MimeMessage;
|
import jakarta.mail.internet.MimeMessage;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -37,7 +37,7 @@ public class MailServiceImpl implements MailService {
|
|||||||
* @param text 邮件内容
|
* @param text 邮件内容
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean sendSimpleMail(String to, String subject, String text) {
|
public void sendMail(String to, String subject, String text) {
|
||||||
try {
|
try {
|
||||||
SimpleMailMessage message = new SimpleMailMessage();
|
SimpleMailMessage message = new SimpleMailMessage();
|
||||||
message.setFrom(mailProperties.getFrom());
|
message.setFrom(mailProperties.getFrom());
|
||||||
@@ -45,11 +45,8 @@ public class MailServiceImpl implements MailService {
|
|||||||
message.setSubject(subject);
|
message.setSubject(subject);
|
||||||
message.setText(text);
|
message.setText(text);
|
||||||
mailSender.send(message);
|
mailSender.send(message);
|
||||||
return true;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
|
||||||
log.error("发送邮件失败{}", e.getMessage());
|
log.error("发送邮件失败{}", e.getMessage());
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +59,7 @@ public class MailServiceImpl implements MailService {
|
|||||||
* @param filePath 附件路径
|
* @param filePath 附件路径
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean sendMailWithAttachment(String to, String subject, String text, String filePath) {
|
public void sendMailWithAttachment(String to, String subject, String text, String filePath) {
|
||||||
MimeMessage message = mailSender.createMimeMessage();
|
MimeMessage message = mailSender.createMimeMessage();
|
||||||
try {
|
try {
|
||||||
MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
||||||
@@ -75,9 +72,8 @@ public class MailServiceImpl implements MailService {
|
|||||||
helper.addAttachment(file.getFilename(), file);
|
helper.addAttachment(file.getFilename(), file);
|
||||||
|
|
||||||
mailSender.send(message);
|
mailSender.send(message);
|
||||||
return true;
|
|
||||||
} catch (MessagingException e) {
|
} catch (MessagingException e) {
|
||||||
return false;
|
log.error("发送邮件失败{}", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.youlai.boot.platform.sms.controller;
|
||||||
|
|
||||||
|
import com.youlai.boot.platform.sms.service.SmsService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信控制层
|
||||||
|
*
|
||||||
|
* @author Ray
|
||||||
|
* @since 2.10.0
|
||||||
|
*/
|
||||||
|
public class SmsController {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.sms.service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 短信服务接口层
|
* 短信服务接口层
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service.impl.sms;
|
package com.youlai.boot.platform.sms.service.impl;
|
||||||
|
|
||||||
import com.aliyuncs.CommonRequest;
|
import com.aliyuncs.CommonRequest;
|
||||||
import com.aliyuncs.CommonResponse;
|
import com.aliyuncs.CommonResponse;
|
||||||
@@ -8,8 +8,8 @@ import com.aliyuncs.exceptions.ClientException;
|
|||||||
import com.aliyuncs.exceptions.ServerException;
|
import com.aliyuncs.exceptions.ServerException;
|
||||||
import com.aliyuncs.http.MethodType;
|
import com.aliyuncs.http.MethodType;
|
||||||
import com.aliyuncs.profile.DefaultProfile;
|
import com.aliyuncs.profile.DefaultProfile;
|
||||||
import com.youlai.system.config.property.AliyunSmsProperties;
|
import com.youlai.boot.config.property.AliyunSmsProperties;
|
||||||
import com.youlai.system.service.SmsService;
|
import com.youlai.boot.platform.sms.service.SmsService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.youlai.system.controller;
|
package com.youlai.boot.platform.websocket.controller;
|
||||||
|
|
||||||
import com.youlai.system.model.dto.ChatMessage;
|
import com.youlai.boot.system.model.dto.ChatMessage;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.messaging.handler.annotation.DestinationVariable;
|
import org.springframework.messaging.handler.annotation.DestinationVariable;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service;
|
package com.youlai.boot.platform.websocket.service;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.service.impl;
|
package com.youlai.boot.platform.websocket.service.impl;
|
||||||
|
|
||||||
import com.youlai.system.event.UserConnectionEvent;
|
import com.youlai.system.event.UserConnectionEvent;
|
||||||
import com.youlai.system.model.dto.ChatMessage;
|
import com.youlai.system.model.dto.ChatMessage;
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user