Change namespace to top.fatweb.oxygen.api

This commit is contained in:
2023-12-28 13:39:42 +08:00
parent 605f3f4152
commit 47baa06125
231 changed files with 698 additions and 682 deletions

View File

@@ -0,0 +1,50 @@
package top.fatweb.oxygen.api.param
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.Min
/**
* Page sort parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
open class PageSortParam {
/**
* Current page number
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "分页页码", defaultValue = "1", example = "1")
@field:Min(1, message = "Pagination page number must be a positive integer")
var currentPage: Long = 1
/**
* Size of page
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "分页大小", defaultValue = "20", example = "20")
@field:Min(1, message = "The number of data per page must be a positive integer")
var pageSize: Long = 20
/**
* Field name to sort
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "排序字段", example = "id")
var sortField: String? = null
/**
* Sort order by
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "排序方式", allowableValues = ["desc", "asc"], defaultValue = "desc", example = "desc")
var sortOrder: String? = null
}

View File

@@ -0,0 +1,69 @@
package top.fatweb.oxygen.api.param.api.v1.avatar
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.Max
import jakarta.validation.constraints.Pattern
/**
* Avatar base parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
open class AvatarBaseParam {
/**
* Seed to generate avatar
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "种子")
var seed: Long? = null
/**
* Size of image
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "图像大小", defaultValue = "128")
@field:Max(256, message = "Size must be less than or equal to 256")
var size: Int? = null
/**
* Margin of image
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "外边距", defaultValue = "0")
var margin: Int? = null
/**
* Padding of image
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "内边距", defaultValue = "0")
var padding: Int? = null
/**
* List of colors to generate avatar
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(defaultValue = "颜色列表", example = "#FFFFFFAA")
var colors: List<String>? = null
/**
* Background of image
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(defaultValue = "背景颜色", example = "#FFFFFFAA")
@field:Pattern(regexp = "^#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}$", message = "Background color must be a hex color code")
var background: String? = null
}

View File

@@ -0,0 +1,31 @@
package top.fatweb.oxygen.api.param.api.v1.avatar
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.Max
/**
* GitHub style avatar parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
data class AvatarGitHubParam(
/**
* Size of element
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "元素大小", defaultValue = "400")
@field:Max(1000, message = "Element size must be less than or equal to 1000")
val elementSize: Int = 400,
/**
* Precision of element
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "精确度", defaultValue = "5")
val precision: Int = 5
) : AvatarBaseParam()

View File

@@ -0,0 +1,25 @@
package top.fatweb.oxygen.api.param.permission
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.Pattern
/**
* Forget password parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "忘记密码请求参数")
data class ForgetParam(
/**
* Email
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "邮箱", required = true, example = "user@email.com")
@field:NotBlank(message = "Email can not be blank")
@field:Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*\$", message = "Illegal email address")
val email: String?
)

View File

@@ -0,0 +1,33 @@
package top.fatweb.oxygen.api.param.permission
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
/**
* Login parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "登录请求参数")
data class LoginParam(
/**
* Account
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "账户", required = true, example = "test")
@field:NotBlank(message = "Account can not be blank")
val account: String?,
/**
* Password
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "密码", required = true)
@field:NotBlank(message = "Password can not be blank")
val password: String?
)

View File

@@ -0,0 +1,48 @@
package top.fatweb.oxygen.api.param.permission
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.Pattern
import jakarta.validation.constraints.Size
/**
* Register parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "注册请求参数")
data class RegisterParam(
/**
* Username
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户名", required = true, example = "abc")
@field:NotBlank(message = "Username can not be blank")
@field:Pattern(regexp = "[a-zA-Z-_][0-9a-zA-Z-_]{2,38}", message = "Illegal username")
val username: String?,
/**
* Email
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "邮箱", required = true, example = "user@email.com")
@field:NotBlank(message = "Email can not be blank")
@field:Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*\$", message = "Illegal email address")
val email: String?,
/**
* Password
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "密码", required = true)
@field:NotBlank(message = "Password can not be blank")
@field:Size(min = 10, max = 30)
val password: String?
)

View File

@@ -0,0 +1,35 @@
package top.fatweb.oxygen.api.param.permission
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.Size
/**
* Retrieve password parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "找回密码请求参数")
data class RetrieveParam(
/**
* Code
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "验证码", required = true)
@field:NotBlank(message = "Code can not be blank")
val code: String?,
/**
* New password
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "新密码")
@field:NotBlank(message = "New password can not be blank")
@field:Size(min = 10, max = 30)
val password: String?
)

View File

@@ -0,0 +1,41 @@
package top.fatweb.oxygen.api.param.permission
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
/**
* Verify email parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "验证邮箱请求参数")
data class VerifyParam(
/**
* Code
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "验证码", required = true)
@field:NotBlank(message = "Code can not be blank")
val code: String?,
/**
* Nickname
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "昵称", example = "QwQ")
val nickname: String?,
/**
* Avatar
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "头像")
val avatar: String?
)

View File

@@ -0,0 +1,41 @@
package top.fatweb.oxygen.api.param.permission.group
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
/**
* Add group parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组添加请求参数")
data class GroupAddParam(
/**
* Name
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组名称", required = true, example = "Group_1")
@field:NotBlank(message = "Name can not be blank")
val name: String?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true,
/**
* List of role IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色 ID 列表")
val roleIds: List<Long>?
)

View File

@@ -0,0 +1,21 @@
package top.fatweb.oxygen.api.param.permission.group
import io.swagger.v3.oas.annotations.media.Schema
/**
* Delete group parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组删除请求参数")
data class GroupDeleteParam(
/**
* List of group IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组 ID 列表", required = true)
val ids: List<Long>
)

View File

@@ -0,0 +1,37 @@
package top.fatweb.oxygen.api.param.permission.group
import io.swagger.v3.oas.annotations.media.Schema
import top.fatweb.oxygen.api.param.PageSortParam
/**
* Get group parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see PageSortParam
*/
@Schema(description = "用户组查询请求参数")
data class GroupGetParam(
/**
* Name to search for
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "查询用户组名称", example = "Group_1")
val searchName: String?,
/**
* Use regex
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(
description = "查询使用正则表达式",
allowableValues = ["true", "false"],
defaultValue = "false",
example = "false"
)
val searchRegex: Boolean = false,
) : PageSortParam()

View File

@@ -0,0 +1,52 @@
package top.fatweb.oxygen.api.param.permission.group
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.NotNull
/**
* Update group parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组更新请求参数")
data class GroupUpdateParam(
/**
* ID
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组 ID", required = true)
@field:NotNull(message = "ID can not be null")
val id: Long?,
/**
* Name
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组名称", required = true, example = "Group_1")
@field:NotBlank(message = "Name can not be blank")
val name: String?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true,
/**
* List of role IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色 ID 列表")
val roleIds: List<Long>?
)

View File

@@ -0,0 +1,32 @@
package top.fatweb.oxygen.api.param.permission.group
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotNull
/**
* Update status of group parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组更改状态请求参数")
data class GroupUpdateStatusParam(
/**
* ID
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组 ID", required = true)
@field:NotNull(message = "ID can not be null")
val id: Long?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true
)

View File

@@ -0,0 +1,41 @@
package top.fatweb.oxygen.api.param.permission.role
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
/**
* Add role parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色添加请求参数")
data class RoleAddParam(
/**
* Name
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色名称", required = true, example = "Role_1")
@field:NotBlank(message = "Name can not be blank")
val name: String?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true,
/**
* List of power IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "权限 ID 列表")
val powerIds: List<Long>?
)

View File

@@ -0,0 +1,21 @@
package top.fatweb.oxygen.api.param.permission.role
import io.swagger.v3.oas.annotations.media.Schema
/**
* Delete role parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色删除请求参数")
data class RoleDeleteParam(
/**
* List of role IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色 ID 列表", required = true)
val ids: List<Long>
)

View File

@@ -0,0 +1,37 @@
package top.fatweb.oxygen.api.param.permission.role
import io.swagger.v3.oas.annotations.media.Schema
import top.fatweb.oxygen.api.param.PageSortParam
/**
* Get role parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see PageSortParam
*/
@Schema(description = "角色查询请求参数")
data class RoleGetParam(
/**
* Name to search for
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "查询角色名称", example = "Role_1")
val searchName: String?,
/**
* Use regex
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(
description = "查询使用正则表达式",
allowableValues = ["true", "false"],
defaultValue = "false",
example = "false"
)
val searchRegex: Boolean = false,
) : PageSortParam()

View File

@@ -0,0 +1,52 @@
package top.fatweb.oxygen.api.param.permission.role
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.NotNull
/**
* Update role parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色更新请求参数")
data class RoleUpdateParam(
/**
* ID
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色 ID", required = true)
@field:NotNull(message = "Role id can not be null")
val id: Long?,
/**
* Name
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色名称", required = true, example = "Role_1")
@field:NotBlank(message = "Name can not be blank")
val name: String?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true,
/**
* List of power IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "权限 ID 列表")
val powerIds: List<Long>?
)

View File

@@ -0,0 +1,32 @@
package top.fatweb.oxygen.api.param.permission.role
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotNull
/**
* Update status of role parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色更改状态请求参数")
data class RoleUpdateStatusParam(
/**
* ID
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色 ID", required = true)
@field:NotNull(message = "Role id can not be null")
val id: Long?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true
)

View File

@@ -0,0 +1,129 @@
package top.fatweb.oxygen.api.param.permission.user
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.Pattern
import java.time.LocalDateTime
/**
* Add user parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户添加请求参数")
data class UserAddParam(
/**
* Username
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户名", required = true, example = "User_1")
@field:NotBlank(message = "Username can not be blank")
val username: String?,
/**
* Password
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "密码(为空自动生成随机密码)")
val password: String?,
/**
* Verified
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "是否已验证", allowableValues = ["true", "false"], defaultValue = "false", example = "false")
val verified: Boolean = false,
/**
* Locking
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "锁定", allowableValues = ["true", "false"], defaultValue = "false", example = "false")
val locking: Boolean = false,
/**
* Expiration time
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see LocalDateTime
*/
@Schema(description = "过期时间", example = "1900-01-01T00:00:00.000Z")
val expiration: LocalDateTime?,
/**
* Credentials expiration time
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see LocalDateTime
*/
@Schema(description = "认证过期时间", example = "1900-01-01T00:00:00.000Z")
val credentialsExpiration: LocalDateTime?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true,
/**
* Nickname
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "昵称", required = true, example = "Nickname_1")
@field:NotBlank(message = "Nickname can not be blank")
val nickname: String?,
/**
* Avatar base63
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "头像")
val avatar: String?,
/**
* Email
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "邮箱", required = true, example = "user@email.com")
@NotBlank(message = "Email can not be blank")
@Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*\$", message = "Illegal email address")
val email: String?,
/**
* List of role IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色 ID 列表")
val roleIds: List<Long>?,
/**
* List of group IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组 ID 列表")
val groupIds: List<Long>?
)

View File

@@ -0,0 +1,21 @@
package top.fatweb.oxygen.api.param.permission.user
import io.swagger.v3.oas.annotations.media.Schema
/**
* Delete user parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户删除请求参数")
data class UserDeleteParam(
/**
* List of user IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户 ID 列表", required = true)
val ids: List<Long>
)

View File

@@ -0,0 +1,51 @@
package top.fatweb.oxygen.api.param.permission.user
import io.swagger.v3.oas.annotations.media.Schema
import top.fatweb.oxygen.api.param.PageSortParam
/**
* Get user parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see PageSortParam
*/
@Schema(description = "用户查询请求参数")
data class UserGetParam(
/**
* Type of search
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(
description = "搜索类型",
allowableValues = ["ALL", "ID", "USERNAME", "NICKNAME", "EMAIL"],
defaultValue = "ALL",
example = "ALL"
)
val searchType: String = "ALL",
/**
* Value to search for
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "查询内容", example = "User_1")
val searchValue: String?,
/**
* Use regex
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(
description = "查询使用正则表达式",
allowableValues = ["true", "false"],
defaultValue = "false",
example = "false"
)
val searchRegex: Boolean = false,
) : PageSortParam()

View File

@@ -0,0 +1,131 @@
package top.fatweb.oxygen.api.param.permission.user
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.NotNull
import jakarta.validation.constraints.Pattern
import java.time.LocalDateTime
/**
* Update user parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户更新请求参数")
data class UserUpdateParam(
/**
* ID
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户 ID", required = true)
@field:NotNull(message = "ID can not be null")
val id: Long?,
/**
* Username
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户名", required = true, example = "User_1")
@field:NotBlank(message = "Username can not be blank")
val username: String?,
/**
* Verified
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "是否已验证", allowableValues = ["true", "false"], defaultValue = "false", example = "false")
val verified: Boolean = false,
/**
* Locking
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "锁定", allowableValues = ["true", "false"], defaultValue = "false", example = "false")
val locking: Boolean = false,
/**
* Expiration time
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see LocalDateTime
*/
@Schema(description = "过期时间", example = "1900-01-01T00:00:00.000Z")
val expiration: LocalDateTime?,
/**
* Credentials expiration time
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see LocalDateTime
*/
@Schema(description = "认证过期时间", example = "1900-01-01T00:00:00.000Z")
val credentialsExpiration: LocalDateTime?,
/**
* Enable
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "启用", allowableValues = ["true", "false"], defaultValue = "true", example = "true")
val enable: Boolean = true,
/**
* Nickname
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "昵称", required = true, example = "Nickname_1")
@field:NotBlank(message = "Nickname can not be blank")
val nickname: String?,
/**
* Avatar base64
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "头像")
val avatar: String?,
/**
* Email
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "邮箱", required = true, example = "user@email.com")
@NotBlank(message = "Email can not be blank")
@Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*\$", message = "Illegal email address")
val email: String?,
/**
* List of role IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "角色 ID 列表")
val roleIds: List<Long>?,
/**
* List of group IDs
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户组 ID 列表")
val groupIds: List<Long>?
)

View File

@@ -0,0 +1,45 @@
package top.fatweb.oxygen.api.param.permission.user
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.NotNull
import java.time.LocalDateTime
/**
* Update password of user parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户更改密码请求参数")
data class UserUpdatePasswordParam(
/**
* ID
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户 ID", required = true)
@field:NotNull(message = "ID can not be null")
val id: Long?,
/**
* New password
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "新密码", required = true)
@field:NotBlank(message = "Password can not be blank")
val password: String?,
/**
* Credentials expiration time
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see LocalDateTime
*/
@Schema(description = "认证过期时间", example = "1900-01-01T00:00:00.000Z")
val credentialsExpiration: LocalDateTime?
)

View File

@@ -0,0 +1,45 @@
package top.fatweb.oxygen.api.param.system
import com.baomidou.mybatisplus.annotation.EnumValue
import com.fasterxml.jackson.annotation.JsonValue
import io.swagger.v3.oas.annotations.media.Schema
/**
* Get active information parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
data class ActiveInfoGetParam(
/**
* Scope
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(
description = "范围",
allowableValues = ["WEAK", "MONTH", "QUARTER", "YEAR", "TWO_YEARS", "THREE_YEARS", "FIVE_YEARS", "ALL"],
defaultValue = "WEAK",
example = "WEAK"
)
val scope: Scope = Scope.WEAK
) {
enum class Scope(@field:EnumValue @field:JsonValue val code: String) {
WEAK("WEAK"),
MONTH("MONTH"),
QUARTER("QUARTER"),
YEAR("YEAR"),
TWO_YEARS("TWO_YEARS"),
THREE_YEARS("THREE_YEARS"),
FIVE_YEARS("FIVE_YEARS"),
ALL("ALL")
}
}

View File

@@ -0,0 +1,48 @@
package top.fatweb.oxygen.api.param.system
import io.swagger.v3.oas.annotations.media.Schema
/**
* Base settings parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "基础设置请求参数")
data class BaseSettingsParam(
/**
* Application name
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "应用名称")
val appName: String?,
/**
* Application URL
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "应用 URL")
val appUrl: String?,
/**
* Verify URL
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "验证邮箱 URL")
val verifyUrl: String?,
/**
* Retrieve URL
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "找回密码 URL")
val retrieveUrl: String?
)

View File

@@ -0,0 +1,23 @@
package top.fatweb.oxygen.api.param.system
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.NotBlank
/**
* Mail send parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "邮件发送请求参数")
data class MailSendParam(
/**
* Receiver
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "接收者", required = true, example = "user@email.com")
@field:NotBlank
val to: String?
)

View File

@@ -0,0 +1,76 @@
package top.fatweb.oxygen.api.param.system
import io.swagger.v3.oas.annotations.media.Schema
import top.fatweb.oxygen.api.settings.MailSecurityType
/**
* Mail settings parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "邮件设置请求参数")
data class MailSettingsParam(
/**
* Host
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "SMTP 服务器")
val host: String?,
/**
* Port
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "端口号")
val port: Int?,
/**
* Security type
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "安全类型", allowableValues = ["None", "SSL/TLS", "StartTls"], defaultValue = "None")
val securityType: MailSecurityType? = MailSecurityType.NONE,
/**
* Username
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "用户名")
val username: String?,
/**
* Password
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "密码")
val password: String?,
/**
* Sender
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "发送者")
val from: String?,
/**
* Sender name
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "发送者名称")
val fromName: String?
)

View File

@@ -0,0 +1,47 @@
package top.fatweb.oxygen.api.param.system
import com.baomidou.mybatisplus.annotation.EnumValue
import com.fasterxml.jackson.annotation.JsonValue
import io.swagger.v3.oas.annotations.media.Schema
/**
* Get online information parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
data class OnlineInfoGetParam(
/**
* Scope
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(
description = "范围",
allowableValues = ["WEAK", "MONTH", "QUARTER", "YEAR", "TWO_YEARS", "THREE_YEARS", "FIVE_YEARS", "ALL"],
defaultValue = "WEAK",
example = "WEAK"
)
val scope: Scope = Scope.WEAK
) {
enum class Scope(@field:EnumValue @field:JsonValue val code: String) {
DAY("DAY"),
WEAK("WEAK"),
MONTH("MONTH"),
QUARTER("QUARTER"),
YEAR("YEAR"),
TWO_YEARS("TWO_YEARS"),
THREE_YEARS("THREE_YEARS"),
FIVE_YEARS("FIVE_YEARS"),
ALL("ALL")
}
}

View File

@@ -0,0 +1,80 @@
package top.fatweb.oxygen.api.param.system
import io.swagger.v3.oas.annotations.media.Schema
import org.springframework.format.annotation.DateTimeFormat
import top.fatweb.oxygen.api.param.PageSortParam
import java.time.LocalDateTime
/**
* Get system log parameters
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see PageSortParam
*/
@Schema(description = "获取系统日志请求参数")
data class SysLogGetParam(
/**
* Log type
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "类型过滤(多个使用逗号分隔)", allowableValues = ["INFO", "ERROR"], example = "INFO")
val logType: String?,
/**
* Request method to filter
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(
description = "请求方式过滤(多个使用逗号分隔)",
allowableValues = ["GET", "POST", "PUT", "PATCH", "DELETE", "DELETE", "OPTIONS"],
example = "GET,POST"
)
val requestMethod: String?,
/**
* Request URL to search for
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
@Schema(description = "查询请求 Url")
val searchRequestUrl: String?,
/**
* Use regex
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
*/
/*
@Schema(description = "查询使用正则表达式", allowableValues = ["true", "false"], defaultValue = "false")
val searchRegex: Boolean = false,
*/
/**
* Start time to search for
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see LocalDateTime
*/
@Schema(description = "查询开始时间", example = "1900-01-01T00:00:00.000Z")
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
val searchStartTime: LocalDateTime?,
/**
* End time to search for
*
* @author FatttSnake, fatttsnake@gmail.com
* @since 1.0.0
* @see LocalDateTime
*/
@Schema(description = "查询结束时间", example = "1900-01-01T00:00:00.000Z")
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
val searchEndTime: LocalDateTime?
) : PageSortParam()