Merge pull request 'dev' (#2) from dev into master
Reviewed-on: #2 项目结构修改,新增代码生成器
This commit is contained in:
commit
8d37adc92c
|
@ -18,6 +18,8 @@ target/
|
|||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
logs
|
||||
logs/**
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
|
@ -30,4 +32,4 @@ build/
|
|||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
.vscode/
|
|
@ -0,0 +1,74 @@
|
|||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>common</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>common-generator</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>common-utils</name>
|
||||
<url>https://maven.apache.org</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
<version>2.1</version>
|
||||
</dependency>
|
||||
<!-- velocity -->
|
||||
<dependency>
|
||||
<groupId>org.apache.velocity</groupId>
|
||||
<artifactId>velocity-engine-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.velocity.tools</groupId>
|
||||
<artifactId>velocity-tools-generic</artifactId>
|
||||
</dependency>
|
||||
<!--mysql-->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<!-- mysql连接池 -->
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<version>5.1.0</version>
|
||||
</dependency>
|
||||
<!-- mybatis-plus -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
||||
</dependency>
|
||||
<!-- 数据库代码生成器 - 新版 -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-generator</artifactId>
|
||||
<version>3.5.6</version>
|
||||
</dependency>
|
||||
<!-- 数据库代码生成器 - 旧版 -->
|
||||
<!-- <dependency> -->
|
||||
<!-- <groupId>com.baomidou</groupId> -->
|
||||
<!-- <artifactId>mybatis-plus-generator</artifactId> -->
|
||||
<!-- <version>3.4.1</version> -->
|
||||
<!-- </dependency> -->
|
||||
<!-- <dependency> -->
|
||||
<!-- <groupId>org.apache.velocity</groupId> -->
|
||||
<!-- <artifactId>velocity-engine-core</artifactId> -->
|
||||
<!-- <version>2.0</version> -->
|
||||
<!-- </dependency> -->
|
||||
<!-- spring-web -->
|
||||
</dependencies>
|
||||
</project>
|
|
@ -1,6 +1,5 @@
|
|||
package cn.bunny.common.generator;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
|
||||
import com.baomidou.mybatisplus.generator.config.OutputFile;
|
||||
|
@ -11,16 +10,16 @@ import java.util.Collections;
|
|||
|
||||
public class NewCodeGet {
|
||||
// 数据连接
|
||||
public static final String sqlHost = "jdbc:mysql://106.15.251.123:3305/guigu-oa?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
|
||||
public static final String sqlHost = "jdbc:mysql://106.15.251.123:3305/bunny_docs?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
|
||||
// 作者名称
|
||||
public static final String author = "Bunny";
|
||||
// 公共路径
|
||||
public static final String outputDir = "G:\\web项目\\Bunny-Cli\\Java\\java-template\\service";
|
||||
public static final String outputDir = "F:\\web项目\\PC\\BunnyNote\\BunnyBBS-server\\service\\service-web";
|
||||
// 实体类名称
|
||||
public static final String entity = "Bunny";
|
||||
|
||||
public static void main(String[] args) {
|
||||
Generation("sys_menu");
|
||||
Generation("article");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -42,7 +41,7 @@ public class NewCodeGet {
|
|||
.packageConfig(builder -> {
|
||||
builder.entity(entity)// 实体类包名
|
||||
// TODO 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
|
||||
.parent("cn.bunny.service")
|
||||
.parent("cn.bunny.service.web")
|
||||
.controller("controller")// 控制层包名
|
||||
.mapper("mapper")// mapper层包名
|
||||
.service("service")// service层包名
|
|
@ -1,43 +0,0 @@
|
|||
package cn.bunny.common.result.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 统一返回结果状态信息类
|
||||
*/
|
||||
@Getter
|
||||
public enum ResultCodeEnum {
|
||||
SUCCESS(200, "操作成功"),
|
||||
SUCCESS_LOGOUT(200, "退出成功"),
|
||||
FAIL(201, "失败"),
|
||||
SERVICE_ERROR(2012, "服务异常"),
|
||||
DATA_ERROR(204, "数据异常"),
|
||||
LOGIN_MOBLE_ERROR(204, "登录错误"),
|
||||
ILLEGAL_REQUEST(205, "非法请求"),
|
||||
REPEAT_SUBMIT(206, "重复提交"),
|
||||
|
||||
LOGIN_AUTH(208, "未登陆"),
|
||||
PERMISSION(209, "没有权限"),
|
||||
|
||||
URL_ENCODE_ERROR(216, "URL编码失败"),
|
||||
ILLEGAL_CALLBACK_REQUEST_ERROR(217, "非法回调请求"),
|
||||
FETCH_ACCESSTOKEN_FAILD(218, "获取accessToken失败"),
|
||||
FETCH_USERINFO_ERROR(219, "获取用户信息失败"),
|
||||
|
||||
|
||||
FAIL_REQUEST_NOT_AUTH(403, "用户未认证"),
|
||||
FAIL_NO_ACCESS_DENIED(403, "无权访问"),
|
||||
LOGGED_IN_FROM_ANOTHER_DEVICE(403, "没有权限访问"),
|
||||
THE_SAME_USER_HAS_LOGGED_IN(403, "相同用户已登录"),
|
||||
SESSION_EXPIRATION(403, "会话过期");
|
||||
|
||||
|
||||
private final Integer code;
|
||||
|
||||
private final String message;
|
||||
|
||||
ResultCodeEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
}
|
|
@ -19,53 +19,9 @@
|
|||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.14</version>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>model</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
<version>2.1</version>
|
||||
</dependency>
|
||||
<!--mysql-->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<!-- mysql连接池 -->
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<version>5.1.0</version>
|
||||
</dependency>
|
||||
<!-- mybatis-plus -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
||||
</dependency>
|
||||
<!-- 数据库代码生成器 - 新版 -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-generator</artifactId>
|
||||
<version>3.5.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.velocity</groupId>
|
||||
<artifactId>velocity-engine-core</artifactId>
|
||||
<version>2.3</version>
|
||||
</dependency>
|
||||
<!-- 数据库代码生成器 - 旧版 -->
|
||||
<!-- <dependency> -->
|
||||
<!-- <groupId>com.baomidou</groupId> -->
|
||||
<!-- <artifactId>mybatis-plus-generator</artifactId> -->
|
||||
<!-- <version>3.4.1</version> -->
|
||||
<!-- </dependency> -->
|
||||
<!-- <dependency> -->
|
||||
<!-- <groupId>org.apache.velocity</groupId> -->
|
||||
<!-- <artifactId>velocity-engine-core</artifactId> -->
|
||||
<!-- <version>2.0</version> -->
|
||||
<!-- </dependency> -->
|
||||
<!-- spring-web -->
|
||||
</dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
package cn.bunny.common.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 信息提示常量类
|
||||
*/
|
||||
@Data
|
||||
public class CommonMessageConstant {
|
||||
public static final String PASSWORD_ERROR = "密码错误";
|
||||
public static final String OLD_PASSWORD_ERROR = "旧密码不匹配";
|
||||
public static final String OLD_PASSWORD_SAME_NEW_PASSWORD = "旧密码与新密码相同";
|
||||
public static final String ACCOUNT_NOT_FOUND = "账号不存在";
|
||||
public static final String ACCOUNT_LOCKED = "账号被锁定";
|
||||
public static final String UNKNOWN_ERROR = "未知错误";
|
||||
public static final String USER_NOT_LOGIN = "用户未登录";
|
||||
public static final String USER_TOKEN_OUT_OF_DATE = "用户登录过期";
|
||||
public static final String LOGIN_FAILED = "登录失败";
|
||||
public static final String UPLOAD_FAILED = "文件上传失败";
|
||||
public static final String PASSWORD_EDIT_FAILED = "密码修改失败";
|
||||
public static final String ALREADY_EXISTS = "已存在";
|
||||
public static final String REQUEST_NOT_EMPTY = "请求不为空";
|
||||
public static final String UPDATE_ID_IS_NOT_EMPTY = "删除id不能为空";
|
||||
public static final String DELETE_ID_IS_NOT_EMPTY = "修改id不能为空";
|
||||
public static final String MENU_IS_NOT_EXIST = "菜单不存在";
|
||||
public static final String SAVE_DTO_IS_NULL = "添加参数不能为空";
|
||||
public static final String UPDATE_DTO_IS_NULL = "修改参数不能为空";
|
||||
public static final String FIND_ID_IS_NOT_EMPTY = "查询ID不能为空";
|
||||
public static final String MESSAGE_CODE_NOT_PASS = "短信验证码未过期";
|
||||
public static final String MESSAGE_CODE_UNAUTHORIZED = "短信验证码未授权,请联系管理员";
|
||||
public static final String VERIFICATION_CODE_ERROR = "验证码错误";
|
||||
public static final String USER_DOES_NOT_EXIST = "用户不存在";
|
||||
public static final String USER_DOES_IS_EXIST = "用户已存在";
|
||||
public static final String VERIFICATION_CODE_IS_EMPTY = "请先发送验证码";
|
||||
public static final String LOGIN_DTO_IS_EMPTY = "登录参数不能为空";
|
||||
public static final String TOKEN_IS_EMPTY = "token为空";
|
||||
public static final String DATA_IS_EMPTY = "数据为空";
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
package cn.bunny.common.constant;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ExceptionConstant {
|
||||
public static final String USER_NOT_FOUND = "用户不存在";
|
||||
public static final String USERNAME_IS_EMPTY = "用户名不能为空";
|
||||
public static final String PASSWORD_ERROR = "密码错误";
|
||||
public static final String PASSWORD_IS_EMPTY = "密码不能为空";
|
||||
public static final String CAPTCHA_IS_EMPTY = "提交验证码不能为空";
|
||||
public static final String KEY_IS_EMPTY = "验证码key不能为空";
|
||||
public static final String VERIFICATION_CODE_DOES_NOT_MATCH = "验证码不匹配";
|
||||
public static final String VERIFICATION_CODE_IS_EMPTY = "验证码失效或不存在";
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package cn.bunny.common.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 密码常量
|
||||
*/
|
||||
@Data
|
||||
public class PasswordConstant {
|
||||
// 默认密码
|
||||
public static final String DEFAULT_PASSWORD = "123456";
|
||||
// JWT密码
|
||||
public static final String DEFAULT_JWT_PASSWORD = "123456";
|
||||
// 默认头像
|
||||
public static final String AVTAR = "https://oss.aliyuncs.com/aliyun_id_photo_bucket/default_handsome.jpg";
|
||||
// 设置token过期时间
|
||||
public static final long TOKEN_EXPIRATION = 365L * 24 * 60 * 60 * 1000;
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
package cn.bunny.common.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* Redis用户前缀设置
|
||||
*/
|
||||
@Data
|
||||
public class RedisUserConstant {
|
||||
public static final String REDIS_CART_KEY = "user::";
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package cn.bunny.common.utils;
|
||||
|
||||
import cn.bunny.vo.system.comment.CommentVo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CommentUtil {
|
||||
/**
|
||||
* 构建树型结构
|
||||
*
|
||||
* @param commentList 评论列表
|
||||
* @return 结构列表
|
||||
*/
|
||||
public static List<CommentVo> buildTree(List<CommentVo> commentList) {
|
||||
// 构建树形结构
|
||||
List<CommentVo> tree = new ArrayList<>();
|
||||
// 遍历评论列表
|
||||
for (CommentVo comment : commentList) {
|
||||
// 找到顶级评论(没有父评论)
|
||||
if (comment.getPCommentId() == 0) {
|
||||
// 递归构建子评论
|
||||
comment.setChildren(getChildren(comment.getId(), commentList));
|
||||
tree.add(comment);
|
||||
}
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归获取子评论
|
||||
*
|
||||
* @param commentId 当前评论ID
|
||||
* @param commentList 评论列表
|
||||
* @return 子评论列表
|
||||
*/
|
||||
private static List<CommentVo> getChildren(Long commentId, List<CommentVo> commentList) {
|
||||
List<CommentVo> children = new ArrayList<>();
|
||||
|
||||
// 遍历评论列表
|
||||
for (CommentVo comment : commentList) {
|
||||
// 找到当前评论的子评论
|
||||
if (Long.valueOf(comment.getPCommentId()).equals(commentId)) {
|
||||
// 递归构建子评论的子评论
|
||||
comment.setChildren(getChildren(comment.getId(), commentList));
|
||||
children.add(comment);
|
||||
}
|
||||
}
|
||||
return children;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package cn.bunny.common.utils;
|
||||
|
||||
public class FileUtil {
|
||||
public static String getSize(Long fileSize) {
|
||||
double fileSizeInKB = fileSize / 1024.00;
|
||||
double fileSizeInMB = fileSizeInKB / 1024;
|
||||
double fileSizeInGB = fileSizeInMB / 1024;
|
||||
|
||||
String size;
|
||||
if (fileSizeInGB >= 1) {
|
||||
fileSizeInGB = Double.parseDouble(String.format("%.2f", fileSizeInGB));
|
||||
size = fileSizeInGB + "GB";
|
||||
} else if (fileSizeInMB >= 1) {
|
||||
fileSizeInMB = Double.parseDouble(String.format("%.2f", fileSizeInMB));
|
||||
size = fileSizeInMB + "MB";
|
||||
} else if (fileSizeInKB >= 1) {
|
||||
fileSizeInKB = Double.parseDouble(String.format("%.2f", fileSizeInKB));
|
||||
size = fileSizeInKB + "KB";
|
||||
} else {
|
||||
size = fileSize + "B";
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>bunny-template-mirror-server</artifactId>
|
||||
<artifactId>bunny-mirror-server</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
|
@ -13,16 +13,14 @@
|
|||
<url>https://maven.apache.org</url>
|
||||
<modules>
|
||||
<module>service-utils</module>
|
||||
<module>common-generator</module>
|
||||
<module>common-utils</module>
|
||||
<module>spring-security</module>
|
||||
<module>common-result</module>
|
||||
</modules>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>model</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
|
|
|
@ -19,13 +19,19 @@
|
|||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>common-utils</artifactId>
|
||||
<artifactId>model</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- httpclient -->
|
||||
<dependency>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>common-result</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.14</version>
|
||||
</dependency>
|
||||
<!-- knife4j -->
|
||||
<dependency>
|
||||
<groupId>com.github.xiaoymin</groupId>
|
||||
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
@ -42,5 +48,10 @@
|
|||
<artifactId>redisson</artifactId>
|
||||
<version>3.26.1</version>
|
||||
</dependency>
|
||||
<!-- pagehelper -->
|
||||
<dependency>
|
||||
<groupId>com.github.pagehelper</groupId>
|
||||
<artifactId>pagehelper</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
|||
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import com.github.pagehelper.PageInterceptor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
@ -23,7 +24,9 @@ public class MybatisPlusConfig {
|
|||
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
// 分页插件
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
||||
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
|
||||
paginationInnerInterceptor.setMaxLimit(100L);// ? 设置最大分页为100
|
||||
interceptor.addInnerInterceptor(paginationInnerInterceptor);
|
||||
// 乐观锁
|
||||
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
|
||||
// 防止全表删除
|
||||
|
@ -31,4 +34,9 @@ public class MybatisPlusConfig {
|
|||
|
||||
return interceptor;
|
||||
}
|
||||
|
||||
@Bean// pagehelper分页插件需要配的拦截器
|
||||
public PageInterceptor pageInterceptor() {
|
||||
return new PageInterceptor();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,14 +63,12 @@ public class RedisConfiguration {
|
|||
log.info("RedisConfiguration===>解决cache(@Cacheable)把数据缓存到redis中的value是乱码问题");
|
||||
|
||||
// 配置序列化
|
||||
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
|
||||
config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
|
||||
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
|
||||
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
|
||||
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jsonRedisSerializer()))
|
||||
.entryTtl(Duration.ofDays(365));
|
||||
.entryTtl(Duration.ofDays(30));
|
||||
|
||||
RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
|
||||
.cacheDefaults(config).build();
|
||||
return cacheManager;
|
||||
return RedisCacheManager.builder(factory).cacheDefaults(config).build();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,8 +3,8 @@ package cn.bunny.common.service.context;
|
|||
public class BaseContext {
|
||||
private static final ThreadLocal<Long> userId = new ThreadLocal<>();
|
||||
private static final ThreadLocal<String> username = new ThreadLocal<String>();
|
||||
private static final ThreadLocal<Long> wareId = new ThreadLocal<>();
|
||||
private static final ThreadLocal<Long> adminId = new ThreadLocal<>();
|
||||
private static final ThreadLocal<String> adminName = new ThreadLocal<>();
|
||||
|
||||
// 用户id相关
|
||||
public static Long getUserId() {
|
||||
|
@ -15,10 +15,6 @@ public class BaseContext {
|
|||
userId.set(_userId);
|
||||
}
|
||||
|
||||
public static void removeUserId() {
|
||||
userId.remove();
|
||||
}
|
||||
|
||||
public static String getUsername() {
|
||||
return username.get();
|
||||
}
|
||||
|
@ -27,6 +23,11 @@ public class BaseContext {
|
|||
username.set(_username);
|
||||
}
|
||||
|
||||
public static void removeUser() {
|
||||
username.remove();
|
||||
userId.remove();
|
||||
}
|
||||
|
||||
// adminId 相关
|
||||
public static Long getAdminId() {
|
||||
return adminId.get();
|
||||
|
@ -36,7 +37,16 @@ public class BaseContext {
|
|||
adminId.set(_adminId);
|
||||
}
|
||||
|
||||
public static void removeAdminId() {
|
||||
public static String getAdminName() {
|
||||
return adminName.get();
|
||||
}
|
||||
|
||||
public static void setAdminName(String _adminName) {
|
||||
adminName.set(_adminName);
|
||||
}
|
||||
|
||||
public static void removeAdmin() {
|
||||
adminName.remove();
|
||||
adminId.remove();
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
package cn.bunny.common.service.exception;
|
||||
|
||||
import cn.bunny.common.result.enums.ResultCodeEnum;
|
||||
import cn.bunny.result.ResultCodeEnum;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package cn.bunny.common.service.exception;
|
||||
|
||||
import cn.bunny.common.constant.CommonMessageConstant;
|
||||
import cn.bunny.common.result.utils.Result;
|
||||
import cn.bunny.common.result.enums.ResultCodeEnum;
|
||||
|
||||
import cn.bunny.result.Result;
|
||||
import cn.bunny.result.ResultCodeEnum;
|
||||
import cn.bunny.result.constant.ExceptionConstant;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
@ -58,7 +59,7 @@ public class GlobalExceptionHandler {
|
|||
public Result<String> error(AccessDeniedException exception) throws AccessDeniedException {
|
||||
log.error("GlobalExceptionHandler===>spring security异常:{}", exception.getMessage());
|
||||
|
||||
return Result.error(ResultCodeEnum.PERMISSION);
|
||||
return Result.error(ResultCodeEnum.SERVICE_ERROR);
|
||||
}
|
||||
|
||||
// 处理SQL异常
|
||||
|
@ -72,10 +73,10 @@ public class GlobalExceptionHandler {
|
|||
// 截取用户名
|
||||
String username = message.split(" ")[2];
|
||||
// 错误信息
|
||||
String errorMessage = username + CommonMessageConstant.ALREADY_EXISTS;
|
||||
String errorMessage = username + ExceptionConstant.ALREADY_USER_Exception;
|
||||
return Result.error(errorMessage);
|
||||
} else {
|
||||
return Result.error(CommonMessageConstant.UNKNOWN_ERROR);
|
||||
return Result.error(ExceptionConstant.UNKNOWN_Exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package cn.bunny.common.properties;
|
||||
package cn.bunny.common.service.properties;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Component
|
||||
@Configuration
|
||||
@ConfigurationProperties(prefix = "bunny.snowflake")
|
||||
@Data
|
||||
public class SnowflakeProperties {
|
|
@ -6,13 +6,13 @@ import org.springframework.util.StringUtils;
|
|||
import java.util.Date;
|
||||
|
||||
public class JwtHelper {
|
||||
private static final long tokenExpiration = 365L * 24 * 60 * 60 * 1000;
|
||||
private static final long tokenExpiration = 24 * 60 * 60 * 1000;
|
||||
private static final String tokenSignKey = "Bunny-Java-Template";
|
||||
|
||||
public static String createToken(Long userId, String userName) {
|
||||
public static String createToken(Long userId, String userName, Integer day) {
|
||||
return Jwts.builder()
|
||||
.setSubject("Bunny-USER")
|
||||
.setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
|
||||
.setExpiration(new Date(System.currentTimeMillis() + tokenExpiration * day))
|
||||
.claim("userId", userId)
|
||||
.claim("userName", userName)
|
||||
.signWith(SignatureAlgorithm.HS256, tokenSignKey)
|
||||
|
@ -25,11 +25,11 @@ public class JwtHelper {
|
|||
|
||||
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
|
||||
Claims claims = claimsJws.getBody();
|
||||
Integer userId = (Integer) claims.get("userId");
|
||||
return userId.longValue();
|
||||
|
||||
return Long.valueOf(String.valueOf(claims.get("userId")));
|
||||
}
|
||||
|
||||
public static String getUserName(String token) {
|
||||
public static String getUsername(String token) {
|
||||
if (!StringUtils.hasText(token)) return "";
|
||||
|
||||
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
|
||||
|
@ -42,9 +42,9 @@ public class JwtHelper {
|
|||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String token = JwtHelper.createToken(7L, "admin");
|
||||
System.out.println(token);
|
||||
String token = JwtHelper.createToken(7L, "admin", 7);
|
||||
// token = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_6tWKi5NUrJScirNy6vUDQ12DVLSUUqtKFCyMjQ3MTc0NrYwNddRKi1OLfJMUbKyNDIwNLQwMDAzg4j5JeamAjUbGhtaWhoYGJqaOBQW6iXn5yrVAgCrO9jLWAAAAA.DS1wYprXGoIMrjtUWfDSN9AG5gWoRZ17oAgcvC0kwag";
|
||||
System.out.println(JwtHelper.getUserId(token));
|
||||
System.out.println(JwtHelper.getUserName(token));
|
||||
System.out.println(JwtHelper.getUsername(token));
|
||||
}
|
||||
}
|
|
@ -1,21 +1,24 @@
|
|||
package cn.bunny.common.service.utils;
|
||||
|
||||
import cn.bunny.common.result.utils.Result;
|
||||
import cn.bunny.result.Result;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class ResponseUtil {
|
||||
|
||||
public static void out(HttpServletResponse response, Result r) {
|
||||
public static void out(HttpServletResponse response, Result<Object> result) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
// 注册JavaTimeModule模块
|
||||
mapper.registerModule(new JavaTimeModule());
|
||||
response.setContentType("application/json;charset=UTF-8");
|
||||
response.setStatus(HttpStatus.OK.value());
|
||||
response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
|
||||
try {
|
||||
mapper.writeValue(response.getWriter(), r);
|
||||
mapper.writeValue(response.getWriter(), result);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package cn.bunny.common.service.utils;
|
||||
|
||||
|
||||
import cn.bunny.common.properties.SnowflakeProperties;
|
||||
import cn.bunny.common.service.properties.SnowflakeProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
package cn.bunny.security.filter;
|
||||
|
||||
import cn.bunny.common.service.context.BaseContext;
|
||||
import cn.bunny.common.service.utils.JwtHelper;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TokenAuthenticationFilter extends OncePerRequestFilter {
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
public TokenAuthenticationFilter(RedisTemplate<String, Object> redisTemplate) {
|
||||
this.redisTemplate = redisTemplate;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
|
||||
String token = request.getHeader("token");
|
||||
|
||||
// login请求就没token,直接放行,因为后边有其他的过滤器
|
||||
if (token == null) {
|
||||
doFilter(request, response, chain);
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果是登录接口,直接放行
|
||||
UsernamePasswordAuthenticationToken authentication = getAuthentication(request);
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
|
||||
private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request) {
|
||||
// 请求头是否有token
|
||||
String token = request.getHeader("token");
|
||||
if (StringUtils.hasText(token)) {
|
||||
String username = JwtHelper.getUserName(token);
|
||||
if (StringUtils.hasText(username)) {
|
||||
// 当前用户信息放到ThreadLocal里面
|
||||
BaseContext.setUserId(JwtHelper.getUserId(token));
|
||||
BaseContext.setUsername(username);
|
||||
|
||||
// 通过username从redis获取权限数据
|
||||
String authString = (String) redisTemplate.opsForValue().get(username);
|
||||
// 把redis获取字符串权限数据转换要求集合类型 List<SimpleGrantedAuthority>
|
||||
if (StringUtils.hasText(authString)) {
|
||||
List<Map> maplist = JSON.parseArray(authString, Map.class);
|
||||
System.out.println(maplist);
|
||||
List<SimpleGrantedAuthority> authList = new ArrayList<>();
|
||||
for (Map map : maplist) {
|
||||
String authority = (String) map.get("authority");
|
||||
authList.add(new SimpleGrantedAuthority(authority));
|
||||
}
|
||||
return new UsernamePasswordAuthenticationToken(username, null, authList);
|
||||
} else {
|
||||
return new UsernamePasswordAuthenticationToken(username, null, new ArrayList<>());
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
package cn.bunny.security.filter;
|
||||
|
||||
import cn.bunny.common.result.utils.Result;
|
||||
import cn.bunny.common.service.utils.JwtHelper;
|
||||
import cn.bunny.common.service.utils.ResponseUtil;
|
||||
import cn.bunny.entity.system.Login;
|
||||
import cn.bunny.common.result.enums.ResultCodeEnum;
|
||||
import cn.bunny.security.custom.CustomUser;
|
||||
import cn.bunny.security.handelr.SecurityAuthenticationFailureHandler;
|
||||
import cn.bunny.security.handelr.SecurityAuthenticationSuccessHandler;
|
||||
import cn.bunny.vo.system.LoginVo;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 由于SpringSecurity的登录只能是表单形式 并且用户名密码需要时username、password,可以通过继承 UsernamePasswordAuthenticationFilter 获取登录请求的参数
|
||||
* 再去设置到 UsernamePasswordAuthenticationToken 中 来改变请求传参方式、参数名等 或者也可以在登录的时候加入其他参数等等
|
||||
* 也可以在这里添加验证码、短信等的验证
|
||||
*/
|
||||
public class TokenLoginFilter extends UsernamePasswordAuthenticationFilter {
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
// 构造方法
|
||||
public TokenLoginFilter(AuthenticationConfiguration authenticationConfiguration, RedisTemplate<String, Object> redisTemplate) throws Exception {
|
||||
this.setAuthenticationSuccessHandler(new SecurityAuthenticationSuccessHandler());
|
||||
this.setAuthenticationFailureHandler(new SecurityAuthenticationFailureHandler());
|
||||
this.setPostOnly(false);
|
||||
// 指定登录接口及提交方式,可以指定任意路径
|
||||
this.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher("/admin/system/index/login", "POST"));
|
||||
this.setAuthenticationManager(authenticationConfiguration.getAuthenticationManager());
|
||||
this.redisTemplate = redisTemplate;
|
||||
}
|
||||
|
||||
// 登录认证
|
||||
// 获取输入的用户名和密码,调用方法认证
|
||||
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
|
||||
try {
|
||||
// 获取用户信息
|
||||
LoginVo loginVo = new ObjectMapper().readValue(request.getInputStream(), LoginVo.class);
|
||||
// 封装对象
|
||||
Authentication authenticationToken = new UsernamePasswordAuthenticationToken(loginVo.getUsername(), loginVo.getPassword());
|
||||
// 调用方法
|
||||
return this.getAuthenticationManager().authenticate(authenticationToken);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
// 认证成功调用方法
|
||||
protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication auth) {
|
||||
// 获取当前用户
|
||||
CustomUser customUser = (CustomUser) auth.getPrincipal();
|
||||
// 生成token
|
||||
String token = JwtHelper.createToken(customUser.getSysUser().getId(), customUser.getSysUser().getUsername());
|
||||
|
||||
// 获取当前用户权限数据,放到Redis里面 key:username value:权限数据
|
||||
redisTemplate.opsForValue().set(customUser.getUsername(), JSON.toJSONString(customUser.getAuthorities()));
|
||||
|
||||
// 返回
|
||||
Login login = Login.builder().token(token).build();
|
||||
ResponseUtil.out(response, Result.success(login));
|
||||
}
|
||||
|
||||
// 认证失败调用方法
|
||||
protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) {
|
||||
ResponseUtil.out(response, Result.error(null, ResultCodeEnum.LOGIN_MOBLE_ERROR));
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
package cn.bunny.security.service;
|
||||
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
|
||||
public interface CustomUserDetailsService extends org.springframework.security.core.userdetails.UserDetailsService {
|
||||
/**
|
||||
* 根据用户名获取用户对象(获取不到直接抛异常)
|
||||
*/
|
||||
@Override
|
||||
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
1715325213000|2024-05-10 15:13:33|/favicon.ico|1|0|1|1|14|0|0|1
|
||||
1715325213000|2024-05-10 15:13:33|/|1|0|1|0|52|0|0|1
|
||||
1715325213000|2024-05-10 15:13:33|__total_inbound_traffic__|2|0|2|1|33|0|0|0
|
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>bunny-template-mirror-server</artifactId>
|
||||
<artifactId>bunny-mirror-server</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
|
@ -22,6 +22,12 @@
|
|||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
<!-- hu tool -->
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
</dependency>
|
||||
<!-- fastjson2 -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.fastjson2</groupId>
|
||||
<artifactId>fastjson2</artifactId>
|
||||
|
@ -36,15 +42,12 @@
|
|||
<groupId>com.github.xiaoymin</groupId>
|
||||
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<!-- spring-security -->
|
||||
<!-- 实体类注解 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
</dependency>
|
||||
<!-- spring-security-test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-test</artifactId>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
<version>1.6.14</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package cn.bunny.dto.article;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class LoadArticleListDto {
|
||||
private Integer pBoardId;
|
||||
private Integer boardId;
|
||||
private Integer orderType = 1;
|
||||
|
||||
public void getOrderType(Integer orderType) {
|
||||
this.orderType = Objects.requireNonNullElse(orderType, 1);
|
||||
}
|
||||
}
|
|
@ -1,17 +1,15 @@
|
|||
package cn.bunny.entity.system;
|
||||
package cn.bunny.dto.article;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class RoleByUser {
|
||||
private List<SysRole> assginRoleList;
|
||||
private List<SysRole> allRolesList;
|
||||
@Builder
|
||||
public class LoadUserArticleDto {
|
||||
private Long userId;
|
||||
private Integer type;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package cn.bunny.dto.common;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class CommentPostDto {
|
||||
private String articleId;
|
||||
private Integer pCommentId;
|
||||
private String content;
|
||||
private MultipartFile image;
|
||||
private Long replyUserId;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package cn.bunny.dto.common;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class CommentQueryDto {
|
||||
private String articleId;
|
||||
// time 时间查询、goods 点赞数量
|
||||
private String orderType;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package cn.bunny.dto.common;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class QueryTopTypeDto {
|
||||
private Long commentId;
|
||||
private Integer topType;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package cn.bunny.dto.email;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class EmailTemplateDto {
|
||||
// 模板名称
|
||||
private String templateName;
|
||||
// 主题
|
||||
private String subject;
|
||||
// 邮件内容
|
||||
private String body;
|
||||
// 邮件类型
|
||||
private String type;
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package cn.bunny.dto.email;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 添加邮箱用户
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class EmailUsersDto {
|
||||
// 修改时需要传
|
||||
private Long id;
|
||||
// 邮箱
|
||||
private String email;
|
||||
// 密码
|
||||
private String password;
|
||||
// SMTP服务器
|
||||
private String host;
|
||||
// 端口号
|
||||
private Integer port;
|
||||
// 邮箱协议
|
||||
private Integer smtpAgreement;
|
||||
// 是否为默认邮件
|
||||
private Boolean isDefault;
|
||||
}
|
|
@ -1,26 +1,19 @@
|
|||
package cn.bunny.vo.system;
|
||||
|
||||
package cn.bunny.dto.user;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 登录对象
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class LoginVo {
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@Builder
|
||||
public class LoginDto {
|
||||
// 用户名
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
// 密码
|
||||
private String password;
|
||||
// 邮箱验证码
|
||||
private String emailCode;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package cn.bunny.dto.user;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class RegisterDto {
|
||||
private String email;
|
||||
private String nickName;
|
||||
private String password;
|
||||
private String code;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package cn.bunny.dto.user;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class ResetPwdDto {
|
||||
private String email;
|
||||
private String password;
|
||||
private String emailCode;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package cn.bunny.dto.user;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* 修改用户信息
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class UserInfoDto {
|
||||
private String nickName;
|
||||
private String password;
|
||||
private MultipartFile avatar;
|
||||
private Integer sex;
|
||||
private String personDescription;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package cn.bunny.dto.user;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class UserIntegralRecordDto {
|
||||
private String startDate;
|
||||
private String endDate;
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.entity.system;
|
||||
package cn.bunny.dto.user;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
|
@ -6,9 +6,9 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Login {
|
||||
private String token;
|
||||
@Builder
|
||||
public class UserMessageDto {
|
||||
private String type;
|
||||
}
|
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -15,19 +15,26 @@ import java.util.Map;
|
|||
@Data
|
||||
public class BaseEntity implements Serializable {
|
||||
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@Schema(description = "唯一标识")
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty("唯一标识")
|
||||
private Long id;
|
||||
|
||||
@TableField("create_time")
|
||||
@ApiModelProperty("创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@TableField("update_time")
|
||||
@ApiModelProperty("更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
@TableField("update_user")
|
||||
@ApiModelProperty("操作用户ID")
|
||||
private Long updateUser;
|
||||
|
||||
@TableLogic
|
||||
@TableField("is_deleted")
|
||||
private Integer isDeleted;
|
||||
@ApiModelProperty("是否被删除")
|
||||
private Boolean isDeleted;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Map<String, Object> param = new HashMap<>();
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
package cn.bunny.entity.system;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Schema(description = "部门")
|
||||
@TableName("sys_dept")
|
||||
public class SysDept extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "部门名称")
|
||||
@TableField("name")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "上级部门id")
|
||||
@TableField("parent_id")
|
||||
private Long parentId;
|
||||
|
||||
@Schema(description = "树结构")
|
||||
@TableField("tree_path")
|
||||
private String treePath;
|
||||
|
||||
@Schema(description = "排序")
|
||||
@TableField("sort_value")
|
||||
private Integer sortValue;
|
||||
|
||||
@Schema(description = "负责人")
|
||||
@TableField("leader")
|
||||
private String leader;
|
||||
|
||||
@Schema(description = "电话")
|
||||
@TableField("phone")
|
||||
private String phone;
|
||||
|
||||
@Schema(description = "状态(1正常 0停用)")
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "下级部门")
|
||||
@TableField(exist = false)
|
||||
private List<SysDept> children;
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
package cn.bunny.entity.system;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.Date;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(description = "SysLoginLog")
|
||||
@TableName("sys_login_log")
|
||||
public class SysLoginLog extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "用户账号")
|
||||
@TableField("username")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "登录IP地址")
|
||||
@TableField("ipaddr")
|
||||
private String ipaddr;
|
||||
|
||||
@Schema(description = "登录状态(0成功 1失败)")
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "提示信息")
|
||||
@TableField("msg")
|
||||
private String msg;
|
||||
|
||||
@Schema(description = "访问时间")
|
||||
@TableField("access_time")
|
||||
private Date accessTime;
|
||||
|
||||
}
|
|
@ -1,65 +0,0 @@
|
|||
package cn.bunny.entity.system;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(description = "菜单")
|
||||
@TableName("sys_menu")
|
||||
public class SysMenu extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "所属上级")
|
||||
@TableField("parent_id")
|
||||
private Long parentId;
|
||||
|
||||
@Schema(description = "名称")
|
||||
@TableField("name")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "类型(1:菜单,2:按钮)")
|
||||
@TableField("type")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "路由地址")
|
||||
@TableField("path")
|
||||
private String path;
|
||||
|
||||
@Schema(description = "组件路径")
|
||||
@TableField("component")
|
||||
private String component;
|
||||
|
||||
@Schema(description = "权限标识")
|
||||
@TableField("perms")
|
||||
private String perms;
|
||||
|
||||
@Schema(description = "图标")
|
||||
@TableField("icon")
|
||||
private String icon;
|
||||
|
||||
@Schema(description = "排序")
|
||||
@TableField("sort_description")
|
||||
private Integer sortdescription;
|
||||
|
||||
@Schema(description = "状态(0:禁止,1:正常)")
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
|
||||
// 下级列表
|
||||
@TableField(exist = false)
|
||||
private List<SysMenu> children;
|
||||
// 是否选中
|
||||
@TableField(exist = false)
|
||||
private boolean isSelect;
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
package cn.bunny.entity.system;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(description = "角色")
|
||||
@TableName("sys_role")
|
||||
public class SysRole extends BaseEntity {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
//@NotBlank(message = "角色名称不能为空")
|
||||
@Schema(description = "角色名称")
|
||||
@TableField("role_name")
|
||||
private String roleName;
|
||||
|
||||
@Schema(description = "角色编码")
|
||||
@TableField("role_code")
|
||||
private String roleCode;
|
||||
|
||||
@Schema(description = "描述")
|
||||
@TableField("description")
|
||||
private String description;
|
||||
}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
package cn.bunny.entity.system;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(description = "用户")
|
||||
@TableName("sys_user")
|
||||
public class SysUser extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "用户名")
|
||||
@TableField("username")
|
||||
private String username;
|
||||
|
||||
@Schema(description = "密码")
|
||||
@TableField("password")
|
||||
private String password;
|
||||
|
||||
@Schema(description = "姓名")
|
||||
@TableField("name")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "手机")
|
||||
@TableField("phone")
|
||||
private String phone;
|
||||
|
||||
@Schema(description = "头像地址")
|
||||
@TableField("head_url")
|
||||
private String headUrl;
|
||||
|
||||
@Schema(description = "部门id")
|
||||
@TableField("dept_id")
|
||||
private Long deptId;
|
||||
|
||||
@Schema(description = "岗位id")
|
||||
@TableField("post_id")
|
||||
private Long postId;
|
||||
|
||||
@Schema(description = "描述")
|
||||
@TableField("description")
|
||||
private String description;
|
||||
|
||||
@Schema(description = "openId")
|
||||
@TableField("open_id")
|
||||
private String openId;
|
||||
|
||||
@Schema(description = "状态(1:正常 0:停用)")
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<SysRole> roleList;
|
||||
// 岗位
|
||||
@TableField(exist = false)
|
||||
private String postName;
|
||||
// 部门
|
||||
@TableField(exist = false)
|
||||
private String deptName;
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
package cn.bunny.entity.system;
|
||||
|
||||
import cn.bunny.vo.system.RouterVo;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SysUserinfo {
|
||||
private HashSet<String> roles;
|
||||
private String name;
|
||||
private String avatar;
|
||||
private List<String> buttons;
|
||||
private List<RouterVo> routers;
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package cn.bunny.entity.system.admin;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("admin_power")
|
||||
@ApiModel(value = "AdminPower对象", description = "")
|
||||
public class AdminPower implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("权限ID")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("权限名称")
|
||||
private String powerName;
|
||||
|
||||
@ApiModelProperty("权限编码")
|
||||
private String powerCode;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@ApiModelProperty("更新用户")
|
||||
private String updateUser;
|
||||
|
||||
@ApiModelProperty("是否删除,0-未删除,1-已删除")
|
||||
private Byte isDelete;
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package cn.bunny.entity.system.admin;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("admin_role")
|
||||
@ApiModel(value = "AdminRole对象", description = "")
|
||||
public class AdminRole implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("角色名称")
|
||||
private String roleName;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("角色代码")
|
||||
private String roleCode;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@ApiModelProperty("操作用户")
|
||||
private String updateUser;
|
||||
|
||||
@ApiModelProperty("是否删除")
|
||||
private Byte isDeleted;
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package cn.bunny.entity.system.admin;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("admin_role_power")
|
||||
@ApiModel(value = "AdminRolePower对象", description = "")
|
||||
public class AdminRolePower implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("ID")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("角色id")
|
||||
private String roleId;
|
||||
|
||||
@ApiModelProperty("权限id")
|
||||
private String powerId;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@ApiModelProperty("更新用户")
|
||||
private String updateUser;
|
||||
|
||||
@ApiModelProperty("是否删除,0-未删除,1-已删除")
|
||||
private Byte isDelete;
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package cn.bunny.entity.system.admin;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("admin_user_role")
|
||||
@ApiModel(value = "AdminUserRole对象", description = "")
|
||||
public class AdminUserRole implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("ID")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private String userId;
|
||||
|
||||
@ApiModelProperty("角色id")
|
||||
private String roleId;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@ApiModelProperty("更新用户")
|
||||
private String updateUser;
|
||||
|
||||
@ApiModelProperty("是否删除,0-未删除,1-已删除")
|
||||
private Byte isDelete;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package cn.bunny.entity.system.admin.auth;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class AuthUserRole {
|
||||
// 用户id
|
||||
private Long userId;
|
||||
// 角色id
|
||||
private Long roleId;
|
||||
// 角色代码
|
||||
private String roleCode;
|
||||
// 描述
|
||||
private String roleDescription;
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
package cn.bunny.entity.system.article;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文章信息
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "Article对象", description = "文章信息")
|
||||
public class Article extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("板块ID")
|
||||
private Integer boardId;
|
||||
|
||||
@ApiModelProperty("板块名称")
|
||||
private String boardName;
|
||||
|
||||
@ApiModelProperty("父级板块ID")
|
||||
private Integer pBoardId;
|
||||
|
||||
@ApiModelProperty("父板块名称")
|
||||
private String pBoardName;
|
||||
|
||||
@ApiModelProperty("用户ID")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("昵称")
|
||||
private String nickName;
|
||||
|
||||
@ApiModelProperty("最后登录ip地址")
|
||||
private String userIpAddress;
|
||||
|
||||
@ApiModelProperty("标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty("封面")
|
||||
private String cover;
|
||||
|
||||
@ApiModelProperty("内容")
|
||||
private String content;
|
||||
|
||||
@ApiModelProperty("0:富文本编辑器 1:markdown编辑器")
|
||||
private Byte editorType;
|
||||
|
||||
@ApiModelProperty("摘要")
|
||||
private String summary;
|
||||
|
||||
@ApiModelProperty("阅读数量")
|
||||
private Integer readCount;
|
||||
|
||||
@ApiModelProperty("点赞数")
|
||||
private Integer goodCount;
|
||||
|
||||
@ApiModelProperty("评论数")
|
||||
private Integer commentCount;
|
||||
|
||||
@ApiModelProperty("0未置顶 1:已置顶")
|
||||
private Byte topType;
|
||||
|
||||
@ApiModelProperty("0:没有附件 1:有附件")
|
||||
private Byte attachmentType;
|
||||
|
||||
@ApiModelProperty("-1已删除 0:待审核 1:已审核 ")
|
||||
private Byte status;
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package cn.bunny.entity.system.article;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 评论
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("forum_comment")
|
||||
@ApiModel(value = "ForumComment对象", description = "评论")
|
||||
public class ForumComment extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("父级评论ID")
|
||||
private Long pCommentId;
|
||||
|
||||
@ApiModelProperty("文章ID")
|
||||
private String articleId;
|
||||
|
||||
@ApiModelProperty("回复内容")
|
||||
private String content;
|
||||
|
||||
@ApiModelProperty("图片")
|
||||
private String imgPath;
|
||||
|
||||
@ApiModelProperty("用户ID")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("昵称")
|
||||
private String nickName;
|
||||
|
||||
@ApiModelProperty("用户ip地址")
|
||||
private String userIpAddress;
|
||||
|
||||
@ApiModelProperty("回复人ID")
|
||||
private Long replyUserId;
|
||||
|
||||
@ApiModelProperty("回复人昵称")
|
||||
private String replyNickName;
|
||||
|
||||
@ApiModelProperty("0:未置顶 1:置顶")
|
||||
private Integer topType;
|
||||
|
||||
@ApiModelProperty("good数量")
|
||||
private Integer goodCount;
|
||||
|
||||
@ApiModelProperty("0:待审核 1:已审核")
|
||||
private Integer status;
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package cn.bunny.entity.system.article;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户积分记录表
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("integral_record")
|
||||
@ApiModel(value = "IntegralRecord对象", description = "用户积分记录表")
|
||||
public class IntegralRecord extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("用户ID")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("操作类型")
|
||||
private Byte operType;
|
||||
|
||||
@ApiModelProperty("积分")
|
||||
private Integer integral;
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package cn.bunny.entity.system.article;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 点赞记录
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("like_record")
|
||||
@ApiModel(value = "LikeRecord对象", description = "点赞记录")
|
||||
public class LikeRecord extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("操作类型0:文章点赞 1:评论点赞")
|
||||
private Byte opType;
|
||||
|
||||
@ApiModelProperty("主体ID")
|
||||
private String objectId;
|
||||
|
||||
@ApiModelProperty("用户ID")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("主体作者ID")
|
||||
private Long authorUserId;
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package cn.bunny.entity.system.board;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文章板块信息
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-19
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("forum_board")
|
||||
@ApiModel(value = "ForumBoard对象", description = "文章板块信息")
|
||||
public class ForumBoard extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("父级板块ID")
|
||||
private Long parentId;
|
||||
|
||||
@ApiModelProperty("板块名")
|
||||
private String boardName;
|
||||
|
||||
@ApiModelProperty("封面")
|
||||
private String cover;
|
||||
|
||||
@ApiModelProperty("描述")
|
||||
private String boardDesc;
|
||||
|
||||
@ApiModelProperty("排序")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty("0:只允许管理员发帖 1:任何人可以发帖")
|
||||
private Boolean postType;
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.entity.email;
|
||||
package cn.bunny.entity.system.email;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.entity.email;
|
||||
package cn.bunny.entity.system.email;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -0,0 +1,42 @@
|
|||
package cn.bunny.entity.system.email;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-19
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("email_template")
|
||||
@ApiModel(value = "EmailTemplate对象", description = "邮件模板")
|
||||
public class EmailTemplate extends BaseEntity implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("模板名称")
|
||||
private String templateName;
|
||||
|
||||
@ApiModelProperty("主题")
|
||||
private String subject;
|
||||
|
||||
@ApiModelProperty("邮件内容")
|
||||
private String body;
|
||||
|
||||
@ApiModelProperty("邮件类型")
|
||||
private String type;
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package cn.bunny.entity.system.email;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 邮箱发送表
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("email_users")
|
||||
@ApiModel(value = "EmailUsers对象", description = "邮箱发送表")
|
||||
public class EmailUsers extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("邮箱")
|
||||
private String email;
|
||||
|
||||
@ApiModelProperty("密码")
|
||||
private String password;
|
||||
|
||||
@ApiModelProperty("Host地址")
|
||||
private String host;
|
||||
|
||||
@ApiModelProperty("端口号")
|
||||
private Integer port;
|
||||
|
||||
@ApiModelProperty("邮箱协议")
|
||||
private String smtpAgreement;
|
||||
|
||||
@ApiModelProperty("是否为默认邮件")
|
||||
private Integer isDefault;
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package cn.bunny.entity.system.file;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用于存储文件信息的数据表
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "Files对象", description = "用于存储文件信息的数据表")
|
||||
public class Files extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("文章ID")
|
||||
private Long articleId;
|
||||
|
||||
@ApiModelProperty("文件的名称")
|
||||
private String filename;
|
||||
|
||||
@ApiModelProperty("文件在服务器上的存储路径")
|
||||
private String filepath;
|
||||
|
||||
@ApiModelProperty("文件的大小,以字节为单位")
|
||||
private Long fileSize;
|
||||
|
||||
@ApiModelProperty("文件的MIME类型")
|
||||
private String fileType;
|
||||
|
||||
@ApiModelProperty("创建用户")
|
||||
private Long createUser;
|
||||
|
||||
@ApiModelProperty("下载次数")
|
||||
private Integer downloadCount;
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package cn.bunny.entity.system.user;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户信息
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "User对象", description = "用户信息")
|
||||
public class User extends BaseEntity implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@ApiModelProperty("昵称")
|
||||
private String nickName;
|
||||
@ApiModelProperty("邮箱")
|
||||
private String email;
|
||||
@ApiModelProperty("密码")
|
||||
private String password;
|
||||
@ApiModelProperty("头像")
|
||||
private String avatar;
|
||||
@ApiModelProperty("0:女 1:男")
|
||||
private Byte sex;
|
||||
@ApiModelProperty("个人描述")
|
||||
private String personDescription;
|
||||
@ApiModelProperty("加入时间")
|
||||
private LocalDateTime joinTime;
|
||||
|
||||
@ApiModelProperty("最后登录时间")
|
||||
private LocalDateTime lastLoginTime;
|
||||
|
||||
@ApiModelProperty("最后登录IP")
|
||||
private String lastLoginIp;
|
||||
|
||||
@ApiModelProperty("最后登录ip地址")
|
||||
private String lastLoginIpAddress;
|
||||
|
||||
@ApiModelProperty("积分")
|
||||
private Integer totalIntegral;
|
||||
|
||||
@ApiModelProperty("当前积分")
|
||||
private Integer currentIntegral;
|
||||
|
||||
@ApiModelProperty("0:禁用 1:正常")
|
||||
private Byte status;
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package cn.bunny.entity.system.user;
|
||||
|
||||
import cn.bunny.entity.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户消息
|
||||
* </p>
|
||||
*
|
||||
* @author Bunny
|
||||
* @since 2024-05-17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("user_message")
|
||||
@ApiModel(value = "UserMessage对象", description = "用户消息")
|
||||
public class UserMessage extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("接收人用户ID")
|
||||
private Long receivedUserId;
|
||||
|
||||
@ApiModelProperty("文章ID")
|
||||
private String articleId;
|
||||
|
||||
@ApiModelProperty("文章标题")
|
||||
private String articleTitle;
|
||||
|
||||
@ApiModelProperty("评论ID")
|
||||
private Integer commentId;
|
||||
|
||||
@ApiModelProperty("发送人用户ID")
|
||||
private Long sendUserId;
|
||||
|
||||
@ApiModelProperty("发送人昵称")
|
||||
private String sendNickName;
|
||||
|
||||
@ApiModelProperty("sys:系统消息 reply:评论 likePost:文章点赞 likeComment:评论点赞 attachment:附件下载")
|
||||
private String messageType;
|
||||
|
||||
@ApiModelProperty("消息内容")
|
||||
private String messageContent;
|
||||
|
||||
@ApiModelProperty("1:未读 2:已读")
|
||||
private Byte status;
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package cn.bunny.common.result.utils;
|
||||
package cn.bunny.result;
|
||||
|
||||
import cn.bunny.common.result.enums.ResultCodeEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -64,7 +63,7 @@ public class Result<T> {
|
|||
* @return Result<T>
|
||||
*/
|
||||
public static <T> Result<T> success() {
|
||||
return Result.success(null, ResultCodeEnum.SUCCESS);
|
||||
return success(null, ResultCodeEnum.SUCCESS);
|
||||
}
|
||||
|
||||
/**
|
|
@ -0,0 +1,54 @@
|
|||
package cn.bunny.result;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 统一返回结果状态信息类
|
||||
*/
|
||||
@Getter
|
||||
public enum ResultCodeEnum {
|
||||
// 成功操作 200
|
||||
SUCCESS(200, "操作成功"),
|
||||
SUCCESS_LOGOUT(200, "退出成功"),
|
||||
EMAIL_CODE_REFRESH(200, "邮箱验证码已刷新"),
|
||||
// 验证错误 201
|
||||
USERNAME_NOT_EMPTY(201, "用户名不能为空"),
|
||||
PASSWORD_NOT_EMPTY(201, "密码不能为空"),
|
||||
EMAIL_CODE_NOT_EMPTY(201, "邮箱验证码不能为空"),
|
||||
SEND_EMAIL_CODE_NOT_EMPTY(201, "请先发送邮箱验证码"),
|
||||
EMAIL_CODE_NOT_MATCHING(201, "邮箱验证码不匹配"),
|
||||
LOGIN_ERROR(201, "账号或密码错误"),
|
||||
LOGIN_ERROR_USERNAME_PASSWORD_NOT_EMPTY(201, "登录信息不能为空"),
|
||||
// 数据相关 206
|
||||
ILLEGAL_REQUEST(206, "非法请求"),
|
||||
REPEAT_SUBMIT(206, "重复提交"),
|
||||
DATA_ERROR(206, "数据异常"),
|
||||
// 身份过期 208
|
||||
LOGIN_AUTH(208, "请先登陆"),
|
||||
AUTHENTICATION_EXPIRED(208, "身份验证过期"),
|
||||
SESSION_EXPIRATION(208, "会话过期"),
|
||||
// 封禁 209
|
||||
FAIL_NO_ACCESS_DENIED_USER_LOCKED(209, "该账户被封禁"),
|
||||
THE_SAME_USER_HAS_LOGGED_IN(209, "相同用户已登录"),
|
||||
// 提示错误
|
||||
URL_ENCODE_ERROR(216, "URL编码失败"),
|
||||
ILLEGAL_CALLBACK_REQUEST_ERROR(217, "非法回调请求"),
|
||||
FETCH_USERINFO_ERROR(219, "获取用户信息失败"),
|
||||
// 无权访问 403
|
||||
FAIL_REQUEST_NOT_AUTH(403, "用户未认证"),
|
||||
FAIL_NO_ACCESS_DENIED(403, "无权访问"),
|
||||
FAIL_NO_ACCESS_DENIED_USER_OFFLINE(403, "用户强制下线"),
|
||||
LOGGED_IN_FROM_ANOTHER_DEVICE(403, "没有权限访问"),
|
||||
// 系统错误 500
|
||||
SERVICE_ERROR(500, "服务异常"),
|
||||
FAIL(500, "失败"),
|
||||
;
|
||||
|
||||
private final Integer code;
|
||||
private final String message;
|
||||
|
||||
ResultCodeEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class ExceptionConstant {
|
||||
public static final String UNKNOWN_Exception = "未知错误";
|
||||
public static final String TOKEN_IS_EMPTY = "token为空";
|
||||
public static final String DATA_IS_EMPTY = "数据为空";
|
||||
public static final String REQUEST_DATA_NOT_EMPTY_Exception = "请求参数为空";
|
||||
public static final String UPDATE_DTO_IS_NULL_Exception = "修改参数为空";
|
||||
public static final String ADD_DATA_IS_EMPTY_Exception = "添加数据为空";
|
||||
public static final String DELETE_ID_IS_NOT_EMPTY_Exception = "删除id不能为空";
|
||||
// 文章操作相关
|
||||
public static final String DO_LIKE_COMMENT_NOT_EXIST = "点赞内容不存在";
|
||||
public static final String REPLY_USER_EMPTY_EXCEPTION = "回复的用户不存在";
|
||||
public static final String REPLY_USER_ID_EMPTY_EXCEPTION = "回复的用户不能为空";
|
||||
public static final String MENU_IS_NOT_EXIST_Exception = "菜单不存在";
|
||||
public static final String POST_COMMENT_EMPTY_Exception = "评论内容不能为空";
|
||||
public static final String ARTICLE_ID_NOT_EMPTY_Exception = "文章id不能为空";
|
||||
public static final String UPDATE_ID_IS_NOT_EMPTY_Exception = "修改id不能为空";
|
||||
public static final String CANNOT_TOP_OTHER_USER = "不能操作此内容";
|
||||
public static final String ARTICLE_NOT_FOUND_EXCEPTION = "文章未找到";
|
||||
// 登录相关
|
||||
public static final String USER_TOKEN_OUT_OF_DATE_Exception = "用户登录过期";
|
||||
public static final String LOGIN_DTO_IS_EMPTY_Exception = "登录参数不能为空";
|
||||
public static final String LOGIN_FAILED_Exception = "登录失败";
|
||||
// 账号相关
|
||||
public static final String ACCOUNT_NOT_FOUND_Exception = "账号不存在";
|
||||
public static final String ACCOUNT_LOCKED_Exception = "账号被锁定";
|
||||
// 用户相关
|
||||
public static final String USER_NOT_LOGIN_Exception = "用户未登录";
|
||||
public static final String USERNAME_IS_EMPTY_Exception = "用户名不能为空";
|
||||
public static final String ALREADY_USER_Exception = "用户已存在";
|
||||
public static final String USER_NOT_FOUND_Exception = "用户不存在";
|
||||
// 密码相关
|
||||
public static final String PASSWORD_Exception = "密码错误";
|
||||
public static final String PASSWORD_NOT_EMPTY_Exception = "密码不能为空";
|
||||
public static final String OLD_PASSWORD_Exception = "旧密码不匹配";
|
||||
public static final String PASSWORD_EDIT_Exception = "密码修改失败";
|
||||
public static final String OLD_PASSWORD_SAME_NEW_PASSWORD_Exception = "旧密码与新密码相同";
|
||||
// 验证码错误
|
||||
public static final String PLEASE_SEND_EMAIL_CODE_Exception = "请先发送验证码";
|
||||
public static final String MESSAGE_CODE_NOT_PASS_Exception = "短信验证码未过期";
|
||||
public static final String MESSAGE_CODE_UNAUTHORIZED_Exception = "短信验证码未授权,请联系管理员";
|
||||
public static final String VERIFICATION_CODE_ERROR_Exception = "验证码错误";
|
||||
public static final String CAPTCHA_IS_EMPTY_Exception = "验证码不能为空";
|
||||
public static final String KEY_IS_EMPTY_Exception = "验证码key不能为空";
|
||||
public static final String VERIFICATION_CODE_DOES_NOT_MATCH_Exception = "验证码不匹配";
|
||||
public static final String VERIFICATION_CODE_IS_EMPTY_Exception = "验证码失效或不存在";
|
||||
}
|
|
@ -1,11 +1,15 @@
|
|||
package cn.bunny.common.constant;
|
||||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MinioMessageConstant {
|
||||
public class FileMessageConstant {
|
||||
public static final String DOWNLOAD_BUCKET_EXCEPTION = "下载文件失败";
|
||||
public static final String FILE_UPLOAD_EXCEPTION = "文件上传失败";
|
||||
public static final String BUCKET_EXISTS_EXCEPTION = "查询文化部对象失败";
|
||||
public static final String DELETE_BUCKET_EXCEPTION = "删除文件对象失败";
|
||||
public static final String FILE_IS_EMPTY = "文件信息为空";
|
||||
public static final String FILE_IS_NOT_EXITS = "文件信息为空";
|
||||
public static final String GET_BUCKET_EXCEPTION = "获取文件信息失败";
|
||||
public static final String QUERY_BUCKET_EXCEPTION = "查询文件信息失败";
|
||||
public static final String CREATE_BUCKET_EXCEPTION = "创建文件对象失败";
|
||||
|
@ -14,6 +18,4 @@ public class MinioMessageConstant {
|
|||
public static final String COPY_BUCKET_EXCEPTION = "复制文件内容失败";
|
||||
public static final String DISABLE_BUCKET_EXCEPTION = "禁用文件失败";
|
||||
public static final String ENABLE_BUCKET_EXCEPTION = "启用文件失败";
|
||||
public static final String DOWNLOAD_BUCKET_EXCEPTION = "下载文件失败";
|
||||
public static final String UPLOAD_BUCKET_EXCEPTION = "上传文件失败";
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.common.constant;
|
||||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.common.constant;
|
||||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -11,4 +11,5 @@ public class MailMessageConstant {
|
|||
public static final String ADDRESS_NOT_NULL = "收件人不能为空";
|
||||
public static final String TITLE_NOT_NULL = "标题不能为空";
|
||||
public static final String SEND_MESSAGE_NOT_NULL = "发送消息不能为空";
|
||||
public static final String EMAIL_CONFIG_NOT_FOUND = "邮箱配置为空";
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* Redis用户前缀设置
|
||||
*/
|
||||
@Data
|
||||
public class RedisUserConstant {
|
||||
// 管理员用户
|
||||
public static final String ADMIN_LOGIN_INFO_PREFIX = "ADMIN::LOGIN_INFO::";
|
||||
public static final String ADMIN_EMAIL_CODE_PREFIX = "ADMIN::EMAIL_CODE::";
|
||||
// 普通用户
|
||||
public static final String USER_LOGIN_INFO_PREFIX = "USER::LOGIN_INFO::";
|
||||
public static final String USER_EMAIL_CODE_PREFIX = "USER::EMAIL_CODE::";
|
||||
public static final String USER_DO_LIKE_PREFIX = "USER::doLike::";
|
||||
|
||||
/**
|
||||
* * 管理员用户登录信息
|
||||
*
|
||||
* @param adminUser 管理员用户
|
||||
* @return 登录信息key
|
||||
*/
|
||||
public static String getAdminLoginInfoPrefix(String adminUser) {
|
||||
return ADMIN_LOGIN_INFO_PREFIX + adminUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* * 管理员用户邮箱验证码
|
||||
*
|
||||
* @param adminUser 管理员用户
|
||||
* @return 管理员用户邮箱验证码key
|
||||
*/
|
||||
public static String getAdminUserEmailCodePrefix(String adminUser) {
|
||||
return ADMIN_EMAIL_CODE_PREFIX + adminUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* * 用户登录信息
|
||||
*
|
||||
* @param user 用户名
|
||||
* @return 登录信息key
|
||||
*/
|
||||
public static String getUserLoginInfoPrefix(String user) {
|
||||
return USER_LOGIN_INFO_PREFIX + user;
|
||||
}
|
||||
|
||||
/**
|
||||
* * 用户邮箱验证码
|
||||
*
|
||||
* @param user 用户名
|
||||
* @return 用户邮箱验证码key
|
||||
*/
|
||||
public static String getUserEmailCodePrefix(String user) {
|
||||
return USER_EMAIL_CODE_PREFIX + user;
|
||||
}
|
||||
|
||||
/**
|
||||
* * 用户点赞操作
|
||||
*
|
||||
* @param user 用户名
|
||||
* @return 用户点赞key
|
||||
*/
|
||||
public static String getUserDoLikePrefix(String user) {
|
||||
return USER_DO_LIKE_PREFIX + user;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.common.constant;
|
||||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.common.constant;
|
||||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -7,6 +7,7 @@ import java.util.List;
|
|||
|
||||
@Data
|
||||
public class SecurityConstant {
|
||||
public static String[] annotations = {"/", "/test/**", "/diagram-viewer/**", "/editor-app/**", "/*.html", "/admin/system/index/login", "/favicon.ico", "/swagger-resources/**", "/webjars/**", "/v3/**", "/swagger-ui.html/**", "/doc.html"};
|
||||
public static String[] annotations = {"/", "/test/**", "/diagram-viewer/**", "/editor-app/**", "/*.html",
|
||||
"/*/*/noAuth/**", "/*/noAuth/**", "/favicon.ico", "/swagger-resources/**", "/webjars/**", "/v3/**", "/swagger-ui.html/**", "/doc.html"};
|
||||
public static List<String> annotationsList = Arrays.asList(annotations);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.common.constant;
|
||||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.common.constant;
|
||||
package cn.bunny.result.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package cn.bunny.tree;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AbstractTreeNode {
|
||||
Long getId();
|
||||
|
||||
Long getParentId();
|
||||
|
||||
void setChildren(List<? extends AbstractTreeNode> children);
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package cn.bunny.tree;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TreeBuilder<T extends AbstractTreeNode> {
|
||||
|
||||
public List<T> buildTree(List<T> nodeList) {
|
||||
List<T> tree = new ArrayList<>();
|
||||
for (T node : nodeList) {
|
||||
if (node.getParentId() == 0) {
|
||||
node.setChildren(getChildren(node.getId(), nodeList));
|
||||
tree.add(node);
|
||||
}
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
private List<T> getChildren(Long nodeId, List<T> nodeList) {
|
||||
List<T> children = new ArrayList<>();
|
||||
for (T node : nodeList) {
|
||||
if (node.getParentId().equals(nodeId)) {
|
||||
node.setChildren(getChildren(node.getId(), nodeList));
|
||||
children.add(node);
|
||||
}
|
||||
}
|
||||
return children;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package cn.bunny.vo.email;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class EmailTemplateVo {
|
||||
// 模板名称
|
||||
private String templateName;
|
||||
// 主题
|
||||
private String subject;
|
||||
// 邮件内容
|
||||
private String body;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package cn.bunny.vo.file;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 返回文件信息
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class FileInfoVo {
|
||||
private Long id;
|
||||
// 文章Id
|
||||
private Long articleId;
|
||||
// 文件的名称
|
||||
private String filename;
|
||||
// 文件在服务器上的存储路径
|
||||
private String filepath;
|
||||
// 文件的大小,以字节为单位
|
||||
private Long fileSize;
|
||||
// 文件大小
|
||||
private String size;
|
||||
// 文件的MIME类型
|
||||
private String fileType;
|
||||
// 上传人昵称
|
||||
private String uploadNickname;
|
||||
private Integer downloadCount;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package cn.bunny.vo.page;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 封装分页查询结果
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class PageResult<T> implements Serializable {
|
||||
// 当前页
|
||||
private Integer pageNo;
|
||||
// 每页记录数
|
||||
private Integer pageSize;
|
||||
// 总记录数
|
||||
private long total;
|
||||
// 当前页数据集合
|
||||
private List<T> list;
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
package cn.bunny.vo.system;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 路由显示信息
|
||||
*/
|
||||
@Data
|
||||
public class MetaVo {
|
||||
/**
|
||||
* 设置该路由在侧边栏和面包屑中展示的名字
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 设置该路由的图标,对应路径src/assets/icons/svg
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
public MetaVo() {
|
||||
}
|
||||
|
||||
public MetaVo(String title, String icon) {
|
||||
this.title = title;
|
||||
this.icon = icon;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
package cn.bunny.vo.system;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 路由配置信息
|
||||
*/
|
||||
@Data
|
||||
public class RouterVo {
|
||||
/**
|
||||
* 路由名字
|
||||
*/
|
||||
// private String name;
|
||||
|
||||
/**
|
||||
* 路由地址
|
||||
*/
|
||||
private String path;
|
||||
|
||||
/**
|
||||
* 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现
|
||||
*/
|
||||
private boolean hidden;
|
||||
|
||||
/**
|
||||
* 组件地址
|
||||
*/
|
||||
private String component;
|
||||
|
||||
/**
|
||||
* 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
|
||||
*/
|
||||
private Boolean alwaysShow;
|
||||
|
||||
/**
|
||||
* 其他元素
|
||||
*/
|
||||
private MetaVo meta;
|
||||
|
||||
/**
|
||||
* 子路由
|
||||
*/
|
||||
private List<RouterVo> children;
|
||||
|
||||
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
package cn.bunny.vo.system;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SysOperLogQueryVo {
|
||||
|
||||
private String title;
|
||||
private String operName;
|
||||
|
||||
private String createTimeBegin;
|
||||
private String createTimeEnd;
|
||||
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
package cn.bunny.vo.system;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SysPostQueryVo {
|
||||
|
||||
//@ApiModelProperty(value = "岗位编码")
|
||||
private String postCode;
|
||||
|
||||
//@ApiModelProperty(value = "岗位名称")
|
||||
private String name;
|
||||
|
||||
//@ApiModelProperty(value = "状态(1正常 0停用)")
|
||||
private Boolean status;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
package cn.bunny.vo.system.article;
|
||||
|
||||
import cn.bunny.vo.file.FileInfoVo;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class ForumArticleVo {
|
||||
// 文章ID
|
||||
private Long id;
|
||||
// 板块ID
|
||||
private Integer boardId;
|
||||
// 父级板块ID
|
||||
private Integer pBoardId;
|
||||
// 板块名称
|
||||
private String boardName;
|
||||
// 父板块名称
|
||||
private String pBoardName;
|
||||
// 用户ID
|
||||
private String userId;
|
||||
// 昵称
|
||||
private String nickName;
|
||||
// 最后登录ip地址
|
||||
private String userIpAddress;
|
||||
// 标题
|
||||
private String title;
|
||||
// 封面
|
||||
private String cover;
|
||||
// 内容
|
||||
private String content;
|
||||
// 0:富文本编辑器 1:markdown编辑器
|
||||
private Byte editorType;
|
||||
// 摘要
|
||||
private String summary;
|
||||
// 发布时间
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private String createTime;
|
||||
// 最后更新时间
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private String updateTime;
|
||||
// 阅读数量
|
||||
private Integer readCount;
|
||||
// 点赞数
|
||||
private Integer goodCount;
|
||||
// 评论数
|
||||
private Integer commentCount;
|
||||
// 0未置顶 1:已置顶
|
||||
private Byte topType;
|
||||
// 0:没有附件 1:有附件
|
||||
private Byte attachmentType;
|
||||
// -1已删除 0:待审核 1:已审核
|
||||
private Byte status;
|
||||
private List<FileInfoVo> fileInfo;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package cn.bunny.vo.system.board;
|
||||
|
||||
import cn.bunny.tree.AbstractTreeNode;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ForumBoardVo implements AbstractTreeNode {
|
||||
private Long id;
|
||||
// 父级板块ID
|
||||
private Long parentId;
|
||||
// 板块名
|
||||
private String boardName;
|
||||
// 封面
|
||||
private String cover;
|
||||
// 描述
|
||||
private String boardDesc;
|
||||
// 排序
|
||||
private Integer sort;
|
||||
// 0:只允许管理员发帖 1:任何人可以发帖
|
||||
private Boolean postType;
|
||||
private List<ForumBoardVo> children;
|
||||
|
||||
@Override
|
||||
public void setChildren(List<? extends AbstractTreeNode> children) {
|
||||
this.children = (List<ForumBoardVo>) children;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package cn.bunny.vo.system.comment;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class CommentVo {
|
||||
// 评论ID
|
||||
private Long id;
|
||||
// 父级评论ID
|
||||
private Integer pCommentId;
|
||||
// 文章ID
|
||||
private String articleId;
|
||||
// 回复内容
|
||||
private String content;
|
||||
// 图片
|
||||
private String imgPath;
|
||||
// 用户ID
|
||||
private Long userId;
|
||||
// 昵称
|
||||
private String nickName;
|
||||
// 用户ip地址
|
||||
private String userIpAddress;
|
||||
// 回复人ID
|
||||
private Long replyUserId;
|
||||
// 回复人昵称
|
||||
private String replyNickName;
|
||||
// 0:未置顶 1:置顶
|
||||
private Byte topType;
|
||||
// 发布时间
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime postTime;
|
||||
// good数量
|
||||
private Integer goodCount;
|
||||
// 0:待审核 1:已审核
|
||||
private Byte status;
|
||||
private List<CommentVo> children;
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package cn.bunny.vo.system.login;
|
||||
|
||||
import cn.bunny.result.constant.LocalDateTimeConstant;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户登录返回内容
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class LoginVo {
|
||||
private Long id;
|
||||
private String nickName;
|
||||
private String email;
|
||||
private String password;
|
||||
private String avatar;
|
||||
private Byte sex;
|
||||
private String personDescription;
|
||||
@JsonFormat(pattern = LocalDateTimeConstant.DEFAULT_DATE_TIME_SECOND_FORMAT)
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime joinTime;
|
||||
@JsonFormat(pattern = LocalDateTimeConstant.DEFAULT_DATE_TIME_SECOND_FORMAT)
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime lastLoginTime;
|
||||
private String lastLoginIp;
|
||||
private String lastLoginIpAddress;
|
||||
private Integer totalIntegral;
|
||||
private Integer currentIntegral;
|
||||
private Byte status;
|
||||
private String token;
|
||||
private List<String> roleList;
|
||||
private List<String> powerList;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package cn.bunny.vo.system.login;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(description = "验证码响应结果实体类")
|
||||
public class ValidateCodeVo {
|
||||
@Schema(description = "验证码key")
|
||||
private String codeKey; // 验证码的key
|
||||
|
||||
@Schema(description = "验证码value")
|
||||
private String codeValue; // 图片验证码对应的字符串数据
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package cn.bunny.vo.system.user;
|
||||
|
||||
import cn.bunny.result.constant.LocalDateTimeConstant;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 获取用户信息返回参数
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class UserInfoVo {
|
||||
private Long userId;
|
||||
private String nickName;
|
||||
private String email;
|
||||
private String avatar;
|
||||
private Byte sex;
|
||||
private String personDescription;
|
||||
@JsonFormat(pattern = LocalDateTimeConstant.DEFAULT_DATE_TIME_SECOND_FORMAT)
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime joinTime;
|
||||
@JsonFormat(pattern = LocalDateTimeConstant.DEFAULT_DATE_TIME_SECOND_FORMAT)
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime lastLoginTime;
|
||||
private String lastLoginIp;
|
||||
private String lastLoginIpAddress;
|
||||
private Integer totalIntegral;
|
||||
private Integer currentIntegral;
|
||||
private Byte status;
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package cn.bunny.vo.system.user;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class UserIntegralRecordVo {
|
||||
// 记录ID
|
||||
private Integer recordId;
|
||||
// 用户ID
|
||||
private String userId;
|
||||
// 操作类型
|
||||
private Byte operType;
|
||||
// 积分
|
||||
private Integer integral;
|
||||
// 创建时间
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime createTime;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package cn.bunny.vo.system.user;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class UserMessageCountVo {
|
||||
private Integer total;
|
||||
private Integer sys;
|
||||
private Integer reply;
|
||||
private Integer likePost;
|
||||
private Integer likeComment;
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package cn.bunny.vo.system.user;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class UserMessageVo {
|
||||
// 自增ID
|
||||
private Integer messageId;
|
||||
// 接收人用户ID
|
||||
private String receivedUserId;
|
||||
// 文章ID
|
||||
private String articleId;
|
||||
// 文章标题
|
||||
private String articleTitle;
|
||||
// 评论ID
|
||||
private Integer commentId;
|
||||
// 发送人用户ID
|
||||
private String sendUserId;
|
||||
// 发送人昵称
|
||||
private String sendNickName;
|
||||
// sys:系统消息 reply:评论 likePost:文章点赞 likeComment:评论点赞 attachment:附件下载
|
||||
private String messageType;
|
||||
// 消息内容
|
||||
private String messageContent;
|
||||
// 创建时间
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonSerialize(using = LocalDateTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
|
||||
private LocalDateTime createTime;
|
||||
}
|
|
@ -18,11 +18,6 @@
|
|||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>service-utils</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package cn.bunny.module.mail.utils;
|
||||
|
||||
import cn.bunny.common.constant.MailMessageConstant;
|
||||
import cn.bunny.common.service.utils.EmptyUtil;
|
||||
import cn.bunny.entity.email.EmailSend;
|
||||
import cn.bunny.entity.system.email.EmailSend;
|
||||
import cn.bunny.result.constant.MailMessageConstant;
|
||||
|
||||
public class MailSendCheckUtil {
|
||||
/**
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package cn.bunny.module.mail.utils;
|
||||
|
||||
import cn.bunny.entity.email.EmailSend;
|
||||
import cn.bunny.entity.email.EmailSendInit;
|
||||
import cn.bunny.entity.system.email.EmailSend;
|
||||
import cn.bunny.entity.system.email.EmailSendInit;
|
||||
import jakarta.mail.MessagingException;
|
||||
import jakarta.mail.internet.MimeMessage;
|
||||
import org.springframework.mail.SimpleMailMessage;
|
||||
|
@ -63,7 +63,7 @@ public class MailSenderUtil {
|
|||
// 发送邮件
|
||||
javaMailSender.send(message);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 发送邮件-简单
|
||||
*
|
||||
|
|
|
@ -18,11 +18,6 @@
|
|||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>service-utils</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- minio -->
|
||||
<dependency>
|
||||
<groupId>io.minio</groupId>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package cn.bunny.module.minio.utils;
|
||||
|
||||
import cn.bunny.common.constant.MinioMessageConstant;
|
||||
import cn.bunny.result.constant.FileMessageConstant;
|
||||
import cn.bunny.common.service.exception.BunnyException;
|
||||
import io.minio.*;
|
||||
import io.minio.messages.*;
|
||||
|
@ -37,7 +37,7 @@ public class MinioUtil {
|
|||
log.error("判断桶是否存在 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
}
|
||||
throw new BunnyException(MinioMessageConstant.BUCKET_EXISTS_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.BUCKET_EXISTS_EXCEPTION);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,7 +53,7 @@ public class MinioUtil {
|
|||
log.error("删除桶的加密配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
}
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -68,7 +68,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除桶的生命周期配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除桶的加密配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -100,7 +100,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除桶的加密配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除桶的桶复制配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -132,7 +132,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除桶的桶复制配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除桶中的对象锁配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -167,7 +167,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取存储桶的加密配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return conf;
|
||||
|
@ -187,7 +187,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取存储桶的生命周期配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return lifecycle;
|
||||
|
@ -208,7 +208,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取存储桶的通知配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return configuration;
|
||||
|
@ -229,7 +229,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取桶的桶策略配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return config;
|
||||
|
@ -250,7 +250,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取桶复制参数 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return configuration;
|
||||
|
@ -271,7 +271,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取存储桶的标签 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
return tags;
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取存储桶的版本控制配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return configuration;
|
||||
|
@ -311,7 +311,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取存储桶中的对象锁配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return configuration;
|
||||
|
@ -331,7 +331,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("列出所有桶的桶信息 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.QUERY_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.QUERY_BUCKET_EXCEPTION);
|
||||
}
|
||||
|
||||
return buckets;
|
||||
|
@ -349,7 +349,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("创建桶 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.CREATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.CREATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -365,7 +365,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("创建桶 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.CREATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.CREATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -381,7 +381,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("创建桶 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.CREATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.CREATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -397,7 +397,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除桶 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -414,7 +414,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("设置桶的加密配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -431,7 +431,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("查看桶策略 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -449,7 +449,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("设置桶复制参数 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -466,7 +466,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("设置/修改桶标签 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -484,7 +484,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("设置桶的版本配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -501,7 +501,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("对象对象锁定配置 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -519,7 +519,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("组合对象 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.COMPOSE_OBJECT_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.COMPOSE_OBJECT_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -542,7 +542,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("组合对象 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.COMPOSE_OBJECT_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.COMPOSE_OBJECT_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -567,7 +567,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("组合对象 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.COMPOSE_OBJECT_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.COMPOSE_OBJECT_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -590,7 +590,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("复制另一个桶中文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.COPY_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.COPY_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -615,7 +615,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("复制另一个桶中文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.COPY_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.COPY_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -641,7 +641,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("复制另一个桶中文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.COPY_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.COPY_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -658,7 +658,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除对象的标记 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -675,7 +675,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("禁用对象 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DISABLE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DISABLE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -692,7 +692,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("禁用对象 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.ENABLE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.ENABLE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -710,7 +710,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -728,7 +728,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("下载文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DOWNLOAD_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DOWNLOAD_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -747,7 +747,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("下载文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DOWNLOAD_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DOWNLOAD_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -767,7 +767,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取对象保留 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DOWNLOAD_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DOWNLOAD_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -786,7 +786,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取对象标签 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -805,7 +805,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("上传文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPLOAD_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.FILE_UPLOAD_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -825,7 +825,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("上传文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPLOAD_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.FILE_UPLOAD_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -848,7 +848,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("上传文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPLOAD_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.FILE_UPLOAD_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -865,7 +865,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -883,7 +883,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -901,7 +901,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -918,7 +918,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("上传多文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPLOAD_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.FILE_UPLOAD_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -937,7 +937,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -955,7 +955,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("删除文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.UPDATE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -976,7 +976,7 @@ public class MinioUtil {
|
|||
} catch (Exception exception) {
|
||||
log.error("获取对象状态 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||
exception.getStackTrace();
|
||||
throw new BunnyException(MinioMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
throw new BunnyException(FileMessageConstant.DELETE_BUCKET_EXCEPTION);
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue