diff --git a/blog-springboot/blog-common/pom.xml b/blog-springboot/blog-common/pom.xml index 536c7455de56644e4089f8161c33923f51bf1fa4..c5a5b33ff56981911923aa6c935e0888a2580315 100644 --- a/blog-springboot/blog-common/pom.xml +++ b/blog-springboot/blog-common/pom.xml @@ -71,6 +71,12 @@ spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-data-mongodb + + org.springframework.boot @@ -83,6 +89,12 @@ oshi-core + + + org.lionsoul + ip2region + + org.apache.commons diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/annotation/ParamMean.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/annotation/ParamMean.java deleted file mode 100644 index 48888261e4f2c551fd33819cfa629f08868074db..0000000000000000000000000000000000000000 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/annotation/ParamMean.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.zrkizzy.common.annotation; - -import java.lang.annotation.*; - -/** - * 输入/返回参数自定义注解 - * - * @author zhangrongkang - * @since 2023/7/17 - */ -@Target({ElementType.TYPE,ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface ParamMean { - - /** - * 输入参数含义,多个参数用","隔开 - * - * @return 输入参数 - */ - String in(); - - /** - * 返回参数含义,多个参数用","隔开 - * - * @return 返回参数 - */ - String out(); - -} diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/base/response/OptionsVO.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/base/response/OptionsVO.java index 7387e17dac3bf6c6dc2a69760c77184bed69c5f2..188c1b62024485c8939cdf3fbb78b11ee6bef49f 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/base/response/OptionsVO.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/base/response/OptionsVO.java @@ -1,7 +1,9 @@ package com.zrkizzy.common.base.response; import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; /** * 选项返回对象 @@ -10,6 +12,8 @@ import lombok.Data; * @since 2023/7/3 */ @Data +@NoArgsConstructor +@AllArgsConstructor public class OptionsVO { /** diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/CommonConst.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/CommonConst.java index 885a976724ad3c867d1b796d2f4289dc8cb8b0cb..0611c390d529df9ec8d5fa72fa1a96fce9d5f83e 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/CommonConst.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/CommonConst.java @@ -91,13 +91,18 @@ public class CommonConst { /** * 本地登录 */ - public static final String LOCAL_NAME = "本地登录"; + public static final String LOCAL_NAME = "内网IP"; /** * 未知用户 */ public static final String UNKNOWN_USER = "未知用户"; + /** + * 中国IP + */ + public static final String CHINA_LOCATION = "中国"; + /** * 未知主机名 */ @@ -118,4 +123,14 @@ public class CommonConst { */ public static final String LOOP_BACK_HOST = "0:0:0:0:0:0:0:1"; + /** + * 字符0 + */ + public static final String ZERO = "0"; + + /** + * 登录成功 + */ + public static final String LOGIN_SUCCESS = "登录成功"; + } diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/DefaultValueConst.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/DefaultValueConst.java new file mode 100644 index 0000000000000000000000000000000000000000..4c624e399bf57ff9e75b04335d1ed82e9a491c59 --- /dev/null +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/DefaultValueConst.java @@ -0,0 +1,31 @@ +package com.zrkizzy.common.constant; + +/** + * 默认值全局静态常量 + * + * @author zhangrongkang + * @since 2023/9/5 + */ +public class DefaultValueConst { + + /** + * 默认文章数量 + */ + public static final Integer DEFAULT_ARTICLE_COUNT = 0; + + /** + * 默认关于我标题 + */ + public static final String DEFAULT_ABOUT_ME_TITLE = "关于我"; + + /** + * 默认评论量 + */ + public static final Integer DEFAULT_COMMENT_COUNT = 0; + + /** + * 默认浏览量 + */ + public static final Integer DEFAULT_VISIT_COUNT = 0; + +} diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/MongoDbConst.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/MongoDbConst.java new file mode 100644 index 0000000000000000000000000000000000000000..a9b32125fedf72d59a0ffbea943ff37e3a23e300 --- /dev/null +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/MongoDbConst.java @@ -0,0 +1,10 @@ +package com.zrkizzy.common.constant; + +/** + * MongoDB文档全局静态常量 + * + * @author zhangrongkang + * @since 2023/8/24 + */ +public class MongoDbConst { +} diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/RedisConst.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/RedisConst.java index 78bd3e44a8377f02462b6c87cf088bf5d8723655..d2d292f7fb48c33305c4687ab04746a0b315204b 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/RedisConst.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/constant/RedisConst.java @@ -33,9 +33,29 @@ public class RedisConst { */ public static final String CAPTCHA_SMS_PREFIX = "captcha:sms:"; + /** + * 系统菜单前缀 + */ + public static final String SYSTEM_MENU_PREFIX = "system:menus:"; + /** * 系统基本配置键 */ public static final String CONFIG_BASIC_KEY = "config:basic"; + /** + * 博客配置信息键 + */ + public static final String CONFIG_BLOG_KEY = "config:blog"; + + /** + * STRING数据类型 + */ + public static final String TYPE_STRING = "STRING"; + + /** + * LIST数据类型 + */ + public static final String TYPE_LIST = "LIST"; + } diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/context/SystemContext.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/context/SystemContext.java index bdafd5e7a79cd52a36a7c96062327f0b62b54121..f18918657b0dcecef4af06152a1a339fd01356cd 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/context/SystemContext.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/context/SystemContext.java @@ -8,11 +8,6 @@ package com.zrkizzy.common.context; */ public class SystemContext { - /** - * 存储当前请求模块ID - */ - private static final ThreadLocal MODULE_ID_THREAD_LOCAL = new ThreadLocal<>(); - /** * 记录用户操作时间 */ @@ -41,24 +36,6 @@ public class SystemContext { return OPERATE_TIME_THREAD_LOCAL.get(); } - /** - * 设置当前请求对应的模块ID - * - * @param moduleId 模块ID - */ - public static void setModuleId(Long moduleId) { - MODULE_ID_THREAD_LOCAL.set(moduleId); - } - - /** - * 获取当前请求的模块ID - * - * @return 模块ID - */ - public static Long getModuleId() { - return MODULE_ID_THREAD_LOCAL.get(); - } - /** * 记录当前用户操作内容 * @@ -81,8 +58,6 @@ public class SystemContext { * 清空当前线程中所有变量 */ public static void remove() { - // 清除请求模块变量 - MODULE_ID_THREAD_LOCAL.remove(); // 清除方法操作时间变量 OPERATE_TIME_THREAD_LOCAL.remove(); // 清空操作内容 diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/ArticleStatusEnum.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/ArticleStatusEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..1ea7010f712fe0baf0432dcb5b455e8829ea6165 --- /dev/null +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/ArticleStatusEnum.java @@ -0,0 +1,56 @@ +package com.zrkizzy.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 文章状态字段枚举 + * + * @author zhangrongkang + * @since 2023/9/22 + */ +@Getter +@AllArgsConstructor +public enum ArticleStatusEnum { + + /** + * 是否允许评论 + */ + COMMENT("COMMENT", "allow_comment"), + + /** + * 是否置顶 + */ + STICKY("STICKY", "is_sticky"), + + /** + * 是否开启打赏 + */ + DONATION("DONATION", "allow_donation"); + + + /** + * 状态名 + */ + private final String status; + + /** + * 列名 + */ + private final String field; + + /** + * 根据状态名称获取列名 + * + * @param status 状态名称 + * @return 对应列名 + */ + public static String getFieldByStatus(String status) { + for (ArticleStatusEnum articleStatusEnum : ArticleStatusEnum.values()) { + if (status.equals(articleStatusEnum.getStatus())) { + return articleStatusEnum.getField(); + } + } + return null; + } +} diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/HttpStatusEnum.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/HttpStatusEnum.java index 431b90c233a976ad893e5d2bbf32631855c37e29..7027ce197cc2cf67a2ce660e9f69a690785c5d15 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/HttpStatusEnum.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/HttpStatusEnum.java @@ -57,11 +57,19 @@ public enum HttpStatusEnum { SERVICE_UNAVAILABLE(503, "服务不可用"), TOKEN_EXPIRED(506, "当前Token已过期,请重新登录"), TOKEN_ERROR(507, "Token不合法"), - CODE_EXPIRED(508, "验证码已过期"), - CODE_ERROR(509, "验证码错误"), + CAPTCHA_EXPIRED(508, "验证码已过期"), + CAPTCHA_ERROR(509, "验证码错误"), UPDATE_ERROR(510, "更新失败,请稍后重试"), INSERT_ERROR(511, "新增失败,请稍后重试"), + MOBILE_ERROR(512, "电话号码格式不正确"), + MOBILE_NOT_NULL(513, "电话号码不能为空"), + EMAIL_ERROR(514, "邮箱格式不正确"), + EMAIL_NOT_NULL(515, "邮箱不能为空"), + CAPTCHA_NOT_NULL(516, "验证码不能为空"), + PASSWORD_NOT_NULL(517, "用户密码不能为空"), + LOGIN_CHANNEL_ERROR(518, "登录渠道错误"), + NOT_OPEN_THIRD_CHANNEL(600,"当前未开放第三方登录"), /** * 其他状态码 */ @@ -80,12 +88,23 @@ public enum HttpStatusEnum { USERNAME_REPEAT(2006, "用户名重复,当前用户名已存在"), PASSWORD_SAME(2007, "新密码不能与旧密码相同"), PASSWORD_UPDATE_ERROR(2008, "密码更新失败"), + MODULE_RESOURCE_ERROR(2009, "分配模块请求资源失败"), + MODULE_ROLE_ERROR(2010, "分配模块角色失败"), + MODULE_ROLE_ASSOCIATION(2011, "部分模块有角色关联模块,不允许删除"), + MODULE_RESOURCE_DELETE(2012, "部分模块对应资源删除失败"), + DIRECTORY_NOT_EMPTY(2013, "当前目录不为空,不允许删除"), FILE_EXIST_ERROR(3000, "当前文件已经存在,请勿重复上传"), FILE_UPLOAD_ERROR(3001, "文件上传失败"), FILE_SELECT_ERROR(3002, "请选择要删除的文件"), FILE_DELETE_ERROR(3003, "文件删除失败"), LOGIN_SAVE_ERROR(3004, "登录日志保存出错"), - OPERATE_SAVE_ERROR(3005, "操作日志保存出错"); + OPERATE_SAVE_ERROR(3005, "操作日志保存出错"), + LINK_DELETE_ERROR(3006, "友情链接删除失败"), + CATEGORY_DELETE_ERROR(3007, "博客分类删除失败"), + CATEGORY_NAME_EXIST(3008, "已存在同名博客分类"), + TAGS_DELETE_ERROR(3009, "博客标签删除失败"), + TAGS_NAME_EXIST(3010, "已存在同名博客标签"), + ARTICLE_DELETE_ERROR(3011, "文章删除失败"); /** * 状态码 diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/LoginChannelEnum.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/LoginChannelEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..6c789c4cd0cc65aebf1f4703287efbca7257f0d6 --- /dev/null +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/LoginChannelEnum.java @@ -0,0 +1,91 @@ +package com.zrkizzy.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 登录类型枚举 + * + * @author zhangrongkang + * @since 2023/8/31 + */ +@Getter +@AllArgsConstructor +public enum LoginChannelEnum { + + /** + * QQ登录 + */ + QQ_INFO("QQ", "QQ登录"), + + /** + * Gitee登录 + */ + GIE_EE_INFO("Gitee", "Gitee登录"), + + /** + * 手机登录 + */ + MOBILE_INFO("Mobile", "手机登录"), + + /** + * 微博登录 + */ + WEI_BO_INFO("WeiBo", "微博登录"), + + /** + * 系统登录 + */ + SYSTEM_INFO("System", "系统登录"); + + /** + * QQ登录常量 + */ + public static final String QQ = "QQ"; + + /** + * Gitee登录常量 + */ + public static final String GIT_EE = "Gitee"; + + /** + * 手机登录常量 + */ + public static final String MOBILE = "Mobile"; + + /** + * 微博登录常量 + */ + public static final String WEI_BO = "WeiBo"; + + /** + * 系统登录常量 + */ + public static final String SYSTEM = "System"; + + /** + * 登录类型 + */ + private final String channel; + + /** + * 类型名称 + */ + private final String name; + + /** + * 根据登录渠道获取登录名称 + * + * @param channel 登录渠道 + * @return 登录名称 + */ + public static String getNameByChannel(String channel) { + for (LoginChannelEnum value : LoginChannelEnum.values()) { + if (value.channel.equals(channel)) { + return value.name; + } + } + return null; + } + +} diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/RedisKeyEnum.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/RedisKeyEnum.java index be7d46c68767ce306e757af2cd230445b716c3cd..fc5807fab85dae57f6d5a17a58bbd9b0d339ac56 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/RedisKeyEnum.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/enums/RedisKeyEnum.java @@ -14,15 +14,19 @@ import lombok.Getter; public enum RedisKeyEnum { /** - * 用户信息前缀 + * 用户信息 */ USER("user:", "用户信息"), + /** + * 系统信息 + */ + SYSTEM("system:", "系统信息"), /** * 验证码信息前缀 */ CAPTCHA("captcha:", "验证码"), /** - * 系统配置信息 + * 配置信息 */ CONFIG("config:", "配置信息"); diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/IMongoService.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/IMongoService.java new file mode 100644 index 0000000000000000000000000000000000000000..32d86b882209f576874ac1c0738b20a01364a686 --- /dev/null +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/IMongoService.java @@ -0,0 +1,49 @@ +package com.zrkizzy.common.service; + +import java.util.List; + +/** + * MongoDB操作接口 + * + * @author zhangrongkang + * @since 2023/8/24 + */ +public interface IMongoService { + + /** + * 向集合中插入一个新的文档 + * + * @param document 文档 + * @return 文档内容 + */ + T insert(T document); + + /** + * 向集合中插入一个新的文档 + * + * @param document 文档 + * @param collectionName 文档名称 + * @return 文档内容 + */ + T insert(T document, String collectionName); + + T save(T document); + + /** + * 通过文档ID获得配置对象 + * + * @param id 文档ID + * @param clazz 配置对象类型 + * @return 配置对象 + * @param 文档类型 + */ + T findById(String id, Class clazz); + + /** + * 获取指定类的所有文档 + * + * @param clazz 指定类 + * @return 指定文档集合 + */ + List findAll(Class clazz); +} diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/IRedisService.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/IRedisService.java index 12fb64da4683edb08e2c790ecbe9eeef0323a751..3b40393b0bebafc307d2050a708d1a83a2dcfa3f 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/IRedisService.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/IRedisService.java @@ -55,6 +55,13 @@ public interface IRedisService { */ Boolean del(String key); + /** + * 批量清除指定前缀的Key + * + * @param pattern 指定前缀 + */ + void clearKeys(String pattern); + /** * 递减对应Key的值 * @@ -114,4 +121,66 @@ public interface IRedisService { */ Set scanKeys(String pattern, Integer size); + /** + * 将指定集合存储到Redis中并设置有效时间 + * + * @param key Key + * @param list 集合 + * @param time 超时时间 + */ + void setList(String key, List list, long time); + + /** + * 将指定集合存储到Redis中 + * + * @param key Key + * @param list 集合 + */ + void setList(String key, List list); + + /** + * 获取指定集合 + * + * @param key Key + * @return 指定集合 + */ + List getListAll(String key); + + /** + * 获取指定类型集合 + * + * @param key Key + * @param clazz 集合元素类型 + * @return 指定类型集合 + */ + List getListAll(String key, Class clazz); + + /** + * 获取集合指定数据 + * + * @param key Key + * @param start 起始位置 + * @param end 结束位置 + * @return 集合数据 + */ + List getList(String key, int start, int end); + + /** + * 获取集合数据 + * + * @param key Key + * @param start 起始位置 + * @param end 结束位置 + * @param clazz 集合元素类型 + * @return 集合数据 + */ + List getListValues(String key, int start, int end, Class clazz); + + /** + * 获取指定Key的类型 + * + * @param key Key + * @return Key的数据类型 + */ + String type(String key); } \ No newline at end of file diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/impl/MongoServiceImpl.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/impl/MongoServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..ee4b2c90f758b1201adb911350d6277baa0f0d2c --- /dev/null +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/impl/MongoServiceImpl.java @@ -0,0 +1,80 @@ +package com.zrkizzy.common.service.impl; + +import com.zrkizzy.common.service.IMongoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * MongoDB操作接口实现类 + * + * @author zhangrongkang + * @since 2023/8/24 + */ +@Service +public class MongoServiceImpl implements IMongoService { + + @Autowired + private MongoTemplate mongoTemplate; + + /** + * 向集合中插入一个新的文档 + * + * @param document 文档 + * @return 文档内容 + */ + @Override + public T insert(T document) { + return mongoTemplate.insert(document); + } + + /** + * 向集合中插入一个新的文档 + * + * @param document 文档 + * @param collectionName 集合名称 + * @return 文档内容 + */ + @Override + public T insert(T document, String collectionName) { + return mongoTemplate.insert(document, collectionName); + } + + /** + * 更新指定文档 + * + * @param document 文档对象 + * @return 更新后数据 + */ + @Override + public T save(T document) { + return mongoTemplate.save(document); + } + + /** + * 通过文档ID获得配置对象 + * + * @param id 文档ID + * @param clazz 配置对象类型 + * @return 配置对象 + */ + @Override + public T findById(String id, Class clazz) { + return mongoTemplate.findById(id, clazz); + } + + /** + * 获取指定类的所有文档 + * + * @param clazz 指定类 + * @return 指定文档集合 + */ + @Override + public List findAll(Class clazz) { + return mongoTemplate.findAll(clazz); + } + + +} diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/impl/RedisServiceImpl.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/impl/RedisServiceImpl.java index e8b5f31124d555bd48492179fca8fe5daccd7004..472e6df3cb2090a6df238b1d5c2933580e9beb42 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/impl/RedisServiceImpl.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/service/impl/RedisServiceImpl.java @@ -3,13 +3,16 @@ package com.zrkizzy.common.service.impl; import com.zrkizzy.common.service.IRedisService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.connection.DataType; import org.springframework.data.redis.core.Cursor; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ScanOptions; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -70,7 +73,7 @@ public class RedisServiceImpl implements IRedisService { */ @Override public T get(String key, Class clazz) { - return clazz.cast(redisTemplate.opsForValue().get(key)); + return clazz.cast(get(key)); } /** @@ -84,6 +87,21 @@ public class RedisServiceImpl implements IRedisService { return redisTemplate.delete(key); } + /** + * 批量清除指定前缀的Key + * + * @param pattern 指定前缀 + */ + @Override + public void clearKeys(String pattern) { + // 获取指定前缀的所有Key + Set keys = scanKeys(pattern); + for (String key : keys) { + // 清除指定Key + del(key); + } + } + /** * 判断键是否存在 * @@ -130,7 +148,7 @@ public class RedisServiceImpl implements IRedisService { @Override public Set scanKeys(String pattern, Integer count) { // 默认情况下仅定义前缀 - ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); + ScanOptions options = ScanOptions.scanOptions().match(pattern + "*").build(); if (null != count) { ScanOptions.scanOptions() // 前缀 @@ -152,6 +170,21 @@ public class RedisServiceImpl implements IRedisService { }); } + /** + * 将指定集合存储到Redis中并设置有效时间 + * + * @param key Key + * @param list 集合 + * @param time 超时时间 + */ + @Override + public void setList(String key, List list, long time) { + // 存储数据 + setList(key, list); + // 设置过期时间,单位时间为秒 + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + /** * 递减对应Key的值 * @@ -185,4 +218,92 @@ public class RedisServiceImpl implements IRedisService { return redisTemplate.getExpire(key, TimeUnit.SECONDS); } + /** + * 将指定集合存储到Redis中 + * + * @param key Key + * @param list 集合 + */ + @Override + public void setList(String key, List list) { + redisTemplate.opsForList().rightPushAll(key, list.toArray()); + } + + /** + * 获取集合数据 + * + * @param key Key + * @param start 起始位置 + * @param end 结束位置 + * @param clazz 集合元素类型 + * @return 集合数据 + */ + @Override + public List getListValues(String key, int start, int end, Class clazz) { + // 获取当前集合数据 + List range = getList(key, start, end); + List resultList = new ArrayList<>(); + // 不为空则进行特殊处理 + for (Object object : range) { + // 转换每一个对象为指定类型 + T convertObj = clazz.cast(object); + resultList.add(convertObj); + } + return resultList; + } + + /** + * 获取指定Key的类型 + * + * @param key Key + * @return Key的数据类型 + */ + @Override + public String type(String key) { + // 获取当前类型 + DataType type = redisTemplate.type(key); + return type != null ? type.name() : null; + } + + /** + * 获取指定类型集合 + * + * @param key Key + * @param clazz 集合元素类型 + * @return 指定类型集合 + */ + @Override + public List getListAll(String key, Class clazz) { + // 方法复用,-1表示返回所有内容 + return getListValues(key, 0, -1, clazz); + } + + /** + * 获取集合指定数据 + * + * @param key Key + * @param start 起始位置 + * @param end 结束位置 + * @return 集合数据 + */ + @Override + public List getList(String key, int start, int end) { + List range = redisTemplate.opsForList().range(key, start, end); + // 集合数据为空则返回空集合 + if (CollectionUtils.isEmpty(range)) { + return new ArrayList<>(); + } + return range; + } + + /** + * 获取指定集合 + * + * @param key Key + * @return 指定集合 + */ + @Override + public List getListAll(String key) { + return getList(key, 0, -1); + } } \ No newline at end of file diff --git a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/utils/IpUtil.java b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/utils/IpUtil.java index 225ff8b4b5aefab0cce0509b14fca1c865e33588..f1d499bcdbdf3191ff350a34629b1133988eeeb6 100644 --- a/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/utils/IpUtil.java +++ b/blog-springboot/blog-common/src/main/java/com/zrkizzy/common/utils/IpUtil.java @@ -1,10 +1,17 @@ package com.zrkizzy.common.utils; import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.lionsoul.ip2region.xdb.Searcher; +import org.springframework.core.io.ClassPathResource; +import org.springframework.stereotype.Component; +import org.springframework.util.FileCopyUtils; import org.springframework.util.StringUtils; +import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; +import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.URL; @@ -21,8 +28,32 @@ import static com.zrkizzy.common.constant.CommonConst.*; * @author zhangrongkang * @since 2023/3/15 */ +@Slf4j +@Component public class IpUtil { + /** + * IP内存查询对象 + */ + private static Searcher searcher; + + /** + * 项目启动时将Ip离线地址库加载到内存中 + */ + @PostConstruct + private static void initIpResource() { + try { + InputStream inputStream = new ClassPathResource("ip2region.xdb").getInputStream(); + byte[] dbBinStr = FileCopyUtils.copyToByteArray(inputStream); + // 创建一个完全基于内存的查询对象 + searcher = Searcher.newWithBuffer(dbBinStr); + // 输出加载成功日志 + log.info("create content cached searcher success"); + } catch (Exception e) { + log.error("failed to create content cached searcher: %s", e); + } + } + /** * 获取客户端IP地址 * @@ -31,29 +62,99 @@ public class IpUtil { */ public static String getIpAddress(HttpServletRequest request) { String ipAddress = request.getHeader("x-forwarded-for"); - if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + if (!StringUtils.hasLength(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); } - if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + if (!StringUtils.hasLength(ipAddress) || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); } - if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { - ipAddress = request.getRemoteAddr(); + if (!StringUtils.hasLength(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("HTTP_CLIENT_IP"); + } + if (!StringUtils.hasLength(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR"); } - if (!StringUtils.hasLength(ipAddress)) { + // 判断IP获取结果,转为合法的IP + if (!StringUtils.hasLength(ipAddress) || LOOP_BACK_HOST.equals(ipAddress)) { ipAddress = LOCAL_HOST; } - return ipAddress; } + /** + * 获取IP地址所属国家 + * + * @param ipAddress IP地址 + * @return IP地址所属国家 + */ + public static String getIpCountry(String ipAddress) { + String ipRegion = getIpRegion(ipAddress); + // 返回对应IP属地国家 + return ipRegion.substring(0, ipRegion.indexOf("|")); + } + /** * 解析ip地址 + *

国内只返回 省 + 市,国外返回 国 + 具体地址

* * @param ipAddress ip地址 * @return 解析后的ip地址 */ public static String getIpLocation(String ipAddress) { + // 内网登录情况 + if (ipAddress.equals(LOCAL_HOST)) { + return LOCAL_NAME; + } + // 获取IP区域 + String ipRegion = getIpRegion(ipAddress); + // 定义返回结果 + StringBuilder result = new StringBuilder(); + // 拆分对应 + String[] ipSplit = ipRegion.split("\\|"); + // 判断是否为国内 + if (ipSplit[0].equals(CHINA_LOCATION)) { + // 拼接IP地址信息 + result.append(ipSplit[2]).append(ipSplit[3]); + return result.toString(); + } + // 拼接国外地址,先判断是否能够将内容全部解析出来 + result.append(ipSplit[0]); + if (ipSplit[2].equals(ZERO)) { + return result.toString(); + } + result.append(ipSplit[2]); + if (ipSplit[3].equals(ZERO)) { + return result.toString(); + } + return result.append(ipSplit[3]).toString(); + } + + /** + * 获取IP所属区域 + * + * @param ipAddress IP地址 + * @return IP所属区域 + */ + private static String getIpRegion(String ipAddress) { + // 定义IP属地返回对象 + String region = null; + try { + // 查询内存获取IP区域 + region = searcher.search(ipAddress); + } catch (Exception e) { + log.error("failed to search IpLocation: {}", ipAddress); + } + // 返回查询内容 + return region; + } + + /** + * 解析ip地址 + * + * @param ipAddress ip地址 + * @return 解析后的ip地址 + */ + private static String getIpByNetwork(String ipAddress) { if (LOCAL_HOST.equals(ipAddress) || LOOP_BACK_HOST.equals(ipAddress)) { return LOCAL_NAME; } @@ -88,4 +189,15 @@ public class IpUtil { return UNKNOWN_HOST_NAME; } } + + public static void main(String[] args) { + initIpResource(); + + String ip = "1.32.232.0"; + String chinaIp = "127.0.0.1"; + long start = System.currentTimeMillis(); + System.out.println(getIpLocation(chinaIp)); + long cost = System.currentTimeMillis() - start; + System.out.println(cost); + } } \ No newline at end of file diff --git a/blog-springboot/blog-common/src/main/resources/ip2region.xdb b/blog-springboot/blog-common/src/main/resources/ip2region.xdb new file mode 100644 index 0000000000000000000000000000000000000000..c78b792844dbbe2a3cd5aa1919dd75772ae7aa6e Binary files /dev/null and b/blog-springboot/blog-common/src/main/resources/ip2region.xdb differ diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Article.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Article.java new file mode 100644 index 0000000000000000000000000000000000000000..63bf39f04f5957f80073a1b4265a57b897b3edd2 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Article.java @@ -0,0 +1,111 @@ +package com.zrkizzy.data.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.zrkizzy.common.base.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 文章实体类 + * + * @author zhangrongkang + * @since 2023/9/18 + */ +@Data +@TableName("tb_article") +@ApiModel(value="文章对象") +@EqualsAndHashCode(callSuper = false) +public class Article extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 文章名称 + */ + @ApiModelProperty(value = "文章名称") + private String title; + + /** + * 文章封面 + */ + @ApiModelProperty(value = "文章封面") + private String cover; + + /** + * 文章类型:0 原创 1 转载 2 翻译 + */ + @ApiModelProperty(value = "文章类型") + private Byte type; + + /** + * 文章摘要 + */ + @ApiModelProperty(value = "文章摘要") + private String summary; + + /** + * 文章内容 + */ + @ApiModelProperty(value = "文章内容") + private String content; + + /** + * 原文链接 + */ + @ApiModelProperty(value = "原文链接") + private String originalLink; + + /** + * 是否允许评论:1 允许 0 不允许 + */ + @ApiModelProperty(value = "是否允许评论:1 允许 0 不允许") + private Boolean allowComment; + + /** + * 是否置顶:1 置顶 0 不置顶 + */ + @ApiModelProperty(value = "是否置顶:1 置顶 0 不置顶") + private Boolean isSticky; + + /** + * 是否开启打赏:1 开启 + */ + @ApiModelProperty(value = "是否开启打赏:1 开启") + private Boolean allowDonation; + + /** + * 可见范围:0 自己可见 1 全部可见 + */ + @ApiModelProperty(value = "可见范围:0 自己可见 1 全部可见") + private Byte visibility; + + /** + * 浏览数量 + */ + @ApiModelProperty(value = "浏览数量") + private Integer visitCount; + + /** + * 评论数量 + */ + @ApiModelProperty(value = "评论数量") + private Integer commentCount; + + /** + * 发布IP + */ + @ApiModelProperty(value = "发布IP") + private String createAddress; + + /** + * 发布地址 + */ + @ApiModelProperty(value = "发布地址") + private String createLocation; + +} \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogCategory.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogCategory.java new file mode 100644 index 0000000000000000000000000000000000000000..00db2053a8e57bb83ba2accf364887023675e3e0 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogCategory.java @@ -0,0 +1,57 @@ +package com.zrkizzy.data.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.zrkizzy.common.base.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 博客分类实体类 + * + * @author zhangrongkang + * @since 2023/9/4 + */ +@Data +@TableName("tb_blog_category") +@ApiModel(value="博客分类对象") +@EqualsAndHashCode(callSuper = false) +public class BlogCategory extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 分类名称 + */ + @ApiModelProperty(value = "分类名称") + private String name; + + /** + * 分类描述 + */ + @ApiModelProperty(value = "分类描述") + private String description; + + /** + * 分类图片 + */ + @ApiModelProperty(value = "分类图片") + private String cover; + + /** + * 博客分类访问类型:0 所有人不可见; 1 所有人可见; 2 仅自己可见 + */ + @ApiModelProperty(value = "博客分类访问类型") + private Byte privacySetting; + + /** + * 文章数量 + */ + @ApiModelProperty(value = "文章数量") + private Integer count; + +} \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogConfig.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..b2bcea2bc1688c59547e69d68378dd7dd591774e --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogConfig.java @@ -0,0 +1,68 @@ +package com.zrkizzy.data.domain; + +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; + +/** + * 博客配置实体类 + * + * @author zhangrongkang + * @since 2023/8/24 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(value = "博客配置对象") +@Document(collection = "configurations") +public class BlogConfig implements Serializable { + + /** + * ID + */ + @Id + private String id; + + /** + * 是否展示Banner + */ + private Boolean showBanner; + + /** + * Banner背景图片 + */ + private String bannerImage; + + /** + * 页脚背景图片 + */ + private String footerImage; + + /** + * 亮色主题背景图片 + */ + private String lightImage; + + /** + * 暗色主题背景图片 + */ + private String darkImage; + + /** + *

评论是否需要审核

+ * true:需要,false:不需要 + */ + private Boolean commentApproval; + + /** + *

留言是否需要审核

+ * true:需要,false:不需要 + */ + private Boolean messageApproval; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogTags.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogTags.java new file mode 100644 index 0000000000000000000000000000000000000000..bb8c4db02b95d6d5a8f2b98c6ebde4c04b597ba2 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/BlogTags.java @@ -0,0 +1,39 @@ +package com.zrkizzy.data.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.zrkizzy.common.base.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 博客标签实体类 + * + * @author zhangrongkang + * @since 2023/9/5 + */ +@Data +@TableName("tb_blog_tags") +@ApiModel(value="博客标签对象") +@EqualsAndHashCode(callSuper = false) +public class BlogTags extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 标签名称 + */ + @ApiModelProperty(value = "标签名称") + private String name; + + /** + * 文章数量 + */ + @ApiModelProperty(value = "文章数量") + private Integer count; + +} \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/OperateLog.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/OperateLog.java index 73e91499a141a75cf73c45c3cd7e0c45ae894e0f..ee92e9e0386472f58b936a29af7cc2e39cb7fb1e 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/OperateLog.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/OperateLog.java @@ -24,12 +24,6 @@ public class OperateLog extends BaseEntity { @Serial private static final long serialVersionUID = 1L; - /** - * 模块ID - */ - @ApiModelProperty(value = "模块ID") - private Long moduleId; - /** * 操作内容 */ diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/blog/AboutMe.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/blog/AboutMe.java new file mode 100644 index 0000000000000000000000000000000000000000..859b8524bc77edc9373f91f32fea144edb583271 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/blog/AboutMe.java @@ -0,0 +1,59 @@ +package com.zrkizzy.data.domain.blog; + +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 关于我实体类 + * + * @author zhangrongkang + * @since 2023/9/8 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +@ApiModel(value = "关于我实体类") +@Document(collection = "contents") +public class AboutMe implements Serializable { + + /** + * 主键 + */ + @Id + private String id; + + /** + * 标题 + */ + private String title; + + /** + * 作者头像 + */ + private String avatar; + + /** + * 内容 + */ + private String content; + + /** + * 评论ID + */ + private String commentId; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Module.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Module.java similarity index 94% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Module.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Module.java index a8041c0454341e1a5b7e1d1d4eaae471acfde36c..0e7e9b1f8ca498a3d2d36f96d750d7278b563b2b 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Module.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Module.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableName; import com.zrkizzy.common.base.BaseEntity; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/ModuleResource.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/ModuleResource.java similarity index 96% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/ModuleResource.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/ModuleResource.java index 1d177bb0f3af7c0f977b586f9d70cdc5c8142ac1..8c18e6c6afc8a6d25e9921606d22f07c07cd27f9 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/ModuleResource.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/ModuleResource.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/ModuleRole.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/ModuleRole.java similarity index 61% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/ModuleRole.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/ModuleRole.java index 12681dce937017a4ede4a9fd005d1a35adce137d..f6e1931c7dfd59905382d6f258bc5390d8fae381 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/ModuleRole.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/ModuleRole.java @@ -1,12 +1,14 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableName; -import com.zrkizzy.common.base.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.time.LocalDateTime; + /** * 模块资源实体类 * @@ -17,7 +19,13 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = false) @ApiModel("模块资源对象") @TableName("tb_module_role") -public class ModuleRole extends BaseEntity { +public class ModuleRole implements Serializable { + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + private Long id; /** * 模块ID @@ -31,4 +39,10 @@ public class ModuleRole extends BaseEntity { @ApiModelProperty("角色ID") private Long roleId; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Resource.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Resource.java similarity index 96% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Resource.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Resource.java index 2dd2989e70c3b2d04cae9cab7962d1850ebac725..973680fd70f3986c0be4d805649a426422b16d72 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Resource.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Resource.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableName; import com.zrkizzy.common.base.BaseEntity; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Role.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Role.java similarity index 95% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Role.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Role.java index 6d17756c69796d85dc2e3d4c43081ed1ca5a636b..6d5c4dc059eb3b0261404bcdf5260948edc17173 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Role.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/Role.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableName; import com.zrkizzy.common.base.BaseEntity; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/User.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/User.java similarity index 98% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/User.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/User.java index a548a02504ff03e07ba4236fbce4207ce180a1fc..964cb5fd911011c07a6cc06c5c1d5439489c3bb4 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/User.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/User.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/UserInfo.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/UserInfo.java similarity index 94% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/UserInfo.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/UserInfo.java index 95b6af7c8a6ddd54b968d08debbd9df2803d4837..a6b19a857029f8f4c1514edc18c596000ecc08d6 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/UserInfo.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/UserInfo.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableName; import com.zrkizzy.common.base.BaseEntity; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/UserRole.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/UserRole.java similarity index 95% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/UserRole.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/UserRole.java index 5e52c538460dbc8c09b7b8b6331a4026bd49c844..200eb37156bc5c0290ebac9fd50ee5991b5eeced 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/UserRole.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/core/UserRole.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.core; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Menu.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/system/Menu.java similarity index 82% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Menu.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/system/Menu.java index 67bcb02085c1afd9615416980e2c91c934f2bf32..3b8c67ca309bc0ffd007cdb7afaf181736089757 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/Menu.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/system/Menu.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.system; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.ToString; import java.util.List; @@ -17,6 +18,7 @@ import java.util.List; * @since 2023/4/17 */ @Data +@ToString(callSuper = true) @EqualsAndHashCode(callSuper = false) @ApiModel("菜单对象") @TableName("tb_menu") @@ -28,6 +30,12 @@ public class Menu extends BaseEntity { @ApiModelProperty("菜单名称") private String name; + /** + * 菜单类型 + */ + @ApiModelProperty("菜单类型") + private Character type; + /** * 父菜单ID */ @@ -64,6 +72,12 @@ public class Menu extends BaseEntity { @ApiModelProperty("是否隐藏") private Boolean visible; + /** + * 状态,0:禁用,1:正常 + */ + @ApiModelProperty("菜单状态") + private Boolean status; + /** * 图标 */ @@ -74,7 +88,7 @@ public class Menu extends BaseEntity { * 菜单顺序 */ @ApiModelProperty("菜单顺序") - private Integer order; + private Integer sort; /** * 子菜单 diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/MenuRole.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/system/MenuRole.java similarity index 94% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/MenuRole.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/system/MenuRole.java index 264da7d5d7a1fabffead10baa0ef4d6a4e2030a1..a1bd588aa1aedd889c206c19d770163eb51f3b5a 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/MenuRole.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/domain/system/MenuRole.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.domain; +package com.zrkizzy.data.domain.system; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/AboutMeDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/AboutMeDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..f62eab08bab78c39a828a6c2f417798d639537dc --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/AboutMeDTO.java @@ -0,0 +1,47 @@ +package com.zrkizzy.data.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 关于我数据传输对象 + * + * @author zhangrongkang + * @since 2023/9/8 + */ +@Data +public class AboutMeDTO implements Serializable { + + /** + * 主键 + */ + private String id; + + /** + * 标题 + */ + private String title; + + /** + * 作者头像 + */ + private String avatar; + + /** + * 内容 + */ + private String content; + + /** + * 评论ID + */ + private String commentId; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ArticleDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ArticleDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..07ea69b885159796673c4dcec94ce2aa3440d7e0 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ArticleDTO.java @@ -0,0 +1,115 @@ +package com.zrkizzy.data.dto; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.zrkizzy.common.base.BaseDTO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.util.List; + + +/** + * 文章数据传输对象 + * + * @author zhangrongkang + * @since 2023/9/18 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class ArticleDTO extends BaseDTO { + + /** + * 文章名称 + */ + @NotBlank(message = "文章标题不能为空") + private String title; + + /** + * 文章封面 + */ + private String cover; + + /** + * 文章类型:0 原创 1 转载 2 翻译 + */ + @NotNull(message = "请选择文章类型") + private Byte type; + + /** + * 文章摘要 + */ + @NotBlank(message = "文章摘要不能为空") + @Size(max = 255) + private String summary; + + /** + * 文章内容 + */ + private String content; + + /** + * 原文链接 + */ + private String originalLink; + + /** + * 是否允许评论:1 允许 0 不允许 + */ + @NotNull(message = "请设置文章是否允许评论") + private Boolean allowComment; + + /** + * 是否置顶:1 置顶 0 不置顶 + */ + @NotNull(message = "请设置文章是否置顶") + private Boolean isSticky; + + /** + * 是否开启打赏:1 开启 0 不开启 + */ + @NotNull(message = "请设置文章是否开启打赏") + private Boolean allowDonation; + + /** + * 可见范围:0 自己可见 1 全部可见 + */ + @NotNull(message = "请设置文章的可见范围") + private Byte visibility; + + /** + * 评论数量 + */ + @JsonIgnore + private Integer commentCount; + + /** + * 浏览数量 + */ + @JsonIgnore + private Integer visitCount; + + /** + * 发布IP + */ + @JsonIgnore + private String createAddress; + + /** + * 发布地址 + */ + @JsonIgnore + private String createLocation; + + /** + * 博客标签 + */ + @NotEmpty(message = "请选择博客标签") + private List tags; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ArticleStatusDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ArticleStatusDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..c66944bc92c7e01b484e1bd10986f073dfe57c7e --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ArticleStatusDTO.java @@ -0,0 +1,25 @@ +package com.zrkizzy.data.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 文章状态属性数据传输对象 + * + * @author zhangrongkang + * @since 2023/9/21 + */ +@Data +public class ArticleStatusDTO implements Serializable { + + /** + * 文章ID + */ + private Long id; + + /** + * 修改字段 + */ + private String status; +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/BlogCategoryDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/BlogCategoryDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..6e6e2e8a082bb6c8bc1fb3f1d389c8b0a8dd9118 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/BlogCategoryDTO.java @@ -0,0 +1,46 @@ +package com.zrkizzy.data.dto; + +import com.zrkizzy.common.base.BaseDTO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 博客分类数据传输对象 + * + * @author zhangrongkang + * @since 2023/9/4 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class BlogCategoryDTO extends BaseDTO { + + + /** + * 分类名称 + */ + private String name; + + /** + * 分类描述 + */ + private String description; + + /** + * 分类图片 + */ + private String cover; + + /** + * 博客分类访问类型:0 所有人不可见; 1 所有人可见; 2 仅自己可见 + */ + private Byte privacySetting; + + /** + * 文章数量 + */ + private Integer count; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/BlogTagsDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/BlogTagsDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..4fb59eafa0c3cca881984d172b342602b1d65940 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/BlogTagsDTO.java @@ -0,0 +1,34 @@ +package com.zrkizzy.data.dto; + +import com.zrkizzy.common.base.BaseDTO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotBlank; + + +/** + * 博客标签数据传输对象 + * + * @author zhangrongkang + * @since 2023/9/5 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class BlogTagsDTO extends BaseDTO { + + + /** + * 标签名称 + */ + @NotBlank(message = "标签名称不能为空") + private String name; + + /** + * 文章数量 + */ + private Integer count; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/LoginDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/LoginDTO.java index ebda177facc2f617b4f447b0d33c220849ffb89b..9133a07d88787a371c72327ae252d1be3c8a9903 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/LoginDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/LoginDTO.java @@ -1,9 +1,9 @@ package com.zrkizzy.data.dto; -import com.zrkizzy.common.annotation.IsEmail; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -18,25 +18,46 @@ public class LoginDTO implements Serializable { /** * 用户名 */ - @IsEmail - @NotBlank(message = "用户名不能为空") private String username; /** * 密码 */ - @NotBlank(message = "密码不能为空") private String password; /** * 验证码 */ - @NotBlank(message = "验证码不能为空") private String code; /** * 验证码追踪值 + * + *

用于标识是否为同一用户

*/ + @NotBlank(message = "验证码追踪值不能为空") private String track; + /** + * 登录渠道:QQ,WeiBo,Gitee,Mobile,System + * + *

使用System表示使用系统默认验证码

+ * TODO 后续将登录类型非空校验设置为: + */ + @NotBlank(message = "登录渠道不能为空") + private String channel; + + /** + * 登录类型:F:前台;B:后台 + */ + @NotNull(message = "登录类型不能为空") + private Character type; + + /** + * 电话号码 + * + *

当登录渠道为Mobile时当前值不能为空

+ */ + private String mobile; + } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/ModuleRoleDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/ModuleRoleDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..7cf61dad74916a48423f68b3b370b52785a0e6c5 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/ModuleRoleDTO.java @@ -0,0 +1,31 @@ +package com.zrkizzy.data.dto.core; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 模块角色关联数据传输对象 + * + * @author zhangrongkang + * @since 2023/7/31 + */ +@Data +public class ModuleRoleDTO implements Serializable { + + /** + * 角色ID + */ + @NotNull(message = "角色Id不能为空") + private Long roleId; + + /** + * 模块ID + */ + @NotEmpty(message = "模块ID不能为空") + private List moduleIds; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/PasswordDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/PasswordDTO.java similarity index 95% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/PasswordDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/PasswordDTO.java index fe3e62456ed7cbcd5b2a0c3267b8db133c055121..4373bd1c1e237a1810ca15c192b19cb2317baca7 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/PasswordDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/PasswordDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.core; import lombok.Data; import org.hibernate.validator.constraints.Length; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/RoleDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/RoleDTO.java similarity index 94% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/RoleDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/RoleDTO.java index 016d36c08e054e2d1d30b0feb44f94d140d70602..11467eb0cf89136145a488a4b91bbdfc0ccf9817 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/RoleDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/RoleDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.core; import com.zrkizzy.common.base.BaseDTO; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserDTO.java similarity index 96% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserDTO.java index 2335a3e8b603166c173bf26359fac3d60cb75730..14311a6d3afb81f675b9f8500892e4ae774b3ca7 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.core; import com.zrkizzy.common.annotation.IsEmail; import com.zrkizzy.common.base.BaseDTO; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserRoleDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserRoleDTO.java similarity index 92% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserRoleDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserRoleDTO.java index a9fa02a72aa1de0414f85be997424ef7c08601ea..d6794eff3376112ea2baf916f21f43cf4373423e 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserRoleDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserRoleDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.core; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserUpdateDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserUpdateDTO.java similarity index 95% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserUpdateDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserUpdateDTO.java index e9bf7e17272889b3daa1f2d2cbc8b0027e300f09..eb1b6bc04f7f2ea5ed1399816765101189706900 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/UserUpdateDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/core/UserUpdateDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.core; import com.zrkizzy.common.annotation.IsEmail; import com.zrkizzy.common.base.BaseDTO; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ModuleDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ModuleDTO.java similarity index 91% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ModuleDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ModuleDTO.java index 1bc7905615c52e2a660a8a605f891f9176e14b8d..c02786f9810118bcad8179ace0cc76440cb8a43c 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ModuleDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ModuleDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.resource; import com.zrkizzy.common.base.BaseDTO; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ModuleResourceDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ModuleResourceDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..a23452884577eced30e8485a791a0210a145a883 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ModuleResourceDTO.java @@ -0,0 +1,31 @@ +package com.zrkizzy.data.dto.resource; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 模块资源关联对象 + * + * @author zhangrongkang + * @since 2023/7/30 + */ +@Data +public class ModuleResourceDTO implements Serializable { + + /** + * 模块ID + */ + @NotNull(message = "模块ID不能为空") + private Long moduleId; + + /** + * 请求资源ID集合 + */ + @NotEmpty(message = "资源ID不能为空") + private List resourceIds; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ResourceDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ResourceDTO.java similarity index 93% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ResourceDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ResourceDTO.java index 1869b71391a82759d7f498fb0cd2c2f3a1b7323b..c3fb01fabad538787ae3be20de79542d87e83cd7 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ResourceDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/ResourceDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.resource; import com.zrkizzy.common.base.BaseDTO; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ResourceRoleDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/RoleSecurityDTO.java similarity index 66% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ResourceRoleDTO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/RoleSecurityDTO.java index c69aa186a3ce1789332fe24a3f1dc4a73fdaa7fc..75604a519dfd3f8b995036a97543574022b29c29 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/ResourceRoleDTO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/resource/RoleSecurityDTO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.dto; +package com.zrkizzy.data.dto.resource; import lombok.Data; @@ -6,13 +6,13 @@ import java.io.Serializable; import java.util.List; /** - * 资源角色数据传输对象 + * 角色权限数据传输对象 * * @author zhangrongkang - * @since 2023/3/16 + * @since 2023/8/1 */ @Data -public class ResourceRoleDTO implements Serializable { +public class RoleSecurityDTO implements Serializable { /** * 资源路径 @@ -24,11 +24,6 @@ public class ResourceRoleDTO implements Serializable { */ private String method; - /** - * 所属模块ID - */ - private Long moduleId; - /** * 资源描述 */ diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/system/BlogConfigDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/system/BlogConfigDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..adbf014f504f483e3e91a361c27cf0aaa7e06fe5 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/system/BlogConfigDTO.java @@ -0,0 +1,58 @@ +package com.zrkizzy.data.dto.system; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 博客配置数据传输对象 + * + * @author zhangrongkang + * @since 2023/8/24 + */ +@Data +public class BlogConfigDTO implements Serializable { + + /** + * ID + */ + private String id; + + /** + * 是否展示Banner + */ + private Boolean showBanner; + + /** + * Banner背景图片 + */ + private String bannerImage; + + /** + * 页脚背景图片 + */ + private String footerImage; + + /** + * 亮色主题背景图片 + */ + private String lightImage; + + /** + * 暗色主题背景图片 + */ + private String darkImage; + + /** + *

评论是否需要审核

+ * true:需要,false:不需要 + */ + private Boolean commentApproval; + + /** + *

留言是否需要审核

+ * true:需要,false:不需要 + */ + private Boolean messageApproval; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/system/MenuDTO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/system/MenuDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..e479d675be6f0653696e63efe01b6fae6170c1c9 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/dto/system/MenuDTO.java @@ -0,0 +1,85 @@ +package com.zrkizzy.data.dto.system; + +import com.zrkizzy.common.base.BaseDTO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 菜单数据传输对象 + * + * @author zhangrongkang + * @since 2023/8/6 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class MenuDTO extends BaseDTO { + + /** + * ID + */ + private Long id; + + /** + * 父ID + */ + private Long parentId; + + /** + * 菜单名称 + */ + @NotBlank(message = "菜单名称不能为空") + private String name; + + /** + * 组件路径 + */ + private String component; + + /** + * 图标 + */ + private String icon; + + /** + * 是否缓存 + */ + private Boolean isCache; + + /** + * 是否外链 + */ + private Boolean isLink; + + /** + * 菜单排序 + */ + @NotNull(message = "显示顺序不能为空") + private Integer sort; + + /** + * 访问路径 + */ + @NotBlank(message = "路由地址不能为空") + private String path; + + /** + * 菜单状态 + */ + private Boolean status; + + /** + * 菜单类型:D:目录,P:页面 + */ + private Character type; + + /** + * 显示状态 + */ + private Boolean visible; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ArticleMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ArticleMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..d1f7f0adc02fa2599a4d94a4d75742aef83932ef --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ArticleMapper.java @@ -0,0 +1,48 @@ +package com.zrkizzy.data.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zrkizzy.data.domain.Article; +import com.zrkizzy.data.query.ArticleQuery; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 文章数据持久化接口 + *

+ * + * @author zhangrongkang + * @since 2023/9/18 + */ +public interface ArticleMapper extends BaseMapper
{ + + /** + * 根据文章ID和列名获取对应状态值 + * + * @param articleId 文章ID + * @param field 列名 + * @return 列状态值 + */ + Boolean getFieldValue(@Param("articleId") Long articleId, @Param("field") String field); + + /** + * 根据文章ID和列名更新对应值 + * + * @param articleId 文章ID + * @param field 列名 + * @param value 更新值 + * @return 受影响行数 + */ + Integer updateStatus(@Param("articleId") Long articleId, + @Param("field") String field, + @Param("value") Boolean value); + + /** + * 分页查询文章数据 + * + * @param page 分页对象 + * @param articleQuery 文章查询对象 + * @return 文章分页对象 + */ + Page
listArticles(@Param("page") Page
page, @Param("articleQuery") ArticleQuery articleQuery); +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/BlogCategoryMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/BlogCategoryMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..6001cea6f2570c7ee2efa8945531f2d9a162c5dc --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/BlogCategoryMapper.java @@ -0,0 +1,25 @@ +package com.zrkizzy.data.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zrkizzy.common.base.response.OptionsVO; +import com.zrkizzy.data.domain.BlogCategory; + +import java.util.List; + +/** + *

+ * 博客分类数据持久化接口 + *

+ * + * @author zhangrongkang + * @since 2023/9/4 + */ +public interface BlogCategoryMapper extends BaseMapper { + + /** + * 获取所有博客分类选项 + * + * @return 博客分类选项集合 + */ + List listOptions(); +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/BlogTagsMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/BlogTagsMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..2a9a4975a8ef422a62f2e708cade7c5ca7f6d56a --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/BlogTagsMapper.java @@ -0,0 +1,16 @@ +package com.zrkizzy.data.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zrkizzy.data.domain.BlogTags; + +/** + *

+ * 博客标签数据持久化接口 + *

+ * + * @author zhangrongkang + * @since 2023/9/5 + */ +public interface BlogTagsMapper extends BaseMapper { + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuMapper.java index 10e4cfd89773f7cd7dc9c40d0469ad3bcec84099..935acfcbe05c91ce833f2021989f13132d46f24c 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuMapper.java @@ -1,7 +1,10 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zrkizzy.data.domain.Menu; +import com.zrkizzy.common.base.response.OptionsVO; +import com.zrkizzy.data.domain.system.Menu; +import com.zrkizzy.data.query.MenuQuery; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -24,8 +27,41 @@ public interface MenuMapper extends BaseMapper { /** * 根据角色名称获取对应菜单 * - * @param roleName 角色名称 + * @param roleMark 角色标识 * @return 角色对应菜单 */ - List getRoutes(String roleName); + List getRoutes(String roleMark); + + /** + * 查询符合条件的所有菜单数据 + * + * @param menuQuery 菜单信息查询对象 + * @return 符合条件的菜单集合 + */ + List listAllMenus(@Param("menuQuery") MenuQuery menuQuery); + + /** + * 查询指定角色符合条件的所有菜单数据 + * + * @param menuQuery 菜单信息查询对象 + * @param roleMark 角色标识 + * @return 符合条件的菜单集合 + */ + List listMenus(@Param("menuQuery") MenuQuery menuQuery, @Param("roleMark") String roleMark); + + /** + * 查询所有菜单选项 + * + * @return 当前用户具有的菜单选项 + */ + List listAllMenuOptions(); + + /** + * 查询对应角色的菜单选项 + * + * @param roleId 角色ID + * @return 角色对应的菜单选项 + */ + List listMenuOptions(@Param("roleId") Long roleId); + } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuRoleMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuRoleMapper.java index 829e3e18211c2f1112bb8a0a6910cdbbea743822..f5c9e63db71d6de240c0eda9d1885db3f1f0fd49 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuRoleMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/MenuRoleMapper.java @@ -1,7 +1,7 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zrkizzy.data.domain.MenuRole; +import com.zrkizzy.data.domain.system.MenuRole; /** * 菜单角色数据持久化接口 diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleMapper.java index 6f63f07c80c17fed4ce8e68f02b3c5a92c844f6d..be0890ecd27a077e1c477718036a0b4b53753002 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleMapper.java @@ -1,8 +1,9 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zrkizzy.data.domain.Module; +import com.zrkizzy.data.domain.core.Module; import com.zrkizzy.common.base.response.OptionsVO; +import com.zrkizzy.data.vo.resource.ModuleTreeVO; import java.util.List; @@ -20,4 +21,18 @@ public interface ModuleMapper extends BaseMapper { * @return 模块选项集合 */ List listModuleOptions(); + + /** + * 获取所有模块ID + * + * @return 模块ID集合 + */ + List selectAllModuleId(); + + /** + * 获取所有模块树形数据集合 + * + * @return 所有模块树形数据 + */ + List getAllModuleTree(); } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleResourceMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleResourceMapper.java index 0ae0baae072339a520c10b710aa2c80164fae291..d35af85b2507c622b09bdfc7f7d6924a94a0921f 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleResourceMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleResourceMapper.java @@ -2,11 +2,14 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zrkizzy.data.domain.ModuleResource; -import com.zrkizzy.data.query.ModuleResourceQuery; -import com.zrkizzy.data.vo.ResourceVO; +import com.zrkizzy.data.domain.core.ModuleResource; +import com.zrkizzy.data.query.resource.ModuleResourceQuery; +import com.zrkizzy.data.vo.resource.ResourceVO; +import com.zrkizzy.data.vo.resource.ResourceLeafVO; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

* 资源模块关联数据持久化接口 @@ -24,6 +27,45 @@ public interface ModuleResourceMapper extends BaseMapper { * @param moduleResourceQuery 模块资源查询对象 * @return 请求资源返回对象 */ - Page listByModuleId(@Param("page") Page page, @Param("moduleResourceQuery") ModuleResourceQuery moduleResourceQuery); + Page pageByModuleId(@Param("page") Page page, @Param("moduleResourceQuery") ModuleResourceQuery moduleResourceQuery); + + /** + * 获取当前模块中所有可以添加的资源集合 + * + * @param moduleId 模块ID + * @return 指定模块可以添加请求资源叶子集合 + */ + List findMissingResourceByModuleId(Long moduleId); + + /** + * 通过模块ID获取当前模块已有的请求资源 + * + * @param moduleId 模块ID + * @return 当前模块中已有的资源ID集合 + */ + List listCheckById(Long moduleId); + + /** + * 删除指定模块对应数据 + * + * @param moduleId 模块ID + * @return 受影响行数 + */ + Integer deleteByModuleId(Long moduleId); + + /** + * 批量插入模块资源数据 + * + * @param moduleResourceList 模块资源集合 + * @return 受影响行数 + */ + Integer insertBatch(@Param("moduleResourceList") List moduleResourceList); + /** + * 根据模块ID集合批量删除 + * + * @param moduleIds 模块ID集合 + * @return 受影响行数 + */ + Integer deleteByModuleIds(@Param("moduleIds") List moduleIds); } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleRoleMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleRoleMapper.java index 2691a564a4c26e4e948e6c00da98bf155758a0ec..6c4600a08da5e3bed68e58883d84eddc93ccff5a 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleRoleMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ModuleRoleMapper.java @@ -1,10 +1,48 @@ package com.zrkizzy.data.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zrkizzy.data.domain.core.ModuleRole; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + /** * 模块角色数据持久化接口 * * @author zhangrongkang * @since 2023/3/16 */ -public interface ModuleRoleMapper { +public interface ModuleRoleMapper extends BaseMapper { + + /** + * 删除指定角色具有的所有请求权限 + * + * @param roleId 角色ID + * @return 受影响行数 + */ + Integer deleteByRoleId(Long roleId); + + /** + * 根据角色ID获取角色模块权限 + * + * @param roleId 角色ID + * @return 所有选中的模块ID集合 + */ + List listModuleIdByRoleId(Long roleId); + + /** + * 添加模块角色关联信息 + * + * @param moduleRoleList 模块角色关联集合 + * @return 受影响行数 + */ + Integer insertBatch(@Param("moduleRoleList") List moduleRoleList); + + /** + * 统计指定模块ID集合的数据数量 + * + * @param ids 模块ID集合 + * @return 模块ID集合对应的数据总数 + */ + Integer countByModuleIds(@Param("ids") List ids); } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ResourceMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ResourceMapper.java index 58298e2315878d8abf456bd2bec9464d7b0b6e30..3293ca58d10daedf1d65175e0c9e3572a48d2062 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ResourceMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/ResourceMapper.java @@ -1,8 +1,8 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zrkizzy.data.domain.Resource; -import com.zrkizzy.data.dto.ResourceRoleDTO; +import com.zrkizzy.data.domain.core.Resource; +import com.zrkizzy.data.dto.resource.RoleSecurityDTO; import java.util.List; @@ -15,9 +15,9 @@ import java.util.List; public interface ResourceMapper extends BaseMapper { /** - * 加载资源角色数据 + * 加载角色权限数据 * - * @return 资源角色数据集合 + * @return 角色权限数据集合 */ - List loadResourceRoleData(); + List loadResourceRoleData(); } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/RoleMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/RoleMapper.java index 8b72e1013de75328cc4169a557bdce7c514e10c8..1ace974273101a5b5d2d3c14c8288f867ef46c5e 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/RoleMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/RoleMapper.java @@ -2,7 +2,7 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zrkizzy.common.base.response.OptionsVO; -import com.zrkizzy.data.domain.Role; +import com.zrkizzy.data.domain.core.Role; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserInfoMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserInfoMapper.java index 318e735fdc9ee68e7d260c7df66bdf87a81fae9f..b54f58d3ef8b9e8500b81abb1ee301fd4cf188d0 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserInfoMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserInfoMapper.java @@ -1,7 +1,7 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zrkizzy.data.domain.UserInfo; +import com.zrkizzy.data.domain.core.UserInfo; /** * 用户信息数据持久化接口 diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserMapper.java index 69459ae78921a1dad8bbe8cbba102cdc48cff88d..48c5509c5123cab2d053eec367d7c2af51897fb7 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserMapper.java @@ -2,9 +2,9 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zrkizzy.data.domain.User; +import com.zrkizzy.data.domain.core.User; import com.zrkizzy.common.base.response.OptionsVO; -import com.zrkizzy.data.query.UserQuery; +import com.zrkizzy.data.query.core.UserQuery; import com.zrkizzy.data.vo.UserVO; import org.apache.ibatis.annotations.Param; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserRoleMapper.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserRoleMapper.java index dcef46a24e9c00d88cb45fd2340ab3ad862ada9a..417249561fa119db2f9cf1b4cf630aeb31d91817 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserRoleMapper.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/mapper/UserRoleMapper.java @@ -1,7 +1,7 @@ package com.zrkizzy.data.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zrkizzy.data.domain.UserRole; +import com.zrkizzy.data.domain.core.UserRole; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ArticleQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ArticleQuery.java new file mode 100644 index 0000000000000000000000000000000000000000..cd6eb659d562585c6da850f2e97335577b521941 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ArticleQuery.java @@ -0,0 +1,41 @@ +package com.zrkizzy.data.query; + +import com.zrkizzy.common.base.request.BasePage; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; + +/** + * 文章信息查询对象 + * + * @author zhangrongkang + * @since 2023/9/18 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class ArticleQuery extends BasePage { + + /** + * 文章名称 + */ + private String title; + + /** + * 文章类型 + */ + private Byte type; + + /** + * 可见范围 + */ + private Byte visibility; + + /** + * 时间范围 + */ + private List dataRange; + +} \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/BlogCategoryQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/BlogCategoryQuery.java new file mode 100644 index 0000000000000000000000000000000000000000..731e43e42de97cdd9226e7c43d87ed06f189eec2 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/BlogCategoryQuery.java @@ -0,0 +1,36 @@ +package com.zrkizzy.data.query; + +import com.zrkizzy.common.base.request.BasePage; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; + +/** + * 博客分类信息查询对象 + * + * @author zhangrongkang + * @since 2023/9/4 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class BlogCategoryQuery extends BasePage { + + /** + * 分类名称 + */ + private String name; + + /** + * 博客分类访问类型:0 所有人不可见; 1 所有人可见; 2 仅自己可见 + */ + private Byte privacySetting; + + /** + * 时间范围 + */ + private List dataRange; + +} \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/BlogTagsQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/BlogTagsQuery.java new file mode 100644 index 0000000000000000000000000000000000000000..46774d3e5971c7b2780a8b18b249b02c32d06b95 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/BlogTagsQuery.java @@ -0,0 +1,31 @@ +package com.zrkizzy.data.query; + +import com.zrkizzy.common.base.request.BasePage; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; + +/** + * 博客标签信息查询对象 + * + * @author zhangrongkang + * @since 2023/9/5 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class BlogTagsQuery extends BasePage { + + /** + * 标签名称 + */ + private String name; + + /** + * 时间范围 + */ + private List dataRange; + +} \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/MenuQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/MenuQuery.java new file mode 100644 index 0000000000000000000000000000000000000000..9d533958055b6a5a3d542d8d5a5bfcf63b939bf5 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/MenuQuery.java @@ -0,0 +1,32 @@ +package com.zrkizzy.data.query; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 菜单信息查询对象 + * + * @author zhangrongkang + * @since 2023/8/2 + */ +@Data +public class MenuQuery implements Serializable { + + /** + * 菜单名称 + */ + private String name; + + /** + * 状态,0:禁用,1:正常 + */ + private Boolean status; + + /** + * 时间范围 + */ + private List dataRange; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/RoleQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/core/RoleQuery.java similarity index 93% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/RoleQuery.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/core/RoleQuery.java index 9cdd70457446a3ff5f8f888955440a7d23612085..4396ea4787e112eb535802508bdec6179cf7f06f 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/RoleQuery.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/core/RoleQuery.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.query; +package com.zrkizzy.data.query.core; import com.zrkizzy.common.base.request.BasePage; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/UserQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/core/UserQuery.java similarity index 93% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/UserQuery.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/core/UserQuery.java index d031dacdf12bb0ecf6160c9776ee1aaea15cc1a7..286edce4440bde47d2c752357d468736232ee70f 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/UserQuery.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/core/UserQuery.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.query; +package com.zrkizzy.data.query.core; import com.zrkizzy.common.base.request.BasePage; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/monitor/OperateLogQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/monitor/OperateLogQuery.java index 17eba38cc6c237fac0c4c43bf17befb8c1700bf3..3e5d590d3c4a27f384e3fafbee3f62f068a69bd6 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/monitor/OperateLogQuery.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/monitor/OperateLogQuery.java @@ -18,11 +18,6 @@ import java.util.List; @EqualsAndHashCode(callSuper = false) public class OperateLogQuery extends BasePage { - /** - * 模块ID - */ - private Long moduleId; - /** * 操作类型 0 其他操作,1 新增,2 修改, 3 删除, 4 查询 */ diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ModuleQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ModuleQuery.java similarity index 92% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ModuleQuery.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ModuleQuery.java index 15c7d8ae0e0a8897cd65ad7818642271d1dfdaec..2bcc82f45223af521d03ecbe522e29b76d71f5fc 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ModuleQuery.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ModuleQuery.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.query; +package com.zrkizzy.data.query.resource; import com.zrkizzy.common.base.request.BasePage; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ModuleResourceQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ModuleResourceQuery.java similarity index 93% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ModuleResourceQuery.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ModuleResourceQuery.java index 8a58a4983c9107b03ed3795fd368e7d42d6a1321..7b452958bd308937b84cad61defe00c997a3fa42 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ModuleResourceQuery.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ModuleResourceQuery.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.query; +package com.zrkizzy.data.query.resource; import com.zrkizzy.common.base.request.BasePage; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ResourceQuery.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ResourceQuery.java similarity index 93% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ResourceQuery.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ResourceQuery.java index 8c300488331b5ed0df0a45e2c14c03f2db7366af..a1faabb99d206b09caeef76b050ea587b5943523 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/ResourceQuery.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/query/resource/ResourceQuery.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.query; +package com.zrkizzy.data.query.resource; import com.zrkizzy.common.base.request.BasePage; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/AboutMeVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/AboutMeVO.java new file mode 100644 index 0000000000000000000000000000000000000000..7685efab89cfdf4f33c6adfeac87f511156bafb8 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/AboutMeVO.java @@ -0,0 +1,47 @@ +package com.zrkizzy.data.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 关于我数据返回对象 + * + * @author zhangrongkang + * @since 2023/9/8 + */ +@Data +public class AboutMeVO implements Serializable { + + /** + * 主键 + */ + private String id; + + /** + * 标题 + */ + private String title; + + /** + * 作者头像 + */ + private String avatar; + + /** + * 内容 + */ + private String content; + + /** + * 评论ID + */ + private String commentId; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ArticleMetaVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ArticleMetaVO.java new file mode 100644 index 0000000000000000000000000000000000000000..731750237ed4fdd802b570b116ebca7ad8c145ed --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ArticleMetaVO.java @@ -0,0 +1,74 @@ +package com.zrkizzy.data.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 文章基本数据返回对象 + *

用于文章管理页面将基本信息进行展示,无需将所有内容全部返回

+ * + * @author zhangrongkang + * @since 2023/9/23 + */ +@Data +public class ArticleMetaVO { + + /** + * 文章主键 + */ + @JsonFormat(shape =JsonFormat.Shape.STRING) + private Long id; + + /** + * 文章名称 + */ + private String title; + + /** + * 文章封面 + */ + private String cover; + + /** + * 文章类型:0 原创 1 转载 2 翻译 + */ + private Byte type; + + /** + * 是否允许评论:1 允许 0 不允许 + */ + private Boolean allowComment; + + /** + * 是否置顶:1 置顶 0 不置顶 + */ + private Boolean isSticky; + + /** + * 是否开启打赏:1 开启 + */ + private Boolean allowDonation; + + /** + * 可见范围:0 自己可见 1 全部可见 + */ + private Byte visibility; + + /** + * 浏览数量 + */ + private Integer visitCount; + + /** + * 评论数量 + */ + private Integer commentCount; + + /** + * 文章发布时间 + */ + private LocalDateTime createTime; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ArticleVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ArticleVO.java new file mode 100644 index 0000000000000000000000000000000000000000..d39c317187ab4b23aadc739521dbd8e31b279c6b --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ArticleVO.java @@ -0,0 +1,101 @@ +package com.zrkizzy.data.vo; + +import com.zrkizzy.common.base.response.BaseVO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; + +/** + * 文章数据返回对象 + * + * @author zhangrongkang + * @since 2023/9/18 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class ArticleVO extends BaseVO { + + /** + * 文章名称 + */ + private String title; + + /** + * 文章封面 + */ + private String cover; + + /** + * 文章类型:0 原创 1 转载 2 翻译 + */ + private Byte type; + + /** + * 文章摘要 + */ + private String summary; + + /** + * 文章内容 + */ + private String content; + + /** + * 原文链接 + */ + private String originalLink; + + /** + * 是否允许评论:1 允许 0 不允许 + */ + private Boolean allowComment; + + /** + * 是否置顶:1 置顶 0 不置顶 + */ + private Boolean isSticky; + + /** + * 是否开启打赏:1 开启 + */ + private Boolean allowDonation; + + /** + * 可见范围:0 自己可见 1 全部可见 + */ + private Byte visibility; + + /** + * 浏览数量 + */ + private Integer visitCount; + + /** + * 评论数量 + */ + private Integer commentCount; + + /** + * 发布IP + */ + private String createAddress; + + /** + * 发布地址 + */ + private String createLocation; + + /** + * 文章标签 + */ + private List tags; + + /** + * 文章分类 + */ + private BlogCategoryVO category; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/BlogCategoryVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/BlogCategoryVO.java new file mode 100644 index 0000000000000000000000000000000000000000..350154d365e63bd2c787a31b7ebb03e35d2bcf68 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/BlogCategoryVO.java @@ -0,0 +1,45 @@ +package com.zrkizzy.data.vo; + +import com.zrkizzy.common.base.response.BaseVO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 博客分类数据返回对象 + * + * @author zhangrongkang + * @since 2023/9/4 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class BlogCategoryVO extends BaseVO { + + /** + * 分类名称 + */ + private String name; + + /** + * 分类描述 + */ + private String description; + + /** + * 分类图片 + */ + private String cover; + + /** + * 博客分类访问类型:0 所有人不可见; 1 所有人可见; 2 仅自己可见 + */ + private Byte privacySetting; + + /** + * 文章数量 + */ + private Integer count; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/BlogTagsVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/BlogTagsVO.java new file mode 100644 index 0000000000000000000000000000000000000000..bf79b97c8aee5c5742d97667bc7b13b42e255451 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/BlogTagsVO.java @@ -0,0 +1,30 @@ +package com.zrkizzy.data.vo; + +import com.zrkizzy.common.base.response.BaseVO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 博客标签数据返回对象 + * + * @author zhangrongkang + * @since 2023/9/5 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class BlogTagsVO extends BaseVO { + + /** + * 标签名称 + */ + private String name; + + /** + * 文章数量 + */ + private Integer count; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/MenuVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/MenuVO.java new file mode 100644 index 0000000000000000000000000000000000000000..921e5569be079c1d709c728afd1b63aaeb6632a3 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/MenuVO.java @@ -0,0 +1,91 @@ +package com.zrkizzy.data.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.zrkizzy.common.base.response.BaseVO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * 菜单数据返回对象 + * + * @author zhangrongkang + * @since 2023/8/2 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class MenuVO extends BaseVO implements Comparable { + + /** + * 菜单名称 + */ + private String name; + + /** + * 父菜单ID + */ + @JsonFormat(shape =JsonFormat.Shape.STRING) + private Long parentId; + + /** + * 访问路径 + */ + private String path; + + /** + * 菜单类型 + */ + private Character type; + + /** + * 组件 + */ + private String component; + + /** + * 是否缓存:0: 不缓存,1: 缓存 + */ + private Boolean isCache; + + /** + * 是否外链:0: 不是外链, 1: 外链 + */ + private Boolean isLink; + + /** + * 是否隐藏:0: 不隐藏, 1: 隐藏 + */ + private Boolean visible; + + /** + * 菜单状态:0: 禁用,1: 正常 + */ + private Boolean status; + + /** + * 图标 + */ + private String icon; + + /** + * 菜单顺序 + */ + private Integer sort; + + /** + * 子菜单 + */ + private List children; + + /** + * 自定义排序规则 + * + * @return 排序结果 升序:> 0,降序: < 0 + */ + @Override + public int compareTo(MenuVO menuVO) { + return this.sort - menuVO.getSort(); + } + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/OperateLogVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/OperateLogVO.java index ed7f6220548a75fa2df256679c9b764eac5146bd..a8d9db84454a3d41ae557f2ec8b781e697827dd3 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/OperateLogVO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/OperateLogVO.java @@ -22,11 +22,6 @@ public class OperateLogVO extends BaseVO { */ private String operateContent; - /** - * 模块名称 - */ - private String moduleName; - /** * 操作类型 0 其他操作,1 新增,2 修改, 3 删除, 4 查询 */ diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/export/ApiScanVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/export/ApiScanVO.java deleted file mode 100644 index 7970007c7fb8a3693539b532b5380b393b546e5f..0000000000000000000000000000000000000000 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/export/ApiScanVO.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.zrkizzy.data.vo.export; - -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; - -import java.io.Serializable; - -/** - * API接口Excel导出数据对象 - * - * @author zhangrongkang - * @since 2023/7/17 - */ -@Data -@Builder -@AllArgsConstructor -public class ApiScanVO implements Serializable { - - /** - * 所属类 - */ - @ColumnWidth(60) - @ExcelProperty("请求类") - private String className; - - /** - * 所属类描述 - */ - @ColumnWidth(25) - @ExcelProperty("请求类描述") - private String classDesc; - - /** - * 请求路径 - */ - @ColumnWidth(50) - @ExcelProperty("请求路径") - private String url; - - /** - * 方法名称 - */ - @ColumnWidth(25) - @ExcelProperty("方法名称") - private String method; - - /** - * 方法描述 - */ - @ColumnWidth(25) - @ExcelProperty("方法描述") - private String methodDesc; - - /** - * 方法类型 - */ - @ColumnWidth(15) - @ExcelProperty("方法类型") - private String methodType; - - /** - * 传入参数 - */ - @ColumnWidth(25) - @ExcelProperty("传入参数") - private String inParam; - - /** - * 传入参数描述 - */ - @ColumnWidth(35) - @ExcelProperty("入参描述") - private String inDesc; - - /** - * 传入参数类型 - */ - @ColumnWidth(40) - @ExcelProperty("入参类型") - private String inParamType; - - /** - * 返回参数类型 - */ - @ColumnWidth(50) - @ExcelProperty("返回参数类型") - private String outType; - - /** - * 返回参数描述 - */ - @ColumnWidth(25) - @ExcelProperty("返回描述") - private String outDesc; - -} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleResourceVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleResourceVO.java new file mode 100644 index 0000000000000000000000000000000000000000..a2536e352672b75dbf9cb08fe0b2fe3a0e78603e --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleResourceVO.java @@ -0,0 +1,29 @@ +package com.zrkizzy.data.vo.resource; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 模块资源关联对象 + * + * @author zhangrongkang + * @since 2023/7/30 + */ +@Data +@AllArgsConstructor +public class ModuleResourceVO implements Serializable { + + /** + * 请求资源树形数据 + */ + private List resourceTree; + + /** + * 当前模块已有的请求资源 + */ + private List checkIds; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleRoleVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleRoleVO.java new file mode 100644 index 0000000000000000000000000000000000000000..b675ed0dbfce0c2b5ac2d5369af3c3aaf36ad573 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleRoleVO.java @@ -0,0 +1,28 @@ +package com.zrkizzy.data.vo.resource; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 模块角色关联数据返回对象 + * + * @author zhangrongkang + * @since 2023/7/31 + */ +@Data +@AllArgsConstructor +public class ModuleRoleVO implements Serializable { + + /** + * 当前模块选中的ID + */ + private List checkIds; + + /** + * 模块树形数据 + */ + private List moduleTree; +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleTreeVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleTreeVO.java new file mode 100644 index 0000000000000000000000000000000000000000..edeefe2d53f992fa2c7dfa7840d3918ac4b8a33a --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ModuleTreeVO.java @@ -0,0 +1,28 @@ +package com.zrkizzy.data.vo.resource; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; + +/** + * 模块树形数据返回对象 + * + * @author zhangrongkang + * @since 2023/7/31 + */ +@Data +public class ModuleTreeVO implements Serializable { + + /** + * 模块ID + */ + @JsonFormat(shape =JsonFormat.Shape.STRING) + private Long id; + + /** + * 模块名称 + */ + private String label; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceLeafVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceLeafVO.java new file mode 100644 index 0000000000000000000000000000000000000000..9c63a2417304eeb3508950683b7c5c37a9f29540 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceLeafVO.java @@ -0,0 +1,33 @@ +package com.zrkizzy.data.vo.resource; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; + +/** + * 请求资源叶子数据返回对象 + * + * @author zhangrongkang + * @since 2023/7/30 + */ +@Data +public class ResourceLeafVO implements Serializable { + + /** + * 请求资源ID + */ + @JsonFormat(shape =JsonFormat.Shape.STRING) + private Long id; + + /** + * 请求资源名称 + */ + private String label; + + /** + * 请求资源路径 + */ + private String url; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceTreeVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceTreeVO.java new file mode 100644 index 0000000000000000000000000000000000000000..9d5b641f8d19686e61a400deec6d2210de2be241 --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceTreeVO.java @@ -0,0 +1,31 @@ +package com.zrkizzy.data.vo.resource; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 请求资源树形数据返回对象 + * + * @author zhangrongkang + * @since 2023/7/30 + */ +@Data +@Builder +@AllArgsConstructor +public class ResourceTreeVO implements Serializable { + + /** + * 节点描述 + */ + private String label; + + /** + * 当前节点下的数据 + */ + private List children; + +} diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ResourceVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceVO.java similarity index 94% rename from blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ResourceVO.java rename to blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceVO.java index a7bdcdb2800cfa1ecda7a69ab6210500fb9957a7..6f7c207f416adcd2b364c73b1d16e3a00a80bbc3 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/ResourceVO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/resource/ResourceVO.java @@ -1,4 +1,4 @@ -package com.zrkizzy.data.vo; +package com.zrkizzy.data.vo.resource; import com.zrkizzy.common.base.response.BaseVO; import lombok.Data; diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/MetaVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/MetaVO.java index 6ad061bf8cff84aa23c503cd55699abe17d1bbaa..c9db9bd841ca9a619b9769555ecc72b9f1a7ce1b 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/MetaVO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/MetaVO.java @@ -2,6 +2,7 @@ package com.zrkizzy.data.vo.route; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; @@ -12,6 +13,7 @@ import java.io.Serializable; * @since 2023/4/18 */ @Data +@NoArgsConstructor @AllArgsConstructor public class MetaVO implements Serializable { diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/RouterVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/RouterVO.java index 74de4291ffb1061e22c09df3eb638bcb741f01d1..556987bacca998ea58ad33c285e390c2c2ee0416 100644 --- a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/RouterVO.java +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/route/RouterVO.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.List; @@ -16,6 +17,7 @@ import java.util.List; */ @Data @Builder +@NoArgsConstructor @AllArgsConstructor public class RouterVO implements Comparable, Serializable { @@ -58,7 +60,7 @@ public class RouterVO implements Comparable, Serializable { * 菜单序号 */ @JsonIgnore - private Integer order; + private Integer sort; /** * 自定义排序规则 @@ -67,6 +69,6 @@ public class RouterVO implements Comparable, Serializable { */ @Override public int compareTo(RouterVO routerVO) { - return this.order - routerVO.getOrder(); + return this.sort - routerVO.getSort(); } } diff --git a/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/system/BlogConfigVO.java b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/system/BlogConfigVO.java new file mode 100644 index 0000000000000000000000000000000000000000..b6e9504bab8562338a364920c8952d8e4b092dbe --- /dev/null +++ b/blog-springboot/blog-data/src/main/java/com/zrkizzy/data/vo/system/BlogConfigVO.java @@ -0,0 +1,58 @@ +package com.zrkizzy.data.vo.system; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 博客数据返回对象 + * + * @author zhangrongkang + * @since 2023/8/24 + */ +@Data +public class BlogConfigVO implements Serializable { + + /** + * ID + */ + private String id; + + /** + * 是否展示Banner + */ + private Boolean showBanner; + + /** + * Banner背景图片 + */ + private String bannerImage; + + /** + * 页脚背景图片 + */ + private String footerImage; + + /** + * 亮色主题背景图片 + */ + private String lightImage; + + /** + * 暗色主题背景图片 + */ + private String darkImage; + + /** + *

评论是否需要审核

+ * true:需要,false:不需要 + */ + private Boolean commentApproval; + + /** + *

留言是否需要审核

+ * true:需要,false:不需要 + */ + private Boolean messageApproval; + +} diff --git a/blog-springboot/blog-data/src/main/resources/mapper/ArticleMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/ArticleMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..3cc944a1a769eabae086c92bee85d09a8d3d796b --- /dev/null +++ b/blog-springboot/blog-data/src/main/resources/mapper/ArticleMapper.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, title, cover, `type`, summary, content, original_link, allow_comment, is_sticky, allow_donation, visibility, visit_count, comment_count, create_address, create_location, create_time, update_time + + + + + + + + + + + + + + + + + + + + id, title, `type`, cover, allow_comment, is_sticky, allow_donation, visibility, visit_count, comment_count, create_time + + + + + + + + + allow_comment + is_sticky + allow_donation + + + + + + + + + UPDATE tb_article + + + = #{value} + + WHERE id = #{articleId} + + diff --git a/blog-springboot/blog-data/src/main/resources/mapper/BlogCategoryMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/BlogCategoryMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..0c7a5ca501d979ee0be5617c03a817e4bbe73a8d --- /dev/null +++ b/blog-springboot/blog-data/src/main/resources/mapper/BlogCategoryMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + id, `name`, description, cover, privacy_setting, `count`, create_time, update_time + + + + + + + + + + diff --git a/blog-springboot/blog-data/src/main/resources/mapper/BlogTagsMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/BlogTagsMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..10cab8e6729c92a7826dcff743e5fd8a1edc49f5 --- /dev/null +++ b/blog-springboot/blog-data/src/main/resources/mapper/BlogTagsMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + id, name, count, create_time, update_time + + diff --git a/blog-springboot/blog-data/src/main/resources/mapper/MenuMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/MenuMapper.xml index a1abf47ec7368dc25a039100e0e51d0c53166b83..e9fdb5a7305583b5ab9d4b98107d2dba6ca881df 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/MenuMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/MenuMapper.xml @@ -3,20 +3,22 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > - id, `name`, parent_id, `path`, component, is_cache, is_link, visible, icon, `order`, create_time, update_time + id, `name`, parent_id, `type`, `path`, component, is_cache, is_link, visible, status, icon, `sort`, create_time, update_time - + + + - + @@ -24,19 +26,111 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/resources/mapper/ModuleMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/ModuleMapper.xml index bacc54bd8d42fdf609d0312ffa82cd9fb68b9215..5ef6f0c7560267e4991ff5e612456307a1649bf1 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/ModuleMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/ModuleMapper.xml @@ -14,4 +14,19 @@ SELECT id, name FROM tb_module; + + + + + + + + + + + \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/resources/mapper/ModuleResourceMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/ModuleResourceMapper.xml index 8546a9e110799e86661bc111c6e5d342bfe7d52a..03861471b64572a8d58d271075b30f7ea748a487 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/ModuleResourceMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/ModuleResourceMapper.xml @@ -3,7 +3,7 @@ - + @@ -11,10 +11,10 @@ - id, module_id, resource_id + id, module_id, resource_id, create_time - + @@ -24,7 +24,7 @@ - SELECT mr.id AS id, r.`name` AS `name`, @@ -41,4 +41,58 @@ AND mr.create_time BETWEEN #{moduleResourceQuery.dataRange[0]} AND #{moduleResourceQuery.dataRange[1]} + + + + + + + + + + + + + + + + DELETE FROM tb_module_resource WHERE module_id = #{moduleId} + + + + + INSERT INTO + tb_module_resource() + VALUES + + (#{moduleResource.id}, #{moduleResource.moduleId}, #{moduleResource.resourceId}, #{moduleResource.createTime}) + + + + + + DELETE FROM + tb_module_resource + + module_id IN + + #{id} + + + + diff --git a/blog-springboot/blog-data/src/main/resources/mapper/ModuleRoleMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/ModuleRoleMapper.xml index 0203c94edd0b5144023b94e3fb5999a74341a56e..075f06f827ecd4f55aabab1ca628fc38b2a4fc2d 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/ModuleRoleMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/ModuleRoleMapper.xml @@ -3,4 +3,49 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > + + + id, module_id, role_id, create_time + + + + + DELETE FROM tb_module_role WHERE role_id = #{roleId} + + + + + + + + + + + INSERT INTO + tb_module_role() + VALUES + + (#{moduleRole.id}, #{moduleRole.moduleId}, #{moduleRole.roleId}, #{moduleRole.createTime}) + + + \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/resources/mapper/OperateLogMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/OperateLogMapper.xml index c4330db55f2a26c7b82bb2796c764128fff5e447..2641766c6df663d8aabd978b3ae3ee4c22d18b51 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/OperateLogMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/OperateLogMapper.xml @@ -6,7 +6,6 @@ - @@ -23,7 +22,7 @@ - id, operate_content, module_id, `type`, method_name, request_method, user_id, operate_ip, operate_location, operate_param, operate_result, status, cost_time, create_time, update_time + id, operate_content, `type`, method_name, request_method, user_id, operate_ip, operate_location, operate_param, operate_result, status, cost_time, create_time, update_time @@ -34,7 +33,6 @@ - @@ -53,7 +51,6 @@ SELECT o.id AS id, o.operate_content AS operate_content, - m.name AS module_name, o.`type` AS `type`, o.method_name AS method_name, o.request_method AS request_method, @@ -67,15 +64,9 @@ o.create_time AS create_time FROM tb_operate_log o, - tb_module m, tb_user u WHERE - o.module_id = m.id AND o.user_id = u.id - - - AND o.module_id = #{operateLogQuery.moduleId} - AND o.user_id = #{operateLogQuery.userId} diff --git a/blog-springboot/blog-data/src/main/resources/mapper/ResourceMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/ResourceMapper.xml index 073d4c756d51b86ee171d35934096399588b5802..60077aad04588d472384bd1246fb65126fefdf61 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/ResourceMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/ResourceMapper.xml @@ -4,7 +4,7 @@ - + @@ -14,30 +14,29 @@ - - + - - + + + - - SELECT res.method AS method, res.url AS url, res.description AS description, - mr.module_id AS module_id, r.mark AS role_mark FROM tb_resource res - LEFT JOIN tb_module_resource mres ON res.id = mres.resource_id - LEFT JOIN tb_module_role mr ON mres.module_id = mr.module_id - LEFT JOIN tb_role r ON mr.role_id = r.id + INNER JOIN tb_module_resource mres ON res.id = mres.resource_id + INNER JOIN tb_module_role mr ON mres.module_id = mr.module_id + INNER JOIN tb_role r ON mr.role_id = r.id \ No newline at end of file diff --git a/blog-springboot/blog-data/src/main/resources/mapper/RoleMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/RoleMapper.xml index 9bc28ccf2e109a18f7c325f2f7b3ba033b371ddd..9d9e86c51e92391bd1c83236810c94b48371ef78 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/RoleMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/RoleMapper.xml @@ -26,7 +26,7 @@ - SELECT FROM @@ -34,7 +34,7 @@ - SELECT FROM @@ -44,7 +44,7 @@ - SELECT FROM diff --git a/blog-springboot/blog-data/src/main/resources/mapper/UserMapper.xml b/blog-springboot/blog-data/src/main/resources/mapper/UserMapper.xml index 509844026c610ac08f4f2e709717ee5ac0f8fbca..de1832cc0d748eb0619f2c1edc032a9bf3ba43e7 100644 --- a/blog-springboot/blog-data/src/main/resources/mapper/UserMapper.xml +++ b/blog-springboot/blog-data/src/main/resources/mapper/UserMapper.xml @@ -8,7 +8,7 @@ - + @@ -20,8 +20,8 @@ - - + + diff --git a/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/util/FreemarkerUtil.java b/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/util/FreemarkerUtil.java index 6fe32a53f6d9ddf44769e54f10c965d55d88516e..4269e824b802ef3c7b59c181092621376a70abec 100644 --- a/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/util/FreemarkerUtil.java +++ b/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/util/FreemarkerUtil.java @@ -22,7 +22,7 @@ public class FreemarkerUtil { /** * Freemarker模板文件路径 */ - private static final String FILE_PATH = "E:\\JavaProject\\blog\\blog-springboot\\blog-generator\\src\\main\\resources\\template\\"; + private static final String FILE_PATH = "/Users/zhangrongkang/workspace/IdeaProject/blog/blog-springboot/blog-generator/src/main/resources/template/"; /** * Freemarker模板类 diff --git a/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/vue/index.vue b/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/vue/index.vue index 82eff80ce28dae0a522f463ca9bd912fa93b5c6e..c6ecb7b6eb743eab6a2604337cf4764f50a542b6 100644 --- a/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/vue/index.vue +++ b/blog-springboot/blog-generator/src/main/java/com/zrkizzy/generator/vue/index.vue @@ -5,7 +5,11 @@ - + + + + + 编辑 - 删除 + 删除 @@ -45,10 +49,10 @@ - - - - + + + + + + + + diff --git a/blog-vue/admin/src/layout/components/TagsView/index.vue b/blog-vue/admin/src/layout/components/TagsView/index.vue index 9722c0dc6ef284b37bb4f52c6a1e0b2853a22358..ffd1d9060c35935a6d1e78ea23c05df722cedbc7 100644 --- a/blog-vue/admin/src/layout/components/TagsView/index.vue +++ b/blog-vue/admin/src/layout/components/TagsView/index.vue @@ -11,7 +11,8 @@ :style="{ backgroundColor: isActive(tag) ? '#409EFF' : '', }" - >{{ tag.meta.title }} + @contextmenu.prevent.native="openMenu($event, index)"> + {{ tag.meta.title }} - -
- 关闭全部 -
+ + + + + diff --git a/blog-vue/admin/src/views/content/article/index.vue b/blog-vue/admin/src/views/content/article/index.vue index e01b2dc6762a2103c7596e5fdbe239c609e2b35e..d3ec9cf607b4348440a6f39584122d2c19c9c911 100644 --- a/blog-vue/admin/src/views/content/article/index.vue +++ b/blog-vue/admin/src/views/content/article/index.vue @@ -1,29 +1,393 @@ - diff --git a/blog-vue/admin/src/views/content/category/index.vue b/blog-vue/admin/src/views/content/category/index.vue index 6d5367f5ae1c6453b370c294a9168176b8f82402..c110d886ab6eaa2dc01215c680d5323205c6b3f9 100644 --- a/blog-vue/admin/src/views/content/category/index.vue +++ b/blog-vue/admin/src/views/content/category/index.vue @@ -1,29 +1,510 @@ - diff --git a/blog-vue/admin/src/views/content/tags/index.vue b/blog-vue/admin/src/views/content/tags/index.vue index 9db192ad67329f75e95e0feadb9bf29a935f022d..00915a1bcb77487cbbdb35ab37350a76d4f85e09 100644 --- a/blog-vue/admin/src/views/content/tags/index.vue +++ b/blog-vue/admin/src/views/content/tags/index.vue @@ -1,29 +1,368 @@ - diff --git a/blog-vue/admin/src/views/login/Login.vue b/blog-vue/admin/src/views/login/Login.vue index 7044aea94c4cc0d0ba78927de0c73fa042789056..813b0d283a4494b774291c2e5e9cf1b852677621 100644 --- a/blog-vue/admin/src/views/login/Login.vue +++ b/blog-vue/admin/src/views/login/Login.vue @@ -74,6 +74,7 @@ diff --git a/blog-vue/admin/src/views/system/role/index.vue b/blog-vue/admin/src/views/system/role/index.vue index e0e2dbaad336e1964c457ac2bdbd14f554901f82..4428a4c7a48882e36e9bbcd05cc6b637c0d4e2d2 100644 --- a/blog-vue/admin/src/views/system/role/index.vue +++ b/blog-vue/admin/src/views/system/role/index.vue @@ -54,7 +54,13 @@ - + + + + + diff --git a/blog-vue/admin/src/views/website/config/Other.vue b/blog-vue/admin/src/views/website/config/Other.vue index 8ceef4efedb6ac6698ed5ff06cf23d03d6e09bd8..6498c9ebb08a5a674740efdc0cc1aa454b62cb50 100644 --- a/blog-vue/admin/src/views/website/config/Other.vue +++ b/blog-vue/admin/src/views/website/config/Other.vue @@ -15,7 +15,7 @@
- +
@@ -193,7 +193,8 @@ export default { diff --git a/blog-vue/blog/src/assets/fonts/OldEnglishFive-2.ttf b/blog-vue/blog/src/assets/fonts/OldEnglishFive-2.ttf new file mode 100644 index 0000000000000000000000000000000000000000..29e54d33bf88fa9e3474be3a7dd3ddf10566bad8 Binary files /dev/null and b/blog-vue/blog/src/assets/fonts/OldEnglishFive-2.ttf differ diff --git a/blog-vue/blog/src/assets/images/iPhone-background.jpg b/blog-vue/blog/src/assets/images/iPhone-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea43031952217f87bf21d991d70f0d2eb9cc661f Binary files /dev/null and b/blog-vue/blog/src/assets/images/iPhone-background.jpg differ diff --git a/blog-vue/blog/src/assets/logo.png b/blog-vue/blog/src/assets/logo.png index f3d2503fc2a44b5053b0837ebea6e87a2d339a43..316a4c54119350d9a0cdb32ffcf324a1a32b1cf6 100644 Binary files a/blog-vue/blog/src/assets/logo.png and b/blog-vue/blog/src/assets/logo.png differ diff --git a/blog-vue/blog/src/components/ArticleList/index.vue b/blog-vue/blog/src/components/ArticleList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..99f39017e597defd9e444792748a3a072a01f363 --- /dev/null +++ b/blog-vue/blog/src/components/ArticleList/index.vue @@ -0,0 +1,381 @@ + + + + + diff --git a/blog-vue/blog/src/components/Banner/index.vue b/blog-vue/blog/src/components/Banner/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..31823deea1acfe77f371ad38882b0605b9c68240 --- /dev/null +++ b/blog-vue/blog/src/components/Banner/index.vue @@ -0,0 +1,158 @@ + + + + diff --git a/blog-vue/blog/src/components/ButtonGroup/index.vue b/blog-vue/blog/src/components/ButtonGroup/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..b22149cacbf621f71620383aff5cdfabfc26a850 --- /dev/null +++ b/blog-vue/blog/src/components/ButtonGroup/index.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/blog-vue/blog/src/components/HelloWorld.vue b/blog-vue/blog/src/components/HelloWorld.vue deleted file mode 100644 index 8e9507112721585155b2b48617b60bdc6f254012..0000000000000000000000000000000000000000 --- a/blog-vue/blog/src/components/HelloWorld.vue +++ /dev/null @@ -1,151 +0,0 @@ - - - diff --git a/blog-vue/blog/src/components/Pagination/index.vue b/blog-vue/blog/src/components/Pagination/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..82ae57354047c630e681019de5cbad4d2f5e6167 --- /dev/null +++ b/blog-vue/blog/src/components/Pagination/index.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/blog-vue/blog/src/components/SvgIcon/index.vue b/blog-vue/blog/src/components/SvgIcon/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..bd6e1f2dac654258d0251f42876bef5c74d2a27c --- /dev/null +++ b/blog-vue/blog/src/components/SvgIcon/index.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/blog-vue/blog/src/components/Wave/index.vue b/blog-vue/blog/src/components/Wave/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f110877352b02710a713520c428db434234082c8 --- /dev/null +++ b/blog-vue/blog/src/components/Wave/index.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/blog-vue/blog/src/components/banner/Banner.vue b/blog-vue/blog/src/components/banner/Banner.vue deleted file mode 100644 index d4c2fcf355fa8533d03273fac5ad475d28061bf2..0000000000000000000000000000000000000000 --- a/blog-vue/blog/src/components/banner/Banner.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - - - diff --git a/blog-vue/blog/src/filter/index.js b/blog-vue/blog/src/filter/index.js new file mode 100644 index 0000000000000000000000000000000000000000..9dc34acb6dd2bbd84e78c8938289a8841f7f4f90 --- /dev/null +++ b/blog-vue/blog/src/filter/index.js @@ -0,0 +1,63 @@ +import dayjs from 'dayjs' +import rt from 'dayjs/plugin/relativeTime' +import 'dayjs/locale/zh-cn' + +// 具体时间 +const dateFilter = (val, format = 'YYYY-MM-DD HH:mm:ss') => { + // 如果当前的 val 可以被转换为一个数字 + if (!isNaN(val)) { + val = parseInt(val) + } + return dayjs(val).format(format) +} + +dayjs.extend(rt) +// 相对时间 +function relativeTime (val) { + // 如果当前的 val 可以被转换为一个数字 + if (!isNaN(val)) { + val = parseInt(val) + } + return dayjs().locale('zh-cn').to(dayjs(val)) +} + +// 格式化文件大小,从字节转换为对应单位 +const fileSizeFilter = (bytes) => { + // 如果文件大小为0则直接返回0字节 + if (bytes === 0) return '0B' + // 1k为1024字节 + const k = 1024 + // 定义数组存储不同文件大小单位的后缀(B、KB、MB等),以及相应的指数值 + const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + // 当前文件大小在哪个单位之内,并向下取整到最接近的整数 + const i = Math.floor(Math.log(bytes) / Math.log(k)) + // 计算文件大小,并使用toPrecision方法将其保留3位有效数字 + const size = (bytes / Math.pow(k, i)).toPrecision(3) + const unit = sizes[i] + // 返回带有文件大小和单位后缀的字符串 + return `${size} ${unit}` +} + +// 文件类型过滤器 +const fileTypeFilter = (type) => { + // 将字符串转为小写 + type = type.toLowerCase() + // 图片类型 + const picture = ['.jpg', '.jpeg', '.png', '.gif'] + if (picture.includes(type)) { + return '图片' + } + const office = ['.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx'] + if (office.includes(type)) { + return '文档' + } + return '未知' +} + +// 时间戳显示过滤器 +export default { + dateFilter, + relativeTime, + fileSizeFilter, + fileTypeFilter +} diff --git a/blog-vue/blog/src/icons/index.js b/blog-vue/blog/src/icons/index.js new file mode 100644 index 0000000000000000000000000000000000000000..cab068073bd69b52f8b1520b3d0ac4a46d025552 --- /dev/null +++ b/blog-vue/blog/src/icons/index.js @@ -0,0 +1,16 @@ +// 1. 导入所有的 svg 图标 +// 2. 完成 SvgIcon 的全局注册 +import SvgIcon from '@/components/SvgIcon' + +// 1. 导入所有的 svg 图标 +// 扫描 svg 文件夹,不含有子目录,要匹配所有以 .svg 结尾的文件 +const svgRequire = require.context('./svg', false, /\.svg$/) +// 返回了一个 Require 函数,可以接收一个 request 的参数,用于 require 导入 +// 该函数提供了三个属性,可以通过 svgRequire.keys() 获得所有 svg 图标 +// 遍历图标,把图标作为 request 参数导入到 svgRequire 导入函数中,完成本地 svg 图标的导入 +svgRequire.keys().forEach((svgIcon) => svgRequire(svgIcon)) + +// 2. 完成 SvgIcon 的全局注册 +export default (app) => { + app.component('svg-icon', SvgIcon) +} diff --git a/blog-vue/blog/src/icons/svg/IP.svg b/blog-vue/blog/src/icons/svg/IP.svg new file mode 100644 index 0000000000000000000000000000000000000000..3e8f0c3b6d8ae01b1c614ff7bbd6de247efaf111 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/IP.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/QQ.svg b/blog-vue/blog/src/icons/svg/QQ.svg new file mode 100644 index 0000000000000000000000000000000000000000..cbbaf4a4424e0d1879f140f9072f7020cafe780e --- /dev/null +++ b/blog-vue/blog/src/icons/svg/QQ.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/access.svg b/blog-vue/blog/src/icons/svg/access.svg new file mode 100644 index 0000000000000000000000000000000000000000..bacf120e8079e48e87455f7293e8d076425ccfda --- /dev/null +++ b/blog-vue/blog/src/icons/svg/access.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/add.svg b/blog-vue/blog/src/icons/svg/add.svg new file mode 100644 index 0000000000000000000000000000000000000000..4e0e4672484cc9d4e639ba1801dd6481f5719e6c --- /dev/null +++ b/blog-vue/blog/src/icons/svg/add.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/analysis.svg b/blog-vue/blog/src/icons/svg/analysis.svg new file mode 100644 index 0000000000000000000000000000000000000000..3f8a3cc64bc07a5cdef8b5d34c2c48ed3fdba773 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/analysis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/article-create.svg b/blog-vue/blog/src/icons/svg/article-create.svg new file mode 100644 index 0000000000000000000000000000000000000000..dcbaa185a845cdf01a7fdfb849c224ce9c4af011 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/article-create.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/article-ranking.svg b/blog-vue/blog/src/icons/svg/article-ranking.svg new file mode 100644 index 0000000000000000000000000000000000000000..ab721040afd39856faa25be0667c34242a30f98d --- /dev/null +++ b/blog-vue/blog/src/icons/svg/article-ranking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/article.svg b/blog-vue/blog/src/icons/svg/article.svg new file mode 100644 index 0000000000000000000000000000000000000000..1d36e79f4d6c22ccfe94661b39981f31334c5ebe --- /dev/null +++ b/blog-vue/blog/src/icons/svg/article.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/battery.svg b/blog-vue/blog/src/icons/svg/battery.svg new file mode 100644 index 0000000000000000000000000000000000000000..87b0d37d334cdaeae8d9af25c57f156597ccc4f8 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/battery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/bug.svg b/blog-vue/blog/src/icons/svg/bug.svg new file mode 100644 index 0000000000000000000000000000000000000000..05a150dc3905ef7516e1b57b32bc49510c0f8763 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/build.svg b/blog-vue/blog/src/icons/svg/build.svg new file mode 100644 index 0000000000000000000000000000000000000000..97c468863287f37a472112dd18e717cd94471ee6 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/build.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/button.svg b/blog-vue/blog/src/icons/svg/button.svg new file mode 100644 index 0000000000000000000000000000000000000000..904fddc854ad072e887306b5d6e6539dca960f2b --- /dev/null +++ b/blog-vue/blog/src/icons/svg/button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/cascader.svg b/blog-vue/blog/src/icons/svg/cascader.svg new file mode 100644 index 0000000000000000000000000000000000000000..e256024f9dd4142bef13a999df669d88ee9200f4 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/cascader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/category.svg b/blog-vue/blog/src/icons/svg/category.svg new file mode 100644 index 0000000000000000000000000000000000000000..2ced25ad62334f84453ca2e192b89d8f38394139 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/category.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/change-theme.svg b/blog-vue/blog/src/icons/svg/change-theme.svg new file mode 100644 index 0000000000000000000000000000000000000000..74b6949319fc73ce24cfcdab378056bc0247b1d2 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/change-theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/chart.svg b/blog-vue/blog/src/icons/svg/chart.svg new file mode 100644 index 0000000000000000000000000000000000000000..27728fb0baae52c4430ef9d0332d1f0bbedaa564 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/checkbox.svg b/blog-vue/blog/src/icons/svg/checkbox.svg new file mode 100644 index 0000000000000000000000000000000000000000..013fd3a273eec2b45ea72843d7b3334c5d750530 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/checkbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/clipboard.svg b/blog-vue/blog/src/icons/svg/clipboard.svg new file mode 100644 index 0000000000000000000000000000000000000000..90923ff6282ec6aa403936bbe44b68e134cb9bcf --- /dev/null +++ b/blog-vue/blog/src/icons/svg/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/code.svg b/blog-vue/blog/src/icons/svg/code.svg new file mode 100644 index 0000000000000000000000000000000000000000..ed4d23cf4021f72022fa8f99ff89154c3741b3d6 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/comment.svg b/blog-vue/blog/src/icons/svg/comment.svg new file mode 100644 index 0000000000000000000000000000000000000000..70eea21bb2014e38392eefde787684b97ded0465 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/comment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/comments.svg b/blog-vue/blog/src/icons/svg/comments.svg new file mode 100644 index 0000000000000000000000000000000000000000..c8676acf8d48aa5f54d1dee20435efe31a6a154c --- /dev/null +++ b/blog-vue/blog/src/icons/svg/comments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/component.svg b/blog-vue/blog/src/icons/svg/component.svg new file mode 100644 index 0000000000000000000000000000000000000000..29c345809974665d96ed42e261734bc56c37b826 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/component.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/computer.svg b/blog-vue/blog/src/icons/svg/computer.svg new file mode 100644 index 0000000000000000000000000000000000000000..a18b23e86585c6025725ac899eeb7a996588c2d2 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/computer.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/content.svg b/blog-vue/blog/src/icons/svg/content.svg new file mode 100644 index 0000000000000000000000000000000000000000..74f83dba09a54d3e98c8395ea06fc6c28ac6b637 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/content.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/dashboard.svg b/blog-vue/blog/src/icons/svg/dashboard.svg new file mode 100644 index 0000000000000000000000000000000000000000..5317d37029218281b4da78eccf40ce9e94941301 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/date-range.svg b/blog-vue/blog/src/icons/svg/date-range.svg new file mode 100644 index 0000000000000000000000000000000000000000..fda571e700372418697293910f77957c07290cfe --- /dev/null +++ b/blog-vue/blog/src/icons/svg/date-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/date.svg b/blog-vue/blog/src/icons/svg/date.svg new file mode 100644 index 0000000000000000000000000000000000000000..52dc73eecfaca2c315b54d99ba7030a79e549f36 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/delete.svg b/blog-vue/blog/src/icons/svg/delete.svg new file mode 100644 index 0000000000000000000000000000000000000000..520c8c8b58302e75c975c36223ea7e1cd938bfa3 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/delete.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/dict.svg b/blog-vue/blog/src/icons/svg/dict.svg new file mode 100644 index 0000000000000000000000000000000000000000..484937730750b9adb201df69abef2503760f7229 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/dict.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/documentation.svg b/blog-vue/blog/src/icons/svg/documentation.svg new file mode 100644 index 0000000000000000000000000000000000000000..704312289e6ad2f65a3ace229e73fb5c7f3e94e9 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/download.svg b/blog-vue/blog/src/icons/svg/download.svg new file mode 100644 index 0000000000000000000000000000000000000000..c8969513493e7ac96725dcf2f01400e7c2c63df6 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/drag.svg b/blog-vue/blog/src/icons/svg/drag.svg new file mode 100644 index 0000000000000000000000000000000000000000..4185d3cee36930abb40838829058537388cc6dc6 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/drag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/druid.svg b/blog-vue/blog/src/icons/svg/druid.svg new file mode 100644 index 0000000000000000000000000000000000000000..a2b4b4ed2481975a127506a9516e5c12417ac93e --- /dev/null +++ b/blog-vue/blog/src/icons/svg/druid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/edit.svg b/blog-vue/blog/src/icons/svg/edit.svg new file mode 100644 index 0000000000000000000000000000000000000000..d26101f29893ee07c575d62caf1d0d684e76b3bc --- /dev/null +++ b/blog-vue/blog/src/icons/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/education.svg b/blog-vue/blog/src/icons/svg/education.svg new file mode 100644 index 0000000000000000000000000000000000000000..7bfb01d180f9ac9cf45429412129a7b7be4d8daf --- /dev/null +++ b/blog-vue/blog/src/icons/svg/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/element.svg b/blog-vue/blog/src/icons/svg/element.svg new file mode 100644 index 0000000000000000000000000000000000000000..4bf4cfc43c1393da3535166bb0c840741541b8df --- /dev/null +++ b/blog-vue/blog/src/icons/svg/element.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/email.svg b/blog-vue/blog/src/icons/svg/email.svg new file mode 100644 index 0000000000000000000000000000000000000000..74d25e21a6f98b90b34b2b8d2ce2dd90b38eb000 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/example.svg b/blog-vue/blog/src/icons/svg/example.svg new file mode 100644 index 0000000000000000000000000000000000000000..46f42b5323d11686c44b573729db0df115343d5c --- /dev/null +++ b/blog-vue/blog/src/icons/svg/example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/excel.svg b/blog-vue/blog/src/icons/svg/excel.svg new file mode 100644 index 0000000000000000000000000000000000000000..74d97b802f8bf84caf4c623e77f890f74516d50f --- /dev/null +++ b/blog-vue/blog/src/icons/svg/excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/exit-fullscreen.svg b/blog-vue/blog/src/icons/svg/exit-fullscreen.svg new file mode 100644 index 0000000000000000000000000000000000000000..0b1603bddd62d5060645ef44e6fc6f6bcf60afb9 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/eye-open.svg b/blog-vue/blog/src/icons/svg/eye-open.svg new file mode 100644 index 0000000000000000000000000000000000000000..88dcc98e6c80d145e3807f00a6e5ed91ce5371e4 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/eye.svg b/blog-vue/blog/src/icons/svg/eye.svg new file mode 100644 index 0000000000000000000000000000000000000000..16ed2d872d1cadeb36fc9101cbf77397fbf4fd70 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/fire.svg b/blog-vue/blog/src/icons/svg/fire.svg new file mode 100644 index 0000000000000000000000000000000000000000..3aee8ec27d0e55bd232a671336e429842572e29b --- /dev/null +++ b/blog-vue/blog/src/icons/svg/fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/form.svg b/blog-vue/blog/src/icons/svg/form.svg new file mode 100644 index 0000000000000000000000000000000000000000..dcbaa185a845cdf01a7fdfb849c224ce9c4af011 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/form.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/fullscreen.svg b/blog-vue/blog/src/icons/svg/fullscreen.svg new file mode 100644 index 0000000000000000000000000000000000000000..655f0b6cc1ae2e6d3b7c1316bf044cdc3a1566ee --- /dev/null +++ b/blog-vue/blog/src/icons/svg/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/gitee.svg b/blog-vue/blog/src/icons/svg/gitee.svg new file mode 100644 index 0000000000000000000000000000000000000000..3710358ac8162a9781b1b01bbd5ff1a69c2dc6b0 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/gitee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/github.svg b/blog-vue/blog/src/icons/svg/github.svg new file mode 100644 index 0000000000000000000000000000000000000000..db0a0d4304731d60794b853cd8c06f4556fc95e9 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/guide.svg b/blog-vue/blog/src/icons/svg/guide.svg new file mode 100644 index 0000000000000000000000000000000000000000..b2710017933e9088e002873cde651bac54cea449 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/hamburger-closed.svg b/blog-vue/blog/src/icons/svg/hamburger-closed.svg new file mode 100644 index 0000000000000000000000000000000000000000..4a70141921067b18d616b6b7c79eecf50ae575b9 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/hamburger-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/hamburger-opened.svg b/blog-vue/blog/src/icons/svg/hamburger-opened.svg new file mode 100644 index 0000000000000000000000000000000000000000..f76a0550796bcbc689193e4cd47d44900e12d5cb --- /dev/null +++ b/blog-vue/blog/src/icons/svg/hamburger-opened.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/home.svg b/blog-vue/blog/src/icons/svg/home.svg new file mode 100644 index 0000000000000000000000000000000000000000..2cbcf7cbf42d2684b6f02f653663a7f9fd006000 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/icon.svg b/blog-vue/blog/src/icons/svg/icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..82be8eeedb3d3cc9161f4a4094ac20d2f91e3970 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/input.svg b/blog-vue/blog/src/icons/svg/input.svg new file mode 100644 index 0000000000000000000000000000000000000000..ab91381e6df0ec6307d677f0dce75b9c9d95e5d5 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/input.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/international.svg b/blog-vue/blog/src/icons/svg/international.svg new file mode 100644 index 0000000000000000000000000000000000000000..e9b56eee2c59774f0431186b9af2ba7593bffcc0 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/introduce.svg b/blog-vue/blog/src/icons/svg/introduce.svg new file mode 100644 index 0000000000000000000000000000000000000000..7b9862ecd642bea666fc1e297fbc6c6308e1de57 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/introduce.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/java.svg b/blog-vue/blog/src/icons/svg/java.svg new file mode 100644 index 0000000000000000000000000000000000000000..8574e9347130ffa3fecb8ae36764e3ce42f12ac1 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/java.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/job.svg b/blog-vue/blog/src/icons/svg/job.svg new file mode 100644 index 0000000000000000000000000000000000000000..2a93a25195e29eba9c76d7ce5bdd6f1a71f9aee4 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/job.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/language.svg b/blog-vue/blog/src/icons/svg/language.svg new file mode 100644 index 0000000000000000000000000000000000000000..f163ce651b131ece4e3dbfb73c9ef8813781699b --- /dev/null +++ b/blog-vue/blog/src/icons/svg/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/left.svg b/blog-vue/blog/src/icons/svg/left.svg new file mode 100644 index 0000000000000000000000000000000000000000..1234a1c10431d463dc52ab35e2e234e38199c3c4 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/link.svg b/blog-vue/blog/src/icons/svg/link.svg new file mode 100644 index 0000000000000000000000000000000000000000..48197ba4da7b4314a16a19a698fe96c1b2a7ad0b --- /dev/null +++ b/blog-vue/blog/src/icons/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/logininfor.svg b/blog-vue/blog/src/icons/svg/logininfor.svg new file mode 100644 index 0000000000000000000000000000000000000000..267f84474266c8ebe6ae61925a7c1cb4e3814079 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/logininfor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/logout.svg b/blog-vue/blog/src/icons/svg/logout.svg new file mode 100644 index 0000000000000000000000000000000000000000..3c3d8f923c0ae8be4056dafb142fd56999c43c87 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/logout.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/menu.svg b/blog-vue/blog/src/icons/svg/menu.svg new file mode 100644 index 0000000000000000000000000000000000000000..863515e955464f0eea7b78030b912132789ad5b0 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/menu.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/message.svg b/blog-vue/blog/src/icons/svg/message.svg new file mode 100644 index 0000000000000000000000000000000000000000..a05d2ae0d1dfb5faf5325a3c049a93e7f4680053 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/money.svg b/blog-vue/blog/src/icons/svg/money.svg new file mode 100644 index 0000000000000000000000000000000000000000..c1580de10e1f1c504f7bfcaba4f41b24d816d8f2 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/monitor.svg b/blog-vue/blog/src/icons/svg/monitor.svg new file mode 100644 index 0000000000000000000000000000000000000000..bc308cb0f5f7afff5ba4b17fca06c721de14764e --- /dev/null +++ b/blog-vue/blog/src/icons/svg/monitor.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/moon.svg b/blog-vue/blog/src/icons/svg/moon.svg new file mode 100644 index 0000000000000000000000000000000000000000..fad12b62e5d9a43c7f207048ffbbc27ae6e776ec --- /dev/null +++ b/blog-vue/blog/src/icons/svg/moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/more.svg b/blog-vue/blog/src/icons/svg/more.svg new file mode 100644 index 0000000000000000000000000000000000000000..f7d8e05cd940a22cd059783f1995876a63288b66 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/more.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/mybatis-plus.svg b/blog-vue/blog/src/icons/svg/mybatis-plus.svg new file mode 100644 index 0000000000000000000000000000000000000000..c73cb184f7e8c9003bcd805e7ad3db9799050f7d --- /dev/null +++ b/blog-vue/blog/src/icons/svg/mybatis-plus.svg @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blog-vue/blog/src/icons/svg/nested.svg b/blog-vue/blog/src/icons/svg/nested.svg new file mode 100644 index 0000000000000000000000000000000000000000..06713a86c6a3db0cd5eeb26cf81ffb27b538e9a1 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/notice.svg b/blog-vue/blog/src/icons/svg/notice.svg new file mode 100644 index 0000000000000000000000000000000000000000..b9b5bf5ad208505c373437a68de0f9466b566dc1 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/notice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/number.svg b/blog-vue/blog/src/icons/svg/number.svg new file mode 100644 index 0000000000000000000000000000000000000000..ad5ce9af2aaf54c43444a81535a599c7cd004be1 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/number.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/online.svg b/blog-vue/blog/src/icons/svg/online.svg new file mode 100644 index 0000000000000000000000000000000000000000..330a202935b887236b34200b163f6a421bad592f --- /dev/null +++ b/blog-vue/blog/src/icons/svg/online.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/password.svg b/blog-vue/blog/src/icons/svg/password.svg new file mode 100644 index 0000000000000000000000000000000000000000..e291d85df22083536bb2e40fd18120ef6d6b141d --- /dev/null +++ b/blog-vue/blog/src/icons/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/pdf.svg b/blog-vue/blog/src/icons/svg/pdf.svg new file mode 100644 index 0000000000000000000000000000000000000000..957aa0cc3597c1277ded6367716067c9874552e0 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/people.svg b/blog-vue/blog/src/icons/svg/people.svg new file mode 100644 index 0000000000000000000000000000000000000000..2bd54aeb728197066e987e8d8d98364f50ed5be6 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/peoples.svg b/blog-vue/blog/src/icons/svg/peoples.svg new file mode 100644 index 0000000000000000000000000000000000000000..aab852e52a33a5823fcdd5302111b45f4a4e13a7 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/permission.svg b/blog-vue/blog/src/icons/svg/permission.svg new file mode 100644 index 0000000000000000000000000000000000000000..947c983188f73b1098b6dd8e758d33c94f3a1473 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/permission.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/personnel-info.svg b/blog-vue/blog/src/icons/svg/personnel-info.svg new file mode 100644 index 0000000000000000000000000000000000000000..d51fc08f9fdcb8feb62d910e2397b6eab9fcf8bf --- /dev/null +++ b/blog-vue/blog/src/icons/svg/personnel-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/personnel-manage.svg b/blog-vue/blog/src/icons/svg/personnel-manage.svg new file mode 100644 index 0000000000000000000000000000000000000000..9aaedac157b0742f20ab54a15523073b829a1143 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/personnel-manage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/personnel.svg b/blog-vue/blog/src/icons/svg/personnel.svg new file mode 100644 index 0000000000000000000000000000000000000000..0b146de180adef02b2b641628d801a90d25ef166 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/personnel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/phone.svg b/blog-vue/blog/src/icons/svg/phone.svg new file mode 100644 index 0000000000000000000000000000000000000000..ab8e8c4e5b3765c92e98fd2ecfeeda892661ac17 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/picture-fill.svg b/blog-vue/blog/src/icons/svg/picture-fill.svg new file mode 100644 index 0000000000000000000000000000000000000000..7429e1868bb64cf4ff0d7fe442cd856b707ffc16 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/picture-fill.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/picture.svg b/blog-vue/blog/src/icons/svg/picture.svg new file mode 100644 index 0000000000000000000000000000000000000000..7d8d91f9fc835b7bf3e2f4c8dde1dc1573f48d86 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/picture.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/post.svg b/blog-vue/blog/src/icons/svg/post.svg new file mode 100644 index 0000000000000000000000000000000000000000..2922c613bddb847c6f411e27b5ad874f577a633f --- /dev/null +++ b/blog-vue/blog/src/icons/svg/post.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/question.svg b/blog-vue/blog/src/icons/svg/question.svg new file mode 100644 index 0000000000000000000000000000000000000000..cf75bd4bea55c98003ca97828fcb3e37d5c4450e --- /dev/null +++ b/blog-vue/blog/src/icons/svg/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/rabbitmq.svg b/blog-vue/blog/src/icons/svg/rabbitmq.svg new file mode 100644 index 0000000000000000000000000000000000000000..59dc8ceb5978b55d0ed04f7c5f8ff455ae42dc02 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/rabbitmq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/radio.svg b/blog-vue/blog/src/icons/svg/radio.svg new file mode 100644 index 0000000000000000000000000000000000000000..0cde34521ae7b5bddaaa2372a4472fc05f9135a4 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/rate.svg b/blog-vue/blog/src/icons/svg/rate.svg new file mode 100644 index 0000000000000000000000000000000000000000..aa3b14d7de73af3e7d4a6c9dc41836a11003208e --- /dev/null +++ b/blog-vue/blog/src/icons/svg/rate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/redis.svg b/blog-vue/blog/src/icons/svg/redis.svg new file mode 100644 index 0000000000000000000000000000000000000000..2f1d62dfc373a4921815fa1058c73916ca15aca2 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/redis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/refresh.svg b/blog-vue/blog/src/icons/svg/refresh.svg new file mode 100644 index 0000000000000000000000000000000000000000..db1b120b1c49cbdc7175e5377dfbaba0e7e648dd --- /dev/null +++ b/blog-vue/blog/src/icons/svg/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/reward.svg b/blog-vue/blog/src/icons/svg/reward.svg new file mode 100644 index 0000000000000000000000000000000000000000..5626794955a68b33596335fd618409bea1a96630 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/reward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/right.svg b/blog-vue/blog/src/icons/svg/right.svg new file mode 100644 index 0000000000000000000000000000000000000000..4d746be9355fe1948ad91400a66d79319a3cc05d --- /dev/null +++ b/blog-vue/blog/src/icons/svg/right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/role.svg b/blog-vue/blog/src/icons/svg/role.svg new file mode 100644 index 0000000000000000000000000000000000000000..bfacc9e2192c2748fa6a3616a0fa63a1ceef448a --- /dev/null +++ b/blog-vue/blog/src/icons/svg/role.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/row.svg b/blog-vue/blog/src/icons/svg/row.svg new file mode 100644 index 0000000000000000000000000000000000000000..07809922264539672115e4866d65c3e1e6032df9 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/row.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/search.svg b/blog-vue/blog/src/icons/svg/search.svg new file mode 100644 index 0000000000000000000000000000000000000000..84233ddaa98a45d407cacdc869d9b7634f72d390 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/security.svg b/blog-vue/blog/src/icons/svg/security.svg new file mode 100644 index 0000000000000000000000000000000000000000..a48fa329dbb278fa68067d33a4ab6bf211da41d6 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/security.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/select.svg b/blog-vue/blog/src/icons/svg/select.svg new file mode 100644 index 0000000000000000000000000000000000000000..d6283828bac413d2a10d4f6e267d7ba2f5f10aea --- /dev/null +++ b/blog-vue/blog/src/icons/svg/select.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/server.svg b/blog-vue/blog/src/icons/svg/server.svg new file mode 100644 index 0000000000000000000000000000000000000000..ca37b001e93c40a81dc3f9302795edc70e502457 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/shopping.svg b/blog-vue/blog/src/icons/svg/shopping.svg new file mode 100644 index 0000000000000000000000000000000000000000..87513e7c5fdd4260e48f7ead3501e0b9f9798c2a --- /dev/null +++ b/blog-vue/blog/src/icons/svg/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/signal.svg b/blog-vue/blog/src/icons/svg/signal.svg new file mode 100644 index 0000000000000000000000000000000000000000..c9efa48600d1a6f2c986a6f1944720c15d0b0128 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/signal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/skill.svg b/blog-vue/blog/src/icons/svg/skill.svg new file mode 100644 index 0000000000000000000000000000000000000000..a3b7312186fbd305a0c0ab902e2cc01e2f804f32 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/skill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/spring-boot.svg b/blog-vue/blog/src/icons/svg/spring-boot.svg new file mode 100644 index 0000000000000000000000000000000000000000..09bdab4b8d6552bff8bb68ffaaf381a75e8b0bca --- /dev/null +++ b/blog-vue/blog/src/icons/svg/spring-boot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/star.svg b/blog-vue/blog/src/icons/svg/star.svg new file mode 100644 index 0000000000000000000000000000000000000000..6cf86e66add37b5562fc4793dd9a218163f485b4 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/sun.svg b/blog-vue/blog/src/icons/svg/sun.svg new file mode 100644 index 0000000000000000000000000000000000000000..5eed7f028e0a5e805630bfbe374385d5bd6f456a --- /dev/null +++ b/blog-vue/blog/src/icons/svg/sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/swagger.svg b/blog-vue/blog/src/icons/svg/swagger.svg new file mode 100644 index 0000000000000000000000000000000000000000..05d4e7bcee9829539a977c51c36560c4aad98c80 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/swagger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/switch.svg b/blog-vue/blog/src/icons/svg/switch.svg new file mode 100644 index 0000000000000000000000000000000000000000..0ba61e38d72b9af4c6e5a400baa0561f06d8d0c0 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/switch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/system.svg b/blog-vue/blog/src/icons/svg/system.svg new file mode 100644 index 0000000000000000000000000000000000000000..dba28cf6fd1ad6992421638659003fdb0e07c032 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/system.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/tab.svg b/blog-vue/blog/src/icons/svg/tab.svg new file mode 100644 index 0000000000000000000000000000000000000000..b4b48e48085bb21b18da5386a6d4692a70301977 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/table.svg b/blog-vue/blog/src/icons/svg/table.svg new file mode 100644 index 0000000000000000000000000000000000000000..0e3dc9dea5a0ff92d617cdfee4f10ef600a02433 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/tags.svg b/blog-vue/blog/src/icons/svg/tags.svg new file mode 100644 index 0000000000000000000000000000000000000000..53179377a1613b9f29c490e2faa801aa965a5643 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/tags.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/textarea.svg b/blog-vue/blog/src/icons/svg/textarea.svg new file mode 100644 index 0000000000000000000000000000000000000000..2709f292ea23aa87ba87d5ee2622c94994c1fbfb --- /dev/null +++ b/blog-vue/blog/src/icons/svg/textarea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/time-range.svg b/blog-vue/blog/src/icons/svg/time-range.svg new file mode 100644 index 0000000000000000000000000000000000000000..13c1202bdafa11c73c89ee472f3c810e834dfeca --- /dev/null +++ b/blog-vue/blog/src/icons/svg/time-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/time.svg b/blog-vue/blog/src/icons/svg/time.svg new file mode 100644 index 0000000000000000000000000000000000000000..b376e32a608f33f906cda57da3df809c0413a44e --- /dev/null +++ b/blog-vue/blog/src/icons/svg/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/tool.svg b/blog-vue/blog/src/icons/svg/tool.svg new file mode 100644 index 0000000000000000000000000000000000000000..c813067ef74945d7fcd48c7092131abd20375168 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/top.svg b/blog-vue/blog/src/icons/svg/top.svg new file mode 100644 index 0000000000000000000000000000000000000000..fcaca224525a5a9d00bfad1709181478bd7b29f9 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/tree-table.svg b/blog-vue/blog/src/icons/svg/tree-table.svg new file mode 100644 index 0000000000000000000000000000000000000000..8aafdb829ebbe289f352a533d9764c4f9395e533 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/tree-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/tree.svg b/blog-vue/blog/src/icons/svg/tree.svg new file mode 100644 index 0000000000000000000000000000000000000000..dd4b7dd22fe06076831935066592caec48e323b0 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/upload.svg b/blog-vue/blog/src/icons/svg/upload.svg new file mode 100644 index 0000000000000000000000000000000000000000..bae49c0a50e7bc0683d82e3af2e0064adc4108ad --- /dev/null +++ b/blog-vue/blog/src/icons/svg/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/user.svg b/blog-vue/blog/src/icons/svg/user.svg new file mode 100644 index 0000000000000000000000000000000000000000..0ba0716a62a92f7cb2f2e6f3c745ace2be6b3b31 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/validCode.svg b/blog-vue/blog/src/icons/svg/validCode.svg new file mode 100644 index 0000000000000000000000000000000000000000..cfb10214c53ee9e021a97733c9b5b5c39e388787 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/validCode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/vue.svg b/blog-vue/blog/src/icons/svg/vue.svg new file mode 100644 index 0000000000000000000000000000000000000000..28b34ebda5c282398bc35e98c279ae4c38e47a36 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/wechat.svg b/blog-vue/blog/src/icons/svg/wechat.svg new file mode 100644 index 0000000000000000000000000000000000000000..c586e5511722843f9c741d7530db146dfab864a4 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/wifi.svg b/blog-vue/blog/src/icons/svg/wifi.svg new file mode 100644 index 0000000000000000000000000000000000000000..f785d220840800469693bcd16e16b91ad4acb58d --- /dev/null +++ b/blog-vue/blog/src/icons/svg/wifi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/icons/svg/zip.svg b/blog-vue/blog/src/icons/svg/zip.svg new file mode 100644 index 0000000000000000000000000000000000000000..f806fc4825739224caf820e6edf54e808961b1a6 --- /dev/null +++ b/blog-vue/blog/src/icons/svg/zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blog-vue/blog/src/layout/Footer.vue b/blog-vue/blog/src/layout/Footer.vue index 379baacd31d5b59fd95516197a64fbee5b2aa907..5d772719b1df9a58898f0b6e04b65c49024ecb9c 100644 --- a/blog-vue/blog/src/layout/Footer.vue +++ b/blog-vue/blog/src/layout/Footer.vue @@ -1,13 +1,6 @@