Compare commits

...

9 Commits

Author SHA1 Message Date
bunny de1c454043 Merge branch 'dev' 2025-05-26 09:19:06 +08:00
bunny 6ea1f00530 📝 添加和修改文档 2025-05-26 09:18:50 +08:00
bunny dc787bf028 🩹 非关键问题 2025-05-22 14:25:31 +08:00
bunny 020672307e 🏷️ feat: 用戶相关实体类验证分组 2025-05-22 13:59:35 +08:00
bunny 7a735da331 🏷️ feat: 定时任务相关实体类验证分组 2025-05-22 13:37:56 +08:00
bunny 00d910a524 🏷️ feat: 消息相关实体类验证分组 2025-05-22 13:28:20 +08:00
bunny 110925fa1f 🏷️ feat: 文件和返回状态枚举相关实体类验证分组 2025-05-22 13:06:39 +08:00
bunny b7bdee35f1 🏷️ feat: 配置相关实体类验证分组 2025-05-22 12:38:24 +08:00
bunny 13307a6b9e ♻️ feat: 实体类位置更新 2025-05-22 12:13:41 +08:00
263 changed files with 1220 additions and 2054 deletions

View File

@ -1,256 +0,0 @@
# Gitlab安装
完全笔记《安装GitLabel》 https://www.yuque.com/bunny-6ixda/bgxtva/wtw4x4r8kbvxwgac?singleDoc#
## Docker安装
- docker镜像
- https://hub.docker.com/r/gitlab/gitlab-ee/tags?name=17.9.6
- https://hub.docker.com/r/gitlab/gitlab-runner/tags?name=17.11.0
```bash
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt upgrade
sudo apt-get install ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 默认情况下只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组以避免每次使用Docker时都需要使用sudo设置完成后退出当前用户之后再进入既可
sudo usermod -aG docker $USER
# 运行docker
sudo systemctl start docker
# 安装工具
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 重启docker
sudo service docker restart
# 重启终端生效
exit
```
配置镜像源
```bash
# 创建目录
sudo mkdir -p /etc/docker
# 写入配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker-0.unsee.tech",
"https://docker-cf.registry.cyou",
"https://docker.1panel.live"
]
}
EOF
# 重启docker服务
sudo systemctl daemon-reload && sudo systemctl restart docker
```
## 环境搭建
### 安装JDK21
```bash
# 安装JDK21
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
sudo dpkg -i jdk-21_linux-x64_bin.deb
java --version
```
### Maven 3.8.8安装
#### 安装
```bash
# 安装maven
wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
sudo mkdir -p /opt/maven
sudo tar -xzf apache-maven-3.8.8-bin.tar.gz -C /opt/maven
sudo mv /opt/maven/apache-maven-3.8.8 /opt/maven/maven-3.8.8
# 修改镜像配置
cd /opt/maven/maven-3.8.8/conf
# 赋予权限修改
sudo chmod 666 settings.xml
# 编写配置
sudo vim /etc/profile
# 添加以下内容
# export PATH=$PATH:/opt/maven/maven-3.8.8/bin
# 刷新配置
source /etc/profile
mvn -V
```
#### maven的镜像
```xml
<mirror>
<id>aliyun</id>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
```
## 安装Gitlab
```bash
# Ubuntu
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/gitlab-ce_18.0.0-ce.0_amd64.deb
# dpkg
sudo dpkg -i gitlab-ce_18.0.0-ce.0_amd64.deb
```
### 编辑配置
```bash
# 编辑站点
sudo vim /etc/gitlab/gitlab.rb
```
修改下面内容
```bash
external_url 'http://192.168.95.134:3001'
```
应用配置
```bash
# 应用配置
sudo gitlab-ctl reconfigure
```
### 常用命令
```bash
# 服务控制
sudo gitlab-ctl start
sudo gitlab-ctl status
sudo gitlab-ctl stop
# 应用配置
sudo gitlab-ctl reconfigure
# 重启
sudo gitlab-ctl restart
```
### 查看密码
```bash
# 24 小时后自动删除
sudo cat /etc/gitlab/initial_root_password
```
## 安装Gitlab-Runner
```bash
# 需要 gitlab-runner-helper-images
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/ubuntu/pool/focal/main/g/gitlab-runner-helper-images/gitlab-runner-helper-images_18.0.1-1_all.deb
sudo dpkg -i gitlab-runner-helper-images_18.0.1-1_all.deb
# 之后安装 gitlab-runner
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/ubuntu/pool/focal/main/g/gitlab-runner/gitlab-runner_18.0.1-1_amd64.deb
sudo dpkg -i gitlab-runner_18.0.1-1_amd64.deb
```
### 先下载后安装
```bash
# Ubuntu
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/ubuntu/pool/focal/main/g/gitlab-runner-helper-images/gitlab-runner-helper-images_18.0.1-1_all.deb
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/ubuntu/pool/focal/main/g/gitlab-runner/gitlab-runner_18.0.1-1_amd64.deb
# dpkg
sudo dpkg -i gitlab-runner-helper-images_18.0.1-1_all.deb
sudo dpkg -i gitlab-runner_18.0.1-1_amd64.deb
```
### 配置Gitlab-Runner用户
> [!NOTE]
>
> 如果有需要清理缓存:`sudo rm -rf /opt/maven/maven-3.8.8/conf/builds/**`**
>
> gitlab-cehttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/
>
> gitlab-runner-helper-imageshttps://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/ubuntu/pool/focal/main/g/gitlab-runner-helper-images/
>
> gitlab-runnerhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/ubuntu/pool/focal/main/g/gitlab-runner/
```bash
sudo gitlab-runner uninstall
sudo gitlab-runner install --working-directory /home/gitlab-runner --user root
sudo systemctl restart gitlab-runner
```
### 检查 GitLab Runner 配置
```bash
sudo vim /etc/gitlab-runner/config.toml
```
修改文件
```bash
[[runners]]
name = "my-runner"
executor = "shell"
shell = "bash"
user = "gitlab-runner" # 确保用户有权限
working_directory = "/home/gitlab-runner"
```
### 检查 Maven 安装目录权限
```bash
sudo chmod 777 -R /opt/maven/maven-3.8.8
sudo chmod 777 -R /opt/maven/maven-3.8.8/
sudo chown -R gitlab-runner:gitlab-runner /opt/maven/maven-3.8.8/
```
## CI/CD脚本示例
如果构建出现`pending`情况大部分情况下,是文件写错了,要么是`Gitlab-Runner`标签没写对
```yml
stages:
- build
- build-docker
- deploy
variables:
CONTAINER_NAME: "bunny-auth-server"
DOCKER_TAG: "4.0.0"
build-job:
stage: build
script:
- echo "Compiling the code..."
- mvn clean package -DskipTests
- echo "Compile complete."
- docker pull openjdk:24-ea-17-jdk-oraclelinux9
- echo "docker pull complete."
- docker build -f Dockerfile -t $CONTAINER_NAME:$DOCKER_TAG .
- echo "Application successfully deployed."
deploy-job:
stage: deploy
environment: production
script:
- echo "Deploying application..."
- docker stop $CONTAINER_NAME || true
- docker rm $CONTAINER_NAME || true
- docker run -d -p 7070:7070 -p 8000:8000 --name $CONTAINER_NAME --restart always $CONTAINER_NAME:$DOCKER_TAG
- echo "Application successfully deployed."
```

283
ReadMe-en.md Normal file
View File

@ -0,0 +1,283 @@
# BunnyAuth Dynamic Permission Control Introduction
![GitHub Stars](https://img.shields.io/github/stars/BunnyMaster/bunny-admin-server?style=social) ![GitHub forks](https://img.shields.io/github/forks/BunnyMaster/bunny-admin-server) ![GitHub contributors](https://img.shields.io/github/contributors/BunnyMaster/bunny-admin-server) <img alt="GitHub License" src="https://img.shields.io/github/license/BunnyMaster/bunny-admin-server"> ![GitHub top language](https://img.shields.io/github/languages/top/BunnyMaster/bunny-admin-server) ![GitHub Repo Size](https://img.shields.io/github/repo-size/BunnyMaster/bunny-admin-server)
> [!IMPORTANT]
>
> Open-source permission template: [Pure-admin](https://pure-admin.github.io/vue-pure-admin/)
>
> **Pure-admin Documentation**: https://pure-admin.github.io/pure-admin-doc
>
> **Default Credentials**
>
> The project includes a default administrator with user `id` `1` in the database:
>
> Username: `Administrator`
>
> Password: `admin123`
> [!WARNING]
>
> If the password for the administrator [`Administrator`] is incorrect during initial login:
>
> Locate the `sys_user` table in the database and replace the password for `Administrator` with the following:
>
> `$2a$10$h5BUwmMaVcEuu7Bz0TPPy.PQV8JP6CFJlbHTgT78G1s0YPIu2kfXe`
Flexible permission control with multi-platform file upload support.
## 📽️ Video Tutorials
**Introduction Videos**
- [RBAC URL Permission Database and Backend Design](https://www.bilibili.com/video/BV1nGVazrEKf/)
- [Bunny-Admin Configuration Guide](https://www.bilibili.com/video/BV177VazMEiM/)
- [Bunny-Admin User Operations](https://www.bilibili.com/video/BV1B7VazME72/)
- [Bunny-Admin Role Permissions](https://www.bilibili.com/video/BV1ELVazzEnC/)
- [Bunny-Admin Remaining Business Logic](https://www.bilibili.com/video/BV1ELVazzE7S/)
- [Code Generator](https://www.bilibili.com/video/BV1d4Lxz9E3j/?vd_source=d42b5b664efb958be39eef8ee1196a7e)
**GitHub Repositories**
- Permission Backend: https://github.com/BunnyMaster/bunny-admin-server
- Permission Frontend: https://github.com/BunnyMaster/bunny-admin-web
- Code Generator: https://github.com/BunnyMaster/generator-code-server
**Gitee Repositories**
- Permission Backend: https://gitee.com/BunnyBoss/bunny-admin-server
- Permission Frontend: https://gitee.com/BunnyBoss/bunny-admin-web
- Code Generator: https://gitee.com/BunnyBoss/generator-code-server
## 🚀 Project Overview
A modern dynamic permission control system based on Spring Security 6, providing a complete RBAC permission management solution. Supports frontend-backend separation architecture and flexible fine-grained permission control.
## 😋 Controller Annotation Guide
The project is URL-based for easy permission interface definition. Permissions can be added or deleted via URLs, even if the interface does not exist in the project.
For example, if a role needs access to all interfaces under `dept`, the URL can be written as `api/dept/**`. For specific interfaces like `/api/dept/aaa/bbb`, the URL can be customized accordingly.
For paginated queries with URL parameters, use `/api/dept/*/*` for flexible permission control.
In scenarios where interfaces directly represent permissions, manually adding each URL is tedious. Instead, Swagger annotations and the custom `PermissionTag` annotation can be used. Reflection-based permission addition is also supported. Refer to the `ReadMe` in the controller directory for details.
## ✨ Major Updates
### Core Improvements
**v4.0.0**
- **Complete Refactoring**: Backend interfaces, entity classes, and frontend optimizations.
- **Batch Operations Support**:
- ✅ Menu Management: Enhanced attribute content.
- ✅ Permission Management: JSON/Excel import/export.
- ✅ Role Management: Excel batch updates.
- ✅ Multi-language Configuration: JSON/Excel updates (full replacement mode).
**v4.0.1**
- File system supports multiple platforms with manual configuration.
- Reference documentation: https://x-file-storage.xuyanwu.cn/#/
- File deletion and download require implementing the `FileRecorder` interface. The code and controllers are in the `file` directory. Modify as needed based on the [x-file-storage] documentation.
## 🧠 Usage Tips
> [!TIP]
>
> Multi-language Usage Tips:
>
> While direct JSON file manipulation may be challenging for some users, JSON offers unique advantages in multi-language projects:
>
> 1. Structured format for easy AI parsing.
> 2. Efficient translation workflow:
> - Developers only need to complete the Chinese version.
> - Upload JSON to AI translation tools.
> - Simple commands generate English/Traditional Chinese/Korean versions.
> 3. Saves significant development time with a "write once, adapt for multiple languages" approach.
## 🔐 Permission Control System
![image-20250428225337843](./images/image-20250428225337843-1745854181492-5.png)
### Access Rules Configuration
Configured via `WebSecurityConfig`:
| Path Type | Example | Access Requirement | Configuration Method |
| ----------------- | ----------------- | ------------------ | ------------------------------- |
| Public Interface | `/api/public/**` | No authentication | Path contains `public` keyword |
| Private Interface | `/api/private/**` | Requires login | Path contains `private` keyword |
### Path Matching Strategy
```java
public static String[] annotations = { ... };
// Configuration Example
http.authorizeHttpRequests(auth -> auth
.authorizeHttpRequests(authorize -> authorize
.requestMatchers(annotations).permitAll()
);
```
### Maven Project Structure
```
bunny-auth/
├── auth-api # Interface Layer
├── auth-core # Core Module
│ ├── config # Security Configuration
│ └── domain # Domain
│ └── ...... # And more...
├── service # Business Implementation
└── dao # Data Persistence Layer
```
## 🛠️ Use Cases
### 1. Frontend-Only Control Mode
Frontend details: https://pure-admin.cn/pages/RBAC/#%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE
![image-20250428230444403](./images/image-20250428230444403-1745854157395-3.png)
- **Page Control**:
1. Assign roles to route menus.
2. Assign roles to users.
- **Button Control**:
```ts
// Frontend Permission Codes
const auth = {
add: ['i18nType::add'],
update: ['i18nType::update'],
delete: ['i18nType::delete'],
};
```
### 2. Backend-Only Control Mode
- Interface-level permissions: For pagination, use `/api/permission/*/*`.
```java
@Tag(name = "System Permissions")
@PermissionTag(permission = "permission::*")
@RestController
@RequestMapping("api/permission")
public class PermissionController {
@Operation(summary = "Pagination Query")
@PermissionTag(permission = "permission::query")
@GetMapping("{page}/{limit}")
public Result<PageResult<PermissionVo>> getPermissionPage(
@PathVariable Integer page,
@PathVariable Integer limit) {
// ...
}
}
```
### 3. Full-Stack Control Mode
Combine the above two approaches.
## 🛡️ Security Configuration
### Path Matching Strategy
AntPath details: https://juejin.cn/spost/7498247273660743732
| Pattern | Example | Description |
| --------------- | --------------- | ----------------------- |
| Exact Match | `/api/user` | Matches exact path |
| Single Wildcard | `/api/user/*` | Matches single level |
| Multi Wildcard | `/api/user/**` | Matches multiple levels |
| Method Specific | `GET /api/user` | Matches HTTP method |
## 🧰 Technology Stack
### 😄 Frontend
- Vue 3 + PureAdmin Template
- Custom Permission Components
- Internationalization Support
### 😃 Backend
- Spring Boot 3 + Spring Security 6
- JDK 17
- MySQL + Redis + MinIO
- Swagger + Knife4j Documentation
### 😀 Development Environment
Docker startup varies by version:
```bash
# Start dependency services with one command
docker-compose up -d
# For newer Docker versions
docker compose up -d
```
## 📚 Best Practices
1. **Annotation Standards**:
```java
@Tag(name = "Module Name", description = "Module Description")
@Operation(summary = "Interface Summary", tags = {"Permission Code"})
// Or
@Operation(summary = "Interface Summary", tags = "Permission Code")
```
2. **Permission Code Design**:
- Module::Operation (e.g., `user::create`).
- Hierarchical design (e.g., `system:user:update`).
3. **Batch Operations**:
- Manage permissions via Excel/JSON.
- Regularly backup permission configurations.
## 🌟 Project Advantages
1. **True Dynamic Control** No hardcoded permission logic.
2. **Flexible Data Import** Supports multiple file formats.
3. **Fine-Grained Control** Multi-level permissions from pages to buttons.
4. **Modern Tech Stack** Based on the latest Spring ecosystem.
5. **Out-of-the-Box** Complete Docker deployment solution.
## 📌 Notes
1. Multi-language updates fully replace existing configurations.
2. Disable Swagger endpoints in production.
3. Use Excel for complex permission management.
## 📈 Future Plans
None at the moment.
## 📏 Frontend-Backend Interface Standards
### 🌐 Frontend Example Standards
| **Action** | **API Layer** | **Pinia Layer** |
| :----------- | :------------ | :-------------- |
| Query Single | `getUser` | `loadUser` |
| Query List | `getUserList` | `loadUserList` |
| Pagination | `getUserPage` | `fetchUserPage` |
| Add Data | `createUser` | `addUser` |
| Update Data | `updateUser` | `editUser` |
| Delete Data | `deleteUser` | `removeUser` |
### 🛟 Backend Interface Example Standards
Follows RESTful standards.
| **Action** | **RESTful** |
| :----------- | :-------------------------- |
| Query List | `GET /users` |
| Pagination | `GET /users/{page}/{limit}` |
| Query Single | `GET /users/{id}` |
| Add | `POST /users` |
| Update | `PUT /users/{id}` |
| Delete | `DELETE /users/{id}` |
![wx_alipay](./images/wx_alipay.png)

View File

@ -1,5 +1,8 @@
# BunnyAuth动态权限控制简介 # BunnyAuth动态权限控制简介
![GitHub Stars](https://img.shields.io/github/stars/BunnyMaster/bunny-admin-server?style=social)![GitHub forks](https://img.shields.io/github/forks/BunnyMaster/bunny-admin-server)![GitHub contributors](https://img.shields.io/github/contributors/BunnyMaster/bunny-admin-server)<img alt="GitHub License" src="https://img.shields.io/github/license/BunnyMaster/bunny-admin-server">![GitHub top language](https://img.shields.io/github/languages/top/BunnyMaster/bunny-admin-server)![GitHub Repo Size](https://img.shields.io/github/repo-size/BunnyMaster/bunny-admin-server)
> [!IMPORTANT] > [!IMPORTANT]
> >
> 开源权限模板[Pure-admin](https://pure-admin.github.io/vue-pure-admin/) > 开源权限模板[Pure-admin](https://pure-admin.github.io/vue-pure-admin/)

View File

@ -3,8 +3,8 @@ package cn.bunny.services.controller.configuration;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.configuration.dto.WebConfigurationDto; import cn.bunny.services.domain.configuration.dto.WebConfigurationDto;
import cn.bunny.services.domain.system.configuration.entity.WebConfiguration; import cn.bunny.services.domain.configuration.entity.WebConfiguration;
import cn.bunny.services.service.configuration.ConfigurationService; import cn.bunny.services.service.configuration.ConfigurationService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,21 +1,20 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.email.dto.EmailTemplateAddDto; import cn.bunny.services.domain.configuration.dto.EmailTemplateDto;
import cn.bunny.services.domain.system.email.dto.EmailTemplateDto; import cn.bunny.services.domain.configuration.entity.EmailTemplate;
import cn.bunny.services.domain.system.email.dto.EmailTemplateUpdateDto; import cn.bunny.services.domain.configuration.vo.EmailTemplateVo;
import cn.bunny.services.domain.system.email.entity.EmailTemplate;
import cn.bunny.services.domain.system.email.vo.EmailTemplateVo;
import cn.bunny.services.service.configuration.EmailTemplateService; import cn.bunny.services.service.configuration.EmailTemplateService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -55,15 +54,15 @@ public class EmailTemplateController {
@Operation(summary = "添加邮件模板", description = "添加邮件模板") @Operation(summary = "添加邮件模板", description = "添加邮件模板")
@PermissionTag(permission = "emailTemplate:add") @PermissionTag(permission = "emailTemplate:add")
@PostMapping() @PostMapping()
public Result<String> addEmailTemplate(@Valid @RequestBody EmailTemplateAddDto dto) { public Result<String> createEmailTemplate(@Validated(ValidationGroups.Add.class) @RequestBody EmailTemplateDto dto) {
emailTemplateService.addEmailTemplate(dto); emailTemplateService.createEmailTemplate(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新邮件模板", description = "更新邮件模板") @Operation(summary = "更新邮件模板", description = "更新邮件模板")
@PermissionTag(permission = "emailTemplate:update") @PermissionTag(permission = "emailTemplate:update")
@PutMapping() @PutMapping()
public Result<String> updateEmailTemplate(@Valid @RequestBody EmailTemplateUpdateDto dto) { public Result<String> updateEmailTemplate(@Validated(ValidationGroups.Update.class) @RequestBody EmailTemplateDto dto) {
emailTemplateService.updateEmailTemplate(dto); emailTemplateService.updateEmailTemplate(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -1,21 +1,20 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.email.dto.EmailUsersAddDto; import cn.bunny.services.domain.configuration.dto.EmailUsersDto;
import cn.bunny.services.domain.system.email.dto.EmailUsersDto; import cn.bunny.services.domain.configuration.entity.EmailUsers;
import cn.bunny.services.domain.system.email.dto.EmailUsersUpdateDto; import cn.bunny.services.domain.configuration.vo.EmailUsersVo;
import cn.bunny.services.domain.system.email.entity.EmailUsers;
import cn.bunny.services.domain.system.email.vo.EmailUsersVo;
import cn.bunny.services.service.configuration.EmailUsersService; import cn.bunny.services.service.configuration.EmailUsersService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -55,15 +54,15 @@ public class EmailUsersController {
@Operation(summary = "添加邮箱用户配置", description = "添加邮箱用户配置") @Operation(summary = "添加邮箱用户配置", description = "添加邮箱用户配置")
@PermissionTag(permission = "emailUsers:add") @PermissionTag(permission = "emailUsers:add")
@PostMapping() @PostMapping()
public Result<String> addEmailUsers(@Valid @RequestBody EmailUsersAddDto dto) { public Result<String> createEmailUsers(@Validated(ValidationGroups.Add.class) @RequestBody EmailUsersDto dto) {
emailUsersService.addEmailUsers(dto); emailUsersService.createEmailUsers(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新邮箱用户配置", description = "更新邮箱用户配置") @Operation(summary = "更新邮箱用户配置", description = "更新邮箱用户配置")
@PermissionTag(permission = "emailUsers:update") @PermissionTag(permission = "emailUsers:update")
@PutMapping() @PutMapping()
public Result<String> updateEmailUsers(@Valid @RequestBody EmailUsersUpdateDto dto) { public Result<String> updateEmailUsers(@Validated(ValidationGroups.Update.class) @RequestBody EmailUsersDto dto) {
emailUsersService.updateEmailUsers(dto); emailUsersService.updateEmailUsers(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -1,15 +1,14 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.i18n.dto.I18nAddDto; import cn.bunny.services.domain.configuration.dto.I18nDto;
import cn.bunny.services.domain.system.i18n.dto.I18nDto; import cn.bunny.services.domain.configuration.dto.I18nUpdateByFileDto;
import cn.bunny.services.domain.system.i18n.dto.I18nUpdateByFileDto; import cn.bunny.services.domain.configuration.entity.I18n;
import cn.bunny.services.domain.system.i18n.dto.I18nUpdateDto; import cn.bunny.services.domain.configuration.vo.I18nVo;
import cn.bunny.services.domain.system.i18n.entity.I18n;
import cn.bunny.services.domain.system.i18n.vo.I18nVo;
import cn.bunny.services.service.configuration.I18nService; import cn.bunny.services.service.configuration.I18nService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -18,6 +17,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -57,7 +57,7 @@ public class I18nController {
@Operation(summary = "更新多语言", description = "更新多语言") @Operation(summary = "更新多语言", description = "更新多语言")
@PermissionTag(permission = "i18n:update") @PermissionTag(permission = "i18n:update")
@PutMapping() @PutMapping()
public Result<String> updateI18n(@Valid @RequestBody I18nUpdateDto dto) { public Result<String> updateI18n(@Validated(ValidationGroups.Update.class) @RequestBody I18nDto dto) {
i18nService.updateI18n(dto); i18nService.updateI18n(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }
@ -65,9 +65,9 @@ public class I18nController {
@Operation(summary = "添加多语言", description = "添加多语言") @Operation(summary = "添加多语言", description = "添加多语言")
@PermissionTag(permission = "i18n:add") @PermissionTag(permission = "i18n:add")
@PostMapping() @PostMapping()
public Result<String> addI18n(@Valid @RequestBody I18nAddDto dto) { public Result<String> createI18n(@Validated(ValidationGroups.Add.class) @RequestBody I18nDto dto) {
i18nService.addI18n(dto); i18nService.createI18n(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "删除多语言", description = "删除多语言") @Operation(summary = "删除多语言", description = "删除多语言")

View File

@ -1,17 +1,16 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.i18n.dto.I18nTypeAddDto; import cn.bunny.services.domain.configuration.dto.I18nTypeDto;
import cn.bunny.services.domain.system.i18n.dto.I18nTypeDto; import cn.bunny.services.domain.configuration.vo.I18nTypeVo;
import cn.bunny.services.domain.system.i18n.dto.I18nTypeUpdateDto;
import cn.bunny.services.domain.system.i18n.vo.I18nTypeVo;
import cn.bunny.services.service.configuration.I18nTypeService; import cn.bunny.services.service.configuration.I18nTypeService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -36,15 +35,15 @@ public class I18nTypeController {
@Operation(summary = "添加多语言类型", description = "添加多语言类型") @Operation(summary = "添加多语言类型", description = "添加多语言类型")
@PermissionTag(permission = "i18n:query") @PermissionTag(permission = "i18n:query")
@PostMapping() @PostMapping()
public Result<String> addI18nType(@Valid @RequestBody I18nTypeAddDto dto) { public Result<String> createI18nType(@Validated(ValidationGroups.Add.class) @RequestBody I18nTypeDto dto) {
i18nTypeService.addI18nType(dto); i18nTypeService.createI18nType(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新多语言类型", description = "更新多语言类型") @Operation(summary = "更新多语言类型", description = "更新多语言类型")
@PermissionTag(permission = "i18n:update") @PermissionTag(permission = "i18n:update")
@PutMapping() @PutMapping()
public Result<String> updateI18nType(@Valid @RequestBody I18nTypeUpdateDto dto) { public Result<String> updateI18nType(@Validated(ValidationGroups.Update.class) @RequestBody I18nTypeDto dto) {
i18nTypeService.updateI18nType(dto); i18nTypeService.updateI18nType(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -1,21 +1,20 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.menuIcon.dto.MenuIconAddDto; import cn.bunny.services.domain.configuration.dto.MenuIconDto;
import cn.bunny.services.domain.system.menuIcon.dto.MenuIconDto; import cn.bunny.services.domain.configuration.entity.MenuIcon;
import cn.bunny.services.domain.system.menuIcon.dto.MenuIconUpdateDto; import cn.bunny.services.domain.configuration.vo.MenuIconVo;
import cn.bunny.services.domain.system.menuIcon.entity.MenuIcon;
import cn.bunny.services.domain.system.menuIcon.vo.MenuIconVo;
import cn.bunny.services.service.configuration.MenuIconService; import cn.bunny.services.service.configuration.MenuIconService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -54,15 +53,15 @@ public class MenuIconController {
@Operation(summary = "添加菜单图标", description = "添加系统菜单图标") @Operation(summary = "添加菜单图标", description = "添加系统菜单图标")
@PermissionTag(permission = "menuIcon:add") @PermissionTag(permission = "menuIcon:add")
@PostMapping() @PostMapping()
public Result<String> addMenuIcon(@Valid @RequestBody MenuIconAddDto dto) { public Result<String> createMenuIcon(@Validated(ValidationGroups.Add.class) @RequestBody MenuIconDto dto) {
menuIconService.addMenuIcon(dto); menuIconService.createMenuIcon(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新菜单图标", description = "更新系统菜单图标") @Operation(summary = "更新菜单图标", description = "更新系统菜单图标")
@PermissionTag(permission = "menuIcon:update") @PermissionTag(permission = "menuIcon:update")
@PutMapping() @PutMapping()
public Result<String> updateMenuIcon(@Valid @RequestBody MenuIconUpdateDto dto) { public Result<String> updateMenuIcon(@Validated(ValidationGroups.Update.class) @RequestBody MenuIconDto dto) {
menuIconService.updateMenuIcon(dto); menuIconService.updateMenuIcon(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -1,16 +1,17 @@
package cn.bunny.services.controller.file; package cn.bunny.services.controller.file;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.constant.FileStorageConstant; import cn.bunny.services.domain.common.constant.FileStorageConstant;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.files.dto.FileUploadDto; import cn.bunny.services.domain.files.dto.FileUploadDto;
import cn.bunny.services.domain.system.files.dto.FilesAddOrUpdateDto; import cn.bunny.services.domain.files.dto.FilesCreateOrUpdateDto;
import cn.bunny.services.domain.system.files.dto.FilesDto; import cn.bunny.services.domain.files.dto.FilesDto;
import cn.bunny.services.domain.system.files.entity.Files; import cn.bunny.services.domain.files.entity.Files;
import cn.bunny.services.domain.system.files.vo.FileInfoVo; import cn.bunny.services.domain.files.vo.FileInfoVo;
import cn.bunny.services.domain.system.files.vo.FilesVo; import cn.bunny.services.domain.files.vo.FilesVo;
import cn.bunny.services.service.file.FilesService; import cn.bunny.services.service.file.FilesService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -19,6 +20,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -58,7 +60,7 @@ public class FilesController {
@Operation(summary = "更新文件", description = "更新系统文件") @Operation(summary = "更新文件", description = "更新系统文件")
@PermissionTag(permission = "files:update") @PermissionTag(permission = "files:update")
@PutMapping() @PutMapping()
public Result<String> updateFiles(@Valid FilesAddOrUpdateDto dto) { public Result<String> updateFiles(@Validated(ValidationGroups.Update.class) FilesCreateOrUpdateDto dto) {
filesService.updateFiles(dto); filesService.updateFiles(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }
@ -66,9 +68,9 @@ public class FilesController {
@Operation(summary = "添加文件", description = "添加系统文件") @Operation(summary = "添加文件", description = "添加系统文件")
@PermissionTag(permission = "files:add") @PermissionTag(permission = "files:add")
@PostMapping() @PostMapping()
public Result<Object> addFiles(@Valid FilesAddOrUpdateDto dto) { public Result<Object> createFiles(@Validated(ValidationGroups.Add.class) FilesCreateOrUpdateDto dto) {
filesService.addFiles(dto); filesService.createFiles(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "删除文件", description = "删除系统文件") @Operation(summary = "删除文件", description = "删除系统文件")
@ -97,14 +99,14 @@ public class FilesController {
@Operation(summary = "上传文件", description = "上传文件") @Operation(summary = "上传文件", description = "上传文件")
@PostMapping("private/file") @PostMapping("private/file")
public Result<FileInfoVo> upload(FileUploadDto dto) { public Result<FileInfoVo> upload(@Valid FileUploadDto dto) {
FileInfoVo vo = filesService.upload(dto); FileInfoVo vo = filesService.upload(dto);
return Result.success(vo, ResultCodeEnum.SUCCESS_UPLOAD); return Result.success(vo, ResultCodeEnum.SUCCESS_UPLOAD);
} }
@Operation(summary = "上传图片文件", description = "上传图片文件") @Operation(summary = "上传图片文件", description = "上传图片文件")
@PostMapping("private/image") @PostMapping("private/image")
public Result<FileInfoVo> uploadImage(FileUploadDto dto) { public Result<FileInfoVo> uploadImage(@Valid FileUploadDto dto) {
FileInfoVo vo = filesService.uploadFileByThumbnail(dto); FileInfoVo vo = filesService.uploadFileByThumbnail(dto);
return Result.success(vo, ResultCodeEnum.SUCCESS_UPLOAD); return Result.success(vo, ResultCodeEnum.SUCCESS_UPLOAD);
} }

View File

@ -4,9 +4,9 @@ import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.files.dto.FilesParDetailDto; import cn.bunny.services.domain.files.dto.FilesParDetailDto;
import cn.bunny.services.domain.system.files.entity.FilesParDetail; import cn.bunny.services.domain.files.entity.FilesParDetail;
import cn.bunny.services.domain.system.files.vo.FilesParDetailVo; import cn.bunny.services.domain.files.vo.FilesParDetailVo;
import cn.bunny.services.service.file.FilesParDetailService; import cn.bunny.services.service.file.FilesParDetailService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -52,9 +52,9 @@ public class FilesParDetailController {
@Operation(summary = "添加文件分片信息表,仅在手动分片上传时使用", description = "添加文件分片信息表,仅在手动分片上传时使用") @Operation(summary = "添加文件分片信息表,仅在手动分片上传时使用", description = "添加文件分片信息表,仅在手动分片上传时使用")
@PermissionTag(permission = "filesParDetail:add") @PermissionTag(permission = "filesParDetail:add")
@PostMapping() @PostMapping()
public Result<String> addFilesParDetail(@Valid @RequestBody FilesParDetailDto dto) { public Result<String> createFilesParDetail(@Valid @RequestBody FilesParDetailDto dto) {
filesPardetailService.addFilesParDetail(dto); filesPardetailService.createFilesParDetail(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新文件分片信息表,仅在手动分片上传时使用", description = "更新文件分片信息表,仅在手动分片上传时使用") @Operation(summary = "更新文件分片信息表,仅在手动分片上传时使用", description = "更新文件分片信息表,仅在手动分片上传时使用")

View File

@ -4,9 +4,9 @@ import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.log.dto.ScheduleExecuteLogDto; import cn.bunny.services.domain.log.dto.ScheduleExecuteLogDto;
import cn.bunny.services.domain.system.log.entity.ScheduleExecuteLog; import cn.bunny.services.domain.log.entity.ScheduleExecuteLog;
import cn.bunny.services.domain.system.log.vo.ScheduleExecuteLogVo; import cn.bunny.services.domain.log.vo.ScheduleExecuteLogVo;
import cn.bunny.services.service.log.ScheduleExecuteLogService; import cn.bunny.services.service.log.ScheduleExecuteLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -4,10 +4,10 @@ import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.log.dto.UserLoginLogDto; import cn.bunny.services.domain.log.dto.UserLoginLogDto;
import cn.bunny.services.domain.system.log.entity.UserLoginLog; import cn.bunny.services.domain.log.entity.UserLoginLog;
import cn.bunny.services.domain.system.log.vo.UserLoginLogLocalVo; import cn.bunny.services.domain.log.vo.UserLoginLogLocalVo;
import cn.bunny.services.domain.system.log.vo.UserLoginLogVo; import cn.bunny.services.domain.log.vo.UserLoginLogVo;
import cn.bunny.services.service.log.UserLoginLogService; import cn.bunny.services.service.log.UserLoginLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,23 +1,22 @@
package cn.bunny.services.controller.message; package cn.bunny.services.controller.message;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.message.dto.MessageAddDto; import cn.bunny.services.domain.message.dto.MessageDto;
import cn.bunny.services.domain.system.message.dto.MessageDto; import cn.bunny.services.domain.message.entity.Message;
import cn.bunny.services.domain.system.message.dto.MessageUpdateDto; import cn.bunny.services.domain.message.vo.MessageDetailVo;
import cn.bunny.services.domain.system.message.entity.Message; import cn.bunny.services.domain.message.vo.MessageReceivedWithUserVo;
import cn.bunny.services.domain.system.message.vo.MessageDetailVo; import cn.bunny.services.domain.message.vo.MessageVo;
import cn.bunny.services.domain.system.message.vo.MessageReceivedWithUserVo;
import cn.bunny.services.domain.system.message.vo.MessageVo;
import cn.bunny.services.service.message.MessageService; import cn.bunny.services.service.message.MessageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -55,14 +54,14 @@ public class MessageController {
@Operation(summary = "添加系统消息", description = "添加系统消息") @Operation(summary = "添加系统消息", description = "添加系统消息")
@PostMapping() @PostMapping()
public Result<String> addMessage(@Valid @RequestBody MessageAddDto dto) { public Result<String> createMessage(@Validated(ValidationGroups.Add.class) @RequestBody MessageDto dto) {
messageService.addMessage(dto); messageService.createMessage(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更系统消息", description = "更新系统消息") @Operation(summary = "更系统消息", description = "更新系统消息")
@PutMapping() @PutMapping()
public Result<String> updateMessage(@Valid @RequestBody MessageUpdateDto dto) { public Result<String> updateMessage(@Validated(ValidationGroups.Update.class) @RequestBody MessageDto dto) {
messageService.updateMessage(dto); messageService.updateMessage(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -4,12 +4,12 @@ import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.message.dto.MessageReceivedDto; import cn.bunny.services.domain.message.dto.MessageReceivedDto;
import cn.bunny.services.domain.system.message.dto.MessageReceivedUpdateDto; import cn.bunny.services.domain.message.dto.MessageReceivedUpdateDto;
import cn.bunny.services.domain.system.message.dto.MessageUserDto; import cn.bunny.services.domain.message.dto.MessageUserDto;
import cn.bunny.services.domain.system.message.entity.Message; import cn.bunny.services.domain.message.entity.Message;
import cn.bunny.services.domain.system.message.vo.MessageReceivedWithMessageVo; import cn.bunny.services.domain.message.vo.MessageReceivedWithMessageVo;
import cn.bunny.services.domain.system.message.vo.MessageUserVo; import cn.bunny.services.domain.message.vo.MessageUserVo;
import cn.bunny.services.service.message.MessageReceivedService; import cn.bunny.services.service.message.MessageReceivedService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -83,7 +83,7 @@ public class MessageReceivedController {
@Operation(summary = "用户将消息标为已读", description = "用户将消息标为已读") @Operation(summary = "用户将消息标为已读", description = "用户将消息标为已读")
@PutMapping("private/user/messages/read-status") @PutMapping("private/user/messages/read-status")
public Result<String> markAsReadByUser(@Valid @RequestBody List<Long> ids) { public Result<String> markAsReadByUser(@RequestBody List<Long> ids) {
messageReceivedService.markAsReadByUser(ids); messageReceivedService.markAsReadByUser(ids);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -1,21 +1,20 @@
package cn.bunny.services.controller.message; package cn.bunny.services.controller.message;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.message.dto.MessageTypeAddDto; import cn.bunny.services.domain.message.dto.MessageTypeDto;
import cn.bunny.services.domain.system.message.dto.MessageTypeDto; import cn.bunny.services.domain.message.entity.MessageType;
import cn.bunny.services.domain.system.message.dto.MessageTypeUpdateDto; import cn.bunny.services.domain.message.vo.MessageTypeVo;
import cn.bunny.services.domain.system.message.entity.MessageType;
import cn.bunny.services.domain.system.message.vo.MessageTypeVo;
import cn.bunny.services.service.message.MessageTypeService; import cn.bunny.services.service.message.MessageTypeService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -54,15 +53,15 @@ public class MessageTypeController {
@Operation(summary = "添加消息类型", description = "添加系统消息类型") @Operation(summary = "添加消息类型", description = "添加系统消息类型")
@PermissionTag(permission = "messageType:add") @PermissionTag(permission = "messageType:add")
@PostMapping() @PostMapping()
public Result<String> addMessageType(@Valid @RequestBody MessageTypeAddDto dto) { public Result<String> createMessageType(@Validated(ValidationGroups.Add.class) @RequestBody MessageTypeDto dto) {
messageTypeService.addMessageType(dto); messageTypeService.createMessageType(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新消息类型", description = "更新系统消息类型") @Operation(summary = "更新消息类型", description = "更新系统消息类型")
@PermissionTag(permission = "messageType:update") @PermissionTag(permission = "messageType:update")
@PutMapping() @PutMapping()
public Result<String> updateMessageType(@Valid @RequestBody MessageTypeUpdateDto dto) { public Result<String> updateMessageType(@Validated(ValidationGroups.Update.class) @RequestBody MessageTypeDto dto) {
messageTypeService.updateMessageType(dto); messageTypeService.updateMessageType(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -2,21 +2,20 @@ package cn.bunny.services.controller.schedule;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.aop.scanner.QuartzSchedulersScanner; import cn.bunny.services.aop.scanner.QuartzSchedulersScanner;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.quartz.dto.SchedulersAddDto; import cn.bunny.services.domain.schedule.dto.SchedulersDto;
import cn.bunny.services.domain.system.quartz.dto.SchedulersDto; import cn.bunny.services.domain.schedule.entity.Schedulers;
import cn.bunny.services.domain.system.quartz.dto.SchedulersUpdateDto; import cn.bunny.services.domain.schedule.vo.SchedulersVo;
import cn.bunny.services.domain.system.quartz.entity.Schedulers;
import cn.bunny.services.domain.system.quartz.vo.SchedulersVo;
import cn.bunny.services.service.schedule.SchedulersService; import cn.bunny.services.service.schedule.SchedulersService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -56,15 +55,15 @@ public class SchedulersController {
@Operation(summary = "添加任务调度", description = "添加任务") @Operation(summary = "添加任务调度", description = "添加任务")
@PermissionTag(permission = "schedulers:add") @PermissionTag(permission = "schedulers:add")
@PostMapping() @PostMapping()
public Result<Object> addSchedulers(@Valid @RequestBody SchedulersAddDto dto) { public Result<Object> createSchedulers(@Validated(ValidationGroups.Add.class) @RequestBody SchedulersDto dto) {
schedulersService.addSchedulers(dto); schedulersService.createSchedulers(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新任务调度", description = "更新任务") @Operation(summary = "更新任务调度", description = "更新任务")
@PermissionTag(permission = "schedulers:update") @PermissionTag(permission = "schedulers:update")
@PutMapping() @PutMapping()
public Result<String> updateSchedulers(@Valid @RequestBody SchedulersUpdateDto dto) { public Result<String> updateSchedulers(@Validated(ValidationGroups.Update.class) @RequestBody SchedulersDto dto) {
schedulersService.updateSchedulers(dto); schedulersService.updateSchedulers(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }
@ -72,7 +71,7 @@ public class SchedulersController {
@Operation(summary = "暂停任务调度", description = "暂停任务") @Operation(summary = "暂停任务调度", description = "暂停任务")
@PermissionTag(permission = "schedulers:update") @PermissionTag(permission = "schedulers:update")
@PutMapping("pause") @PutMapping("pause")
public Result<String> pause(@RequestBody SchedulersUpdateDto dto) { public Result<String> pause(@RequestBody SchedulersDto dto) {
schedulersService.pauseScheduler(dto); schedulersService.pauseScheduler(dto);
return Result.success(); return Result.success();
} }
@ -80,7 +79,7 @@ public class SchedulersController {
@Operation(summary = "恢复任务调度", description = "恢复任务") @Operation(summary = "恢复任务调度", description = "恢复任务")
@PermissionTag(permission = "schedulers:update") @PermissionTag(permission = "schedulers:update")
@PutMapping("resume") @PutMapping("resume")
public Result<String> resume(@RequestBody SchedulersUpdateDto dto) { public Result<String> resume(@RequestBody SchedulersDto dto) {
schedulersService.resumeScheduler(dto); schedulersService.resumeScheduler(dto);
return Result.success(); return Result.success();
} }
@ -88,7 +87,7 @@ public class SchedulersController {
@Operation(summary = "删除任务调度", description = "删除任务") @Operation(summary = "删除任务调度", description = "删除任务")
@PermissionTag(permission = "schedulers:delete") @PermissionTag(permission = "schedulers:delete")
@DeleteMapping() @DeleteMapping()
public Result<String> deleteSchedulers(@RequestBody SchedulersUpdateDto dto) { public Result<String> deleteSchedulers(@RequestBody SchedulersDto dto) {
schedulersService.deleteSchedulers(dto); schedulersService.deleteSchedulers(dto);
return Result.success(ResultCodeEnum.DELETE_SUCCESS); return Result.success(ResultCodeEnum.DELETE_SUCCESS);
} }

View File

@ -1,21 +1,20 @@
package cn.bunny.services.controller.schedule; package cn.bunny.services.controller.schedule;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupAddDto; import cn.bunny.services.domain.schedule.dto.SchedulersGroupDto;
import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupDto; import cn.bunny.services.domain.schedule.entity.SchedulersGroup;
import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupUpdateDto; import cn.bunny.services.domain.schedule.vo.SchedulersGroupVo;
import cn.bunny.services.domain.system.quartz.entity.SchedulersGroup;
import cn.bunny.services.domain.system.quartz.vo.SchedulersGroupVo;
import cn.bunny.services.service.schedule.SchedulersGroupService; import cn.bunny.services.service.schedule.SchedulersGroupService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -54,15 +53,15 @@ public class SchedulersGroupController {
@Operation(summary = "添加任务调度分组", description = "添加任务调度分组") @Operation(summary = "添加任务调度分组", description = "添加任务调度分组")
@PermissionTag(permission = "schedulersGroup:add") @PermissionTag(permission = "schedulersGroup:add")
@PostMapping() @PostMapping()
public Result<String> addSchedulersGroup(@Valid @RequestBody SchedulersGroupAddDto dto) { public Result<String> createSchedulersGroup(@Validated(ValidationGroups.Add.class) @RequestBody SchedulersGroupDto dto) {
schedulersGroupService.addSchedulersGroup(dto); schedulersGroupService.createSchedulersGroup(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新任务调度分组", description = "更新任务调度分组") @Operation(summary = "更新任务调度分组", description = "更新任务调度分组")
@PermissionTag(permission = "schedulersGroup:update") @PermissionTag(permission = "schedulersGroup:update")
@PutMapping() @PutMapping()
public Result<String> updateSchedulersGroup(@Valid @RequestBody SchedulersGroupUpdateDto dto) { public Result<String> updateSchedulersGroup(@Validated(ValidationGroups.Update.class) @RequestBody SchedulersGroupDto dto) {
schedulersGroupService.updateSchedulersGroup(dto); schedulersGroupService.updateSchedulersGroup(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -1,21 +1,20 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.dept.DeptAddDto; import cn.bunny.services.domain.system.dto.DeptDto;
import cn.bunny.services.domain.system.system.dto.dept.DeptDto; import cn.bunny.services.domain.system.entity.Dept;
import cn.bunny.services.domain.system.system.dto.dept.DeptUpdateDto; import cn.bunny.services.domain.system.vo.DeptVo;
import cn.bunny.services.domain.system.system.entity.Dept;
import cn.bunny.services.domain.system.system.vo.DeptVo;
import cn.bunny.services.service.system.DeptService; import cn.bunny.services.service.system.DeptService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -54,15 +53,15 @@ public class DeptController {
@Operation(summary = "添加部门", description = "添加部门") @Operation(summary = "添加部门", description = "添加部门")
@PermissionTag(permission = "dept:add") @PermissionTag(permission = "dept:add")
@PostMapping() @PostMapping()
public Result<String> addDept(@Valid @RequestBody DeptAddDto dto) { public Result<String> createDept(@Validated(ValidationGroups.Add.class) @RequestBody DeptDto dto) {
deptService.addDept(dto); deptService.createDept(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新部门", description = "更新部门") @Operation(summary = "更新部门", description = "更新部门")
@PermissionTag(permission = "dept:update") @PermissionTag(permission = "dept:update")
@PutMapping() @PutMapping()
public Result<String> updateDept(@Valid @RequestBody DeptUpdateDto dto) { public Result<String> updateDept(@Validated(ValidationGroups.Update.class) @RequestBody DeptDto dto) {
deptService.updateDept(dto); deptService.updateDept(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -2,16 +2,15 @@ package cn.bunny.services.controller.system;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner; import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.dto.scanner.ScannerControllerInfoVo; import cn.bunny.services.domain.common.model.dto.scanner.ScannerControllerInfoVo;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.power.PermissionAddDto; import cn.bunny.services.domain.system.dto.PermissionDto;
import cn.bunny.services.domain.system.system.dto.power.PermissionDto; import cn.bunny.services.domain.system.dto.PermissionUpdateBatchByParentIdDto;
import cn.bunny.services.domain.system.system.dto.power.PermissionUpdateBatchByParentIdDto; import cn.bunny.services.domain.system.entity.Permission;
import cn.bunny.services.domain.system.system.dto.power.PermissionUpdateDto; import cn.bunny.services.domain.system.vo.PermissionVo;
import cn.bunny.services.domain.system.system.entity.Permission;
import cn.bunny.services.domain.system.system.vo.PermissionVo;
import cn.bunny.services.service.system.PermissionService; import cn.bunny.services.service.system.PermissionService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -20,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -59,15 +59,15 @@ public class PermissionController {
@Operation(summary = "添加权限", description = "添加权限") @Operation(summary = "添加权限", description = "添加权限")
@PermissionTag(permission = "permission::add") @PermissionTag(permission = "permission::add")
@PostMapping() @PostMapping()
public Result<String> addPermission(@Valid @RequestBody PermissionAddDto dto) { public Result<String> createPermission(@Validated(ValidationGroups.Add.class) @RequestBody PermissionDto dto) {
permissionService.addPermission(dto); permissionService.createPermission(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新权限", description = "更新权限") @Operation(summary = "更新权限", description = "更新权限")
@PermissionTag(permission = "permission::update") @PermissionTag(permission = "permission::update")
@PutMapping() @PutMapping()
public Result<String> updatePermission(@Valid @RequestBody PermissionUpdateDto dto) { public Result<String> updatePermission(@Validated(ValidationGroups.Update.class) @RequestBody PermissionDto dto) {
permissionService.updatePermission(dto); permissionService.updatePermission(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }
@ -120,7 +120,7 @@ public class PermissionController {
@Operation(summary = "批量修改权", description = "批量修改权") @Operation(summary = "批量修改权", description = "批量修改权")
@PermissionTag(permission = "permission::update") @PermissionTag(permission = "permission::update")
@PatchMapping("update/permissions/batch") @PatchMapping("update/permissions/batch")
public Result<String> updatePermissionBatch(@RequestBody List<PermissionUpdateDto> list) { public Result<String> updatePermissionBatch(@RequestBody List<PermissionDto> list) {
permissionService.updatePermissionBatch(list); permissionService.updatePermissionBatch(list);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -1,22 +1,21 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.role.RoleAddDto; import cn.bunny.services.domain.system.dto.RoleDto;
import cn.bunny.services.domain.system.system.dto.role.RoleDto; import cn.bunny.services.domain.system.entity.Role;
import cn.bunny.services.domain.system.system.dto.role.RoleUpdateDto; import cn.bunny.services.domain.system.vo.RoleVo;
import cn.bunny.services.domain.system.system.entity.Role;
import cn.bunny.services.domain.system.system.vo.RoleVo;
import cn.bunny.services.service.system.RoleService; import cn.bunny.services.service.system.RoleService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -56,15 +55,15 @@ public class RoleController {
@Operation(summary = "添加角色", description = "添加角色") @Operation(summary = "添加角色", description = "添加角色")
@PermissionTag(permission = "role:add") @PermissionTag(permission = "role:add")
@PostMapping() @PostMapping()
public Result<Object> addRole(@Valid @RequestBody RoleAddDto dto) { public Result<Object> addRole(@Validated(ValidationGroups.Add.class) @RequestBody RoleDto dto) {
roleService.addRole(dto); roleService.addRole(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新角色", description = "更新角色") @Operation(summary = "更新角色", description = "更新角色")
@PermissionTag(permission = "role:update") @PermissionTag(permission = "role:update")
@PutMapping() @PutMapping()
public Result<Object> updateRole(@Valid @RequestBody RoleUpdateDto dto) { public Result<Object> updateRole(@Validated(ValidationGroups.Update.class) @RequestBody RoleDto dto) {
roleService.updateRole(dto); roleService.updateRole(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -2,7 +2,7 @@ package cn.bunny.services.controller.system;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.AssignPowersToRoleDto; import cn.bunny.services.domain.system.dto.AssignPowersToRoleDto;
import cn.bunny.services.service.system.RolePermissionService; import cn.bunny.services.service.system.RolePermissionService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -39,8 +39,8 @@ public class RolePermissionController {
@Operation(summary = "为角色分配权限", description = "为角色分配权限") @Operation(summary = "为角色分配权限", description = "为角色分配权限")
@PermissionTag(permission = "rolePermission:update") @PermissionTag(permission = "rolePermission:update")
@PostMapping() @PostMapping()
public Result<String> addRolPermission(@Valid @RequestBody AssignPowersToRoleDto dto) { public Result<String> saveRolPermission(@Valid @RequestBody AssignPowersToRoleDto dto) {
rolePermissionService.addRolPermission(dto); rolePermissionService.saveRolPermission(dto);
return Result.success(); return Result.success();
} }
} }

View File

@ -1,17 +1,17 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.router.RouterAddDto; import cn.bunny.services.domain.system.dto.RouterDto;
import cn.bunny.services.domain.system.system.dto.router.RouterUpdateDto; import cn.bunny.services.domain.system.vo.router.RouterManageVo;
import cn.bunny.services.domain.system.system.vo.router.RouterManageVo; import cn.bunny.services.domain.system.vo.router.WebUserRouterVo;
import cn.bunny.services.domain.system.system.vo.router.WebUserRouterVo;
import cn.bunny.services.service.system.RouterService; import cn.bunny.services.service.system.RouterService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -52,15 +52,15 @@ public class RouterController {
@Operation(summary = "添加路由菜单", description = "添加路由菜单") @Operation(summary = "添加路由菜单", description = "添加路由菜单")
@PermissionTag(permission = "router:add") @PermissionTag(permission = "router:add")
@PostMapping() @PostMapping()
public Result<String> addRouter(@Valid @RequestBody RouterAddDto dto) { public Result<String> createRouter(@Validated({ValidationGroups.Add.class}) @RequestBody RouterDto dto) {
routerService.addRouter(dto); routerService.createRouter(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新路由菜单", description = "更新路由菜单") @Operation(summary = "更新路由菜单", description = "更新路由菜单")
@PermissionTag(permission = "router:update") @PermissionTag(permission = "router:update")
@PutMapping() @PutMapping()
public Result<String> updateRouter(@Valid @RequestBody RouterUpdateDto dto) { public Result<String> updateRouter(@Validated({ValidationGroups.Update.class}) @RequestBody RouterDto dto) {
routerService.updateRouter(dto); routerService.updateRouter(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS); return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
} }

View File

@ -4,12 +4,12 @@ import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.PageResult; import cn.bunny.services.domain.common.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.user.AdminUserAddDto; import cn.bunny.services.domain.system.dto.user.AdminUserAddDto;
import cn.bunny.services.domain.system.system.dto.user.AdminUserDto; import cn.bunny.services.domain.system.dto.user.AdminUserDto;
import cn.bunny.services.domain.system.system.dto.user.AdminUserUpdateDto; import cn.bunny.services.domain.system.dto.user.AdminUserUpdateDto;
import cn.bunny.services.domain.system.system.entity.AdminUser; import cn.bunny.services.domain.system.entity.AdminUser;
import cn.bunny.services.domain.system.system.vo.user.AdminUserVo; import cn.bunny.services.domain.system.vo.user.AdminUserVo;
import cn.bunny.services.domain.system.system.vo.user.UserVo; import cn.bunny.services.domain.system.vo.user.UserVo;
import cn.bunny.services.service.system.UserService; import cn.bunny.services.service.system.UserService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -49,9 +49,9 @@ public class UserController {
@Operation(summary = "添加用户", description = "添加用户信息") @Operation(summary = "添加用户", description = "添加用户信息")
@PermissionTag(permission = "user:add") @PermissionTag(permission = "user:add")
@PostMapping() @PostMapping()
public Result<Object> addUserByAdmin(@Valid @RequestBody AdminUserAddDto dto) { public Result<Object> createUserByAdmin(@Valid @RequestBody AdminUserAddDto dto) {
userService.addUserByAdmin(dto); userService.createUserByAdmin(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS); return Result.success(ResultCodeEnum.CREATE_SUCCESS);
} }
@Operation(summary = "更新用户", description = "更新用户信息需要更新Redis中的内容") @Operation(summary = "更新用户", description = "更新用户信息需要更新Redis中的内容")

View File

@ -4,10 +4,10 @@ import cn.bunny.services.context.BaseContext;
import cn.bunny.services.domain.common.enums.ResultCodeEnum; import cn.bunny.services.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.LoginVo; import cn.bunny.services.domain.common.model.vo.LoginVo;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.user.AdminUserUpdateByLocalUserDto; import cn.bunny.services.domain.system.dto.user.AdminUserUpdateByLocalUserDto;
import cn.bunny.services.domain.system.system.dto.user.LoginDto; import cn.bunny.services.domain.system.dto.user.LoginDto;
import cn.bunny.services.domain.system.system.dto.user.RefreshTokenDto; import cn.bunny.services.domain.system.dto.user.RefreshTokenDto;
import cn.bunny.services.domain.system.system.vo.user.RefreshTokenVo; import cn.bunny.services.domain.system.vo.user.RefreshTokenVo;
import cn.bunny.services.exception.AuthCustomerException; import cn.bunny.services.exception.AuthCustomerException;
import cn.bunny.services.service.system.UserLoginService; import cn.bunny.services.service.system.UserLoginService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -2,7 +2,7 @@ package cn.bunny.services.controller.system;
import cn.bunny.services.aop.annotation.PermissionTag; import cn.bunny.services.aop.annotation.PermissionTag;
import cn.bunny.services.domain.common.model.vo.result.Result; import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.user.AssignRolesToUsersDto; import cn.bunny.services.domain.system.dto.user.AssignRolesToUsersDto;
import cn.bunny.services.service.system.UserRoleService; import cn.bunny.services.service.system.UserRoleService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -3,7 +3,7 @@ package impl;
import cn.bunny.services.AuthServiceApplication; import cn.bunny.services.AuthServiceApplication;
import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner; import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner;
import cn.bunny.services.domain.common.model.dto.scanner.ScannerControllerInfoVo; import cn.bunny.services.domain.common.model.dto.scanner.ScannerControllerInfoVo;
import cn.bunny.services.domain.system.system.entity.Permission; import cn.bunny.services.domain.system.entity.Permission;
import cn.bunny.services.service.system.PermissionService; import cn.bunny.services.service.system.PermissionService;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -0,0 +1,12 @@
package cn.bunny.services.domain.common;
public interface ValidationGroups {
interface QUERY {
}
interface Add {
}
interface Update {
}
}

View File

@ -9,7 +9,7 @@ import lombok.Getter;
public enum ResultCodeEnum { public enum ResultCodeEnum {
// 成功操作 200 // 成功操作 200
SUCCESS(200, "操作成功"), SUCCESS(200, "操作成功"),
ADD_SUCCESS(200, "添加成功"), CREATE_SUCCESS(200, "添加成功"),
UPDATE_SUCCESS(200, "修改成功"), UPDATE_SUCCESS(200, "修改成功"),
DELETE_SUCCESS(200, "删除成功"), DELETE_SUCCESS(200, "删除成功"),
SORT_SUCCESS(200, "排序成功"), SORT_SUCCESS(200, "排序成功"),
@ -54,7 +54,7 @@ public enum ResultCodeEnum {
AUTHENTICATION_EXPIRED(208, "身份验证过期"), AUTHENTICATION_EXPIRED(208, "身份验证过期"),
SESSION_EXPIRATION(208, "会话过期"), SESSION_EXPIRATION(208, "会话过期"),
FAIL_NO_ACCESS_DENIED_USER_LOCKED(208, "该账户已封禁"), FAIL_NO_ACCESS_DENIED_USER_LOCKED(208, "该账户已封禁"),
// 209 // 209
THE_SAME_USER_HAS_LOGGED_IN(209, "相同用户已登录"), THE_SAME_USER_HAS_LOGGED_IN(209, "相同用户已登录"),

View File

@ -0,0 +1,47 @@
package cn.bunny.services.domain.configuration.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "EmailTemplateDto", title = "邮箱模板请求内容", description = "邮箱模板请求内容")
public class EmailTemplateDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "templateName", title = "模板名称")
@NotBlank(message = "模板名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String templateName;
@Schema(name = "emailUser", title = "配置邮件用户")
@NotNull(message = "配置邮件用户不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private Long emailUser;
@Schema(name = "subject", title = "主题")
@NotBlank(message = "主题不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String subject;
@Schema(name = "body", title = "邮件内容")
@NotBlank(message = "邮件内容不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String body;
@Schema(name = "type", title = "邮件类型")
private String type;
@Schema(name = "isDefault", title = "是否默认")
@NotNull(message = "是否默认不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private Boolean isDefault;
}

View File

@ -1,5 +1,7 @@
package cn.bunny.services.domain.system.email.dto; package cn.bunny.services.domain.configuration.dto;
import cn.bunny.services.domain.common.ValidationGroups.Add;
import cn.bunny.services.domain.common.ValidationGroups.Update;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -12,27 +14,27 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
@Schema(name = "EmailUsersUpdateDto对象", title = "更新邮箱用户发送配置", description = "更新邮箱用户发送配置") @Schema(name = "EmailUsersDto对象", title = "邮箱用户发送配置分页查询", description = "邮箱用户发送配置分页查询")
public class EmailUsersUpdateDto { public class EmailUsersDto {
@Schema(name = "id", title = "主键") @Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空") @NotNull(message = "id不能为空", groups = {Update.class})
private Long id; private Long id;
@Schema(name = "email", title = "邮箱") @Schema(name = "email", title = "邮箱")
@NotBlank(message = "邮箱不能为空") @NotBlank(message = "邮箱不能为空", groups = {Add.class, Update.class})
private String email; private String email;
@Schema(name = "password", title = "密码") @Schema(name = "password", title = "密码")
@NotBlank(message = "密码不能为空") @NotBlank(message = "密码不能为空", groups = {Add.class, Update.class})
private String password; private String password;
@Schema(name = "host", title = "Host地址") @Schema(name = "host", title = "Host地址")
@NotBlank(message = "Host地址不能为空") @NotBlank(message = "Host地址不能为空", groups = {Add.class, Update.class})
private String host; private String host;
@Schema(name = "port", title = "端口号") @Schema(name = "port", title = "端口号")
@NotNull(message = "端口号不能为空") @NotNull(message = "端口号不能为空", groups = {Add.class, Update.class})
private Integer port; private Integer port;
@Schema(name = "smtpAgreement", title = "邮箱协议") @Schema(name = "smtpAgreement", title = "邮箱协议")
@ -44,6 +46,4 @@ public class EmailUsersUpdateDto {
@Schema(name = "openSSL", description = "启用SSL") @Schema(name = "openSSL", description = "启用SSL")
private Boolean openSSL; private Boolean openSSL;
} }

View File

@ -0,0 +1,36 @@
package cn.bunny.services.domain.configuration.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "I18nDto对象", title = "多语言分页查询", description = "多语言分页查询")
public class I18nDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "keyName", title = "多语言key")
@NotBlank(message = "多语言key不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String keyName;
@Schema(name = "translation", title = "多语言翻译名称")
@NotBlank(message = "多语言翻译名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String translation;
@Schema(name = "typeName", title = "多语言类型名称")
@NotBlank(message = "多语言类型名称不能为空", groups = {ValidationGroups.Add.class})
private String typeName;
}

View File

@ -1,5 +1,6 @@
package cn.bunny.services.domain.system.i18n.dto; package cn.bunny.services.domain.configuration.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -10,19 +11,19 @@ import lombok.NoArgsConstructor;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Schema(name = "I18nTypeUpdateDto对象", title = "多语言类型更新", description = "多语言类型更新内容") @Schema(name = "I18nTypeDto对象", title = "多语言类型", description = "多语言类型")
public class I18nTypeUpdateDto { public class I18nTypeDto {
@Schema(name = "id", title = "主键") @Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空") @NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id; private Long id;
@Schema(name = "typeName", title = "多语言类型(比如zh,en)") @Schema(name = "typeName", title = "多语言类型(比如zh,en)")
@NotBlank(message = "多语言类型不能为空") @NotBlank(message = "多语言类型不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String typeName; private String typeName;
@Schema(name = "summary", title = "名称解释(比如中文,英文)") @Schema(name = "summary", title = "名称解释(比如中文,英文)")
@NotBlank(message = "名称解释不能为空") @NotBlank(message = "名称解释不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String summary; private String summary;
@Schema(name = "isDefault", title = "是否为默认") @Schema(name = "isDefault", title = "是否为默认")

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.i18n.dto; package cn.bunny.services.domain.configuration.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -0,0 +1,32 @@
package cn.bunny.services.domain.configuration.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "MenuIconDto对象", title = "系统菜单图标分页查询", description = "系统菜单图标管理")
public class MenuIconDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "iconCode", title = "icon类名")
@NotBlank(message = "iconCode不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String iconCode;
@Schema(name = "iconName", title = "icon 名称")
@NotBlank(message = "icon 名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String iconName;
}

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.configuration.dto; package cn.bunny.services.domain.configuration.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Min;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.email.entity; package cn.bunny.services.domain.configuration.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.email.entity; package cn.bunny.services.domain.configuration.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.i18n.entity; package cn.bunny.services.domain.configuration.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.i18n.entity; package cn.bunny.services.domain.configuration.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.menuIcon.entity; package cn.bunny.services.domain.configuration.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.configuration.entity; package cn.bunny.services.domain.configuration.entity;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.email.vo; package cn.bunny.services.domain.configuration.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.email.vo; package cn.bunny.services.domain.configuration.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.i18n.vo; package cn.bunny.services.domain.configuration.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.i18n.vo; package cn.bunny.services.domain.configuration.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.menuIcon.vo; package cn.bunny.services.domain.configuration.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.dto; package cn.bunny.services.domain.files.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -1,8 +1,11 @@
package cn.bunny.services.domain.system.files.dto; package cn.bunny.services.domain.files.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -13,21 +16,23 @@ import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Schema(name = "FilesAddDto对象", title = "添加文件", description = "添加文件") @Schema(name = "FilesSaveOrUpdateDto对象", title = "添加/更新文件", description = "添加/更新文件")
public class FilesAddOrUpdateDto { public class FilesCreateOrUpdateDto {
@Schema(name = "id", title = "主键") @Schema(name = "id", title = "主键")
@NotNull(message = "更新id不为空", groups = {ValidationGroups.Update.class})
private Long id; private Long id;
@Schema(name = "filepath", title = "文件在服务器上的存储路径") @Schema(name = "filepath", title = "文件在服务器上的存储路径")
@NotBlank(message = "存储路径不能为空") @NotBlank(message = "存储路径不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String filepath; private String filepath;
@Schema(name = "downloadCount", title = "下载数量") @Schema(name = "downloadCount", title = "下载数量")
@Min(value = 0L, message = "最小值为0") @Min(value = 0L, message = "最小值为0", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private Integer downloadCount = 0; private Integer downloadCount = 0;
@Schema(name = "files", title = "文件列表,添加时为列表") @Schema(name = "files", title = "文件列表,添加时为列表")
@NotEmpty(message = "文件不能为空", groups = {ValidationGroups.Add.class})
private List<MultipartFile> files; private List<MultipartFile> files;
@Schema(name = "file", title = "文件,修改时为 file") @Schema(name = "file", title = "文件,修改时为 file")

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.dto; package cn.bunny.services.domain.files.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.dto; package cn.bunny.services.domain.files.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.dto; package cn.bunny.services.domain.files.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.entity; package cn.bunny.services.domain.files.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.entity; package cn.bunny.services.domain.files.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.vo; package cn.bunny.services.domain.files.vo;
import cn.bunny.services.domain.common.model.vo.BaseVo; import cn.bunny.services.domain.common.model.vo.BaseVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.vo; package cn.bunny.services.domain.files.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.files.vo; package cn.bunny.services.domain.files.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.log.dto; package cn.bunny.services.domain.log.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.log.dto; package cn.bunny.services.domain.log.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.log.entity; package cn.bunny.services.domain.log.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.log.entity; package cn.bunny.services.domain.log.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.log.vo; package cn.bunny.services.domain.log.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.log.vo; package cn.bunny.services.domain.log.vo;
import cn.bunny.services.domain.common.model.vo.BaseVo; import cn.bunny.services.domain.common.model.vo.BaseVo;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.log.vo; package cn.bunny.services.domain.log.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;

View File

@ -1,5 +1,6 @@
package cn.bunny.services.domain.system.message.dto; package cn.bunny.services.domain.message.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -13,36 +14,41 @@ import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Schema(name = "MessageAddDto对象", title = "添加系统消息", description = "添加系统消息") @Schema(name = "MessageDto对象", title = "消息分页查询", description = "消息分页查询")
public class MessageAddDto { public class MessageDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "title", title = "消息标题") @Schema(name = "title", title = "消息标题")
@NotBlank(message = "消息标题 不能为空") @NotBlank(message = "消息标题 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String title; private String title;
@Schema(name = "receivedUserIds", title = "接收人用户ID") @Schema(name = "receivedUserIds", title = "接收人用户ID")
private List<Long> receivedUserIds = new ArrayList<>(); private List<Long> receivedUserIds = new ArrayList<>();
@Schema(name = "sendUserId", title = "发送人用户ID") @Schema(name = "sendUserId", title = "发送人用户ID")
@NotNull(message = "发送人用户ID 不能为空", groups = {ValidationGroups.Update.class})
private Long sendUserId; private Long sendUserId;
@Schema(name = "messageTypeId", title = "消息类型") @Schema(name = "messageTypeId", title = "消息类型")
@NotNull(message = "消息类型 不能为空") @NotNull(message = "消息类型 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private Long messageTypeId; private Long messageTypeId;
@Schema(name = "cover", title = "封面") @Schema(name = "cover", title = "封面")
private String cover; private String cover;
@Schema(name = "summary", title = "消息简介") @Schema(name = "summary", title = "消息简介")
@NotBlank(message = "消息简介 不能为空") @NotBlank(message = "消息简介 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String summary; private String summary;
@Schema(name = "content", title = "消息内容") @Schema(name = "content", title = "消息内容")
@NotBlank(message = "消息内容 不能为空") @NotBlank(message = "消息内容 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String content; private String content;
@Schema(name = "editorType", title = "编辑器类型") @Schema(name = "editorType", title = "编辑器类型")
@NotBlank(message = "编辑器类型 不能为空") @NotBlank(message = "编辑器类型 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String editorType; private String editorType;
@Schema(name = "status", title = "0:未读 1:已读") @Schema(name = "status", title = "0:未读 1:已读")
@ -54,4 +60,10 @@ public class MessageAddDto {
@Schema(name = "extra", title = "消息等级详情") @Schema(name = "extra", title = "消息等级详情")
private String extra; private String extra;
} @Schema(name = "sendNickname", title = "发送人用户昵称")
private String sendNickname;
@Schema(name = "messageType", title = "消息类型")
private String messageType;
}

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.dto; package cn.bunny.services.domain.message.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.dto; package cn.bunny.services.domain.message.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,6 +1,9 @@
package cn.bunny.services.domain.system.message.dto; package cn.bunny.services.domain.message.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -13,18 +16,24 @@ import lombok.NoArgsConstructor;
@Schema(name = "MessageType对象", title = "系统消息类型分页查询", description = "系统消息类型分页查询") @Schema(name = "MessageType对象", title = "系统消息类型分页查询", description = "系统消息类型分页查询")
public class MessageTypeDto { public class MessageTypeDto {
@Schema(name = "status", title = "1:启用 0:禁用") @Schema(name = "id", title = "主键")
private Boolean status; @NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "messageName", title = "消息名称") @Schema(name = "messageName", title = "消息名称")
@NotBlank(message = "消息名称 不能为空", groups = {ValidationGroups.Add.class})
private String messageName; private String messageName;
@Schema(name = "messageType", title = "sys:系统消息,user用户消息") @Schema(name = "messageType", title = "sys:系统消息,user用户消息")
@NotBlank(message = "消息类型 不能为空", groups = {ValidationGroups.Add.class})
private String messageType; private String messageType;
@Schema(name = "summary", title = "消息备注") @Schema(name = "summary", title = "消息备注")
private String summary; private String summary;
@Schema(name = "status", title = "消息类型")
private Boolean status;
} }

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.dto; package cn.bunny.services.domain.message.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.entity; package cn.bunny.services.domain.message.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.entity; package cn.bunny.services.domain.message.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.entity; package cn.bunny.services.domain.message.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.vo; package cn.bunny.services.domain.message.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.vo; package cn.bunny.services.domain.message.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.vo; package cn.bunny.services.domain.message.vo;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.vo; package cn.bunny.services.domain.message.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.vo; package cn.bunny.services.domain.message.vo;
import cn.bunny.services.domain.common.model.vo.BaseVo; import cn.bunny.services.domain.common.model.vo.BaseVo;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.message.vo; package cn.bunny.services.domain.message.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;

View File

@ -1,5 +1,6 @@
package cn.bunny.services.domain.system.quartz.dto; package cn.bunny.services.domain.schedule.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -15,18 +16,26 @@ import lombok.NoArgsConstructor;
public class SchedulersDto { public class SchedulersDto {
@Schema(name = "jobName", title = "任务名称") @Schema(name = "jobName", title = "任务名称")
@NotBlank(message = "任务名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String jobName; private String jobName;
@Schema(name = "jobGroup", title = "任务分组") @Schema(name = "jobGroup", title = "任务分组")
@NotBlank(message = "任务分组不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String jobGroup; private String jobGroup;
@Schema(name = "description", title = "任务详情") @Schema(name = "description", title = "任务详情")
@NotBlank(message = "任务详情不能为空", groups = {ValidationGroups.Update.class})
private String description; private String description;
@Schema(name = "jobClassName", title = "任务类名称") @Schema(name = "jobClassName", title = "任务类名称")
@NotBlank(message = "corn表达式不能为空") @NotBlank(message = "corn表达式不能为空", groups = {ValidationGroups.Add.class})
private String jobClassName; private String jobClassName;
@Schema(name = "cronExpression", title = "corn表达式")
@NotBlank(message = "corn表达式不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String cronExpression;
@Schema(name = "triggerName", title = "触发器名称") @Schema(name = "triggerName", title = "触发器名称")
private String triggerName; private String triggerName;

View File

@ -1,6 +1,9 @@
package cn.bunny.services.domain.system.quartz.dto; package cn.bunny.services.domain.schedule.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -12,8 +15,13 @@ import lombok.NoArgsConstructor;
@Builder @Builder
@Schema(name = "SchedulersGroupDto对象", title = "任务调度分组分页查询", description = "任务调度分组分页查询") @Schema(name = "SchedulersGroupDto对象", title = "任务调度分组分页查询", description = "任务调度分组分页查询")
public class SchedulersGroupDto { public class SchedulersGroupDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "groupName", title = "分组名称") @Schema(name = "groupName", title = "分组名称")
@NotBlank(message = "分组名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String groupName; private String groupName;
@Schema(name = "description", title = "分组详情") @Schema(name = "description", title = "分组详情")

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.quartz.entity; package cn.bunny.services.domain.schedule.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.quartz.entity; package cn.bunny.services.domain.schedule.entity;
import cn.bunny.services.domain.common.model.entity.BaseEntity; import cn.bunny.services.domain.common.model.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.quartz.vo; package cn.bunny.services.domain.schedule.vo;
import cn.bunny.services.domain.common.model.vo.BaseUserVo; import cn.bunny.services.domain.common.model.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.quartz.vo; package cn.bunny.services.domain.schedule.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.system.dto; package cn.bunny.services.domain.system.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;

View File

@ -1,5 +1,6 @@
package cn.bunny.services.domain.system.system.dto.dept; package cn.bunny.services.domain.system.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
@ -15,24 +16,22 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
@Schema(name = "DeptUpdateDto对象", title = "更新部门", description = "更新部门") @Schema(name = "DeptDto对象", title = "部门分页查询", description = "部门分页查询")
public class DeptUpdateDto { public class DeptDto {
@Schema(name = "id", title = "主键") @Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空") @NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id; private Long id;
@Schema(name = "parentId", title = "父级id") @Schema(name = "parentId", title = "父级id")
private Long parentId; private Long parentId;
@Schema(name = "managerId", title = "管理者") @Schema(name = "managerId", title = "管理者")
@NotNull(message = "管理者不能为空") @NotEmpty(message = "管理者不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
@NotEmpty(message = "管理者不能为空")
private List<String> manager; private List<String> manager;
@Schema(name = "deptName", title = "部门名称") @Schema(name = "deptName", title = "部门名称")
@NotBlank(message = "部门名称不能为空") @NotBlank(message = "部门名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
@NotNull(message = "部门名称不能为空")
private String deptName; private String deptName;
@Schema(name = "summary", title = "部门简介") @Schema(name = "summary", title = "部门简介")

View File

@ -1,5 +1,6 @@
package cn.bunny.services.domain.system.system.dto.power; package cn.bunny.services.domain.system.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -12,24 +13,22 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
@Schema(name = "PowerUpdateDto对象", title = "更新权限", description = "权限管理") @Schema(name = "PowerDto对象", title = "权限分页查询", description = "权限管理")
public class PermissionUpdateDto { public class PermissionDto {
@Schema(name = "id", title = "主键") @Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空") @NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id; private Long id;
@Schema(name = "parentId", title = "父级id") @Schema(name = "parentId", title = "父级id")
private Long parentId; private Long parentId;
@Schema(name = "parentId", title = "权限编码") @Schema(name = "parentId", title = "权限编码")
@NotBlank(message = "权限编码 不能为空") @NotBlank(message = "权限编码 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
@NotNull(message = "权限编码 不能为空")
private String powerCode; private String powerCode;
@Schema(name = "powerName", title = "权限名称") @Schema(name = "powerName", title = "权限名称")
@NotBlank(message = "权限名称 不能为空") @NotBlank(message = "权限名称 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
@NotNull(message = "权限名称 不能为空")
private String powerName; private String powerName;
@Schema(name = "requestUrl", title = "请求路径") @Schema(name = "requestUrl", title = "请求路径")
@ -39,3 +38,4 @@ public class PermissionUpdateDto {
private String requestMethod; private String requestMethod;
} }

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.system.dto.power; package cn.bunny.services.domain.system.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
@ -18,7 +18,6 @@ import java.util.List;
public class PermissionUpdateBatchByParentIdDto { public class PermissionUpdateBatchByParentIdDto {
@Schema(name = "id", title = "主键") @Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空")
@NotEmpty(message = "id不能为空") @NotEmpty(message = "id不能为空")
private List<Long> ids; private List<Long> ids;

View File

@ -1,5 +1,6 @@
package cn.bunny.services.domain.system.system.dto.role; package cn.bunny.services.domain.system.dto;
import cn.bunny.services.domain.common.ValidationGroups;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -12,21 +13,20 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
@Schema(name = "RoleUpdateDto对象", title = "更新角色", description = "角色管理") @Schema(name = "RoleDto对象", title = "角色分页查询", description = "角色管理")
public class RoleUpdateDto { public class RoleDto {
@Schema(name = "id", title = "主键") @Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空") @NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id; private Long id;
@Schema(name = "roleCode", title = "角色代码") @Schema(name = "roleCode", title = "角色代码")
@NotBlank(message = "roleCode 不能为空") @NotBlank(message = "roleCode 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
@NotNull(message = "roleCode 不能为空")
private String roleCode; private String roleCode;
@Schema(name = "description", title = "描述") @Schema(name = "description", title = "描述")
@NotBlank(message = "description 不能为空") @NotBlank(message = "description 不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
@NotNull(message = "description 不能为空")
private String description; private String description;
} }

View File

@ -1,6 +1,7 @@
package cn.bunny.services.domain.system.system.dto.router; package cn.bunny.services.domain.system.dto;
import cn.bunny.services.domain.system.system.entity.router.RouterMeta; import cn.bunny.services.domain.common.ValidationGroups;
import cn.bunny.services.domain.system.entity.router.RouterMeta;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -14,17 +15,21 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
@Schema(name = "RouterManageDto对象", title = "添加路由", description = "添加路由") @Schema(name = "RouterManageDto对象", title = "添加路由", description = "添加路由")
public class RouterAddDto { public class RouterDto {
@Schema(name = "id", title = "唯一标识")
@NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "parentId", title = "父级id") @Schema(name = "parentId", title = "父级id")
private Long parentId; private Long parentId;
@Schema(name = "path", title = "在项目中路径") @Schema(name = "path", title = "在项目中路径")
@NotBlank(message = "路由路径不能为空") @NotBlank(message = "路由路径不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String path; private String path;
@Schema(name = "routeName", title = "路由名称") @Schema(name = "routeName", title = "路由名称")
@NotBlank(message = "路由名称不能为空") @NotBlank(message = "路由名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String routeName; private String routeName;
@Schema(name = "redirect", title = "路由重定向") @Schema(name = "redirect", title = "路由重定向")
@ -34,7 +39,7 @@ public class RouterAddDto {
private String component; private String component;
@Schema(name = "menuType", title = "菜单类型") @Schema(name = "menuType", title = "菜单类型")
@NotNull(message = "菜单类型不能为空") @NotNull(message = "菜单类型不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private Integer menuType; private Integer menuType;
@Schema(name = "meta", title = "菜单meta") @Schema(name = "meta", title = "菜单meta")

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.system.dto.user; package cn.bunny.services.domain.system.dto.user;
import cn.bunny.services.domain.common.constant.UserConstant; import cn.bunny.services.domain.common.constant.UserConstant;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -16,17 +16,14 @@ public class AdminUserAddDto {
@Schema(name = "username", title = "用户名") @Schema(name = "username", title = "用户名")
@NotBlank(message = "用户名不能为空") @NotBlank(message = "用户名不能为空")
@NotNull(message = "用户名不能为空")
private String username; private String username;
@Schema(name = "nickname", title = "昵称") @Schema(name = "nickname", title = "昵称")
@NotBlank(message = "昵称不能为空") @NotBlank(message = "昵称不能为空")
@NotNull(message = "昵称不能为空")
private String nickname; private String nickname;
@Schema(name = "email", title = "邮箱") @Schema(name = "email", title = "邮箱")
@NotBlank(message = "邮箱不能为空") @NotBlank(message = "邮箱不能为空")
@NotNull(message = "邮箱不能为空")
private String email; private String email;
@Schema(name = "phone", title = "手机号") @Schema(name = "phone", title = "手机号")
@ -34,7 +31,6 @@ public class AdminUserAddDto {
@Schema(name = "password", title = "密码") @Schema(name = "password", title = "密码")
@NotBlank(message = "密码不能为空") @NotBlank(message = "密码不能为空")
@NotNull(message = "密码不能为空")
private String password = "123456"; private String password = "123456";
@Schema(name = "avatar", title = "头像") @Schema(name = "avatar", title = "头像")

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.system.dto.user; package cn.bunny.services.domain.system.dto.user;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,9 +1,8 @@
package cn.bunny.services.domain.system.system.dto.user; package cn.bunny.services.domain.system.dto.user;
import cn.bunny.services.domain.common.constant.UserConstant; import cn.bunny.services.domain.common.constant.UserConstant;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -16,12 +15,10 @@ public class AdminUserUpdateByLocalUserDto {
@Schema(name = "nickname", title = "昵称") @Schema(name = "nickname", title = "昵称")
@NotBlank(message = "昵称不能为空") @NotBlank(message = "昵称不能为空")
@NotNull(message = "昵称不能为空")
private String nickname; private String nickname;
@Schema(name = "email", title = "邮箱") @Schema(name = "email", title = "邮箱")
@NotBlank(message = "邮箱不能为空") @NotBlank(message = "邮箱不能为空")
@NotNull(message = "邮箱不能为空")
private String email; private String email;
@Schema(name = "avatar", title = "头像") @Schema(name = "avatar", title = "头像")

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.system.dto.user; package cn.bunny.services.domain.system.dto.user;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.domain.system.system.dto.user; package cn.bunny.services.domain.system.dto.user;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,8 +1,7 @@
package cn.bunny.services.domain.system.system.dto.user; package cn.bunny.services.domain.system.dto.user;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -16,12 +15,10 @@ public class LoginDto {
@Schema(name = "username", title = "用户名") @Schema(name = "username", title = "用户名")
@NotBlank(message = "用户名不能为空") @NotBlank(message = "用户名不能为空")
@NotNull(message = "用户名不能为空")
private String username; private String username;
@Schema(name = "password", title = "密码") @Schema(name = "password", title = "密码")
@NotBlank(message = "密码不能为空") @NotBlank(message = "密码不能为空")
@NotNull(message = "密码不能为空")
@Pattern(regexp = "^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)]|[()])+$)(?!^.*[\\u4E00-\\u9FA5].*$)([^(0-9a-zA-Z)]|[()]|[a-z]|[A-Z]|[0-9]){8,18}$", @Pattern(regexp = "^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)]|[()])+$)(?!^.*[\\u4E00-\\u9FA5].*$)([^(0-9a-zA-Z)]|[()]|[a-z]|[A-Z]|[0-9]){8,18}$",
message = "密码格式应为8-18位数字、字母、符号的任意两种组合") message = "密码格式应为8-18位数字、字母、符号的任意两种组合")
private String password; private String password;
@ -31,7 +28,6 @@ public class LoginDto {
@Schema(name = "type", title = "登录类型") @Schema(name = "type", title = "登录类型")
@NotBlank(message = "登录类型不能为空") @NotBlank(message = "登录类型不能为空")
@NotNull(message = "登录类型能为空")
private String type = "default"; private String type = "default";
@Schema(name = "readMeDay", title = "记住我的天数") @Schema(name = "readMeDay", title = "记住我的天数")

View File

@ -1,8 +1,7 @@
package cn.bunny.services.domain.system.system.dto.user; package cn.bunny.services.domain.system.dto.user;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -15,7 +14,6 @@ public class RefreshTokenDto {
@Schema(name = "refreshToken", title = "请求刷新token") @Schema(name = "refreshToken", title = "请求刷新token")
@NotBlank(message = "请求刷新token不能为空") @NotBlank(message = "请求刷新token不能为空")
@NotNull(message = "请求刷新token不能为空")
private String refreshToken; private String refreshToken;
@Schema(name = "readMeDay", title = "记住我天数") @Schema(name = "readMeDay", title = "记住我天数")

View File

@ -1,41 +0,0 @@
package cn.bunny.services.domain.system.email.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "EmailTemplateAddDto对象", title = "添加邮箱模板", description = "添加邮箱模板")
public class EmailTemplateAddDto {
@Schema(name = "templateName", title = "模板名称")
@NotBlank(message = "模板名称不能为空")
private String templateName;
@Schema(name = "emailUser", title = "配置邮件用户")
@NotNull(message = "配置邮件用户不能为空")
private Long emailUser;
@Schema(name = "subject", title = "主题")
@NotBlank(message = "主题不能为空")
private String subject;
@Schema(name = "body", title = "邮件内容")
@NotBlank(message = "邮件内容不能为空")
private String body;
@Schema(name = "type", title = "邮件类型")
private String type;
@Schema(name = "isDefault", title = "是否默认")
@NotNull(message = "是否默认不能为空")
private Boolean isDefault;
}

View File

@ -1,32 +0,0 @@
package cn.bunny.services.domain.system.email.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "EmailTemplateDto", title = "邮箱模板请求内容", description = "邮箱模板请求内容")
public class EmailTemplateDto {
@Schema(name = "templateName", title = "模板名称")
private String templateName;
@Schema(name = "subject", title = "主题")
private String subject;
@Schema(name = "body", title = "邮件内容")
private String body;
@Schema(name = "type", title = "邮件类型")
private String type;
@Schema(name = "isDefault", title = "是否默认")
private Boolean isDefault;
}

View File

@ -1,45 +0,0 @@
package cn.bunny.services.domain.system.email.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "EmailTemplateUpdateDto对象", title = "更新邮箱模板", description = "更新邮箱模板")
public class EmailTemplateUpdateDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空")
private Long id;
@Schema(name = "templateName", title = "模板名称")
@NotBlank(message = "模板名称不能为空")
private String templateName;
@Schema(name = "emailUser", title = "配置邮件用户")
@NotNull(message = "配置邮件用户不能为空")
private Long emailUser;
@Schema(name = "subject", title = "主题")
@NotBlank(message = "主题不能为空")
private String subject;
@Schema(name = "body", title = "邮件内容")
@NotBlank(message = "邮件内容不能为空")
private String body;
@Schema(name = "type", title = "邮件类型")
private String type;
@Schema(name = "isDefault", title = "是否默认")
@NotNull(message = "是否默认不能为空")
private Boolean isDefault;
}

Some files were not shown because too many files have changed in this diff Show More