Compare commits

..

No commits in common. "de1c45404369b18ca9692c88d21423929bbf6ea1" and "f31a3f22382c68d06e2ab15cdec73f440c045e1d" have entirely different histories.

263 changed files with 2054 additions and 1220 deletions

256
Gitlab安装.md Normal file
View File

@ -0,0 +1,256 @@
# 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."
```

View File

@ -1,283 +0,0 @@
# 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,8 +1,5 @@
# 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]
>
> 开源权限模板[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.domain.common.enums.ResultCodeEnum;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.configuration.dto.WebConfigurationDto;
import cn.bunny.services.domain.configuration.entity.WebConfiguration;
import cn.bunny.services.domain.system.configuration.dto.WebConfigurationDto;
import cn.bunny.services.domain.system.configuration.entity.WebConfiguration;
import cn.bunny.services.service.configuration.ConfigurationService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,17 +1,16 @@
package cn.bunny.services.controller.file;
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.enums.ResultCodeEnum;
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.files.dto.FileUploadDto;
import cn.bunny.services.domain.files.dto.FilesCreateOrUpdateDto;
import cn.bunny.services.domain.files.dto.FilesDto;
import cn.bunny.services.domain.files.entity.Files;
import cn.bunny.services.domain.files.vo.FileInfoVo;
import cn.bunny.services.domain.files.vo.FilesVo;
import cn.bunny.services.domain.system.files.dto.FileUploadDto;
import cn.bunny.services.domain.system.files.dto.FilesAddOrUpdateDto;
import cn.bunny.services.domain.system.files.dto.FilesDto;
import cn.bunny.services.domain.system.files.entity.Files;
import cn.bunny.services.domain.system.files.vo.FileInfoVo;
import cn.bunny.services.domain.system.files.vo.FilesVo;
import cn.bunny.services.service.file.FilesService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
@ -20,7 +19,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -60,7 +58,7 @@ public class FilesController {
@Operation(summary = "更新文件", description = "更新系统文件")
@PermissionTag(permission = "files:update")
@PutMapping()
public Result<String> updateFiles(@Validated(ValidationGroups.Update.class) FilesCreateOrUpdateDto dto) {
public Result<String> updateFiles(@Valid FilesAddOrUpdateDto dto) {
filesService.updateFiles(dto);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
}
@ -68,9 +66,9 @@ public class FilesController {
@Operation(summary = "添加文件", description = "添加系统文件")
@PermissionTag(permission = "files:add")
@PostMapping()
public Result<Object> createFiles(@Validated(ValidationGroups.Add.class) FilesCreateOrUpdateDto dto) {
filesService.createFiles(dto);
return Result.success(ResultCodeEnum.CREATE_SUCCESS);
public Result<Object> addFiles(@Valid FilesAddOrUpdateDto dto) {
filesService.addFiles(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS);
}
@Operation(summary = "删除文件", description = "删除系统文件")
@ -99,14 +97,14 @@ public class FilesController {
@Operation(summary = "上传文件", description = "上传文件")
@PostMapping("private/file")
public Result<FileInfoVo> upload(@Valid FileUploadDto dto) {
public Result<FileInfoVo> upload(FileUploadDto dto) {
FileInfoVo vo = filesService.upload(dto);
return Result.success(vo, ResultCodeEnum.SUCCESS_UPLOAD);
}
@Operation(summary = "上传图片文件", description = "上传图片文件")
@PostMapping("private/image")
public Result<FileInfoVo> uploadImage(@Valid FileUploadDto dto) {
public Result<FileInfoVo> uploadImage(FileUploadDto dto) {
FileInfoVo vo = filesService.uploadFileByThumbnail(dto);
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.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.files.dto.FilesParDetailDto;
import cn.bunny.services.domain.files.entity.FilesParDetail;
import cn.bunny.services.domain.files.vo.FilesParDetailVo;
import cn.bunny.services.domain.system.files.dto.FilesParDetailDto;
import cn.bunny.services.domain.system.files.entity.FilesParDetail;
import cn.bunny.services.domain.system.files.vo.FilesParDetailVo;
import cn.bunny.services.service.file.FilesParDetailService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
@ -52,9 +52,9 @@ public class FilesParDetailController {
@Operation(summary = "添加文件分片信息表,仅在手动分片上传时使用", description = "添加文件分片信息表,仅在手动分片上传时使用")
@PermissionTag(permission = "filesParDetail:add")
@PostMapping()
public Result<String> createFilesParDetail(@Valid @RequestBody FilesParDetailDto dto) {
filesPardetailService.createFilesParDetail(dto);
return Result.success(ResultCodeEnum.CREATE_SUCCESS);
public Result<String> addFilesParDetail(@Valid @RequestBody FilesParDetailDto dto) {
filesPardetailService.addFilesParDetail(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS);
}
@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.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.log.dto.ScheduleExecuteLogDto;
import cn.bunny.services.domain.log.entity.ScheduleExecuteLog;
import cn.bunny.services.domain.log.vo.ScheduleExecuteLogVo;
import cn.bunny.services.domain.system.log.dto.ScheduleExecuteLogDto;
import cn.bunny.services.domain.system.log.entity.ScheduleExecuteLog;
import cn.bunny.services.domain.system.log.vo.ScheduleExecuteLogVo;
import cn.bunny.services.service.log.ScheduleExecuteLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.log.dto.UserLoginLogDto;
import cn.bunny.services.domain.log.entity.UserLoginLog;
import cn.bunny.services.domain.log.vo.UserLoginLogLocalVo;
import cn.bunny.services.domain.log.vo.UserLoginLogVo;
import cn.bunny.services.domain.system.log.dto.UserLoginLogDto;
import cn.bunny.services.domain.system.log.entity.UserLoginLog;
import cn.bunny.services.domain.system.log.vo.UserLoginLogLocalVo;
import cn.bunny.services.domain.system.log.vo.UserLoginLogVo;
import cn.bunny.services.service.log.UserLoginLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,22 +1,23 @@
package cn.bunny.services.controller.message;
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.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.message.dto.MessageDto;
import cn.bunny.services.domain.message.entity.Message;
import cn.bunny.services.domain.message.vo.MessageDetailVo;
import cn.bunny.services.domain.message.vo.MessageReceivedWithUserVo;
import cn.bunny.services.domain.message.vo.MessageVo;
import cn.bunny.services.domain.system.message.dto.MessageAddDto;
import cn.bunny.services.domain.system.message.dto.MessageDto;
import cn.bunny.services.domain.system.message.dto.MessageUpdateDto;
import cn.bunny.services.domain.system.message.entity.Message;
import cn.bunny.services.domain.system.message.vo.MessageDetailVo;
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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -54,14 +55,14 @@ public class MessageController {
@Operation(summary = "添加系统消息", description = "添加系统消息")
@PostMapping()
public Result<String> createMessage(@Validated(ValidationGroups.Add.class) @RequestBody MessageDto dto) {
messageService.createMessage(dto);
return Result.success(ResultCodeEnum.CREATE_SUCCESS);
public Result<String> addMessage(@Valid @RequestBody MessageAddDto dto) {
messageService.addMessage(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS);
}
@Operation(summary = "更系统消息", description = "更新系统消息")
@PutMapping()
public Result<String> updateMessage(@Validated(ValidationGroups.Update.class) @RequestBody MessageDto dto) {
public Result<String> updateMessage(@Valid @RequestBody MessageUpdateDto dto) {
messageService.updateMessage(dto);
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.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.message.dto.MessageReceivedDto;
import cn.bunny.services.domain.message.dto.MessageReceivedUpdateDto;
import cn.bunny.services.domain.message.dto.MessageUserDto;
import cn.bunny.services.domain.message.entity.Message;
import cn.bunny.services.domain.message.vo.MessageReceivedWithMessageVo;
import cn.bunny.services.domain.message.vo.MessageUserVo;
import cn.bunny.services.domain.system.message.dto.MessageReceivedDto;
import cn.bunny.services.domain.system.message.dto.MessageReceivedUpdateDto;
import cn.bunny.services.domain.system.message.dto.MessageUserDto;
import cn.bunny.services.domain.system.message.entity.Message;
import cn.bunny.services.domain.system.message.vo.MessageReceivedWithMessageVo;
import cn.bunny.services.domain.system.message.vo.MessageUserVo;
import cn.bunny.services.service.message.MessageReceivedService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
@ -83,7 +83,7 @@ public class MessageReceivedController {
@Operation(summary = "用户将消息标为已读", description = "用户将消息标为已读")
@PutMapping("private/user/messages/read-status")
public Result<String> markAsReadByUser(@RequestBody List<Long> ids) {
public Result<String> markAsReadByUser(@Valid @RequestBody List<Long> ids) {
messageReceivedService.markAsReadByUser(ids);
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,17 +1,17 @@
package cn.bunny.services.controller.system;
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.model.vo.result.Result;
import cn.bunny.services.domain.system.dto.RouterDto;
import cn.bunny.services.domain.system.vo.router.RouterManageVo;
import cn.bunny.services.domain.system.vo.router.WebUserRouterVo;
import cn.bunny.services.domain.system.system.dto.router.RouterAddDto;
import cn.bunny.services.domain.system.system.dto.router.RouterUpdateDto;
import cn.bunny.services.domain.system.system.vo.router.RouterManageVo;
import cn.bunny.services.domain.system.system.vo.router.WebUserRouterVo;
import cn.bunny.services.service.system.RouterService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -52,15 +52,15 @@ public class RouterController {
@Operation(summary = "添加路由菜单", description = "添加路由菜单")
@PermissionTag(permission = "router:add")
@PostMapping()
public Result<String> createRouter(@Validated({ValidationGroups.Add.class}) @RequestBody RouterDto dto) {
routerService.createRouter(dto);
return Result.success(ResultCodeEnum.CREATE_SUCCESS);
public Result<String> addRouter(@Valid @RequestBody RouterAddDto dto) {
routerService.addRouter(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS);
}
@Operation(summary = "更新路由菜单", description = "更新路由菜单")
@PermissionTag(permission = "router:update")
@PutMapping()
public Result<String> updateRouter(@Validated({ValidationGroups.Update.class}) @RequestBody RouterDto dto) {
public Result<String> updateRouter(@Valid @RequestBody RouterUpdateDto dto) {
routerService.updateRouter(dto);
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.model.vo.result.PageResult;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.dto.user.AdminUserAddDto;
import cn.bunny.services.domain.system.dto.user.AdminUserDto;
import cn.bunny.services.domain.system.dto.user.AdminUserUpdateDto;
import cn.bunny.services.domain.system.entity.AdminUser;
import cn.bunny.services.domain.system.vo.user.AdminUserVo;
import cn.bunny.services.domain.system.vo.user.UserVo;
import cn.bunny.services.domain.system.system.dto.user.AdminUserAddDto;
import cn.bunny.services.domain.system.system.dto.user.AdminUserDto;
import cn.bunny.services.domain.system.system.dto.user.AdminUserUpdateDto;
import cn.bunny.services.domain.system.system.entity.AdminUser;
import cn.bunny.services.domain.system.system.vo.user.AdminUserVo;
import cn.bunny.services.domain.system.system.vo.user.UserVo;
import cn.bunny.services.service.system.UserService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
@ -49,9 +49,9 @@ public class UserController {
@Operation(summary = "添加用户", description = "添加用户信息")
@PermissionTag(permission = "user:add")
@PostMapping()
public Result<Object> createUserByAdmin(@Valid @RequestBody AdminUserAddDto dto) {
userService.createUserByAdmin(dto);
return Result.success(ResultCodeEnum.CREATE_SUCCESS);
public Result<Object> addUserByAdmin(@Valid @RequestBody AdminUserAddDto dto) {
userService.addUserByAdmin(dto);
return Result.success(ResultCodeEnum.ADD_SUCCESS);
}
@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.model.vo.LoginVo;
import cn.bunny.services.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.dto.user.AdminUserUpdateByLocalUserDto;
import cn.bunny.services.domain.system.dto.user.LoginDto;
import cn.bunny.services.domain.system.dto.user.RefreshTokenDto;
import cn.bunny.services.domain.system.vo.user.RefreshTokenVo;
import cn.bunny.services.domain.system.system.dto.user.AdminUserUpdateByLocalUserDto;
import cn.bunny.services.domain.system.system.dto.user.LoginDto;
import cn.bunny.services.domain.system.system.dto.user.RefreshTokenDto;
import cn.bunny.services.domain.system.system.vo.user.RefreshTokenVo;
import cn.bunny.services.exception.AuthCustomerException;
import cn.bunny.services.service.system.UserLoginService;
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.domain.common.model.vo.result.Result;
import cn.bunny.services.domain.system.dto.user.AssignRolesToUsersDto;
import cn.bunny.services.domain.system.system.dto.user.AssignRolesToUsersDto;
import cn.bunny.services.service.system.UserRoleService;
import io.swagger.v3.oas.annotations.Operation;
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.aop.scanner.ControllerApiPermissionScanner;
import cn.bunny.services.domain.common.model.dto.scanner.ScannerControllerInfoVo;
import cn.bunny.services.domain.system.entity.Permission;
import cn.bunny.services.domain.system.system.entity.Permission;
import cn.bunny.services.service.system.PermissionService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

View File

@ -1,12 +0,0 @@
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 {
// 成功操作 200
SUCCESS(200, "操作成功"),
CREATE_SUCCESS(200, "添加成功"),
ADD_SUCCESS(200, "添加成功"),
UPDATE_SUCCESS(200, "修改成功"),
DELETE_SUCCESS(200, "删除成功"),
SORT_SUCCESS(200, "排序成功"),
@ -54,7 +54,7 @@ public enum ResultCodeEnum {
AUTHENTICATION_EXPIRED(208, "身份验证过期"),
SESSION_EXPIRATION(208, "会话过期"),
FAIL_NO_ACCESS_DENIED_USER_LOCKED(208, "该账户已封禁"),
// 209
THE_SAME_USER_HAS_LOGGED_IN(209, "相同用户已登录"),

View File

@ -1,47 +0,0 @@
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,36 +0,0 @@
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,32 +0,0 @@
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.configuration.dto;
package cn.bunny.services.domain.system.configuration.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;

View File

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

View File

@ -0,0 +1,41 @@
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

@ -0,0 +1,32 @@
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

@ -0,0 +1,45 @@
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;
}

View File

@ -0,0 +1,41 @@
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.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(name = "EmailUsersAddDto对象", title = "添加邮箱用户发送配置", description = "添加邮箱用户发送配置")
public class EmailUsersAddDto {
@Schema(name = "email", title = "邮箱")
@NotBlank(message = "邮箱不能为空")
private String email;
@Schema(name = "password", title = "密码")
@NotBlank(message = "密码不能为空")
private String password;
@Schema(name = "host", title = "Host地址")
@NotBlank(message = "Host地址不能为空")
private String host;
@Schema(name = "port", title = "端口号")
@NotNull(message = "端口号不能为空")
private Integer port;
@Schema(name = "smtpAgreement", title = "邮箱协议")
private String smtpAgreement;
@Schema(name = "isDefault", title = "是否为默认邮件")
private Boolean isDefault = false;
@Schema(name = "openSSL", description = "启用SSL")
private Boolean openSSL;
}

View File

@ -0,0 +1,33 @@
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 = "EmailUsersDto对象", title = "邮箱用户发送配置分页查询", description = "邮箱用户发送配置分页查询")
public class EmailUsersDto {
@Schema(name = "email", title = "邮箱")
private String email;
@Schema(name = "host", title = "Host地址")
private String host;
@Schema(name = "port", title = "端口号")
private Integer port;
@Schema(name = "smtpAgreement", title = "邮箱协议")
private String smtpAgreement;
@Schema(name = "openSSL", description = "启用SSL")
private Boolean openSSL;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,30 @@
package cn.bunny.services.domain.system.i18n.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "I18nAddDto对象", title = "多语言添加", description = "多语言添加")
public class I18nAddDto {
@Schema(name = "keyName", title = "多语言key")
@NotBlank(message = "多语言key不能为空")
private String keyName;
@Schema(name = "translation", title = "多语言翻译名称")
@NotBlank(message = "多语言翻译名称不能为空")
private String translation;
@Schema(name = "typeName", title = "多语言类型名称")
@NotBlank(message = "多语言类型名称不能为空")
private String typeName;
}

View File

@ -0,0 +1,26 @@
package cn.bunny.services.domain.system.i18n.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 = "I18nDto对象", title = "多语言分页查询", description = "多语言分页查询")
public class I18nDto {
@Schema(name = "keyName", title = "多语言key")
private String keyName;
@Schema(name = "translation", title = "多语言翻译名称")
private String translation;
@Schema(name = "typeName", title = "多语言类型名称")
private String typeName;
}

View File

@ -0,0 +1,28 @@
package cn.bunny.services.domain.system.i18n.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(name = "I18nTypeAddDto对象", title = "多语言类型添加", description = "多语言类型添加内容")
public class I18nTypeAddDto {
@Schema(name = "typeName", title = "多语言类型(比如zh,en)")
@NotBlank(message = "多语言类型不能为空")
private String typeName;
@Schema(name = "summary", title = "名称解释(比如中文,英文)")
@NotBlank(message = "名称解释不能为空")
private String summary;
@Schema(name = "isDefault", title = "是否为默认")
private Boolean isDefault = false;
}

View File

@ -0,0 +1,22 @@
package cn.bunny.services.domain.system.i18n.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 = "I18nTypeDto对象", title = "多语言类型", description = "多语言类型")
public class I18nTypeDto {
@Schema(name = "typeName", title = "多语言类型(比如zh,en)")
private String typeName;
@Schema(name = "summary", title = "名称解释(比如中文,英文)")
private String summary;
}

View File

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

View File

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

View File

@ -0,0 +1,34 @@
package cn.bunny.services.domain.system.i18n.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 = "I18nUpdateDto对象", title = "多语言更新", description = "多语言更新")
public class I18nUpdateDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空")
private Long id;
@Schema(name = "keyName", title = "多语言key")
@NotBlank(message = "多语言key不能为空")
private String keyName;
@Schema(name = "translation", title = "多语言翻译名称")
@NotBlank(message = "多语言翻译名称不能为空")
private String translation;
@Schema(name = "typeId", title = "多语言类型id")
private Long typeId;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,26 @@
package cn.bunny.services.domain.system.menuIcon.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "MenuIconAddDto对象", title = "添加系统菜单图标", description = "添加系统菜单图标")
public class MenuIconAddDto {
@Schema(name = "iconCode", title = "icon类名")
@NotBlank(message = "iconCode不能为空")
private String iconCode;
@Schema(name = "iconName", title = "icon 名称")
@NotBlank(message = "icon 名称不能为空")
private String iconName;
}

View File

@ -0,0 +1,23 @@
package cn.bunny.services.domain.system.menuIcon.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 = "MenuIconDto对象", title = "系统菜单图标分页查询", description = "系统菜单图标管理")
public class MenuIconDto {
@Schema(name = "iconCode", title = "icon类名")
private String iconCode;
@Schema(name = "iconName", title = "icon 名称")
private String iconName;
}

View File

@ -0,0 +1,32 @@
package cn.bunny.services.domain.system.menuIcon.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 = "MenuIconUpdateDto对象", title = "更新系统菜单图标", description = "系统菜单图标管理")
public class MenuIconUpdateDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空")
private Long id;
@Schema(name = "iconCode", title = "icon类名")
@NotBlank(message = "iconCode不能为空")
@NotNull(message = "iconCode不能为空")
private String iconCode;
@Schema(name = "iconName", title = "icon 名称")
@NotBlank(message = "icon 名称不能为空")
@NotNull(message = "icon 名称不能为空")
private String iconName;
}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,34 @@
package cn.bunny.services.domain.system.message.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 = "MessageDto对象", title = "消息分页查询", description = "消息分页查询")
public class MessageDto {
@Schema(name = "title", title = "消息标题")
private String title;
@Schema(name = "sendNickname", title = "发送人用户昵称")
private String sendNickname;
@Schema(name = "messageType", title = "消息类型")
private String messageType;
@Schema(name = "level", title = "消息等级")
private String level;
@Schema(name = "extra", title = "消息等级详情")
private String extra;
@Schema(name = "editorType", title = "编辑器类型")
private String editorType;
}

View File

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

View File

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

View File

@ -0,0 +1,29 @@
package cn.bunny.services.domain.system.message.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(name = "MessageTypeAddDto对象", title = "添加系统消息类型", description = "添加系统消息类型")
public class MessageTypeAddDto {
@Schema(name = "messageName", title = "消息名称")
@NotBlank(message = "消息名称 不能为空")
private String messageName;
@Schema(name = "messageType", title = "sys:系统消息,user用户消息")
@NotBlank(message = "消息类型 不能为空")
private String messageType;
@Schema(name = "summary", title = "消息备注")
private String summary;
@Schema(name = "status", title = "消息类型")
private Boolean status = true;
}

View File

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

View File

@ -0,0 +1,33 @@
package cn.bunny.services.domain.system.message.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "MessageTypeUpdateDto对象", title = "更新系统消息类型", description = "更新系统消息类型")
public class MessageTypeUpdateDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空")
private Long id;
@Schema(name = "status", title = "1:启用 0:禁用")
private Boolean status;
@Schema(name = "messageName", title = "消息名称")
private String messageName;
@Schema(name = "messageType", title = "sys:系统消息,user用户消息")
private String messageType;
@Schema(name = "summary", title = "消息备注")
private String summary;
}

View File

@ -0,0 +1,65 @@
package cn.bunny.services.domain.system.message.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;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "MessageUpdateDto对象", title = "更新系统消息", description = "系统消息")
public class MessageUpdateDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空")
private Long id;
@Schema(name = "title", title = "消息标题")
@NotNull(message = "消息标题 不能为空")
@NotBlank(message = "消息标题 不能为空")
private String title;
@Schema(name = "receivedUserIds", title = "接收人用户ID列表")
private List<Long> receivedUserIds;
@Schema(name = "sendUserId", title = "发送人用户ID")
@NotNull(message = "发送人用户ID 不能为空")
private Long sendUserId;
@Schema(name = "messageTypeId", title = "消息类型")
@NotNull(message = "消息类型 不能为空")
private Long messageTypeId;
@Schema(name = "cover", title = "封面")
private String cover;
@Schema(name = "summary", title = "消息简介")
@NotBlank(message = "消息简介 不能为空")
@NotNull(message = "消息简介 不能为空")
private String summary;
@Schema(name = "content", title = "消息内容")
@NotBlank(message = "消息内容 不能为空")
@NotNull(message = "消息内容 不能为空")
private String content;
@Schema(name = "editorType", title = "编辑器类型")
@NotBlank(message = "编辑器类型 不能为空")
@NotNull(message = "编辑器类型 不能为空")
private String editorType;
@Schema(name = "level", title = "消息等级")
private String level;
@Schema(name = "extra", title = "消息等级详情")
private String extra;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,39 @@
package cn.bunny.services.domain.system.quartz.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "SchedulersAddDto对象", title = "添加Schedulers", description = "添加Schedulers")
public class SchedulersAddDto {
@Schema(name = "jobName", title = "任务名称")
@NotBlank(message = "任务名称不能为空")
private String jobName;
@Schema(name = "jobGroup", title = "任务分组")
@NotBlank(message = "任务分组不能为空")
private String jobGroup;
@Schema(name = "description", title = "任务详情")
private String description;
@Schema(name = "jobClassName", title = "任务类名称")
@NotBlank(message = "corn表达式不能为空")
private String jobClassName;
@Schema(name = "cronExpression", title = "corn表达式")
@NotBlank(message = "corn表达式不能为空")
private String cronExpression;
}

View File

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

View File

@ -0,0 +1,24 @@
package cn.bunny.services.domain.system.quartz.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "SchedulersGroupAddDto对象", title = "添加任务调度分组", description = "添加任务调度分组")
public class SchedulersGroupAddDto {
@Schema(name = "groupName", title = "分组名称")
@NotBlank(message = "分组名称不能为空")
private String groupName;
@Schema(name = "description", title = "分组详情")
private String description;
}

View File

@ -1,9 +1,6 @@
package cn.bunny.services.domain.schedule.dto;
package cn.bunny.services.domain.system.quartz.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;
@ -15,13 +12,8 @@ import lombok.NoArgsConstructor;
@Builder
@Schema(name = "SchedulersGroupDto对象", title = "任务调度分组分页查询", description = "任务调度分组分页查询")
public class SchedulersGroupDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空", groups = {ValidationGroups.Update.class})
private Long id;
@Schema(name = "groupName", title = "分组名称")
@NotBlank(message = "分组名称不能为空", groups = {ValidationGroups.Add.class, ValidationGroups.Update.class})
private String groupName;
@Schema(name = "description", title = "分组详情")

View File

@ -0,0 +1,29 @@
package cn.bunny.services.domain.system.quartz.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 = "SchedulersGroupUpdateDto对象", title = "更新任务调度分组", description = "更新任务调度分组")
public class SchedulersGroupUpdateDto {
@Schema(name = "id", title = "主键")
@NotNull(message = "id不能为空")
private Long id;
@Schema(name = "groupName", title = "分组名称")
@NotBlank(message = "分组名称不能为空")
private String groupName;
@Schema(name = "description", title = "分组详情")
private String description;
}

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