diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..be795f1
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,19 @@
+root = true
+
+[*]
+end_of_line = lf
+charset = utf-8
+indent_style = space
+indent_size = 4
+
+[*.yml]
+indent_style = space
+indent_size = 2
+
+[*.vue.ftl]
+indent_style = space
+indent_size = 2
+
+[*.ts.ftl]
+indent_style = space
+indent_size = 2
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..5b346c2
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,6 @@
+# 默认所有文件作为文本处理,统一换行符为 LF
+* text eol=lf
+
+# 针对二进制文件禁止换行符转换
+*.png binary
+*.xdb binary
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..dd84ea7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..bbcbbe7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..8d675fe
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,13 @@
+# To get started with Dependabot version updates, you'll need to specify which
+# package ecosystems to update and where the package manifests are located.
+# Please see the documentation for all configuration options:
+# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
+
+version: 2
+updates:
+ - package-ecosystem: "maven" # See documentation for possible values
+ directory: "/sz-dependencies" # Location of package manifests
+ schedule:
+ interval: "weekly"
+ target-branch: dev # 指定要检查的目标分支
+ open-pull-requests-limit: 20 # 限制同时打开的PR数量
\ No newline at end of file
diff --git a/.github/workflows/Docker Sz Services CI.yml b/.github/workflows/Docker Sz Services CI.yml
new file mode 100644
index 0000000..46bb9b8
--- /dev/null
+++ b/.github/workflows/Docker Sz Services CI.yml
@@ -0,0 +1,130 @@
+name: Docker Sz Services CI
+
+on:
+ push:
+ branches: [ "preview" ]
+ pull_request:
+ branches: [ "preview" ]
+ workflow_dispatch:
+
+jobs:
+ build-and-deploy:
+ name: Build & Deploy ${{ matrix.app_name }}
+ runs-on: ubuntu-latest
+ strategy:
+ max-parallel: 1 # 串行处理多个服务,保证部署顺序
+ matrix:
+ include:
+ - app_name: sz-service-admin
+ service_port: 9991
+ log_dir: /home/app/sz-service-admin/logs
+ config_dir: /home/conf/sz-service-admin
+ jar_dir: ./sz-service/sz-service-admin/target
+ docker_compose_path: /home/docker-compose/sz-service-admin
+ - app_name: sz-service-websocket
+ service_port: 9993
+ log_dir: /home/app/sz-service-websocket/logs
+ config_dir: /home/conf/sz-service-websocket
+ jar_dir: ./sz-service/sz-service-websocket/target
+ docker_compose_path: /home/docker-compose/sz-service-websocket
+
+ env:
+ # 镜像仓库相关配置
+ ACR_DOMAIN: registry.cn-beijing.aliyuncs.com
+ ACR_ZONE: sz-action
+ VERSION: latest
+ # 应用环境配置
+ RUNNING_ACTIVE: preview
+ # 容器启动脚本目录(如果直接 docker 启动需要)
+ SHELL_RUN_DIR: /home/run
+
+ steps:
+ # 1. 拉取源码
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ # 2. 安装 JDK 21 环境
+ - name: Set up JDK 21 (Zulu)
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'zulu'
+ java-version: '21'
+ cache: 'maven'
+
+ # 3. 安装 Maven 工具
+ - name: Set up Maven 3.8.2
+ uses: stCarolas/setup-maven@v5
+ with:
+ maven-version: 3.8.2
+
+ # 4. Maven 编译打包
+ - name: Build with Maven
+ run: mvn clean package
+
+ # 5. 复制打包产物 JAR 文件到工作目录(方便 Docker 构建)
+ - name: Copy JAR file to workspace
+ run: |
+ cd ${{ matrix.jar_dir }}
+ cp ./*.jar ../../../app.jar
+
+ # 6. 构建 Docker 镜像
+ - name: Build Docker image
+ run: docker build -t ${{ matrix.app_name }}:${{ env.VERSION }} .
+
+ # 7. 登录阿里云 ACR 仓库
+ - name: Login to ACR
+ run: echo "${{ secrets.ACR_PASSWORD }}" | docker login --username=${{ secrets.ACR_USERNAME }} ${{ env.ACR_DOMAIN }} --password-stdin
+
+ # 8. 镜像打标签(仓库命名规范)
+ - name: Tag Docker image
+ run: docker tag ${{ matrix.app_name }}:${{ env.VERSION }} ${{ env.ACR_DOMAIN }}/${{ env.ACR_ZONE }}/${{ matrix.app_name }}:${{ env.VERSION }}
+
+ # 9. 推送镜像到远程仓库
+ - name: Push Docker image to ACR
+ run: docker push ${{ env.ACR_DOMAIN }}/${{ env.ACR_ZONE }}/${{ matrix.app_name }}:${{ env.VERSION }}
+
+ # 10. 使用 docker-compose 在远程服务器自动部署(推荐,结合 sz-deploy-v3 脚本)
+ - name: Deploy with docker-compose on remote server
+ uses: appleboy/ssh-action@v1.2.0
+ with:
+ host: ${{ secrets.REMOTE_HOST }}
+ username: ${{ secrets.REMOTE_USER }}
+ password: ${{ secrets.REMOTE_PASSWORD }}
+ script: |
+ cd ${{ matrix.docker_compose_path }}
+ bash upgrade.sh
+
+ # ————— 以下流程为可选直接 docker 启动,建议使用上方 docker-compose 部署,如需手动容器管理可启用—————
+# - name: Direct Docker deploy on remote server
+# uses: appleboy/ssh-action@v1.2.0
+# with:
+# host: ${{ secrets.REMOTE_HOST }}
+# username: ${{ secrets.REMOTE_USER }}
+# password: ${{ secrets.REMOTE_PASSWORD }}
+# script: |
+# docker pull ${{ env.ACR_DOMAIN }}/${{ env.ACR_ZONE }}/${{ matrix.app_name }}:${{ env.VERSION }}
+# echo "=== 生成容器启动脚本 ==="
+# mkdir -p ${{ env.SHELL_RUN_DIR }}
+# START_SCRIPT="${{ env.SHELL_RUN_DIR }}/docker_run_${{ matrix.app_name }}_${{ env.RUNNING_ACTIVE }}.sh"
+# cat > $START_SCRIPT < $START_SCRIPT < [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1.3.2-beta)
+
+### sz-boot-parent
+
+#### 新增
+
+- [代码生成器] 支持选择弹窗类型(抽屉、弹窗)。
+- 通用 API:新增获取 OSS 私有文件访问 URL 接口。
+- 通用 API:新增文件下载接口。
+- 参数管理新增「是否前端加载」字段。
+- websocket新增:支持同步字典、权限和前端参数。
+
+#### 修改
+
+- oss.yml 配置,新增 `oss.richtextBucketName` 配置项,用于为富文本编辑器**单独指定** bucket
+
+#### 优化
+
+- 优化逻辑删除监听器的登录状态检查,增加异常处理以支持非Web环境
+
+---
+
+### sz-admin
+
+#### 新增
+
+- [代码生成器] - 增加弹窗类型的支持(抽屉、弹窗)。
+- 参数 / 字典 / 权限的 websocket同步支持,并在参数管理中新增「是否前端加载」配置。
+- 新增: useDialogWidth Hook 组件,实现弹窗/对话框宽度的动态自适应。
+
+#### 重构
+
+- 重构 websocket实现,将消息解析与频道处理逻辑解耦,结构更清晰、扩展性更强。
+
+#### 修复
+
+- 修复 `MenuForm.vue` 中目录类型的可操作属性,恢复路由名称和路由地址属性。([issue 25](https://github.com/feiyuchuixue/sz-admin/issues/25))。
+
+- 修复 `SearchFormItem` 组件仅在搜索项配置 `enum` 时读取 `undefined` 导致的报错问题。现在在 `SearchProps` 或 `ColumnProps` 任一处配置 `enum` 即可正常使用。([issue 26](https://github.com/feiyuchuixue/sz-admin/issues/26))。
+
+#### 优化
+
+- `Avatar` 头像组件:增加对 OSS 私有访问地址的支持。
+- `FileDownloadList` 文件回显展示组件:增加对 OSS 私有访问地址的支持。
+- `Img` 图片组件:增加对 OSS 私有访问地址的支持。
+- `Imgs` 多图片组件:增加对 OSS 私有访问地址的支持。
+- 账户管理 - 添加/编辑用户:头像字段增加对 OSS 私有访问地址的支持。
+- `JoditEditor` 富文本组件:支持使用独立的 bucket 空间(通过 `oss.richtextBucketName` 配置)。
+- 文件管理列表:优化文件下载方式。
+- `useUrlDownload`:移除前端 Fetch 下载逻辑,改为调用通用 API 文件下载接口,解决文件跨域问题。
+
+### 数据库变更
+
+- 更新 `sys_config` 表:增加 `frontend_visible` 字段,用于标记参数是否需要前端加载、缓存及使用。
+- 更新 `generator_table` 表:增加 `window_show_type` 字段,用于配置窗口展示方式(0:dialog 弹窗;1:drawer 抽屉)。
+
+## v1.3.1-beta (20251210)
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1.3.1-beta)
+
+### sz-boot-parent
+
+#### 依赖升级
+
+- modelmapper:3.2.6
+- mybatis-flex:1.11.4
+- commons-lang3:3.20.0
+- swagger-annotations:2.2.41
+- lombok:1.18.42
+- org.lionsoul-ip2region:3.1.0
+- springdoc-openapi-starter-webmvc-ui:2.8.14
+
+#### 新增
+
+- 添加 .editorconfig 文件以统一编码和行结束符设置。
+
+#### 修复
+
+- 代码生成设置中的业务名称修改后路由路径不生效问题。(感谢[lxwcv](https://github.com/lxwcv))
+- spring-doc 增加开关控制参数 `springdoc.api-docs.enabled` 和 `springdoc.swagger-ui.enabled`,生产环境建议关闭。
+- 更新ip2region 版本为3.1.0 RegionUtils 以支持 IPv4 地址库,改进 IP 地址库加载逻辑。
+
+#### 修改
+
+- 演示案例 - [教师统计] 增加富文本编辑器功能。
+
+#### 优化
+
+- 更新Dockerfile,安装curl支持容器内的健康检查。
+- [代码生成器] - 添加 jodit-editor 富文本编辑器的支持。
+- 代码模板 Dialog 弹窗组件添加动态宽度的支持。
+
+---
+
+### sz-admin
+
+### 依赖升级
+
+- 对package.json文件中的依赖进行了兼容性升级。
+
+#### 新增
+
+- 新增:添加.editorconfig文件。
+- 富文本编辑器组件-JoditEditor。
+- 新增: useDialogWidth Hook 组件,实现弹窗/对话框宽度的动态自适应。
+
+#### 重构
+
+- [UploadFiles 组件] 增加多项功能并修正若干问题。
+- 角色管理-权限分配组件重构,提升交互体验。
+
+#### 优化
+
+- 权限组件,暗黑模式下的样式不适配的问题。
+- 多维选择器组件,暗黑模式下的样式不适配的问题。
+- 更新表格组件的 rowKey 属性为可选,并修复 radio 组件的类型问题。
+
+#### 修复
+
+- 更新protable组件部分类型问题。
+
+#### 修改
+
+- 演示案例 - 【教师统计】 增加富文本编辑器功能。
+- 【代码生成器】- 添加 jodit-editor 富文本编辑器的支持。
+
+### 数据库变更
+
+- 更新 `teacher_statistics` 表:增加`content_html`字段及演示数据。
+## v1.3.0-beta (20251109)| 大型更新
+
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1.3.0-beta)
+>
+> !存在潜在破坏性变更,请务必仔细阅读升级文档!
+>
+> **重要提示**:升级至本版本前,请先**清理 Redis 缓存**中的用户信息,否则可能因数据结构变更导致**登录异常**。
+
+### sz-boot-parent
+
+#### 新增
+
+- 支持 Spring Boot Actuator 监控。
+- login 相关密码传输支持 AES-GCM 加密,提升安全性。
+- 增加登录请求及验证码请求次数的限制配置。
+- [代码生成器] 支持多文件上传(fileUpload)。
+- [代码生成器] 支持数据权限创建。
+- 账户管理新增账户类型设置,支持超管账户指定。
+- 支持“超级管理员”角色参数配置。
+
+#### 重构
+
+- 破坏性变更:模板文件管理及下载等逻辑。
+- 破坏性变更:移除独立数据权限角色,合并至系统角色。
+- 破坏性变更:简化数据权限核心 SimplePermissionDialect,实现与处理流程更加清晰。
+- 破坏性变更:调整数据存储结构,login 相关方法引入 dataScope 缓存,移除 ruleMap、userRuleMap、deptRuleMap。因数据结构升级后可能需要清空redis缓存。
+
+#### 修复
+
+- 修复登录日志异步线程引发的记录异常。
+- 修复 IP 地址获取失败的问题。
+- 修复 Excel 导入时数据为空问题,移除代码模板中的 @Accessors(chain = true)。
+- 回退 FastExcel 版本至 1.2.0,解决部分 Excel 导出异常。
+
+#### 修改/移除
+
+- 移除生产环境配置中的 CORS 设置。
+- ImportExcel 方法支持数据库入库功能。
+- [演示案例] 教师统计,支持附件文件上传。
+- sys_data_role、sys_data_role_menu 相关业务标记为弃用,功能合并至 sys_role。
+- Dockerfile 镜像切换至 azul/zulu-openjdk(JDK 21)。
+- 移除 Flyway,数据库迁移已完全转至 liquibase。
+
+#### 优化
+
+- 登录列表倒序排序显示。
+- [代码生成器] 菜单按钮的查询与排序优化。
+- 修复[动态字典]部门、角色在 redisCache 中循环赋值导致的性能问题。
+- OSS 上传支持原始文件名元数据与特殊字符(如#)处理。
+- HttpReqResUtil 增加 getRequest 方法,支持全局 HttpServletRequest 获取。
+- StringUtils.getRealKey 方法增强字符串替换、null 处理与异常捕获。
+
+---
+
+### sz-admin
+
+#### 新增
+
+- 新增 FileDownloadList 组件,实现 ProTable 中文件资源展示、支持多文件下载与预览、文件列表回显优化。
+- login 相关密码传输支持 AES-GCM 加密,提升安全性。
+- 账户管理支持账户类型设置,可直接指定管理员身份。
+
+#### 重构
+
+- [UploadFiles 组件] 增加多项功能并修正若干问题。
+- 角色管理-权限分配组件重构,提升交互体验。
+
+#### 优化
+
+- useDownload 组件优先采用 response header 中 filename 作为下载文件名。
+- 优化菜单表单的操作逻辑,新增提示说明。
+- 优化模板文件管理列表的文件操作列。
+- [ImportExcel] 增加模板信息展示及必填参数校验。
+- [file 组件] 优化 accept 文件类型检查,可选开启,默认不限制类型。
+- 文件下载和模板功能进一步优化,提升用户体验:
+ - 优化 useDownload Hook 的实现
+ - 文件模板相关逻辑调整
+ - 菜单 Form 表单增加提示性 tooltip
+ - 修正 blob 流响应拦截器的错误处理
+ - 列表文件展示统一切换为 FileDownloadList 组件
+
+#### 修复
+
+- [ProTable] 因数据类型不匹配导致的列表字典项渲染样式异常。
+
+#### 修改
+
+- [演示案例] 教师统计,新增多文件上传及回显组件支持。
+
+### 数据库变更
+
+- 更新 `sys_menu` 表:优化菜单数据,采用更简洁的路由名称,并将原本在菜单上的查询权限提取为按钮级权限。
+
+- 调整 `sys_role_menu` 表:新增字段 `permission_type`(权限类型,如功能权限、数据权限),新增字段 `data_scope_cd`(数据权限范围)。
+
+- 更新 `sys_data_role_relation` 表:新增字段 `menu_id`,用于关联菜单。
+
+- 表 `sys_data_role_menu`、`sys_data_role` 标记为**废弃**,相关业务已合并至 `sys_role` 和 `sys_data_role_relation` 表。
+
+- 优化 `sys_temp_file`、`sys_temp_file_history` 表:将 `url` 字段类型调整为 JSON,并插入演示数据。
+
+ !!注意:此更改会导致原有数据不兼容。
+
+- `sys_temp_file` 表新增 `alias` 字段,用于标识文件别名。
+
+- `sys_role`、`sys_role_menu`、`sys_data_role_relation`、`sys_user_role` 表补充及调整了演示数据。
+
+> **升级建议**:
+>
+> - 建议在升级前做好数据和数据库结构的完整备份,以保障您的数据安全。
+> - 本次数据库结构及功能调整,可能影响部分旧数据兼容性及现有业务,请结合自身情况提前评估,并根据实际需求做好适配与数据处理。
+> - 欢迎在升级过程中通过社区或交流群反馈遇到的问题,我们也会积极协助答疑与经验分享。
+
+## v1.2.6-beta (20250831)
+
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1.2.6-beta)
+
+sz-boot-parent:
+
+- 依赖升级:
+ - **spring-boot-starter-parent:3.5.3 -> 3.5.5。**
+ - **mybatis-flex:1.11.0 -> 1.11.1。**
+ - software.amazon.awssdk:s3:2.31.78 -> 2.32.29。
+ - fastexcel:1.2.0 -> 1.3.0。
+ - io.swagger.core.v3-swagger-annotations:2.2.34 -> 2.2.36
+ - jackson:2.19.0 -> 2.19.1
+ - commons-lang3: 3.17.0 -> 3.18.0
+ - HikariCP:6.3.0 -> 7.0.2
+ - commons-io-commons-io:2.19.0 -> 2.20.0
+ - jackson:2.19.1 -> 2.19.2
+ - mysql-connector-j:9.3.0 -> 9.4.0
+- 新增: 新增部门角色设置功能,更新部门下所有用户的角色信息,实现用户在设置部门时自动继承部门角色权限 (感谢[liuce](https://github.com/nullPointer0123))。
+- 修复:增强WebSocket消息解析,添加错误处理。
+- 优化: 部门设置角色使用mybatisFlex链式操纵替换sql。
+- 新增:[动态字典] - 系统部门。
+- 新增:[动态字典] - 系统角色。
+- 优化:账号管理-部门、角色列展示查询。
+- 优化:部门管理-负责人查询。
+- 优化:部门管理-角色查询。
+- 优化:[代码生成器]- 添加Lombok @Accessors 的支持(感谢[liuce](https://github.com/nullPointer0123))。
+- 优化: [mysql.yml] - 指定 liquibase 版本表名,兼容不同环境表名大小写,避免版本控制失效。
+- 优化: [代码生成器] - 菜单管理SQL格式。
+- 新增:登录日志(感谢[liuce](https://github.com/nullPointer0123))。
+
+sz-admin:
+
+- 新增: 新增部门角色设置功能,更新部门下所有用户的角色信息,实现用户在设置部门时自动继承部门角色权限(感谢[liuce](https://github.com/nullPointer0123))。
+- 优化:[ProTable-TableColumn组件] 支持多标签展示。
+
+ - 支持 tag=false 且 enum 配置时,自动翻译多值并逗号拼接展示。
+ - 支持 tag=true 且 enum 配置时,多标签分组展示及收起。
+ - 支持 tag 未设置且 enum 配置时,正常翻译多值展示。
+ - 兼容多种数据格式(数组、逗号分隔字符串)。
+ - 空值统一展示为 "--"。
+ - 新增 tagLimit 属性说明:设置展示标签数量,超出部分通过 Popover 收起展示(tagLimit=-1 时展示全部标签,默认值tagLimit=3)。
+- 优化: 添加部门绑定角色提示,调整部门页面操作列宽(感谢[liuce](https://github.com/nullPointer0123))。
+- 新增: 添加登陆日志(感谢[liuce](https://github.com/nullPointer0123))。
+- 优化:账号管理-部门、角色列展示。
+- 优化:部门管理-负责人展示。
+- 优化:部门管理-角色展示。
+
+## v1.2.5-beta (20250716)
+
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1.2.5-beta)
+
+
+- sz-boot-parent:
+ - 依赖升级:
+ - **spring-boot-starter-parent:3.5.0 -> 3.5.3。**
+ - **mybatis-flex:1.10.9 -> 1.11.0。**
+ - software.amazon.awssdk:s3:2.29.50 -> 2.31.78。
+ - hutool-jwt:5.8.38 -> 5.8.39。
+ - pagehelper:6.1.0 -> 6.1.1。
+ - io.swagger.core.v3-swagger-annotations:2.2.32 -> 2.2.34
+ - jackson:2.19.0 -> 2.19.1
+ - commons-lang3: 3.17.0 -> 3.18.0
+ - HikariCP:6.2.1 -> 6.3.0
+ - commons-io-commons-io:2.18.0 -> 2.19.0
+ - jackson:2.19.0 -> 2.19.1
+ - modelmapper:3.2.3 -> 3.2.4
+ - springdoc-springdoc-openapi-starter-webmvc-ui:2.8.8 -> 2.8.9
+ - 优化:适配解决maven编译时无法识别Lombok和Mybatis-Flex APT注解器导致的”找不到符
+ - 修复: 更正Excel最大columnWidth = 255 * 256。(Excel 中列宽(column width)最大值是 255 * 256 = 65280)
+ - 优化:[SQL] 查询用户具有的菜单。
+ - 修复: 特殊情况下因用户session失效而导致的用户元数据同步失败的问题。
+ - 修复:数据权限某些场景下导致page失效的问题。
+ - 重构:字典加载器相关类的包结构和接口定义,优化动态字典加载逻辑。
+ - 优化:JacksonConfiguration 全局配置文件;实现针对不同类型的 Jackson null 值序列化器。
+ - String 类型 null → ""
+ - List/Set 类型 null → []
+ - Map 类型 null → {}
+ - Other 类型 null → ""
+ - 优化:SysTempFileVO 添加 JacksonTypeHandler 以支持 url 字段的自定义序列化。
+ - 优化: pom 文件中按需引入 knife4j,避免因多余依赖导致 WebSocket 服务可访问 knife4j 接口。
+- sz-admin:
+
+ - 新增:[演示] 多维选择器组件。
+ - 优化:上传组件,增加目录参数dir,更换上传接口。
+ - 优化:downloadFile函数,将url类型由string改为string[]。
+- 文档:
+
+ - 新增:[方案] [多数据源的实现](https://szadmin.cn/md/Help/doc/solution/multi-datasource.html)。
+## v1.2.4-beta (20250614)
+
+- sz-boot-parent:
+
+ - 修复: 菜单路径和组件路径拼写错误"menuManage"。(感谢[Kang-Yang](https://github.com/Kang-Yang))
+ - 修复:异常枚举类message方法并发问题。
+ - 重构:将异常枚举类实现改为通用响应枚举模板。
+ - 升级:sa-token v1.41.0 -> v1.44.0 && 同步改造。
+- sz-admin:
+
+ - 修复: 菜单路径和组件路径拼写错误"menuManage"。(感谢[Kang-Yang](https://github.com/Kang-Yang))
+ - 修复:账户管理批量设置部门后checkbox未重置的问题。
+ - 优化:Grid组件,重构字段查找逻辑,提升性能和可读性。
+ - 优化:ToolBarRight组件,修改展示项用户名为昵称。
+
+## v1.2.3-beta (20250603)
+
+- sz-boot-parent:
+
+ - 依赖升级:
+ - **spring-boot-starter-parent:3.4.4 -> 3.5.0。**
+ - software.amazon.awssdk.crt:aws-crt:0.33.7 -> 0.38.4。
+ - software.amazon.awssdk:s3:2.29.50 -> 2.31.54。
+ - hutool-jwt:5.8.34 -> 5.8.38。
+ - fastexcel:1.1.0 -> 1.2.0。
+ - mysql-mysql-connector-j: 9.2.0 -> 9.3.0
+ - HikariCP:6.2.1 -> 6.3.0
+ - commons-io-commons-io:2.18.0 -> 2.19.0
+ - jackson:2.18.2 -> 2.19.0
+ - springdoc-springdoc-openapi-starter-webmvc-ui:2.8.3 -> 2.8.8
+ - org.aspectj-aspectjweaver:1.9.23 -> 1.9.24
+ - modelmapper:3.2.2 -> 3.2.3
+ - io.swagger.core.v3-swagger-annotations:2.2.27 -> 2.2.32
+ - commons-collections4:4.4 -> 4.5.0
+ - 优化:适配解决maven编译时无法识别Lombok和Mybatis-Flex APT注解器导致的”找不到符号“报错问题。 (感谢[JoeyFrancisTribbiani](https://github.com/JoeyFrancisTribbiani))
+ - 修复:FastExcel 依赖 Apache POI漏洞。
+ - 优化:logback.xml中`converterClass`已废弃,更换为新语法`class`。
+ - 更新:com.diffplug.spotless-spotless-maven-plugin-2.44.5。
+ - 优化:cicd 脚本,将admin和websocket合并成一个脚本。
+ - 修改:多文件上传不再支持单字符串,统一改为JSON数组形式。
+- sz-admin:
+
+ - 优化:多文件上传组件不再支持单字符串,统一改为数组形式。
+
+## v1.2.2-beta (20250528)
+
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1.2.2-beta)
+
+- sz-boot-parent:
+
+ - 优化:将**继承** `WebMvcConfigurationSupport`改为**实现** `WebMvcConfigurer`,提升框架兼容性。
+ - 修复:[数据权限]-一些已知问题。
+ - 优化:[代码生成器]
+ - 导入数据表添加对createId/updateId/createTime/updateTime常用字段的支持。
+ - 前端模版添加对useDict生成的支持
+ - SQL Insert 支持IGNORE
+ - Teacher演示案例的同步改造
+ - 代码模版格式优化
+ - 新增: [sz-common-wechat]-新增企业微信消息发送的支持。
+- sz-admin:
+
+ - 修复:版本号读取异常问题。
+ - 优化:[演示案例] - 教师统计。
+ - 优化:UploadFiles多文件上传组件, 简化使用方式并修复一些问题。
+
+## v1.2.1-beta (20250509)
+
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1.2.1-beta)
+
+- sz-boot-parent:
+
+ - 新增:Liquibase数据库管理,弃用Flyway配置 (**Flyway 将于v1.3.0-beta 版本弃用**)。
+ - 修改:已支持Liquibase,默认配置关闭Flyway(将于v1.3.0-beta版本弃用)。
+ - 修复:部分菜单路由名称与组件名称不一致时导致的菜单keep-alive缓存失效问题。
+ - 修改:README.md 添加deepwiki。感谢[dongyu6/main](https://github.com/dongyu6)。
+
+- sz-admin:
+
+ - 优化:.env环境变量,无需指定`.env.development.local `文件即可使用。
+ - 升级:sass 1.79.6 -> 1.87.0, vite 5.4.17 -> 6.3.4,以及其他依赖的同步升级。
+ - 修复:部分菜单路由名称与组件名称不一致时导致的菜单keep-alive缓存失效问题。
+ - 修改:README.md 添加deepwiki。(感谢[dongyu6/main](https://github.com/dongyu6))。
+
+## v1.2.0-beta (20250422)
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html#v1-2-0-beta)
+- sz-boot-parent:
+ - 优化:[代码生成器] - 为生成代码增加是否忽略表前缀的功能。PR[#140](https://github.com/feiyuchuixue/sz-boot-parent/pull/140)(感谢[crash](https://github.com/processcrash))。
+ - 优化:重构**数据权限**核心逻辑,修复部分问题。
+ - 修复:[数据填充]-deptScope属性失败问题
+ - 优化:Websocket相关:简化SocketMessage和TransferMessage类的泛型使用
+ - 新增:系统消息功能
+ - 新增:[演示] 消息发送接口
+ - 新增:[CICD] Docker Sz-Socket CI Prod.yml
+ - 优化:提高用户元数据变更性能
+- sz-admin:
+ - 修复:滑块验证码在某些浏览器无法滑动的问题
+ - 新增:分类筛选器组件
+ - 优化:滑块验证码的耗时计算逻辑
+ - 新增:系统消息功能(搭配Websocket可体验完整功能)
+ - 新增:功能演示
+ - 新增:关于项目
+ - 新增:全局菜单:[消息、功能演示菜、关于项目]
+
+## v1.1.0-beta (20250406)
+
+> [!NOTE]
+>
+> [升级指南](https://szadmin.cn/md/Help/doc/other/upgrade.html)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - spring-boot-starter-parent:3.4.2 -> 3.4.4。
+ - mybatis-flex.version:1.10.8 -> 1.10.9。
+ - sa-token:1.40.0 -> 1.41.0。
+ - swagger-annotations:2.2.27 -> 2.2.29。
+ - aspectjweaver:1.9.22.10 -> 1.9.23。
+ - springdoc-openapi-starter-webmvc-ui: 2.8.3 -> 2.8.6
+ - aws-crt: 0.33.7 -> 0.37.0
+ - HikariCP:6.2.1 -> 6.3.0
+ - aws.s3:2.29.50 -> 2.31.11
+ - 优化:[代码生成器] - 添加/api/types/*.ts生成模板
+- sz-admin:
+ - 升级:Eslint8.x -> Eslint9
+ - 新增:`useDictOptions` Hook
+ - 优化:同步`useDictOptions` Hook写法
+ - 修复:某些情况下部门树多选报错的问题
+ - 优化:@import scss 官方已不推荐使用,修改为 @use
+ - 更新:pnpm 依赖
+
+## v1.0.2-beta (20250302)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - mybatis-flex.version:1.10.7 -> 1.10.8。
+ - 优化:更新OSS配置,添加协议scheme支持并**弃用isHttps字段**。
+ - 可能的破坏性更新: 请切换`isHttps=true/false"` 为` scheme="https/http"`
+ - 优化:重构isNotNull方法,支持更广泛的集合类型。
+ - 优化:重构BeanCopyUtils以使用单例ModelMapper实例。
+ - 优化:【代码生成器】添加将bigint类型映射成long Java类型处理。
+ - 优化:在EntityChangeListener onInsert事件中添加对updateTime和updateId的初始设置。
+ - 修复:Excel导出时Long类型在某些情况下报错的问题。
+ - 新增:系统字典查询-根据类型查询接口。
+- sz-admin:
+ - 新增:[Hook] useDict 方法。(可使用此方法更新指定typeCode的字典缓存)。
+ - 新增:[Hook] useDict 的演示案例。
+ - 修改:删除字典接口注释。**Issue**[#11](https://github.com/feiyuchuixue/sz-admin/issues/11)(感谢[Kang-Yang](https://github.com/Kang-Yang))。
+ - 修改:README中的地址更正。**Issue**[#12](https://github.com/feiyuchuixue/sz-admin/issues/12)(感谢[Kang-Yang](https://github.com/Kang-Yang))。
+## v1.0.1-beta (20250215)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - spring-boot-starter-parent:3.4.1 -> 3.4.2。
+ - mybatis-flex.version:1.10.5 -> 1.10.7。
+ - sa-token:1.39.0 -> 1.40.0。
+ - excel-fastexcel:1.0.0 -> 1.1.0。
+ - mysql-connector-j:9.1.0 -> 9.2.0。
+ - 优化:字典类型删除时同步清除缓存。
+ - 优化:统一异常code规范,追加prefix。
+ - 优化:指定目标账户密码修改后,触发“踢下线”功能。
+ - 修改:菜单树增加返回参数。
+ - 优化: 日志格式。**Issue**[#10](https://github.com/feiyuchuixue/sz-admin/issues/10)。(感谢[129duckflew](https://github.com/129duckflew))。
+ - 新增:第三方开源库和许可证文件说明
+- sz-admin:
+ - 修复:无效Token响应码不一致的问题。
+ - 修复:AES-GCM加密方法在某些场景(浏览器)不可用的问题(行为验证码)。
+ - 优化:【代码生成器】- 生成信息中**上级菜单=目录**时与模块名的联动。
+ - 新增:第三方开源库和许可证文件说明
+## v1.0.0-beta (20250128)| 大型更新
+
+- sz-boot-parent:
+ - 优化:sonar 代码(质量)规范化
+- sz-admin:
+ - 优化:sonar 代码(质量)规范化
+## v0.9.0 (20250119)
+
+- sz-boot-parent:
+ - 优化:无效文件清理
+ - 优化:javadoc 注释
+ - 优化:[sz-service-websocket] 同步调整config路径至项目根目录下
+ - 优化:qodana 代码(质量)规范化
+- sz-admin:
+ - 无
+## v0.8.8 (20250118)
+
+- sz-boot-parent:
+ - 修改:Jackson序列化添加对`MultipartFile`类型的支持。
+ - 修改:`router.whitelist` 属性为Set结构。
+ - 优化:系统用户更新时,同步更新缓存信息。
+ - 优化:[行为验证码-滑块验证] 增加对double精度的支持。
+ - 优化:接口白名单,删除非必要的放行接口。
+ - 修复:aop日志打印的一些问题( http-topic.log)。
+ - 修复:[代码生成器] 预览时插入按钮SQL问题。
+ - 修复:EntityChangeListener 在处理未登录用户数据初始化时的异常问题。
+ - 修复:验证码参数`sys.captcha.requestLimit`未启用时redis中仍然记录了次数的问题。
+ - 修复:[部门管理] 上级部门为`根部门`时编辑校验未通过的问题。
+ - 依赖升级:
+ - spotless-maven-plugin:2.43.0 -> 2.44.1。
+ - mybatis-flex.version:1.10.2 -> 1.10.5。
+ - aws.s3.version:2.29.23 -> 2.29.50。
+ - springdoc-openapi-starter-webmvc-ui:2.7.0 -> 2.8.3。
+ - modelmapper:3.2.1 -> 3.2.2。
+ - swagger-annotations:2.2.26 -> 2.2.27。
+- sz-admin:
+
+ - 修复:个别浏览器Socket异常的问题。
+ - 优化:[行为验证码-滑块验证] 添加对移动端浏览器的支持。
+## v0.8.7 (20250109)
+
+- sz-boot-parent:
+ - 新增:`sz.cors.allowedOrigins`配置项,允许用户通过配置的方式指定限定域名
+ - 修复:springboot启动时打印logback配置信息的问题 && 优化logback配置
+ - 优化:接口防抖逻辑
+ - 当全局设置忽略GET请求的参数为true时,如果GET请求的Controller未标注@Debounce注解,则跳过防抖处理;但若Controller标注了@Debounce注解,即使是GET请求,也会执行防抖逻辑。
+ - 新增:行为验证码-滑块验证。感谢([阳纸伞](https://github.com/1327614618))
+ - 新增:[演示案例] 远程搜索下拉选择组件
+- sz-admin:
+
+ - 新增:行为验证码-滑块验证
+ - 新增:远程搜索下拉选择组件
+ - 新增:[演示案例] 远程搜索下拉选择组件
+## v0.8.6 (20250102)
+
+- sz-boot-parent:
+ - 修复: sys_config 缓存时间问题。
+ - 修改: 移动配置文件至项目【根目录】下。| 可能的破坏性更新
+ - 修改: 移除pom镜像源配置
+ - 修改: Dockerfile 增加配置目录挂载的支持
+ - 新增: GitHub Action workflow |
+- sz-admin:
+
+ - 修复:VITE自定义变量验证问题
+ - 新增:gzip打包支持
+ - 新增:Dockerfile
+ - 修改:.env.production 配置
+ - 新增:GitHub Action workflow
+## v0.8.5 (20241229)
+
+- sz-boot-parent:
+ - 优化:commons-logging 引用冲突问题。
+ - 修复:部门编辑时层级deep赋值不正确问题。
+ - 修复:前端module模板文件导入excel缺少参数问题。
+ - 修复:部门列表节点数量展示问题。
+ - 优化:升级EasyExcel为FastExcel。 | 可能的破坏性更新 (easyExcel -> fastExcel 的Package包切换)
+ - 优化:增强 Excel 导入异常处理,新增表头校验功能。详见[Excel导入导出](https://szadmin.cn/md/Help/doc/excel.html)
+ - 依赖升级:
+ - spring-boot-starter-parent:3.4.0 -> 3.4.1。
+- sz-admin:
+
+ - 优化:文件上传模板组件样式。(感谢[Alex-1116](https://github.com/Alex-1116))
+ - 优化:Excel导入组件,增加上传进度的支持。
+ - 优化:axios对全局response error的处理。
+## v0.8.4 (20241216)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - spring-boot-starter-parent:3.3.5 -> 3.4.0。
+ - mybatis-flex.version:1.9.7 -> 1.10.2。
+ - aws-crt:0.33.0 -> 0.33.3。
+ - hutool-jwt:5.8.32 -> 5.8.34。
+ - aws.s3:2.29.0 -> 2.29.23。
+ - HikariCP:6.0.0 -> 6.2.1。
+ - common-io:2.17.0 -> 2.18.0。
+ - lombok:1.18.34 -> 1.18.36。
+ - jackson:2.17.2 -> 2.18.2。
+ - swagger-annotations:2.2.25 -> 2.2.26。
+ - mysql-connector-j:9.0.0 -> 9.1.0。
+ - 修改:SpringBoot升级3.4.0后对knife4j的兼容性处理 | 兼容性更新,springboot升级3.4.0后knife4增强默认需禁用!!
+ - 删除:minio dependency。
+ - 优化:代码生成器查询。 **PR**[#57]([https://github.com/feiyuchuixue/sz-boot-parent/pull/57)。(感谢**[AiMing317](https://github.com/AiMing317)** )。
+ - 优化:[代码生成器] 修复若干问题。
+ - 新增:ossClient,新增oss文件流下载方法。
+ - 优化:FileUtils 新增对response header的处理方法。
+ - 优化:历史MapperXml/PO的结构映射。
+ - 新增:模板文件管理模块。
+- sz-admin:
+
+ - 优化:头像框样式。
+ - 优化:代码生成器查询。 **PR**[#57]([https://github.com/feiyuchuixue/sz-boot-parent/pull/57)。(感谢**[AiMing317](https://github.com/AiMing317)** )。
+ - 优化:Img、Imgs上传组件增加@change事件可获取完整的UploadResul。
+ - 优化:[代码生成器] 修复一些问题,样式及便利性更新。
+ - 优化:View.DefaultParams添加参数isAdd。可用于区分新增 OR 编辑。
+ - 优化:useDownload组件!blob流式下载文件名从response中获取。
+ - 新增:模板文件管理模块。
+ - 修改:更新教师统计模板文件名。
+
+## v0.8.3 (20241126)
+
+- sz-boot-parent:
+
+ - **删除:minio模块。** | 可能的破坏性更新
+ - 新增:oss模块,使用**AWS S3**协议,支持更多云存储厂商(阿里、七牛、腾讯、minio等)。
+ - 修改:切换minio模块至oss模块,切换上传方法至ossClient。请将minio.yml文件切换为oss.yml。
+ - 优化:移除冗余NotNull注解。
+- sz-admin:
+
+ - 新增:文件管理。
+
+ - 修改:oss模块同步改动。
+
+ - 新增:vite-plugin-vue-devtools插件。
+
+ - 优化:完善UploadResult返回结构,优化文件代码格式。
+
+ - 新增:图片上传、批量图片上传组件 (感谢 **Geeker-Admin** https://github.com/HalseySpicy/Geeker-Admin)。
+
+ - 修改:切换用户头像上传为新的组件。
+- 文档:
+
+ - [oss存储](https://szadmin.cn/md/Help/doc/oss.html)
+
+## v0.8.2 (20241119)
+
+- sz-boot-parent:
+ - 修复: 菜单详情页权限唯一值校验异常问题。
+ - 修复: [代码生成] MySql5.7 导入表异常问题。
+ - 新增: [代码生成] 对字典别名的支持。
+ - 优化: 字典类型(sysDictType)增加缓存同步机制。
+- sz-admin:
+ - 修复:客户端管理列表,授权类型展示问题。
+ - 新增:[代码生成] 对字典别名的支持。
+
+## v0.8.1 (20241106)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - spring-boot-starter-data-redis:3.3.4 -> 3.3.5。
+ - spring-boot-starter-parent:3.3.4 -> 3.3.5。
+ - 优化:sz-service-socket添加启动Banner与版本号。
+ - 优化:部门列表-未设置部门节点用户数量查询逻辑调整
+ - 优化:账户登录的查询。
+ - 修复:excel导出字典CodeName为null时的异常问题。
+ - 优化:Excel导入导出及字典转换,提升性能。
+- sz-admin:
+ - 优化: vite.config.mts更新 SCSS 预处理器配。
+ - 优化: 锁定sass版本为~1.79.x版本。
+ - 优化: tsconfig.app.json 增加package.json的支持。
+ - 优化: 使用TypeScript的模块扩展,优化package.json 的version。
+ - 优化: 增强 env.d.ts 文件中的类型定义。
+
+- 文档:
+
+ - [Excel导入导出](https://szadmin.cn/md/Help/doc/excel.html)
+
+## v0.8.0 (20241017)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - spring-boot-starter-data-redis:3.3.3 -> 3.3.4。
+ - 修复:sql预览模版结尾多余空格问题。
+ - 修复:无法正常解锁用户问题 **PR**[#26](https://github.com/feiyuchuixue/sz-boot-parent/issues/26#issue-2577509320)。(感谢[andyjia](https://github.com/andyjia))
+ - 优化:重构异常处理,引入错误前缀枚举,增强代码可读性和可维护。
+ - 新增:spotless maven 格式化插件,全局格式化。
+ - 新增:CHANGE.md 更新日志。
+ - 修改:将数据表中的自增ID字段类型升级为**bigint**,以支持更大的数据范围和避免潜在的溢出问题。| 可能的破坏性更新
+ - 优化:自增ID字段升级为bigint:
+ - 代码生成
+ - 系统菜单
+ - 系统字典
+ - 角色
+ - 用户
+ - 教师统计(演示)
+ - 新增:自增ID字段升级为bigint DDL脚本。
+ - 修复:部分页面批量删除异常问题。
+ - 优化:[代码生成] 前端模版添加对(string | number)[] 类型的支持。
+ - 优化:验证权限标识唯一性接口。
+ - 优化:接口防抖增加GET请求忽略的支持。
+ - 优化:通用返回接口对额外参数param的处理。
+ - 优化:[代码生成] 模版对菜单预览SQL的调整。
+ - 优化:数据库迁移脚本 --业务脚本 示例修改。
+- sz-admin:
+ - 依赖升级:
+ - **vite**:**4.5.3 -> 5.4.8**。
+ - **axios**: 1.7.2 -> 1.7.7
+ - **vue**:3.4.21 -> 3.5.12
+ - pinia:2.1.7 -> 2.2.4
+ - **vue-router**:**4.4.0 -> 4.4.5**
+ - sortablejs:1.15.2 -> 1.15.3
+ - pinia-plugin-persistedstate: 3.2.1 -> 3.2.3
+ - @vueuse/core:10.11.0 -> 10.11.1
+ - prettier:3.3.2 -> 3.3.3
+ - @types/node:18.19.39 -> 18.19.55
+ - **element-plus**:**2.7.6 -> 2.8.5**
+ - **sass**:**1.77.7 -> 1.79.5**
+ - @vue/tsconfig:0.4.0 -> 0.5.1
+ - vue-tsc:1.8.27 -> 2.1.6
+ - 修复:菜单管理、字典管理 预览SQL的格式问题。
+ - 修复:代码预览组件行号展示问题。
+ - 优化: 更新API状态码常量。
+ - 优化:提取请求超时时间参数**VITE_APP_HTTP_TIMEOUT** 单位ms,(默认超时时间60s)。
+ - 优化: useSelection组件添加对number数组的支持。
+ - 优化: 修改API参数类型以支持数字和字符串。
+ - 优化: 角色标识展示样式。
+ - 优化: vite5.x 使用ESM语法 vite.config.ts 升级为vite.config.mts。
+ - 优化: eslintrc.cjs 规则。
+ - 优化: prettier format配置。
+ - 优化:代码格式化,代码清理。
+
+## v0.7.11 (20241009)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - spring-boot-starter-data-redis:3.3.3 -> 3.3.4。
+ - 修复:sql预览模版结尾多余空格问题。
+ - 修复:无法正常解锁用户问题 **PR**[#26](https://github.com/feiyuchuixue/sz-boot-parent/issues/26#issue-2577509320)。(感谢[andyjia](https://github.com/andyjia))
+ - 优化:重构异常处理,引入错误前缀枚举,增强代码可读性和可维护。
+ - 新增:spotless maven 格式化插件,全局格式化。
+ - 新增:CHANGE.md 更新日志。
+ - 修改:将数据表中的自增ID字段类型升级为**bigint**,以支持更大的数据范围和避免潜在的溢出问题。| 可能的破坏性更新
+ - 优化:自增ID字段升级为bigint:
+ - 代码生成
+ - 系统菜单
+ - 系统字典
+ - 角色
+ - 用户
+ - 教师统计(演示)
+ - 新增:自增ID字段升级为bigint DDL脚本。
+ - 修复:部分页面批量删除异常问题。
+ - 优化:[代码生成] 前端模版添加对(string | number)[] 类型的支持。
+ - 优化:验证权限标识唯一性接口。
+ - 优化:接口防抖增加GET请求忽略的支持。
+ - 优化:通用返回接口对额外参数param的处理。
+ - 优化:[代码生成] 模版对菜单预览SQL的调整。
+ - 优化:数据库迁移脚本 --业务脚本 示例修改。
+
+## v0.7.10 (20240919)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - com.alibaba:easyexcel:4.0.2 -> 4.0.3。
+ - 修复:某些情况下账户列表查询的分页问题。
+ - 修复:数据权限组合拼接条件时OR、AND的优先级问题。
+ - 新增:接口防抖功能。
+ - 优化:sz自定义配置格式统一化。
+- sz-admin:
+ - 优化:WebSocket验证逻辑。
+ - 优化:env环境变量。
+ - 修复:dict接口登录时请求两次的问题。
+
+## v0.7.9 (20240913)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - org.apache.commons:commons-lang3:3.16.0 -> 3.17.0
+ - swagger-annotations: 2.2.21 -> 2.2.23.
+ - org.aspectj:aspectjweaver:1.9.22 -> 1.9.22.1
+ - mysql-connector-j: 8.4.0 -> 9.0.0
+ - hutool-jwt: 5.8.31 -> 5.8.32
+ - 新增:BeanCopyUtils 增加copy, copyNotIgnoreNull方法。
+ - 优化:**数据权限**映射表名的获取规则:优先使用@Table注解名称属性。
+ - 修复:角色管理标识空值校验问题。
+ - 优化:[代码生成] 前端搜索项独立enum Select的支持。
+ - 修复: @SaIgnore注解失效问题。
+ - 优化: @SaIgnore的使用场景,[详见文档](https://szadmin.cn/md/Help/doc/code-standard.html#_9-%E6%8E%A5%E5%8F%A3%E9%89%B4%E6%9D%83) 。
+ - 优化: 账户detail详情查询接口,排除敏感信息。
+- sz-admin:
+ - 优化:改造SearchForm组件,添加对enum的独立支持。(感谢[Alex-1116](https://github.com/Alex-1116))
+ - 修改:[教师统计] searchColumns enum演示。
+
+## v0.7.8 (20240902)
+
+- sz-boot-parent:
+ - 依赖升级:
+ - spring-boot-starter-parent:3.2.5 -> 3.3.3
+ - jackson:2.16.1 -> 2.17.2
+ - hutool-jwt:5.8.27 -> 5.8.31
+ - easyexcel: 3.3.4 -> 4.0.2
+ - aspectjweaver: 1.9.22 -> 1.9.22.1
+ - commons-lang3:3.14.0 -> 3.16.0
+ - mybatis-flex-spring-boot3-starter:1.9.3 -> 1.9.7
+ - modelmapper:3.2.0 -> 3.2.1
+ - minio:8.5.10 -> 8.5.12
+ - sa-token:1.38.0 -> 1.39.0
+ - 修复:代码生成,zip生成时流未关闭的问题。
+ - 修复:ftl sql模板int类型参数自动转换千分位的问题。
+ - 修复:字典更新问题。
+ - 优化:类名、包结构。
+ - 修改:MybatisFlex**禁用全局null值自动忽略**。代码生成器模版、部分业务查询拼接同步改动。|增强逻辑清晰和确定性。
+- sz-admin:
+ - 修改:客户端管理Form项描述错误
+ - 优化:[代码生成] 编辑Form,字典类型下拉展示。区分静态字典和动态字典。(感谢[Alex-1116](https://github.com/Alex-1116))
+
+## v0.7.7 (20240823)
+
+- sz-boot-parent:
+ - 优化:包结构及代码。
+ - 修复:字典sql导出ID格式问题。
+ - 修复:[代码生成] LocalDateTime范围查询Search区域展示异常问题。
+ - 新增:字典改造,对静态字典、动态字典提供支持。
+ - 优化:DictVO对象,完善字典查询sql增加对逻辑删除的支持。
+ - 修改:SysUser 动态字典:用户信息的支持。
+ - 优化:TeacherStatics演示示例,@DictFormat注解isSelected()的调整等。感谢[阳纸伞](https://github.com/1327614618)的贡献代码。
+- sz-admin:
+ - 优化:账户管理-切换部门列表时list接口请求两次额问题。
+
+## v0.7.6 (20240814)
+
+- sz-boot-parent:
+ - 修复:[代码生成] excel导出条数与列表查询数不符的问题。
+ - 修复:[代码生成] 关联字典的查询条件,生成类型为input而非select的问题。
+ - 修复:[代码生成] 新增菜单类型【菜单】时,deep层级赋值不正确问题。
+ - 优化:[代码生成] 代码生成逻辑,修复一些bug。
+ - 优化:添加business业务Flyway README描述文件。
+ - 优化:遵循jdk21建议,使用@Serial注解标识serialVersionUID。
+ - 优化:角色增加is_lock, permissions属性。
+ - 修复:字典菜单SQL查看时某些原因无法展示的问题。
+- sz-admin:
+ - 优化:代码生成字段类型添加描述。
+ - 优化:角色管理增加标识属性(permissions)、锁定状态(is_lock)。
+
+## v0.7.5 (20240812)
+
+- sz-boot-parent:
+ - 优化:账户新增时,如果选择了可用的部门,将账户创建到指定部门。
+ - 新增:字典管理,SQL导出功能。
+ - 优化:代码生成模板格式。
+- sz-admin:
+ - 修复:Header结构Avatar组件 默认头像展示问题。(感谢[Alex-1116](https://github.com/Alex-1116))
+ - 优化: 代码生成HighCode组件 增加行号展示。(感谢[Alex-1116](https://github.com/Alex-1116))
+ - 修复:账号管理 新增用户后 与部门列表的通讯问题。(感谢[Alex-1116](https://github.com/Alex-1116))
+ - 优化:代码生成编辑操作 根据导入导出checkbox 动态展示对应columns。(感谢[Alex-1116](https://github.com/Alex-1116))
+ - 优化:账户新增时,如果选择了可用的部门,将账户创建到指定部门下。
+ - 新增:字典管理,SQL导出功能。
+ - 修复:代码生成组件 行号 头部标题固定。(感谢[Alex-1116](https://github.com/Alex-1116))
+
+## v0.7.4 (20240730)
+
+- sz-boot-parent:
+ - 优化:业务与框架Flyway迁移脚本分离
+
+ - 新增多 Flyway 实例配置,分别管理业务和框架迁移脚本。
+ - 修改 `flyway.yml` 配置项,实现配置的清晰划分。
+ - 利用 `@ConfigurationProperties` 自动绑定配置项,创建独立的 Flyway 实例
+ - 各自使用独立的历史版本表(t_db_version 和 t_db_version_business)以避免相互干扰
+ - 优化迁移管理,提高数据库版本管理的灵活性和扩展性
+ - 更新了flyway的ddl脚本路径,在classpath:/db 路径下,新增framework、business路径,并**将原 classpath:/db 路径下 的DDL文件移动至 classpath:/db/framework下**。| 可能的破坏性更新
+
+ > [!IMPORTANT]
+ >
+ > - **重要通知:数据库迁移操作**
+ >
+ > 为了确保数据库迁移的顺利进行,我们特别提醒您注意以下步骤:
+ >
+ > 1. **迁移DDL脚本**:请将所有使用Flyway编写的自定义DDL(非框架提供的v1.1~v1.8版本)迁移脚本移动至`classpath:/db/business`目录下。
+ > 2. **重新规划DDL版本**:在迁移脚本完成后,重新规划并更新DDL的版本号,确保版本控制的一致性和可追溯性。
+ > 3. **数据备份**:**务必在执行迁移操作之前**,对现有数据库进行全面的数据备份。这是保障数据安全的关键步骤,避免在迁移过程中发生数据丢失或损坏的风险。
+ > 4. **执行迁移操作**:在确认数据备份无误后,按照既定的迁移计划执行DDL迁移操作。
+
+## v0.7.3 (20240728)
+
+- sz-boot-parent:
+ - 修复:部门逻辑删除后,account数据展示问题。
+ - 优化:permission唯一性校验。
+ - 新增:逻辑删除自动填充支持,delete_id,delete_time属性。
+ - 优化:代码生成器,提取配置文件。
+ - 优化:代码生成器,menu生成Sort逻辑。
+ - 修复:预览时检查菜单重复的问题。
+- sz-admin:
+ - 优化:permission唯一性校验。
+ - 优化:码生成器编辑Form表单的交互体验。
+- 官网文档:
+ - 新增:[代码生成器](https://szadmin.cn/md/Help/gen/generator-tools.html)文档。
+## v0.7.2 (20240719)
+
+> [!WARNING]
+>
+> **数据权限的session存储结构部分发生了改变,移除了customUserIds、customDeptIds。启用了userRuleMap、deptRuleMap来配合灵活的自定义规则。**
+
+- sz-boot-parent:
+ - 修改:数据权限,逻辑优化。减少用户操作,提升用户体验。
+- sz-admin:
+
+ - 修改:数据权限Form,优化交互逻辑。
+ - 修复:数据权限,编辑后再新增操作项disable的问题。
+- 官网文档:
+
+ - 修改:[数据权限文档](https://szadmin.cn/md/Help/doc/data-scope.html) 对部分逻辑进行了简化。
+
+## v0.7.1 (20240717)
+
+- sz-boot-parent:
+
+ - 修复:代码生成pojo类注释名称问题
+
+ - 优化:用户管理功能,代码清理
+
+ - 修复:TreeUtils constructTreeRecursiveExcludeNode方法忽略指定节点不生效的问题
+
+ - 修复:AOP url参数解析异常问题
+
+ - 优化:文件清理,命名规范化
+
+ - 新增:StringUtils toSnakeCase方法
+
+ - **修改:字典管理,添加业务类型,区分系统字典、业务字典** | 可能的破坏性更新
+
+ > [!IMPORTANT] !重要
+ >
+ > 1000号段为业务性字典,如有新增的字典请迁移至2000号段。受影响的字典类型值为“1006”、“1007”。
+
+ - 新增:数据权限实现
+
+- sz-admin:
+
+ - 优化:账户添加Form tooltip
+ - 修复:菜单缓存失效问题 [#IA8QI1](https://gitee.com/feiyuchuixue/sz-admin/issues/IA8QI1) | Gitee
+ - 优化:角色权限Form禁止esc关闭及点击其他区域关闭
+ - 修复:socket参数不存在时仍连接socket的问题
+ - 新增:数据字典-业务类型
+ - 修复:默认头像无法展示问题
+ - 修复:home页切换“分栏”布局报错问题
+ - 修复:查询条件项在某些条件下无法展示全的问题
+ - 优化:代码清理,规范化命名
+ - 新增:数据权限
+- 官网文档:
+
+ - 新增:[数据权限文档](https://szadmin.cn/md/Help/doc/data-scope.html)
+
+
+## v0.6.5 (20240619)
+
+- sz-boot-parent:
+ - 修复:未登录状态接口自动数据填充异常问题
+ - 修复:代码生成,批量删除异常问题
+ - 升级:升级Mybatis-Flex版本v1.9.3
+
+## v0.6.4 (20240612)
+
+- sz-boot-parent:
+ - 修复:权限问题orRole不生效的问题 [#IA4F9Z](https://gitee.com/feiyuchuixue/sz-boot-parent/issues/IA4F9Z)
+ - 新增:查询用户角色接口
+- sz-admin:
+ - 新增:权限校验(v-auth指令) 对超管角色的处理。env 新增 VITE_ADMIN_BYPASS_PERMISSION属性。
+
+## v0.6.3 (20240609)
+
+- sz-boot-parent:
+ - 修复:代码生成器拖拽排序丢失问题
+ - 优化:代码生成器-字段信息编辑模板调整,增加数据库模板
+ - 优化:代码生成菜单唯一性检查逻辑
+ - 修改: 升级Mybatis-Flex版本v1.9.2
+- sz-admin:
+ - 优化:代码生成器-字段信息编辑、生成信息编辑的操作逻辑
+ - 优化:代码生成器-字段信息编辑 选择模板功能区,增加数据库模板选项,完善提示信息
+ - 修复:ElMessage提示信息展示不在顶层的问题
+ - 优化:页脚增加版本号展示
+
+## v0.6.2 (20240605)
+
+- sz-boot-parent:
+ - 优化:将密码错误次数、错误冻结时间等魔法值提取到参数管理中
+- sz-admin:
+ - 优化:优化nginx推荐配置,解决网络原因导致socket频繁断开的问题
+- 官网文档:
+ - 新增:代码规范,前端代码提交前检查
+ - 修改:序言,商业用途免费。
+ - 优化:技术栈增加技术依赖超链接
+ - 新增:websocket Nginx配置建议
+ - 修改:感谢,对前端贡献者s1990218yao增加描述
+ - 修改:页脚,增加友链
+
+## v0.6.1 (20240603)
+
+- sz-boot-parent:
+ - 修改:admin账户初始密码为**sz123456**
+ - 优化:更新README文档
+- sz-admin:
+ - 修改:登陆页面placeholder
+ - 优化:更新README文档
+
+----
+
+## v0.6.0 (20240602)
+
+- sz-boot-parent:
+ - init
+- sz-admin:
+ - init
+- sz-deploy:
+ - init
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..55b0a72
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+feiyuchuixue@163.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..e7f5c6b
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,17 @@
+FROM azul/zulu-openjdk:21-latest
+LABEL authors="sz"
+
+COPY *.jar app.jar
+# 安装 curl, 用于蓝绿部署的容器健康检查等,并创建配置和日志目录
+RUN set -eux; \
+ apt-get update && \
+ apt-get install -y --no-install-recommends curl && \
+ rm -rf /var/lib/apt/lists/* && \
+ mkdir -p /config /logs
+
+ARG SPRING_PROFILES_ACTIVE
+
+# 声明挂载点(配置/日志)
+VOLUME ["/config", "/logs"]
+
+ENTRYPOINT ["java", "-jar", "-Duser.timezone=Asia/Shanghai","-Dfile.encoding=UTF-8", "app.jar", "--spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]
\ No newline at end of file
diff --git a/Knife4j访问地址 b/Knife4j访问地址
new file mode 100644
index 0000000..461b9ef
--- /dev/null
+++ b/Knife4j访问地址
@@ -0,0 +1,2 @@
+# api 文档地址
+http://127.0.0.1:9991/api/admin/doc.html#
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..2cc1b6d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [2024] [升职哦(sz)]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/THIRD_PARTY_LICENSE.md b/THIRD_PARTY_LICENSE.md
new file mode 100644
index 0000000..0bde9e8
--- /dev/null
+++ b/THIRD_PARTY_LICENSE.md
@@ -0,0 +1,697 @@
+# 第三方库和许可证
+
+本项目中引用了以下第三方开源项目及其许可证信息:
+
+## 项目列表
+
+### **[Geeker-Admin](https://github.com/HalseySpicy/Geeker-Admin)**
+
+- **仓库地址**: https://github.com/HalseySpicy/Geeker-Admin
+
+- **许可证类型**: MIT License
+
+- **许可证内容:**
+
+ ```
+ MIT License
+
+ Copyright (c) 2022 Halsey
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ ```
+
+### [Sa-Token](https://github.com/dromara/Sa-Token)
+
+- **仓库地址**: https://github.com/dromara/Sa-Token
+
+- **许可证类型**: Apache License 2.0
+
+- **许可证内容:**
+
+ ```
+ Apache License
+ Version 2.0, January 2004
+ https://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2011-2019 hubin.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ```
+
+### **[mybatis-flex](https://github.com/mybatis-flex/mybatis-flex)**
+
+- **仓库地址**: https://github.com/mybatis-flex/mybatis-flex
+
+- **许可证类型**: Apache License 2.0
+
+- **许可证内容:**
+
+ ```
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ```
+
+### [knife4j](https://github.com/xiaoymin/knife4j)
+
+- **仓库地址**: https://github.com/xiaoymin/knife4j
+
+- **许可证类型**: Apache License 2.0
+
+- **许可证内容:**
+
+ ```
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction, and
+ distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright
+ owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all other entities
+ that control, are controlled by, or are under common control with that entity.
+ For the purposes of this definition, "control" means (i) the power, direct or
+ indirect, to cause the direction or management of such entity, whether by
+ contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
+ permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications, including
+ but not limited to software source code, documentation source, and configuration
+ files.
+
+ "Object" form shall mean any form resulting from mechanical transformation or
+ translation of a Source form, including but not limited to compiled object code,
+ generated documentation, and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or Object form, made
+ available under the License, as indicated by a copyright notice that is included
+ in or attached to the work (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object form, that
+ is based on (or derived from) the Work and for which the editorial revisions,
+ annotations, elaborations, or other modifications represent, as a whole, an
+ original work of authorship. For the purposes of this License, Derivative Works
+ shall not include works that remain separable from, or merely link (or bind by
+ name) to the interfaces of, the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including the original version
+ of the Work and any modifications or additions to that Work or Derivative Works
+ thereof, that is intentionally submitted to Licensor for inclusion in the Work
+ by the copyright owner or by an individual or Legal Entity authorized to submit
+ on behalf of the copyright owner. For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems, and
+ issue tracking systems that are managed by, or on behalf of, the Licensor for
+ the purpose of discussing and improving the Work, but excluding communication
+ that is conspicuously marked or otherwise designated in writing by the copyright
+ owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+ of whom a Contribution has been received by Licensor and subsequently
+ incorporated within the Work.
+
+ 2. Grant of Copyright License.
+
+ Subject to the terms and conditions of this License, each Contributor hereby
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+ irrevocable copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the Work and such
+ Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License.
+
+ Subject to the terms and conditions of this License, each Contributor hereby
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+ irrevocable (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+ such license applies only to those patent claims licensable by such Contributor
+ that are necessarily infringed by their Contribution(s) alone or by combination
+ of their Contribution(s) with the Work to which such Contribution(s) was
+ submitted. If You institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+ Contribution incorporated within the Work constitutes direct or contributory
+ patent infringement, then any patent licenses granted to You under this License
+ for that Work shall terminate as of the date such litigation is filed.
+
+ 4. Redistribution.
+
+ You may reproduce and distribute copies of the Work or Derivative Works thereof
+ in any medium, with or without modifications, and in Source or Object form,
+ provided that You meet the following conditions:
+
+ You must give any other recipients of the Work or Derivative Works a copy of
+ this License; and
+ You must cause any modified files to carry prominent notices stating that You
+ changed the files; and
+ You must retain, in the Source form of any Derivative Works that You distribute,
+ all copyright, patent, trademark, and attribution notices from the Source form
+ of the Work, excluding those notices that do not pertain to any part of the
+ Derivative Works; and
+ If the Work includes a "NOTICE" text file as part of its distribution, then any
+ Derivative Works that You distribute must include a readable copy of the
+ attribution notices contained within such NOTICE file, excluding those notices
+ that do not pertain to any part of the Derivative Works, in at least one of the
+ following places: within a NOTICE text file distributed as part of the
+ Derivative Works; within the Source form or documentation, if provided along
+ with the Derivative Works; or, within a display generated by the Derivative
+ Works, if and wherever such third-party notices normally appear. The contents of
+ the NOTICE file are for informational purposes only and do not modify the
+ License. You may add Your own attribution notices within Derivative Works that
+ You distribute, alongside or as an addendum to the NOTICE text from the Work,
+ provided that such additional attribution notices cannot be construed as
+ modifying the License.
+ You may add Your own copyright statement to Your modifications and may provide
+ additional or different license terms and conditions for use, reproduction, or
+ distribution of Your modifications, or for any such Derivative Works as a whole,
+ provided Your use, reproduction, and distribution of the Work otherwise complies
+ with the conditions stated in this License.
+
+ 5. Submission of Contributions.
+
+ Unless You explicitly state otherwise, any Contribution intentionally submitted
+ for inclusion in the Work by You to the Licensor shall be under the terms and
+ conditions of this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify the terms of
+ any separate license agreement you may have executed with Licensor regarding
+ such Contributions.
+
+ 6. Trademarks.
+
+ This License does not grant permission to use the trade names, trademarks,
+ service marks, or product names of the Licensor, except as required for
+ reasonable and customary use in describing the origin of the Work and
+ reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty.
+
+ Unless required by applicable law or agreed to in writing, Licensor provides the
+ Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+ including, without limitation, any warranties or conditions of TITLE,
+ NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+ solely responsible for determining the appropriateness of using or
+ redistributing the Work and assume any risks associated with Your exercise of
+ permissions under this License.
+
+ 8. Limitation of Liability.
+
+ In no event and under no legal theory, whether in tort (including negligence),
+ contract, or otherwise, unless required by applicable law (such as deliberate
+ and grossly negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special, incidental,
+ or consequential damages of any character arising as a result of this License or
+ out of the use or inability to use the Work (including but not limited to
+ damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+ any and all other commercial damages or losses), even if such Contributor has
+ been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability.
+
+ While redistributing the Work or Derivative Works thereof, You may choose to
+ offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+ other liability obligations and/or rights consistent with this License. However,
+ in accepting such obligations, You may act only on Your own behalf and on Your
+ sole responsibility, not on behalf of any other Contributor, and only if You
+ agree to indemnify, defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason of your
+ accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work
+
+ To apply the Apache License to your work, attach the following boilerplate
+ notice, with the fields enclosed by brackets "{}" replaced with your own
+ identifying information. (Don't include the brackets!) The text should be
+ enclosed in the appropriate comment syntax for the file format. We also
+ recommend that a file or class name and description of purpose be included on
+ the same "printed page" as the copyright notice for easier identification within
+ third-party archives.
+
+ Copyright 2017 小明
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ```
+
+### [fastexcel](https://github.com/fast-excel/fastexcel)
+
+- **仓库地址**: https://github.com/fast-excel/fastexcel
+- **许可证类型**: MIT License
+- **许可证内容:**
+
+ ```
+ MIT License
+
+ Copyright (c) 2024 CodePhiliaX
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ ```
+
+## 其他
+
+请确保您遵循每个项目的许可证要求,并在必要时进行相应的说明和归属。
\ No newline at end of file
diff --git a/config/dev/knife4j.yml b/config/dev/knife4j.yml
new file mode 100644
index 0000000..01b881b
--- /dev/null
+++ b/config/dev/knife4j.yml
@@ -0,0 +1,30 @@
+# swagger文档配置
+knife4j:
+ enable: false
+ setting:
+ language: zh_cn
+springdoc:
+ default-flat-param-object: true
+ swagger-ui:
+ # 是否开启swagger-ui,【生产环境】建议关闭
+ enabled: true
+ path: /swagger-ui.html
+ tags-sorter: alpha
+ operations-sorter: alpha·
+ api-docs:
+ # 是否开启api-docs,【生产环境】建议关闭
+ enabled: true
+ path: /v3/api-docs
+ group-configs:
+ - group: 'admin'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.admin
+ - group: 'generator工具'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.generator
+ - group: 'www网站'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.www
+ - group: '微信小程序'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.applet
diff --git a/config/dev/mybatis-flex.yml b/config/dev/mybatis-flex.yml
new file mode 100644
index 0000000..d65e6d0
--- /dev/null
+++ b/config/dev/mybatis-flex.yml
@@ -0,0 +1,11 @@
+mybatis-flex:
+ configuration:
+ map-underscore-to-camel-case: true
+ jdbc-type-for-null: null
+ auto-mapping-behavior: full
+ auto-mapping-unknown-column-behavior: none
+ cache-enabled: false
+ global-config:
+ deleted-value-of-logic-delete: "T"
+ normal-value-of-logic-delete: "F"
+
diff --git a/config/dev/mysql.yml b/config/dev/mysql.yml
new file mode 100644
index 0000000..8f0134a
--- /dev/null
+++ b/config/dev/mysql.yml
@@ -0,0 +1,28 @@
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://127.0.0.1:3306/sz_admin_test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
+ username: root
+ password: Yanfa2023@
+ hikari:
+ #连接池名
+ pool-name: HikariCP
+ #最小空闲连接数
+ minimum-idle: 5
+ # 空闲连接存活最大时间,默认10分钟
+ idle-timeout: 600000
+ # 连接池最大连接数,默认是10
+ maximum-pool-size: 10
+ # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
+ auto-commit: true
+ # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+ max-lifetime: 1800000
+ # 数据库连接超时时间,默认30秒
+ connection-timeout: 30000
+ # 连接测试query
+ connection-test-query: SELECT 1
+ liquibase:
+ change-log: classpath:db/changelog/changelog-master.xml
+ enabled: true
+ database-change-log-lock-table: databasechangeloglock
+ database-change-log-table: databasechangelog
\ No newline at end of file
diff --git a/config/dev/oss.yml b/config/dev/oss.yml
new file mode 100644
index 0000000..131dc7c
--- /dev/null
+++ b/config/dev/oss.yml
@@ -0,0 +1,12 @@
+oss:
+ # 支持S3协议的厂商
+ provider: MINIO
+ endpoint: 192.168.56.101:9000
+ accessKey: a4jtJvgEmk4ead5dzac6
+ secretKey: UW6kxTGRetIAahV759rFkgoQ8ilXLRUMW0ULdIoo
+ bucketName: test
+ richtextBucketName: static
+ domain: http://192.168.56.101:9000
+ # 命名方式: UUID、ORIGINAL原文件名偏好,冲突会补充时间
+ naming: original
+ scheme: https
\ No newline at end of file
diff --git a/config/dev/page-helper.yml b/config/dev/page-helper.yml
new file mode 100644
index 0000000..6195e2b
--- /dev/null
+++ b/config/dev/page-helper.yml
@@ -0,0 +1,5 @@
+page-helper:
+ helperDialect: mysql
+ reasonable: false
+ supportMethodsArguments: true
+ params: count=countSql
\ No newline at end of file
diff --git a/config/dev/redis.yml b/config/dev/redis.yml
new file mode 100644
index 0000000..13623e0
--- /dev/null
+++ b/config/dev/redis.yml
@@ -0,0 +1,28 @@
+# redis
+spring:
+ data:
+ redis:
+ #单机配置
+ host: 127.0.0.1
+ port: 6379
+ # 数据索引
+ database: 0
+ # 连接超时时间(毫秒)
+ timeout: 50000
+ ###连接池配置###
+ jedis:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制)
+ max-active: 100
+ # 连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1
+ # 连接池中的最大空闲连接
+ max-idle: 30
+ # 连接池中的最小空闲连接
+ min-idle: 10
+ password: 123456
+
+# 开启redis监听
+redis:
+ listener:
+ enable: true
\ No newline at end of file
diff --git a/config/dev/sa-token.yml b/config/dev/sa-token.yml
new file mode 100644
index 0000000..fef73d1
--- /dev/null
+++ b/config/dev/sa-token.yml
@@ -0,0 +1,44 @@
+# sa-token
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: Authorization
+ # 是否开启自动续签
+ auto-renew: true
+ # token固定超时 设为七天 (必定过期) 单位: 秒
+ timeout: 604800
+ # 多端不同 token 有效期 可查看 LoginHelper.loginByDevice 方法自定义
+ # token最低活跃时间 (指定时间无操作就过期) 单位: 秒
+ active-timeout: 86400
+ # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+ is-concurrent: true
+ # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
+ is-share: false
+ # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+ token-style: uuid
+ # 是否输出操作日志
+ is-log: true
+ # jwt秘钥
+ jwt-secret-key: abcdefghijklmnopqrstuvwxyz
+ # 允许动态设置 token 有效期
+ dynamic-active-timeout: true
+ # 允许从 请求参数 读取 token
+ is-read-body: false
+ # 允许从 header 读取 token
+ is-read-header: true
+ # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险
+ is-read-cookie: false
+ # token前缀
+ token-prefix: "Bearer"
+ # 同一账号最大登录数量,-1代表不限
+ max-login-count: -1
+# 接口白名单
+router:
+ whitelist:
+ - "/v3/api-docs/**"
+ - "/doc.html"
+ - "/webjars/**"
+ - "/swagger-resources"
+ - "/favicon.ico"
+ - "/swagger-ui.html"
+ - "/www/**"
+ - "/wechat/**"
\ No newline at end of file
diff --git a/config/local/edgeBox.yml b/config/local/edgeBox.yml
new file mode 100644
index 0000000..6447f68
--- /dev/null
+++ b/config/local/edgeBox.yml
@@ -0,0 +1,6 @@
+edgeBox:
+ connectTimeout: 8
+ readTimeout: 10
+ maxIdleConnections: 16
+ keepAliveDuration: 5
+
diff --git a/config/local/knife4j.yml b/config/local/knife4j.yml
new file mode 100644
index 0000000..01b881b
--- /dev/null
+++ b/config/local/knife4j.yml
@@ -0,0 +1,30 @@
+# swagger文档配置
+knife4j:
+ enable: false
+ setting:
+ language: zh_cn
+springdoc:
+ default-flat-param-object: true
+ swagger-ui:
+ # 是否开启swagger-ui,【生产环境】建议关闭
+ enabled: true
+ path: /swagger-ui.html
+ tags-sorter: alpha
+ operations-sorter: alpha·
+ api-docs:
+ # 是否开启api-docs,【生产环境】建议关闭
+ enabled: true
+ path: /v3/api-docs
+ group-configs:
+ - group: 'admin'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.admin
+ - group: 'generator工具'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.generator
+ - group: 'www网站'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.www
+ - group: '微信小程序'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.applet
diff --git a/config/local/mybatis-flex.yml b/config/local/mybatis-flex.yml
new file mode 100644
index 0000000..d65e6d0
--- /dev/null
+++ b/config/local/mybatis-flex.yml
@@ -0,0 +1,11 @@
+mybatis-flex:
+ configuration:
+ map-underscore-to-camel-case: true
+ jdbc-type-for-null: null
+ auto-mapping-behavior: full
+ auto-mapping-unknown-column-behavior: none
+ cache-enabled: false
+ global-config:
+ deleted-value-of-logic-delete: "T"
+ normal-value-of-logic-delete: "F"
+
diff --git a/config/local/mysql.yml b/config/local/mysql.yml
new file mode 100644
index 0000000..e0bf6bc
--- /dev/null
+++ b/config/local/mysql.yml
@@ -0,0 +1,28 @@
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://127.0.0.1:3306/sz_admin_preview?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
+ username: root
+ password: 123456
+ hikari:
+ #连接池名
+ pool-name: HikariCP
+ #最小空闲连接数
+ minimum-idle: 5
+ # 空闲连接存活最大时间,默认10分钟
+ idle-timeout: 600000
+ # 连接池最大连接数,默认是10
+ maximum-pool-size: 10
+ # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
+ auto-commit: true
+ # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+ max-lifetime: 1800000
+ # 数据库连接超时时间,默认30秒
+ connection-timeout: 30000
+ # 连接测试query
+ connection-test-query: SELECT 1
+ liquibase:
+ change-log: classpath:db/changelog/changelog-master.xml
+ enabled: true
+ database-change-log-lock-table: databasechangeloglock
+ database-change-log-table: databasechangelog
\ No newline at end of file
diff --git a/config/local/oss.yml b/config/local/oss.yml
new file mode 100644
index 0000000..bfb2467
--- /dev/null
+++ b/config/local/oss.yml
@@ -0,0 +1,14 @@
+oss:
+ # 支持S3协议的厂商
+ provider: MINIO
+ endpoint: 192.168.56.101:9000
+ accessKey: a4jtJvgEmk4ead5dzac6
+ secretKey: UW6kxTGRetIAahV759rFkgoQ8ilXLRUMW0ULdIoo
+ # 全局存储桶,偏私有存储
+ bucketName: test
+ domain: http://192.168.56.101:9000
+ # 富文本专用存储桶,偏公用存储
+ richtextBucketName: static
+ # 命名方式: UUID、ORIGINAL原文件名偏好,冲突会补充时间
+ naming: original
+ scheme: http
\ No newline at end of file
diff --git a/config/local/page-helper.yml b/config/local/page-helper.yml
new file mode 100644
index 0000000..6195e2b
--- /dev/null
+++ b/config/local/page-helper.yml
@@ -0,0 +1,5 @@
+page-helper:
+ helperDialect: mysql
+ reasonable: false
+ supportMethodsArguments: true
+ params: count=countSql
\ No newline at end of file
diff --git a/config/local/redis.yml b/config/local/redis.yml
new file mode 100644
index 0000000..13623e0
--- /dev/null
+++ b/config/local/redis.yml
@@ -0,0 +1,28 @@
+# redis
+spring:
+ data:
+ redis:
+ #单机配置
+ host: 127.0.0.1
+ port: 6379
+ # 数据索引
+ database: 0
+ # 连接超时时间(毫秒)
+ timeout: 50000
+ ###连接池配置###
+ jedis:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制)
+ max-active: 100
+ # 连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1
+ # 连接池中的最大空闲连接
+ max-idle: 30
+ # 连接池中的最小空闲连接
+ min-idle: 10
+ password: 123456
+
+# 开启redis监听
+redis:
+ listener:
+ enable: true
\ No newline at end of file
diff --git a/config/local/sa-token.yml b/config/local/sa-token.yml
new file mode 100644
index 0000000..fef73d1
--- /dev/null
+++ b/config/local/sa-token.yml
@@ -0,0 +1,44 @@
+# sa-token
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: Authorization
+ # 是否开启自动续签
+ auto-renew: true
+ # token固定超时 设为七天 (必定过期) 单位: 秒
+ timeout: 604800
+ # 多端不同 token 有效期 可查看 LoginHelper.loginByDevice 方法自定义
+ # token最低活跃时间 (指定时间无操作就过期) 单位: 秒
+ active-timeout: 86400
+ # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+ is-concurrent: true
+ # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
+ is-share: false
+ # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+ token-style: uuid
+ # 是否输出操作日志
+ is-log: true
+ # jwt秘钥
+ jwt-secret-key: abcdefghijklmnopqrstuvwxyz
+ # 允许动态设置 token 有效期
+ dynamic-active-timeout: true
+ # 允许从 请求参数 读取 token
+ is-read-body: false
+ # 允许从 header 读取 token
+ is-read-header: true
+ # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险
+ is-read-cookie: false
+ # token前缀
+ token-prefix: "Bearer"
+ # 同一账号最大登录数量,-1代表不限
+ max-login-count: -1
+# 接口白名单
+router:
+ whitelist:
+ - "/v3/api-docs/**"
+ - "/doc.html"
+ - "/webjars/**"
+ - "/swagger-resources"
+ - "/favicon.ico"
+ - "/swagger-ui.html"
+ - "/www/**"
+ - "/wechat/**"
\ No newline at end of file
diff --git a/config/local/zlmediakit.yml b/config/local/zlmediakit.yml
new file mode 100644
index 0000000..e9988fe
--- /dev/null
+++ b/config/local/zlmediakit.yml
@@ -0,0 +1,10 @@
+ZLMediaKit:
+ ip: 192.168.2.128
+ port: 8080
+ app: live
+ vhost: __defaultVhost__
+ secret: liuzheng
+ connectTimeout: 8
+ readTimeout: 10
+ maxIdleConnections: 16
+ keepAliveDuration: 5
\ No newline at end of file
diff --git a/config/preview/knife4j.yml b/config/preview/knife4j.yml
new file mode 100644
index 0000000..01b881b
--- /dev/null
+++ b/config/preview/knife4j.yml
@@ -0,0 +1,30 @@
+# swagger文档配置
+knife4j:
+ enable: false
+ setting:
+ language: zh_cn
+springdoc:
+ default-flat-param-object: true
+ swagger-ui:
+ # 是否开启swagger-ui,【生产环境】建议关闭
+ enabled: true
+ path: /swagger-ui.html
+ tags-sorter: alpha
+ operations-sorter: alpha·
+ api-docs:
+ # 是否开启api-docs,【生产环境】建议关闭
+ enabled: true
+ path: /v3/api-docs
+ group-configs:
+ - group: 'admin'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.admin
+ - group: 'generator工具'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.generator
+ - group: 'www网站'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.www
+ - group: '微信小程序'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.applet
diff --git a/config/preview/mybatis-flex.yml b/config/preview/mybatis-flex.yml
new file mode 100644
index 0000000..be8de79
--- /dev/null
+++ b/config/preview/mybatis-flex.yml
@@ -0,0 +1,10 @@
+mybatis-flex:
+ configuration:
+ map-underscore-to-camel-case: true
+ jdbc-type-for-null: null
+ auto-mapping-behavior: full
+ auto-mapping-unknown-column-behavior: none
+ cache-enabled: false
+ global-config:
+ deleted-value-of-logic-delete: "T"
+ normal-value-of-logic-delete: "F"
diff --git a/config/preview/mysql.yml b/config/preview/mysql.yml
new file mode 100644
index 0000000..8f0134a
--- /dev/null
+++ b/config/preview/mysql.yml
@@ -0,0 +1,28 @@
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://127.0.0.1:3306/sz_admin_test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
+ username: root
+ password: Yanfa2023@
+ hikari:
+ #连接池名
+ pool-name: HikariCP
+ #最小空闲连接数
+ minimum-idle: 5
+ # 空闲连接存活最大时间,默认10分钟
+ idle-timeout: 600000
+ # 连接池最大连接数,默认是10
+ maximum-pool-size: 10
+ # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
+ auto-commit: true
+ # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+ max-lifetime: 1800000
+ # 数据库连接超时时间,默认30秒
+ connection-timeout: 30000
+ # 连接测试query
+ connection-test-query: SELECT 1
+ liquibase:
+ change-log: classpath:db/changelog/changelog-master.xml
+ enabled: true
+ database-change-log-lock-table: databasechangeloglock
+ database-change-log-table: databasechangelog
\ No newline at end of file
diff --git a/config/preview/oss.yml b/config/preview/oss.yml
new file mode 100644
index 0000000..131dc7c
--- /dev/null
+++ b/config/preview/oss.yml
@@ -0,0 +1,12 @@
+oss:
+ # 支持S3协议的厂商
+ provider: MINIO
+ endpoint: 192.168.56.101:9000
+ accessKey: a4jtJvgEmk4ead5dzac6
+ secretKey: UW6kxTGRetIAahV759rFkgoQ8ilXLRUMW0ULdIoo
+ bucketName: test
+ richtextBucketName: static
+ domain: http://192.168.56.101:9000
+ # 命名方式: UUID、ORIGINAL原文件名偏好,冲突会补充时间
+ naming: original
+ scheme: https
\ No newline at end of file
diff --git a/config/preview/page-helper.yml b/config/preview/page-helper.yml
new file mode 100644
index 0000000..6195e2b
--- /dev/null
+++ b/config/preview/page-helper.yml
@@ -0,0 +1,5 @@
+page-helper:
+ helperDialect: mysql
+ reasonable: false
+ supportMethodsArguments: true
+ params: count=countSql
\ No newline at end of file
diff --git a/config/preview/redis.yml b/config/preview/redis.yml
new file mode 100644
index 0000000..13623e0
--- /dev/null
+++ b/config/preview/redis.yml
@@ -0,0 +1,28 @@
+# redis
+spring:
+ data:
+ redis:
+ #单机配置
+ host: 127.0.0.1
+ port: 6379
+ # 数据索引
+ database: 0
+ # 连接超时时间(毫秒)
+ timeout: 50000
+ ###连接池配置###
+ jedis:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制)
+ max-active: 100
+ # 连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1
+ # 连接池中的最大空闲连接
+ max-idle: 30
+ # 连接池中的最小空闲连接
+ min-idle: 10
+ password: 123456
+
+# 开启redis监听
+redis:
+ listener:
+ enable: true
\ No newline at end of file
diff --git a/config/preview/sa-token.yml b/config/preview/sa-token.yml
new file mode 100644
index 0000000..fef73d1
--- /dev/null
+++ b/config/preview/sa-token.yml
@@ -0,0 +1,44 @@
+# sa-token
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: Authorization
+ # 是否开启自动续签
+ auto-renew: true
+ # token固定超时 设为七天 (必定过期) 单位: 秒
+ timeout: 604800
+ # 多端不同 token 有效期 可查看 LoginHelper.loginByDevice 方法自定义
+ # token最低活跃时间 (指定时间无操作就过期) 单位: 秒
+ active-timeout: 86400
+ # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+ is-concurrent: true
+ # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
+ is-share: false
+ # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+ token-style: uuid
+ # 是否输出操作日志
+ is-log: true
+ # jwt秘钥
+ jwt-secret-key: abcdefghijklmnopqrstuvwxyz
+ # 允许动态设置 token 有效期
+ dynamic-active-timeout: true
+ # 允许从 请求参数 读取 token
+ is-read-body: false
+ # 允许从 header 读取 token
+ is-read-header: true
+ # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险
+ is-read-cookie: false
+ # token前缀
+ token-prefix: "Bearer"
+ # 同一账号最大登录数量,-1代表不限
+ max-login-count: -1
+# 接口白名单
+router:
+ whitelist:
+ - "/v3/api-docs/**"
+ - "/doc.html"
+ - "/webjars/**"
+ - "/swagger-resources"
+ - "/favicon.ico"
+ - "/swagger-ui.html"
+ - "/www/**"
+ - "/wechat/**"
\ No newline at end of file
diff --git a/config/prod/knife4j.yml b/config/prod/knife4j.yml
new file mode 100644
index 0000000..f6b3044
--- /dev/null
+++ b/config/prod/knife4j.yml
@@ -0,0 +1,30 @@
+# swagger文档配置
+knife4j:
+ enable: false
+ setting:
+ language: zh_cn
+springdoc:
+ default-flat-param-object: true
+ swagger-ui:
+ # 是否开启swagger-ui,【生产环境】建议关闭
+ enabled: false
+ path: /swagger-ui.html
+ tags-sorter: alpha
+ operations-sorter: alpha·
+ api-docs:
+ # 是否开启api-docs,【生产环境】建议关闭
+ enabled: false
+ path: /v3/api-docs
+ group-configs:
+ - group: 'admin'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.admin
+ - group: 'generator工具'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.generator
+ - group: 'www网站'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.www
+ - group: '微信小程序'
+ paths-to-match: '/**'
+ packages-to-scan: com.sz.applet
diff --git a/config/prod/mybatis-flex.yml b/config/prod/mybatis-flex.yml
new file mode 100644
index 0000000..be8de79
--- /dev/null
+++ b/config/prod/mybatis-flex.yml
@@ -0,0 +1,10 @@
+mybatis-flex:
+ configuration:
+ map-underscore-to-camel-case: true
+ jdbc-type-for-null: null
+ auto-mapping-behavior: full
+ auto-mapping-unknown-column-behavior: none
+ cache-enabled: false
+ global-config:
+ deleted-value-of-logic-delete: "T"
+ normal-value-of-logic-delete: "F"
diff --git a/config/prod/mysql.yml b/config/prod/mysql.yml
new file mode 100644
index 0000000..8f0134a
--- /dev/null
+++ b/config/prod/mysql.yml
@@ -0,0 +1,28 @@
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://127.0.0.1:3306/sz_admin_test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
+ username: root
+ password: Yanfa2023@
+ hikari:
+ #连接池名
+ pool-name: HikariCP
+ #最小空闲连接数
+ minimum-idle: 5
+ # 空闲连接存活最大时间,默认10分钟
+ idle-timeout: 600000
+ # 连接池最大连接数,默认是10
+ maximum-pool-size: 10
+ # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
+ auto-commit: true
+ # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+ max-lifetime: 1800000
+ # 数据库连接超时时间,默认30秒
+ connection-timeout: 30000
+ # 连接测试query
+ connection-test-query: SELECT 1
+ liquibase:
+ change-log: classpath:db/changelog/changelog-master.xml
+ enabled: true
+ database-change-log-lock-table: databasechangeloglock
+ database-change-log-table: databasechangelog
\ No newline at end of file
diff --git a/config/prod/oss.yml b/config/prod/oss.yml
new file mode 100644
index 0000000..131dc7c
--- /dev/null
+++ b/config/prod/oss.yml
@@ -0,0 +1,12 @@
+oss:
+ # 支持S3协议的厂商
+ provider: MINIO
+ endpoint: 192.168.56.101:9000
+ accessKey: a4jtJvgEmk4ead5dzac6
+ secretKey: UW6kxTGRetIAahV759rFkgoQ8ilXLRUMW0ULdIoo
+ bucketName: test
+ richtextBucketName: static
+ domain: http://192.168.56.101:9000
+ # 命名方式: UUID、ORIGINAL原文件名偏好,冲突会补充时间
+ naming: original
+ scheme: https
\ No newline at end of file
diff --git a/config/prod/page-helper.yml b/config/prod/page-helper.yml
new file mode 100644
index 0000000..6195e2b
--- /dev/null
+++ b/config/prod/page-helper.yml
@@ -0,0 +1,5 @@
+page-helper:
+ helperDialect: mysql
+ reasonable: false
+ supportMethodsArguments: true
+ params: count=countSql
\ No newline at end of file
diff --git a/config/prod/redis.yml b/config/prod/redis.yml
new file mode 100644
index 0000000..13623e0
--- /dev/null
+++ b/config/prod/redis.yml
@@ -0,0 +1,28 @@
+# redis
+spring:
+ data:
+ redis:
+ #单机配置
+ host: 127.0.0.1
+ port: 6379
+ # 数据索引
+ database: 0
+ # 连接超时时间(毫秒)
+ timeout: 50000
+ ###连接池配置###
+ jedis:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制)
+ max-active: 100
+ # 连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1
+ # 连接池中的最大空闲连接
+ max-idle: 30
+ # 连接池中的最小空闲连接
+ min-idle: 10
+ password: 123456
+
+# 开启redis监听
+redis:
+ listener:
+ enable: true
\ No newline at end of file
diff --git a/config/prod/sa-token.yml b/config/prod/sa-token.yml
new file mode 100644
index 0000000..fef73d1
--- /dev/null
+++ b/config/prod/sa-token.yml
@@ -0,0 +1,44 @@
+# sa-token
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: Authorization
+ # 是否开启自动续签
+ auto-renew: true
+ # token固定超时 设为七天 (必定过期) 单位: 秒
+ timeout: 604800
+ # 多端不同 token 有效期 可查看 LoginHelper.loginByDevice 方法自定义
+ # token最低活跃时间 (指定时间无操作就过期) 单位: 秒
+ active-timeout: 86400
+ # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+ is-concurrent: true
+ # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
+ is-share: false
+ # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+ token-style: uuid
+ # 是否输出操作日志
+ is-log: true
+ # jwt秘钥
+ jwt-secret-key: abcdefghijklmnopqrstuvwxyz
+ # 允许动态设置 token 有效期
+ dynamic-active-timeout: true
+ # 允许从 请求参数 读取 token
+ is-read-body: false
+ # 允许从 header 读取 token
+ is-read-header: true
+ # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险
+ is-read-cookie: false
+ # token前缀
+ token-prefix: "Bearer"
+ # 同一账号最大登录数量,-1代表不限
+ max-login-count: -1
+# 接口白名单
+router:
+ whitelist:
+ - "/v3/api-docs/**"
+ - "/doc.html"
+ - "/webjars/**"
+ - "/swagger-resources"
+ - "/favicon.ico"
+ - "/swagger-ui.html"
+ - "/www/**"
+ - "/wechat/**"
\ No newline at end of file
diff --git a/lombok.config b/lombok.config
new file mode 100644
index 0000000..796f49f
--- /dev/null
+++ b/lombok.config
@@ -0,0 +1,3 @@
+config.stopBubbling=true
+# 解决子类警告:Generating equals/hashCode implementation but without a call to superclass
+lombok.equalsAndHashCode.callSuper=call
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..714804c
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,134 @@
+
+
+ 4.0.0
+
+ com.sz
+ sz-boot-parent
+ pom
+
+ sz-common
+ sz-service
+ sz-dependencies
+
+
+ com.sz
+ sz-build
+ ${revision}
+ ./sz-build/pom.xml
+
+
+
+ 21
+ 21
+ 21
+ true
+
+
+
+
+
+ com.sz
+ sz-dependencies
+ ${project.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.projectlombok
+ lombok
+
+
+ io.swagger.core.v3
+ swagger-annotations
+
+
+
+
+
+
+
+
+ com.diffplug.spotless
+ spotless-maven-plugin
+ 2.44.5
+
+
+ UTF-8
+
+ sz-build/baeldung-style.xml
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sz-build/baeldung-style.xml b/sz-build/baeldung-style.xml
new file mode 100644
index 0000000..7037691
--- /dev/null
+++ b/sz-build/baeldung-style.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sz-build/pom.xml b/sz-build/pom.xml
new file mode 100644
index 0000000..cf23a65
--- /dev/null
+++ b/sz-build/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.5.5
+
+
+
+ com.sz
+ sz-build
+ pom
+ ${revision}
+
+
+
+ 1.3.2-beta-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/sz-common/pom.xml b/sz-common/pom.xml
new file mode 100644
index 0000000..fe33c3c
--- /dev/null
+++ b/sz-common/pom.xml
@@ -0,0 +1,28 @@
+
+
+
+ sz-boot-parent
+ com.sz
+ ${revision}
+
+ 4.0.0
+
+ sz-common
+ pom
+
+ sz-common-core
+ sz-common-db-mongodb
+ sz-common-db-mysql
+ sz-common-db-redis
+ sz-common-excel
+ sz-common-generator
+ sz-common-log
+ sz-common-oss
+ sz-common-mq
+ sz-common-security
+ sz-common-wechat
+
+
+
\ No newline at end of file
diff --git a/sz-common/sz-common-core/pom.xml b/sz-common/sz-common-core/pom.xml
new file mode 100644
index 0000000..0e1f2af
--- /dev/null
+++ b/sz-common/sz-common-core/pom.xml
@@ -0,0 +1,96 @@
+
+
+
+ sz-common
+ com.sz
+ ${revision}
+
+ 4.0.0
+
+ sz-common-core
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ provided
+ true
+
+
+ org.projectlombok
+ lombok
+
+
+
+ com.github.pagehelper
+ pagehelper
+ provided
+ true
+
+
+
+ org.apache.commons
+ commons-collections4
+
+
+ commons-io
+ commons-io
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+ org.modelmapper
+ modelmapper
+
+
+ com.mybatis-flex
+ mybatis-flex-spring-boot3-starter
+ provided
+ true
+
+
+
+ org.springframework
+ spring-websocket
+ provided
+ true
+
+
+ cn.dev33
+ sa-token-spring-boot3-starter
+ provided
+ true
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+ provided
+ true
+
+
+ com.alibaba
+ transmittable-thread-local
+
+
+ org.lionsoul
+ ip2region
+
+
+
+
+
\ No newline at end of file
diff --git a/sz-common/sz-common-core/src/main/java/com/sz/core/common/annotation/Debounce.java b/sz-common/sz-common-core/src/main/java/com/sz/core/common/annotation/Debounce.java
new file mode 100644
index 0000000..bd79877
--- /dev/null
+++ b/sz-common/sz-common-core/src/main/java/com/sz/core/common/annotation/Debounce.java
@@ -0,0 +1,27 @@
+package com.sz.core.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 防抖注解(自定义防抖时间)
+ *