{ 19 | 20 | /** 21 | * 查询首页文章 22 | * 23 | * @param current 当前页码 24 | * @return 首页文章集合 25 | */ 26 | List listArticles(Long current); 27 | 28 | /** 29 | * 根据id查询文章 30 | * 31 | * @param articleId 文章id 32 | * @return 文章 33 | */ 34 | ArticleDTO getArticleById(Integer articleId); 35 | 36 | /** 37 | * 根据条件查询文章 38 | * 39 | * @param condition 条件 40 | * @return 文章集合 41 | */ 42 | List listArticlesByCondition(@Param("condition") ConditionVO condition); 43 | 44 | /** 45 | * 查询后台文章 46 | * 47 | * @param condition 条件 48 | * @return 后台文章集合 49 | */ 50 | List listArticleBacks(@Param("condition") ConditionVO condition); 51 | 52 | /** 53 | * 查询后台文章总量 54 | * 55 | * @param condition 条件 56 | * @return 文章总量 57 | */ 58 | Integer countArticleBacks(@Param("condition") ConditionVO condition); 59 | 60 | /** 61 | * 查询文章排行 62 | * 63 | * @param articleIdList 64 | * @return 65 | */ 66 | List listArticleRank(@Param("articleIdList") List articleIdList); 67 | 68 | /** 69 | * 查看文章的推荐文章 70 | * @param articleId 文章id 71 | * @return 推荐文章 72 | */ 73 | List listArticleRecommends(@Param("articleId") Integer articleId); 74 | 75 | } 76 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ArticleTagDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.ArticleTag; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | @Repository 13 | public interface ArticleTagDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/CategoryDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.CategoryDTO; 4 | import com.minzheng.blog.entity.Category; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface CategoryDao extends BaseMapper { 17 | 18 | /** 19 | * 查询分类和对应文章数量 20 | * @return 分类集合 21 | */ 22 | List listCategoryDTO(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ChatRecordDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.ChatRecord; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2021-02-19 10 | **/ 11 | @Repository 12 | public interface ChatRecordDao extends BaseMapper { 13 | } 14 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/CommentDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.CommentBackDTO; 4 | import com.minzheng.blog.dto.CommentDTO; 5 | import com.minzheng.blog.dto.ReplyCountDTO; 6 | import com.minzheng.blog.dto.ReplyDTO; 7 | import com.minzheng.blog.entity.Comment; 8 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 9 | import com.minzheng.blog.vo.ConditionVO; 10 | import org.apache.ibatis.annotations.Param; 11 | import org.springframework.stereotype.Repository; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * @author xiaojie 17 | * @since 2020-05-18 18 | */ 19 | @Repository 20 | public interface CommentDao extends BaseMapper { 21 | 22 | /** 23 | * 查看评论 24 | * 25 | * @param articleId 文章id 26 | * @param current 当前页码 27 | * @return 评论集合 28 | */ 29 | List listComments(@Param("articleId") Integer articleId, @Param("current") Long current); 30 | 31 | /** 32 | * 查看评论id集合下的回复 33 | * 34 | * @param commentIdList 评论id集合 35 | * @return 回复集合 36 | */ 37 | List listReplies(@Param("commentIdList") List commentIdList); 38 | 39 | /** 40 | * 查看当条评论下的回复 41 | * 42 | * @param commentId 评论id 43 | * @param current 当前页码 44 | * @return 回复集合 45 | */ 46 | List listRepliesByCommentId(@Param("commentId") Integer commentId, @Param("current") Long current); 47 | 48 | /** 49 | * 根据评论id查询回复总量 50 | * 51 | * @param commentIdList 评论id集合 52 | * @return 回复数量 53 | */ 54 | List listReplyCountByCommentId(@Param("commentIdList") List commentIdList); 55 | 56 | /** 57 | * 查询后台评论 58 | * 59 | * @param condition 条件 60 | * @return 评论集合 61 | */ 62 | List listCommentBackDTO(@Param("condition") ConditionVO condition); 63 | 64 | /** 65 | * 统计后台评论数量 66 | * 67 | * @param condition 条件 68 | * @return 评论数量 69 | */ 70 | Integer countCommentDTO(@Param("condition") ConditionVO condition); 71 | 72 | } 73 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ElasticsearchDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.ArticleSearchDTO; 4 | import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author 11921 9 | */ 10 | @Repository 11 | public interface ElasticsearchDao extends ElasticsearchRepository { 12 | } 13 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/FriendLinkDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.FriendLink; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | @Repository 13 | public interface FriendLinkDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/MenuDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.Menu; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author: yezhiqiu 11 | * @date: 2021-01-23 12 | **/ 13 | @Repository 14 | public interface MenuDao extends BaseMapper { 15 | 16 | /** 17 | * 根据用户id查询菜单 18 | * @param userInfoId 用户信息id 19 | * @return 菜单列表 20 | */ 21 | List listMenusByUserInfoId(Integer userInfoId); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/MessageDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.Message; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | @Repository 13 | public interface MessageDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/OperationLogDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.Menu; 5 | import com.minzheng.blog.entity.OperationLog; 6 | import org.springframework.stereotype.Repository; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-01-31 11 | **/ 12 | @Repository 13 | public interface OperationLogDao extends BaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ResourceDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.Resource; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | @Repository 12 | public interface ResourceDao extends BaseMapper { 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.dto.RoleDTO; 5 | import com.minzheng.blog.dto.UrlRoleDTO; 6 | import com.minzheng.blog.entity.Role; 7 | import com.minzheng.blog.vo.ConditionVO; 8 | import org.apache.ibatis.annotations.Param; 9 | import org.springframework.stereotype.Repository; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | @Repository 18 | public interface RoleDao extends BaseMapper { 19 | 20 | /** 21 | * 查询路由角色列表 22 | * 23 | * @return 角色标签 24 | */ 25 | List listUrlRoles(); 26 | 27 | /** 28 | * 根据用户id获取角色列表 29 | * 30 | * @param userInfoId 用户id 31 | * @return 角色标签 32 | */ 33 | List listRolesByUserInfoId(Integer userInfoId); 34 | 35 | /** 36 | * 查询角色列表 37 | * 38 | * @param conditionVO 条件 39 | * @return 角色列表 40 | */ 41 | List listRoles(@Param("conditionVO") ConditionVO conditionVO); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/RoleMenuDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.RoleMenu; 5 | import com.minzheng.blog.entity.RoleResource; 6 | import org.springframework.stereotype.Repository; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2020-12-27 11 | **/ 12 | @Repository 13 | public interface RoleMenuDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/RoleResourceDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.RoleResource; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | @Repository 12 | public interface RoleResourceDao extends BaseMapper { 13 | } 14 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/TagDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.Tag; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * Mapper 接口 10 | * 11 | * 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface TagDao extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UniqueViewDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.UniqueViewDTO; 4 | import com.minzheng.blog.entity.UniqueView; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.apache.ibatis.annotations.Param; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface UniqueViewDao extends BaseMapper { 17 | 18 | /** 19 | * 获取7天用户量 20 | * @param startTime 开始时间 21 | * @param endTime 结束时间 22 | * @return 用户量 23 | */ 24 | List listUniqueViews(@Param("startTime") String startTime, @Param("endTime") String endTime); 25 | } 26 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UserAuthDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.UserBackDTO; 4 | import com.minzheng.blog.entity.UserAuth; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import com.minzheng.blog.vo.ConditionVO; 7 | import org.apache.ibatis.annotations.Param; 8 | import org.springframework.stereotype.Repository; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | @Repository 18 | public interface UserAuthDao extends BaseMapper { 19 | 20 | /** 21 | * 查询后台用户列表 22 | * @param condition 条件 23 | * @return 用户集合 24 | */ 25 | List listUsers(@Param("condition") ConditionVO condition); 26 | 27 | /** 28 | * 查询后台用户数量 29 | * @param condition 条件 30 | * @return 用户数量 31 | */ 32 | Integer countUser(@Param("condition") ConditionVO condition); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UserInfoDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.UserInfo; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * Mapper 接口 10 | * 11 | * 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface UserInfoDao extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UserRoleDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.UserRole; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | @Repository 12 | public interface UserRoleDao extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArchiveDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 归档文章 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class ArchiveDTO { 19 | /** 20 | * id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 标题 26 | */ 27 | private String articleTitle; 28 | 29 | /** 30 | * 发表时间 31 | */ 32 | private Date createTime; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 后台文章 13 | * 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class ArticleBackDTO { 21 | 22 | /** 23 | * id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 标题 29 | */ 30 | private String articleTitle; 31 | 32 | /** 33 | * 发表时间 34 | */ 35 | private Date createTime; 36 | 37 | /** 38 | * 更新时间 39 | */ 40 | private Date updateTime; 41 | 42 | /** 43 | * 点赞量 44 | */ 45 | private Integer likeCount; 46 | 47 | /** 48 | * 浏览量 49 | */ 50 | private Integer viewsCount; 51 | 52 | /** 53 | * 文章分类名 54 | */ 55 | private String categoryName; 56 | 57 | /** 58 | * 文章标签 59 | */ 60 | private List tagDTOList; 61 | 62 | /** 63 | * 是否置顶 64 | */ 65 | private Integer isTop; 66 | 67 | /** 68 | * 是否为草稿 69 | */ 70 | private Integer isDraft; 71 | 72 | /** 73 | * 是否删除 74 | */ 75 | private Integer isDelete; 76 | 77 | } 78 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 文章 13 | * 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class ArticleDTO { 21 | 22 | /** 23 | * id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 文章缩略图 29 | */ 30 | private String articleCover; 31 | 32 | /** 33 | * 标题 34 | */ 35 | private String articleTitle; 36 | 37 | /** 38 | * 内容 39 | */ 40 | private String articleContent; 41 | 42 | /** 43 | * 点赞量 44 | */ 45 | private Integer likeCount; 46 | 47 | /** 48 | * 浏览量 49 | */ 50 | private Integer viewsCount; 51 | 52 | /** 53 | * 发表时间 54 | */ 55 | private Date createTime; 56 | 57 | /** 58 | * 更新时间 59 | */ 60 | private Date updateTime; 61 | 62 | /** 63 | * 文章分类id 64 | */ 65 | private Integer categoryId; 66 | 67 | /** 68 | * 文章分类名 69 | */ 70 | private String categoryName; 71 | 72 | /** 73 | * 文章标签 74 | */ 75 | private List tagDTOList; 76 | 77 | /** 78 | * 上一篇文章 79 | */ 80 | private ArticlePaginationDTO lastArticle; 81 | 82 | /** 83 | * 下一篇文章 84 | */ 85 | private ArticlePaginationDTO nextArticle; 86 | 87 | /** 88 | * 推荐文章 89 | */ 90 | private List articleRecommendList; 91 | 92 | 93 | } 94 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleHomeDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 首页文章列表 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class ArticleHomeDTO { 20 | 21 | /** 22 | * id 23 | */ 24 | private Integer id; 25 | 26 | /** 27 | * 文章缩略图 28 | */ 29 | private String articleCover; 30 | 31 | /** 32 | * 标题 33 | */ 34 | private String articleTitle; 35 | 36 | /** 37 | * 内容 38 | */ 39 | private String articleContent; 40 | 41 | /** 42 | * 发表时间 43 | */ 44 | private Date createTime; 45 | 46 | /** 47 | * 是否置顶 48 | */ 49 | private Boolean isTop; 50 | 51 | /** 52 | * 文章分类id 53 | */ 54 | private Integer categoryId; 55 | 56 | /** 57 | * 文章分类名 58 | */ 59 | private String categoryName; 60 | 61 | /** 62 | * 文章标签 63 | */ 64 | private List tagDTOList; 65 | 66 | } 67 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleOptionDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 文章选项 12 | * 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class ArticleOptionDTO { 20 | 21 | /** 22 | * 文章标签列表 23 | */ 24 | private List tagDTOList; 25 | 26 | /** 27 | * 文章分类列表 28 | */ 29 | private List categoryDTOList; 30 | 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticlePaginationDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 文章上下篇DTO 10 | * @author: yezhiqiu 11 | * @date: 2021-01-18 12 | **/ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @Builder 17 | public class ArticlePaginationDTO { 18 | 19 | /** 20 | * id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 文章缩略图 26 | */ 27 | private String articleCover; 28 | 29 | /** 30 | * 标题 31 | */ 32 | private String articleTitle; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticlePreviewDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 分类或标签下的文章 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class ArticlePreviewDTO { 20 | 21 | /** 22 | * 文章id 23 | */ 24 | private Integer id; 25 | 26 | /** 27 | * 文章缩略图 28 | */ 29 | private String articleCover; 30 | 31 | /** 32 | * 标题 33 | */ 34 | private String articleTitle; 35 | 36 | /** 37 | * 发表时间 38 | */ 39 | private Date createTime; 40 | 41 | /** 42 | * 文章分类id 43 | */ 44 | private Integer categoryId; 45 | 46 | /** 47 | * 文章分类名 48 | */ 49 | private String categoryName; 50 | 51 | /** 52 | * 文章标签 53 | */ 54 | private List tagDTOList; 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticlePreviewListDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 分类或标签下的文章列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class ArticlePreviewListDTO { 19 | /** 20 | * 条件对应的文章列表 21 | */ 22 | private List articlePreviewDTOList; 23 | 24 | /** 25 | * 条件名 26 | */ 27 | private String name; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleRankDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 文章排行 10 | * 11 | * @author 11921 12 | */ 13 | @Data 14 | @Builder 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class ArticleRankDTO { 18 | 19 | /** 20 | * 标题 21 | */ 22 | private String articleTitle; 23 | 24 | /** 25 | * 浏览量 26 | */ 27 | private Integer viewsCount; 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleRecommendDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 推荐文章 12 | * @author: yezhiqiu 13 | * @date: 2021-01-20 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | @Builder 19 | public class ArticleRecommendDTO { 20 | /** 21 | * id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 文章缩略图 27 | */ 28 | private String articleCover; 29 | 30 | /** 31 | * 标题 32 | */ 33 | private String articleTitle; 34 | 35 | /** 36 | * 创建时间 37 | */ 38 | private Date createTime; 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleSearchDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.minzheng.blog.entity.Article; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | import org.springframework.data.annotation.Id; 9 | import org.springframework.data.elasticsearch.annotations.Document; 10 | import org.springframework.data.elasticsearch.annotations.Field; 11 | import org.springframework.data.elasticsearch.annotations.FieldType; 12 | 13 | /** 14 | * 文章搜索结果 15 | * 16 | * @author 11921 17 | */ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @Document(indexName = "article") 23 | public class ArticleSearchDTO { 24 | 25 | /** 26 | * 文章id 27 | */ 28 | @Id 29 | private Integer id; 30 | 31 | /** 32 | * 文章标题 33 | */ 34 | @Field(type = FieldType.Text, analyzer = "ik_max_word") 35 | private String articleTitle; 36 | 37 | /** 38 | * 文章内容 39 | */ 40 | @Field(type = FieldType.Text, analyzer = "ik_max_word") 41 | private String articleContent; 42 | 43 | /** 44 | * 文章状态 45 | */ 46 | @Field(type = FieldType.Integer) 47 | private Integer isDelete; 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/BlogBackInfoDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 博客后台信息 12 | * 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class BlogBackInfoDTO { 20 | /** 21 | * 访问量 22 | */ 23 | private Integer viewsCount; 24 | 25 | /** 26 | * 留言量 27 | */ 28 | private Integer messageCount; 29 | 30 | /** 31 | * 用户量 32 | */ 33 | private Integer userCount; 34 | 35 | /** 36 | * 文章量 37 | */ 38 | private Integer articleCount; 39 | 40 | /** 41 | * 分类统计 42 | */ 43 | private List categoryDTOList; 44 | 45 | /** 46 | * 一周用户量集合 47 | */ 48 | private List uniqueViewDTOList; 49 | 50 | /** 51 | * 文章浏览量排行 52 | */ 53 | private List articleRankDTOList; 54 | 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/BlogHomeInfoDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 博客首页信息 10 | * 11 | * @author 11921 12 | */ 13 | @Data 14 | @Builder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class BlogHomeInfoDTO { 18 | /** 19 | * 博主昵称 20 | */ 21 | private String nickname; 22 | 23 | /** 24 | * 博主头像 25 | */ 26 | private String avatar; 27 | 28 | /** 29 | * 博主简介 30 | */ 31 | private String intro; 32 | 33 | /** 34 | * 文章数量 35 | */ 36 | private Integer articleCount; 37 | 38 | /** 39 | * 分类数量 40 | */ 41 | private Integer categoryCount; 42 | 43 | /** 44 | * 标签数量 45 | */ 46 | private Integer tagCount; 47 | 48 | /** 49 | * 公告 50 | */ 51 | private String notice; 52 | 53 | /** 54 | * 访问量 55 | */ 56 | private String viewsCount; 57 | 58 | 59 | } 60 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CategoryBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 后台分类列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class CategoryBackDTO { 17 | /** 18 | * id 19 | */ 20 | private Integer id; 21 | 22 | /** 23 | * 分类名 24 | */ 25 | private String categoryName; 26 | } 27 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CategoryDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 分类列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class CategoryDTO { 17 | 18 | /** 19 | * id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 分类名 25 | */ 26 | private String categoryName; 27 | 28 | /** 29 | * 分类下的文章数量 30 | */ 31 | private Integer articleCount; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ChatRecordDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.minzheng.blog.entity.ChatRecord; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author: yezhiqiu 13 | * @date: 2021-03-30 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | @Builder 19 | public class ChatRecordDTO { 20 | 21 | /** 22 | * 聊天记录 23 | */ 24 | private List chatRecordList; 25 | 26 | /** 27 | * ip地址 28 | */ 29 | private String ipAddr; 30 | 31 | /** 32 | * ip来源 33 | */ 34 | private String ipSource; 35 | } 36 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CommentBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.Date; 10 | 11 | /** 12 | * 后台评论列表 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class CommentBackDTO { 20 | /** 21 | * id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 用户头像 27 | */ 28 | private String avatar; 29 | 30 | /** 31 | * 用户昵称 32 | */ 33 | private String nickname; 34 | 35 | /** 36 | * 被回复用户昵称 37 | */ 38 | private String replyNickname; 39 | 40 | /** 41 | * 文章标题 42 | */ 43 | private String articleTitle; 44 | 45 | /** 46 | * 评论内容 47 | */ 48 | private String commentContent; 49 | 50 | /** 51 | * 点赞量 52 | */ 53 | private Integer likeCount; 54 | 55 | /** 56 | * 发表时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 状态 62 | */ 63 | private Integer isDelete; 64 | 65 | } 66 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CommentDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 评论列表 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class CommentDTO { 20 | /** 21 | * 评论id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 用户id 27 | */ 28 | private Integer userId; 29 | 30 | /** 31 | * 用户昵称 32 | */ 33 | private String nickname; 34 | 35 | /** 36 | * 用户头像 37 | */ 38 | private String avatar; 39 | 40 | /** 41 | * 个人网站 42 | */ 43 | private String webSite; 44 | 45 | /** 46 | * 评论内容 47 | */ 48 | private String commentContent; 49 | 50 | /** 51 | * 点赞数 52 | */ 53 | private Integer likeCount; 54 | 55 | /** 56 | * 评论时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 回复量 62 | */ 63 | private Integer replyCount; 64 | 65 | /** 66 | * 回复列表 67 | */ 68 | private List replyDTOList; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/EmailDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-04-16 11 | **/ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class EmailDTO { 17 | 18 | /** 19 | * 邮箱号 20 | */ 21 | private String email; 22 | 23 | /** 24 | * 主题 25 | */ 26 | private String subject; 27 | 28 | /** 29 | * 内容 30 | */ 31 | private String content; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/FriendLinkBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 后台友链列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class FriendLinkBackDTO { 19 | /** 20 | * id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 链接名 26 | */ 27 | private String linkName; 28 | 29 | /** 30 | * 链接头像 31 | */ 32 | private String linkAvatar; 33 | 34 | /** 35 | * 链接地址 36 | */ 37 | private String linkAddress; 38 | 39 | /** 40 | * 链接介绍 41 | */ 42 | private String linkIntro; 43 | 44 | /** 45 | * 创建时间 46 | */ 47 | private Date createTime; 48 | 49 | } 50 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/FriendLinkDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 友链列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class FriendLinkDTO { 17 | 18 | /** 19 | * id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 链接名 25 | */ 26 | private String linkName; 27 | 28 | /** 29 | * 链接头像 30 | */ 31 | private String linkAvatar; 32 | 33 | /** 34 | * 链接地址 35 | */ 36 | private String linkAddress; 37 | 38 | /** 39 | * 介绍 40 | */ 41 | private String linkIntro; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/MenuDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | import java.util.List; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-01-26 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | public class MenuDTO { 22 | 23 | /** 24 | * id 25 | */ 26 | private Integer id; 27 | 28 | /** 29 | * 菜单名 30 | */ 31 | private String name; 32 | 33 | /** 34 | * 路径 35 | */ 36 | private String path; 37 | 38 | /** 39 | * 组件 40 | */ 41 | private String component; 42 | 43 | /** 44 | * icon 45 | */ 46 | private String icon; 47 | 48 | /** 49 | * 创建时间 50 | */ 51 | private Date createTime; 52 | 53 | /** 54 | * 排序 55 | */ 56 | private Integer orderNum; 57 | 58 | /** 59 | * 是否禁用 60 | */ 61 | private Integer isDisable; 62 | 63 | /** 64 | * 是否隐藏 65 | */ 66 | private Integer isHidden; 67 | 68 | /** 69 | * 子菜单列表 70 | */ 71 | private List children; 72 | 73 | } 74 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/MessageBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 后台留言列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class MessageBackDTO { 19 | 20 | /** 21 | * 主键id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 用户ip 27 | */ 28 | private String ipAddress; 29 | 30 | /** 31 | * 用户ip地址 32 | */ 33 | private String ipSource; 34 | 35 | /** 36 | * 昵称 37 | */ 38 | private String nickname; 39 | 40 | /** 41 | * 头像 42 | */ 43 | private String avatar; 44 | 45 | /** 46 | * 留言内容 47 | */ 48 | private String messageContent; 49 | 50 | /** 51 | * 留言时间 52 | */ 53 | private Date createTime; 54 | 55 | } 56 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/MessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 留言列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class MessageDTO { 17 | 18 | /** 19 | * 主键id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 昵称 25 | */ 26 | private String nickname; 27 | 28 | /** 29 | * 头像 30 | */ 31 | private String avatar; 32 | 33 | /** 34 | * 留言内容 35 | */ 36 | private String messageContent; 37 | 38 | /** 39 | * 弹幕速度 40 | */ 41 | private Integer time; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/OperationLogDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * 操作日志DTO 14 | * 15 | * @author: yezhiqiu 16 | * @date: 2021-01-31 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | public class OperationLogDTO { 23 | /** 24 | * 日志id 25 | */ 26 | private Integer id; 27 | 28 | /** 29 | * 操作模块 30 | */ 31 | private String optModule; 32 | 33 | /** 34 | * 操作路径 35 | */ 36 | private String optUrl; 37 | 38 | /** 39 | * 操作类型 40 | */ 41 | private String optType; 42 | 43 | /** 44 | * 操作方法 45 | */ 46 | private String optMethod; 47 | 48 | /** 49 | * 操作描述 50 | */ 51 | private String optDesc; 52 | 53 | /** 54 | * 请求方式 55 | */ 56 | private String requestMethod; 57 | 58 | /** 59 | * 请求参数 60 | */ 61 | private String requestParam; 62 | 63 | /** 64 | * 返回数据 65 | */ 66 | private String responseData; 67 | 68 | /** 69 | * 用户昵称 70 | */ 71 | private String nickname; 72 | 73 | /** 74 | * 用户登录ip 75 | */ 76 | private String ipAddr; 77 | 78 | /** 79 | * ip来源 80 | */ 81 | private String ipSource; 82 | 83 | /** 84 | * 创建时间 85 | */ 86 | private Date createTime; 87 | 88 | } 89 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/PageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 分页列表 11 | * @author 11921 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class PageDTO { 17 | 18 | /** 19 | * 分页列表 20 | */ 21 | private List recordList; 22 | 23 | /** 24 | * 总数 25 | */ 26 | private Integer count; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/RecallMessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-03-30 11 | **/ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Builder 16 | public class RecallMessageDTO { 17 | 18 | /** 19 | * 消息id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 是否为语音 25 | */ 26 | private Boolean isVoice; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ReplyCountDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 回复数量 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class ReplyCountDTO { 17 | 18 | /** 19 | * 评论id 20 | */ 21 | private Integer commentId; 22 | 23 | /** 24 | * 回复数量 25 | */ 26 | private Integer replyCount; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ReplyDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 回复列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class ReplyDTO { 19 | 20 | /** 21 | * 评论id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 父评论id 27 | */ 28 | private Integer parentId; 29 | 30 | /** 31 | * 用户id 32 | */ 33 | private Integer userId; 34 | 35 | /** 36 | * 用户昵称 37 | */ 38 | private String nickname; 39 | 40 | /** 41 | * 用户头像 42 | */ 43 | private String avatar; 44 | 45 | /** 46 | * 个人网站 47 | */ 48 | private String webSite; 49 | 50 | /** 51 | * 被回复用户id 52 | */ 53 | private Integer replyId; 54 | 55 | /** 56 | * 被回复用户昵称 57 | */ 58 | private String replyNickname; 59 | 60 | /** 61 | * 被回复个人网站 62 | */ 63 | private String replyWebSite; 64 | 65 | /** 66 | * 评论内容 67 | */ 68 | private String commentContent; 69 | 70 | /** 71 | * 点赞数 72 | */ 73 | private Integer likeCount; 74 | 75 | /** 76 | * 评论时间 77 | */ 78 | private Date createTime; 79 | 80 | } 81 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ResourceDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 权限DTO 13 | * @author: yezhiqiu 14 | * @date: 2021-01-22 15 | **/ 16 | @Data 17 | @Builder 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class ResourceDTO { 21 | 22 | /** 23 | * 权限id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 资源名 29 | */ 30 | private String resourceName; 31 | 32 | /** 33 | * 权限路径 34 | */ 35 | private String url; 36 | 37 | /** 38 | * 请求方式 39 | */ 40 | private String requestMethod; 41 | 42 | /** 43 | * 创建时间 44 | */ 45 | private Date createTime; 46 | 47 | /** 48 | * 是否禁用 49 | */ 50 | private Integer isDisable; 51 | 52 | /** 53 | * 是否匿名访问 54 | */ 55 | private Integer isAnonymous; 56 | 57 | /** 58 | * 权限列表 59 | */ 60 | private List children; 61 | 62 | } 63 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/RoleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | import java.util.List; 12 | 13 | /** 14 | * 角色DTO 15 | * @author: yezhiqiu 16 | * @date: 2021-01-22 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | public class RoleDTO { 23 | 24 | /** 25 | * 角色id 26 | */ 27 | private Integer id; 28 | 29 | /** 30 | * 角色名 31 | */ 32 | private String roleName; 33 | 34 | /** 35 | * 角色标签 36 | */ 37 | private String roleLabel; 38 | 39 | /** 40 | * 创建时间 41 | */ 42 | private Date createTime; 43 | 44 | /** 45 | * 是否禁用 46 | */ 47 | private Integer isDisable; 48 | 49 | /** 50 | * 资源id列表 51 | */ 52 | private List resourceIdList; 53 | 54 | /** 55 | * 菜单id列表 56 | */ 57 | private List menuIdList; 58 | 59 | } 60 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/TagDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | 10 | /** 11 | * 标签 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class TagDTO { 19 | 20 | /** 21 | * id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 标签名 27 | */ 28 | private String tagName; 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UniqueViewDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 访问量DTO 12 | * @author: yezhiqiu 13 | * @date: 2021-01-16 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | @Builder 19 | public class UniqueViewDTO { 20 | 21 | /** 22 | * 日期 23 | */ 24 | private String day; 25 | 26 | /** 27 | * 访问量 28 | */ 29 | private Integer viewsCount; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UrlRoleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2021-01-12 10 | **/ 11 | @Data 12 | public class UrlRoleDTO { 13 | 14 | /** 15 | * 资源id 16 | */ 17 | private Integer id; 18 | 19 | /** 20 | * 路径 21 | */ 22 | private String url; 23 | 24 | /** 25 | * 请求方式 26 | */ 27 | private String requestMethod; 28 | 29 | /** 30 | * 角色名 31 | */ 32 | private List roleList; 33 | 34 | /** 35 | * 是否匿名 36 | */ 37 | private Integer isAnonymous; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 后台用户列表 13 | * 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class UserBackDTO { 21 | 22 | /** 23 | * id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 用户信息id 29 | */ 30 | private Integer userInfoId; 31 | 32 | /** 33 | * 头像 34 | */ 35 | private String avatar; 36 | 37 | /** 38 | * 昵称 39 | */ 40 | private String nickname; 41 | 42 | /** 43 | * 用户角色 44 | */ 45 | private List roleList; 46 | 47 | /** 48 | * 登录类型 49 | */ 50 | private Integer loginType; 51 | 52 | /** 53 | * 用户登录ip 54 | */ 55 | private String ipAddr; 56 | 57 | /** 58 | * ip来源 59 | */ 60 | private String ipSource; 61 | 62 | /** 63 | * 创建时间 64 | */ 65 | private Date createTime; 66 | 67 | /** 68 | * 最近登录时间 69 | */ 70 | private Date lastLoginTime; 71 | 72 | /** 73 | * 用户评论状态 74 | */ 75 | private Integer isDisable; 76 | 77 | /** 78 | * 状态 79 | */ 80 | private Integer status; 81 | 82 | } 83 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserLoginDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | import java.util.Set; 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2021-04-16 15 | **/ 16 | @Data 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | @Builder 20 | public class UserLoginDTO { 21 | 22 | /** 23 | * 用户账号id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 用户信息id 29 | */ 30 | private Integer userInfoId; 31 | 32 | /** 33 | * 邮箱号 34 | */ 35 | private String email; 36 | 37 | /** 38 | * 登录方式 39 | */ 40 | private Integer loginType; 41 | 42 | /** 43 | * 用户名 44 | */ 45 | private String username; 46 | 47 | /** 48 | * 用户昵称 49 | */ 50 | private String nickname; 51 | 52 | /** 53 | * 用户头像 54 | */ 55 | private String avatar; 56 | 57 | /** 58 | * 用户简介 59 | */ 60 | private String intro; 61 | 62 | /** 63 | * 个人网站 64 | */ 65 | private String webSite; 66 | 67 | /** 68 | * 点赞文章集合 69 | */ 70 | private Set articleLikeSet; 71 | 72 | /** 73 | * 点赞评论集合 74 | */ 75 | private Set commentLikeSet; 76 | 77 | /** 78 | * 用户登录ip 79 | */ 80 | private String ipAddr; 81 | 82 | /** 83 | * ip来源 84 | */ 85 | private String ipSource; 86 | 87 | /** 88 | * 最近登录时间 89 | */ 90 | private Date lastLoginTime; 91 | 92 | } 93 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserMenuDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 用户菜单DTO 13 | * @author: yezhiqiu 14 | * @date: 2021-01-26 15 | **/ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class UserMenuDTO { 21 | 22 | /** 23 | * 菜单名 24 | */ 25 | private String name; 26 | 27 | /** 28 | * 路径 29 | */ 30 | private String path; 31 | 32 | /** 33 | * 组件 34 | */ 35 | private String component; 36 | 37 | /** 38 | * icon 39 | */ 40 | private String icon; 41 | 42 | /** 43 | * 是否隐藏 44 | */ 45 | private Boolean hidden; 46 | 47 | /** 48 | * 子菜单列表 49 | */ 50 | private List children; 51 | 52 | } 53 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserOnlineDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | 11 | /** 12 | * 在线用户DTO 13 | * @author: yezhiqiu 14 | * @date: 2021-02-04 15 | **/ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class UserOnlineDTO { 21 | 22 | /** 23 | * 用户信息id 24 | */ 25 | private Integer userInfoId; 26 | 27 | /** 28 | * 用户昵称 29 | */ 30 | private String nickname; 31 | 32 | /** 33 | * 用户头像 34 | */ 35 | private String avatar; 36 | 37 | /** 38 | * 用户登录ip 39 | */ 40 | private String ipAddr; 41 | 42 | /** 43 | * ip来源 44 | */ 45 | private String ipSource; 46 | 47 | /** 48 | * 浏览器 49 | */ 50 | private String browser; 51 | 52 | /** 53 | * 操作系统 54 | */ 55 | private String os; 56 | 57 | /** 58 | * 最近登录时间 59 | */ 60 | private Date lastLoginTime; 61 | 62 | } 63 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserRoleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 用户角色选项DTO 10 | * @author: yezhiqiu 11 | * @date: 2021-01-14 12 | **/ 13 | @Data 14 | @Builder 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class UserRoleDTO { 18 | 19 | /** 20 | * 角色id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 角色名 26 | */ 27 | private String roleName; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/WebsocketMessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-03-30 11 | **/ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Builder 16 | public class WebsocketMessageDTO { 17 | 18 | /** 19 | * 类型 20 | */ 21 | private Integer type; 22 | 23 | /** 24 | * 数据 25 | */ 26 | private Object data; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/labelOptionDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 角色选项DTO 12 | * 13 | * @author: yezhiqiu 14 | * @date: 2021-01-24 15 | **/ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class labelOptionDTO { 21 | 22 | /** 23 | * 选项id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 选项名 29 | */ 30 | private String label; 31 | 32 | /** 33 | * 子选项 34 | */ 35 | private List children; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Article.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.utils.UserUtil; 10 | import com.minzheng.blog.vo.ArticleVO; 11 | import lombok.AllArgsConstructor; 12 | import lombok.Builder; 13 | import lombok.Data; 14 | import lombok.NoArgsConstructor; 15 | import org.springframework.security.crypto.bcrypt.BCrypt; 16 | 17 | /** 18 | * 文章 19 | * 20 | * @author xiaojie 21 | * @since 2020-05-18 22 | */ 23 | @Data 24 | @Builder 25 | @AllArgsConstructor 26 | @NoArgsConstructor 27 | @TableName("tb_article") 28 | public class Article { 29 | 30 | /** 31 | * id 32 | */ 33 | @TableId(value = "id", type = IdType.AUTO) 34 | private Integer id; 35 | 36 | /** 37 | * 作者 38 | */ 39 | private Integer userId; 40 | 41 | /** 42 | * 文章分类 43 | */ 44 | private Integer categoryId; 45 | 46 | /** 47 | * 文章缩略图 48 | */ 49 | private String articleCover; 50 | 51 | /** 52 | * 标题 53 | */ 54 | private String articleTitle; 55 | 56 | /** 57 | * 内容 58 | */ 59 | private String articleContent; 60 | 61 | /** 62 | * 发表时间 63 | */ 64 | private Date createTime; 65 | 66 | /** 67 | * 更新时间 68 | */ 69 | private Date updateTime; 70 | 71 | /** 72 | * 是否置顶 73 | */ 74 | private Integer isTop; 75 | 76 | /** 77 | * 是否为草稿 78 | */ 79 | private Integer isDraft; 80 | 81 | /** 82 | * 状态码 83 | */ 84 | private Integer isDelete; 85 | 86 | 87 | } 88 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/ArticleTag.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.io.Serializable; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import lombok.*; 10 | import lombok.experimental.Accessors; 11 | 12 | /** 13 | * 标签 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_article_tag") 22 | public class ArticleTag { 23 | 24 | /** 25 | * id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 文章id 32 | */ 33 | private Integer articleId; 34 | 35 | /** 36 | * 标签id 37 | */ 38 | private Integer tagId; 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Category.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.time.LocalDateTime; 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | import com.baomidou.mybatisplus.annotation.TableName; 11 | import com.minzheng.blog.vo.CategoryVO; 12 | import lombok.*; 13 | import lombok.experimental.Accessors; 14 | 15 | /** 16 | * 分类 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_category") 26 | public class Category { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 分类名 36 | */ 37 | private String categoryName; 38 | 39 | /** 40 | * 创建时间 41 | */ 42 | private Date createTime; 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/ChatRecord.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-02-19 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_chat_record") 22 | public class ChatRecord { 23 | 24 | /** 25 | * 主键 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 用户id 32 | */ 33 | private Integer userId; 34 | 35 | /** 36 | * 用户昵称 37 | */ 38 | private String nickname; 39 | 40 | /** 41 | * 用户头像 42 | */ 43 | private String avatar; 44 | 45 | /** 46 | * 聊天内容 47 | */ 48 | private String content; 49 | 50 | /** 51 | * 类型 52 | */ 53 | private Integer type; 54 | 55 | /** 56 | * 创建时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 用户登录ip 62 | */ 63 | private String ipAddr; 64 | 65 | /** 66 | * ip来源 67 | */ 68 | private String ipSource; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Comment.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.utils.UserUtil; 10 | import com.minzheng.blog.vo.CommentVO; 11 | import lombok.AllArgsConstructor; 12 | import lombok.Builder; 13 | import lombok.Data; 14 | import lombok.NoArgsConstructor; 15 | 16 | /** 17 | * 评论 18 | * 19 | * @author xiaojie 20 | * @since 2020-05-18 21 | */ 22 | @Data 23 | @Builder 24 | @AllArgsConstructor 25 | @NoArgsConstructor 26 | @TableName("tb_comment") 27 | public class Comment { 28 | 29 | /** 30 | * id 31 | */ 32 | @TableId(value = "id", type = IdType.AUTO) 33 | private Integer id; 34 | 35 | /** 36 | * 评论用户Id 37 | */ 38 | private Integer userId; 39 | 40 | /** 41 | * 回复用户id 42 | */ 43 | private Integer replyId; 44 | 45 | /** 46 | * 评论文章id 47 | */ 48 | private Integer articleId; 49 | 50 | /** 51 | * 评论内容 52 | */ 53 | private String commentContent; 54 | 55 | /** 56 | * 评论时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 父评论id 62 | */ 63 | private Integer parentId; 64 | 65 | /** 66 | * 状态码 67 | */ 68 | private Integer isDelete; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/FriendLink.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.vo.FriendLinkVO; 10 | import lombok.AllArgsConstructor; 11 | import lombok.Builder; 12 | import lombok.Data; 13 | import lombok.NoArgsConstructor; 14 | 15 | /** 16 | * 友链列表 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_friend_link") 26 | public class FriendLink { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 链接名 36 | */ 37 | private String linkName; 38 | 39 | /** 40 | * 链接头像 41 | */ 42 | private String linkAvatar; 43 | 44 | /** 45 | * 链接地址 46 | */ 47 | private String linkAddress; 48 | 49 | /** 50 | * 介绍 51 | */ 52 | private String linkIntro; 53 | 54 | /** 55 | * 创建时间 56 | */ 57 | private Date createTime; 58 | 59 | 60 | } 61 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Menu.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-01-23 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_menu") 22 | public class Menu { 23 | 24 | /** 25 | * id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 菜单名 32 | */ 33 | private String name; 34 | 35 | /** 36 | * 路径 37 | */ 38 | private String path; 39 | 40 | /** 41 | * 组件 42 | */ 43 | private String component; 44 | 45 | /** 46 | * icon 47 | */ 48 | private String icon; 49 | 50 | /** 51 | * 创建时间 52 | */ 53 | private Date createTime; 54 | 55 | /** 56 | * 更新时间 57 | */ 58 | private Date updateTime; 59 | 60 | /** 61 | * 排序 62 | */ 63 | private Integer orderNum; 64 | 65 | /** 66 | * 父id 67 | */ 68 | private Integer parentId; 69 | 70 | /** 71 | * 是否禁用 72 | */ 73 | private Integer isDisable; 74 | 75 | /** 76 | * 是否隐藏 77 | */ 78 | private Integer isHidden; 79 | 80 | } 81 | 82 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Message.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import java.util.Date; 4 | 5 | import com.baomidou.mybatisplus.annotation.IdType; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import com.baomidou.mybatisplus.annotation.TableName; 8 | import com.minzheng.blog.vo.MessageVO; 9 | import lombok.AllArgsConstructor; 10 | import lombok.Builder; 11 | import lombok.Data; 12 | import lombok.NoArgsConstructor; 13 | 14 | /** 15 | * 留言 16 | * 17 | * @author xiaojie 18 | * @since 2020-05-18 19 | */ 20 | @Data 21 | @Builder 22 | @AllArgsConstructor 23 | @NoArgsConstructor 24 | @TableName("tb_message") 25 | public class Message { 26 | 27 | /** 28 | * 主键id 29 | */ 30 | @TableId(value = "id", type = IdType.AUTO) 31 | private Integer id; 32 | 33 | /** 34 | * 用户ip 35 | */ 36 | private String ipAddress; 37 | 38 | /** 39 | * 用户地址 40 | */ 41 | private String ipSource; 42 | 43 | /** 44 | * 昵称 45 | */ 46 | private String nickname; 47 | 48 | /** 49 | * 头像 50 | */ 51 | private String avatar; 52 | 53 | /** 54 | * 留言内容 55 | */ 56 | private String messageContent; 57 | 58 | /** 59 | * 弹幕速度 60 | */ 61 | private Integer time; 62 | 63 | /** 64 | * 留言时间 65 | */ 66 | private Date createTime; 67 | 68 | } 69 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/OperationLog.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-01-31 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_operation_log") 22 | public class OperationLog { 23 | 24 | /** 25 | * 日志id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 操作模块 32 | */ 33 | private String optModule; 34 | 35 | /** 36 | * 操作路径 37 | */ 38 | private String optUrl; 39 | 40 | /** 41 | * 操作类型 42 | */ 43 | private String optType; 44 | 45 | /** 46 | * 操作方法 47 | */ 48 | private String optMethod; 49 | 50 | /** 51 | * 操作描述 52 | */ 53 | private String optDesc; 54 | 55 | /** 56 | * 请求方式 57 | */ 58 | private String requestMethod; 59 | 60 | /** 61 | * 请求参数 62 | */ 63 | private String requestParam; 64 | 65 | /** 66 | * 返回数据 67 | */ 68 | private String responseData; 69 | 70 | /** 71 | * 用户id 72 | */ 73 | private Integer userId; 74 | 75 | /** 76 | * 用户昵称 77 | */ 78 | private String nickname; 79 | 80 | /** 81 | * 用户登录ip 82 | */ 83 | private String ipAddr; 84 | 85 | /** 86 | * ip来源 87 | */ 88 | private String ipSource; 89 | 90 | /** 91 | * 创建时间 92 | */ 93 | private Date createTime; 94 | } 95 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Resource.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * 权限表 15 | * @author: yezhiqiu 16 | * @date: 2020-12-27 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @TableName("tb_resource") 23 | public class Resource { 24 | /** 25 | * 权限id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 权限名 32 | */ 33 | private String resourceName; 34 | 35 | /** 36 | * 权限路径 37 | */ 38 | private String url; 39 | 40 | /** 41 | * 请求方式 42 | */ 43 | private String requestMethod; 44 | 45 | /** 46 | * 父权限id 47 | */ 48 | private Integer parentId; 49 | 50 | /** 51 | * 创建时间 52 | */ 53 | private Date createTime; 54 | 55 | /** 56 | * 更新时间 57 | */ 58 | private Date updateTime; 59 | 60 | /** 61 | * 是否禁用 62 | */ 63 | private Integer isDisable; 64 | 65 | /** 66 | * 是否匿名访问 67 | */ 68 | private Integer isAnonymous; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Role.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * 角色表 15 | * 16 | * @author: yezhiqiu 17 | * @date: 2020-12-27 18 | **/ 19 | @Data 20 | @Builder 21 | @AllArgsConstructor 22 | @NoArgsConstructor 23 | @TableName("tb_role") 24 | public class Role { 25 | 26 | /** 27 | * 角色id 28 | */ 29 | @TableId(value = "id", type = IdType.AUTO) 30 | private Integer id; 31 | 32 | /** 33 | * 角色名 34 | */ 35 | private String roleName; 36 | 37 | /** 38 | * 角色标签 39 | */ 40 | private String roleLabel; 41 | 42 | /** 43 | * 创建时间 44 | */ 45 | private Date createTime; 46 | 47 | /** 48 | * 更新时间 49 | */ 50 | private Date updateTime; 51 | 52 | /** 53 | * 是否禁用 54 | */ 55 | private Integer isDisable; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/RoleMenu.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | /** 12 | * @author: yezhiqiu 13 | * @date: 2020-12-27 14 | **/ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | @TableName("tb_role_menu") 20 | public class RoleMenu { 21 | 22 | /** 23 | * 主键id 24 | */ 25 | @TableId(value = "id", type = IdType.AUTO) 26 | private Integer id; 27 | 28 | /** 29 | * 角色id 30 | */ 31 | private Integer roleId; 32 | 33 | /** 34 | * 菜单id 35 | */ 36 | private Integer menuId; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/RoleResource.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_role_resource") 22 | public class RoleResource { 23 | /** 24 | * 主键id 25 | */ 26 | @TableId(value = "id", type = IdType.AUTO) 27 | private Integer id; 28 | 29 | /** 30 | * 角色id 31 | */ 32 | private Integer roleId; 33 | 34 | /** 35 | * 资源id 36 | */ 37 | private Integer resourceId; 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Tag.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.vo.TagVO; 10 | import lombok.AllArgsConstructor; 11 | import lombok.Builder; 12 | import lombok.Data; 13 | import lombok.NoArgsConstructor; 14 | 15 | /** 16 | * 标签 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_tag") 26 | public class Tag { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 标签名 36 | */ 37 | private String tagName; 38 | 39 | /** 40 | * 创建时间 41 | */ 42 | private Date createTime; 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UniqueView.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.time.LocalDateTime; 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | import com.baomidou.mybatisplus.annotation.TableName; 11 | import lombok.*; 12 | import lombok.experimental.Accessors; 13 | 14 | /** 15 | * 网站访问量 16 | * 17 | * @author xiaojie 18 | * @since 2020-05-18 19 | */ 20 | @Data 21 | @Builder 22 | @AllArgsConstructor 23 | @NoArgsConstructor 24 | @TableName("tb_unique_view") 25 | public class UniqueView { 26 | 27 | /** 28 | * id 29 | */ 30 | @TableId(value = "id", type = IdType.AUTO) 31 | private Integer id; 32 | 33 | /** 34 | * 时间 35 | */ 36 | private Date createTime; 37 | 38 | /** 39 | * 访问量 40 | */ 41 | private Integer viewsCount; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UserAuth.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import java.util.Date; 4 | 5 | import com.baomidou.mybatisplus.annotation.IdType; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import com.baomidou.mybatisplus.annotation.TableName; 8 | import com.minzheng.blog.utils.UserUtil; 9 | import lombok.AllArgsConstructor; 10 | import lombok.Builder; 11 | import lombok.Data; 12 | import lombok.NoArgsConstructor; 13 | import org.springframework.security.crypto.bcrypt.BCrypt; 14 | 15 | /** 16 | * 用户账号 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_user_auth") 26 | public class UserAuth { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 用户信息id 36 | */ 37 | private Integer userInfoId; 38 | 39 | /** 40 | * 用户名 41 | */ 42 | private String username; 43 | 44 | /** 45 | * 密码 46 | */ 47 | private String password; 48 | 49 | /** 50 | * 登录类型 51 | */ 52 | private Integer loginType; 53 | 54 | /** 55 | * 用户登录ip 56 | */ 57 | private String ipAddr; 58 | 59 | /** 60 | * ip来源 61 | */ 62 | private String ipSource; 63 | 64 | /** 65 | * 创建时间 66 | */ 67 | private Date createTime; 68 | 69 | /** 70 | * 最近登录时间 71 | */ 72 | private Date lastLoginTime; 73 | 74 | } 75 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UserInfo.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.utils.UserUtil; 10 | import com.minzheng.blog.vo.UserInfoVO; 11 | import com.minzheng.blog.vo.UserRoleVO; 12 | import lombok.AllArgsConstructor; 13 | import lombok.Builder; 14 | import lombok.Data; 15 | import lombok.NoArgsConstructor; 16 | 17 | /** 18 | * 用户信息 19 | * 20 | * @author xiaojie 21 | * @since 2020-05-18 22 | */ 23 | @Data 24 | @Builder 25 | @AllArgsConstructor 26 | @NoArgsConstructor 27 | @TableName("tb_user_info") 28 | public class UserInfo { 29 | 30 | /** 31 | * 用户ID 32 | */ 33 | @TableId(value = "id", type = IdType.AUTO) 34 | private Integer id; 35 | 36 | /** 37 | * 邮箱号 38 | */ 39 | private String email; 40 | 41 | /** 42 | * 用户昵称 43 | */ 44 | private String nickname; 45 | 46 | /** 47 | * 用户头像 48 | */ 49 | private String avatar; 50 | 51 | /** 52 | * 用户简介 53 | */ 54 | private String intro; 55 | 56 | /** 57 | * 个人网站 58 | */ 59 | private String webSite; 60 | 61 | /** 62 | * 是否禁言 63 | */ 64 | private Integer isDisable; 65 | 66 | /** 67 | * 创建时间 68 | */ 69 | private Date createTime; 70 | 71 | /** 72 | * 更新时间 73 | */ 74 | private Date updateTime; 75 | 76 | } 77 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UserRole.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_user_role") 22 | public class UserRole { 23 | /** 24 | * 主键id 25 | */ 26 | @TableId(value = "id", type = IdType.AUTO) 27 | private Integer id; 28 | 29 | /** 30 | * 用户id 31 | */ 32 | private Integer userId; 33 | 34 | /** 35 | * 角色id 36 | */ 37 | private Integer roleId; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/ChatTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 聊天类型枚举 8 | * 9 | * @author: yezhiqiu 10 | * @date: 2021-02-21 11 | **/ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum ChatTypeEnum { 15 | /** 16 | * 在线人数 17 | */ 18 | ONLINE_COUNT(1, "在线人数"), 19 | /** 20 | * 历史记录 21 | */ 22 | HISTORY_RECORD(2, "历史记录"), 23 | /** 24 | * 发送消息 25 | */ 26 | SEND_MESSAGE(3, "发送消息"), 27 | /** 28 | * 撤回消息 29 | */ 30 | RECALL_MESSAGE(4, "撤回消息"), 31 | /** 32 | * 语音消息 33 | */ 34 | VOICE_MESSAGE(5,"语音消息"), 35 | /** 36 | * 心跳消息 37 | */ 38 | HEART_BEAT(6,"心跳消息"); 39 | 40 | /** 41 | * 类型 42 | */ 43 | private final Integer type; 44 | 45 | /** 46 | * 描述 47 | */ 48 | private final String desc; 49 | 50 | /** 51 | * 根据类型获取枚举 52 | * @param type 类型 53 | * @return 枚举 54 | */ 55 | public static ChatTypeEnum getChatType(Integer type) { 56 | for (ChatTypeEnum chatType : ChatTypeEnum.values()) { 57 | if (chatType.getType().equals(type)) { 58 | return chatType; 59 | } 60 | } 61 | return null; 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/FilePathEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-01-29 9 | **/ 10 | @Getter 11 | @AllArgsConstructor 12 | public enum FilePathEnum { 13 | /** 14 | * 头像路径 15 | */ 16 | AVATAR("avatar/", "头像路径"), 17 | /** 18 | * 文章图片路径 19 | */ 20 | ARTICLE("articles/", "文章图片路径"), 21 | /** 22 | * 音频路径 23 | */ 24 | VOICE("voice/", "音频路径"); 25 | 26 | /** 27 | * 路径 28 | */ 29 | private final String path; 30 | 31 | /** 32 | * 描述 33 | */ 34 | private final String desc; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/LoginTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 登录方式枚举 8 | * 9 | * @author: yezhiqiu 10 | * @date: 2021-01-29 11 | **/ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum LoginTypeEnum { 15 | /** 16 | * 邮箱登录 17 | */ 18 | EMAIL(0, "邮箱登录"), 19 | /** 20 | * QQ登录 21 | */ 22 | QQ(1, "QQ登录"), 23 | /** 24 | * 微博登录 25 | */ 26 | WEIBO(2, "微博登录"); 27 | 28 | /** 29 | * 登录方式 30 | */ 31 | private final Integer type; 32 | 33 | /** 34 | * 描述 35 | */ 36 | private final String desc; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/OptLogTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 操作类型枚举 8 | * @author: yezhiqiu 9 | * @date: 2021-01-31 10 | **/ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum OptLogTypeEnum { 14 | /** 15 | * 新增 16 | */ 17 | ADD(1,"新增"), 18 | /** 19 | * 修改 20 | */ 21 | UPDATE(2,"修改"), 22 | /** 23 | * 删除 24 | */ 25 | REMOVE(3,"删除"); 26 | /** 27 | * 类型 28 | */ 29 | private final int type; 30 | 31 | /** 32 | * 描述 33 | */ 34 | private final String desc; 35 | } 36 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/RoleEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-01-11 9 | **/ 10 | @Getter 11 | @AllArgsConstructor 12 | public enum RoleEnum { 13 | /** 14 | * 管理员 15 | */ 16 | ADMIN(1, "管理员", "admin"), 17 | /** 18 | * 普通用户 19 | */ 20 | USER(2, "用户", "user"), 21 | /** 22 | * 测试账号 23 | */ 24 | TEST(3, "测试", "test"); 25 | 26 | /** 27 | * 角色id 28 | */ 29 | private final Integer roleId; 30 | 31 | /** 32 | * 描述 33 | */ 34 | private final String name; 35 | 36 | /** 37 | * 权限标签 38 | */ 39 | private final String label; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/exception/ServeException.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.exception; 2 | 3 | 4 | 5 | /** 6 | * 自定义异常类 7 | * @author 11921 8 | */ 9 | public class ServeException extends RuntimeException { 10 | public ServeException(String message) { 11 | super(message); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AccessDecisionManagerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import org.springframework.security.access.AccessDecisionManager; 4 | import org.springframework.security.access.AccessDeniedException; 5 | import org.springframework.security.access.ConfigAttribute; 6 | import org.springframework.security.authentication.InsufficientAuthenticationException; 7 | import org.springframework.security.core.Authentication; 8 | import org.springframework.security.core.GrantedAuthority; 9 | import org.springframework.stereotype.Component; 10 | 11 | import java.util.Collection; 12 | import java.util.List; 13 | import java.util.stream.Collectors; 14 | 15 | /** 16 | * @author: yezhiqiu 17 | * @date: 2021-01-06 18 | **/ 19 | @Component 20 | public class AccessDecisionManagerImpl implements AccessDecisionManager { 21 | @Override 22 | public void decide(Authentication authentication, Object o, Collection collection) throws AccessDeniedException, InsufficientAuthenticationException { 23 | // 获取用户权限列表 24 | List permissionList = authentication.getAuthorities() 25 | .stream() 26 | .map(GrantedAuthority::getAuthority) 27 | .collect(Collectors.toList()); 28 | for (ConfigAttribute item : collection) { 29 | if (permissionList.contains(item.getAttribute())) { 30 | return; 31 | } 32 | } 33 | throw new AccessDeniedException("没有操作权限"); 34 | } 35 | 36 | @Override 37 | public boolean supports(ConfigAttribute configAttribute) { 38 | return true; 39 | } 40 | 41 | @Override 42 | public boolean supports(Class> aClass) { 43 | return true; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AccessDeniedHandlerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | 5 | import com.minzheng.blog.vo.Result; 6 | import com.minzheng.blog.constant.StatusConst; 7 | import org.springframework.security.access.AccessDeniedException; 8 | import org.springframework.security.web.access.AccessDeniedHandler; 9 | import org.springframework.stereotype.Component; 10 | 11 | import javax.servlet.ServletException; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | 16 | /** 17 | * 用户权限处理 18 | * @author 11921 19 | */ 20 | @Component 21 | public class AccessDeniedHandlerImpl implements AccessDeniedHandler { 22 | 23 | @Override 24 | public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException, ServletException { 25 | httpServletResponse.setContentType("application/json;charset=utf-8"); 26 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(false, StatusConst.AUTHORIZED,"没有操作权限"))); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AuthenticationEntryPointImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.vo.Result; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import org.springframework.security.core.AuthenticationException; 7 | import org.springframework.security.web.AuthenticationEntryPoint; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | 15 | /** 16 | * 用户未登录处理 17 | * 18 | * @author 11921 19 | */ 20 | @Component 21 | public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint { 22 | 23 | @Override 24 | public void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException { 25 | httpServletResponse.setContentType("application/json;charset=utf-8"); 26 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(false, StatusConst.NOT_LOGIN, "请登录"))); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AuthenticationFailHandlerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.vo.Result; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import org.springframework.security.core.AuthenticationException; 7 | import org.springframework.security.web.authentication.AuthenticationFailureHandler; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.http.HttpServletRequest; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.io.IOException; 13 | 14 | /** 15 | * 登录失败处理 16 | * @author 11921 17 | */ 18 | @Component 19 | public class AuthenticationFailHandlerImpl implements AuthenticationFailureHandler { 20 | @Override 21 | public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException { 22 | httpServletResponse.setContentType("application/json;charset=UTF-8"); 23 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(false, StatusConst.ERROR,e.getMessage()))); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/EmailReceiver.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.dto.EmailDTO; 5 | import org.springframework.amqp.rabbit.annotation.RabbitHandler; 6 | import org.springframework.amqp.rabbit.annotation.RabbitListener; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.beans.factory.annotation.Value; 9 | import org.springframework.mail.SimpleMailMessage; 10 | import org.springframework.mail.javamail.JavaMailSender; 11 | import org.springframework.stereotype.Component; 12 | 13 | 14 | import static com.minzheng.blog.constant.MQPrefixConst.EMAIL_QUEUE; 15 | 16 | /** 17 | * 通知邮箱 18 | * 19 | * @author: yezhiqiu 20 | * @date: 2021-04-16 21 | **/ 22 | @Component 23 | @RabbitListener(queues = EMAIL_QUEUE) 24 | public class EmailReceiver { 25 | 26 | /** 27 | * 邮箱号 28 | */ 29 | @Value("${spring.mail.username}") 30 | private String email; 31 | 32 | @Autowired 33 | private JavaMailSender javaMailSender; 34 | 35 | @RabbitHandler 36 | public void process(byte[] data) { 37 | EmailDTO emailDTO = JSON.parseObject(new String(data), EmailDTO.class); 38 | SimpleMailMessage message = new SimpleMailMessage(); 39 | message.setFrom(email); 40 | message.setTo(emailDTO.getEmail()); 41 | message.setSubject(emailDTO.getSubject()); 42 | message.setText(emailDTO.getContent()); 43 | javaMailSender.send(message); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/LogoutSuccessHandlerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.vo.Result; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import org.springframework.security.core.Authentication; 7 | import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | 15 | /** 16 | * 注销处理 17 | * @author 11921 18 | */ 19 | @Component 20 | public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler { 21 | @Override 22 | public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { 23 | httpServletResponse.setContentType("application/json;charset=UTF-8"); 24 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(true, StatusConst.OK,"注销成功"))); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/ServletRequestListenerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | 4 | import com.minzheng.blog.utils.IpUtil; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.data.redis.core.RedisTemplate; 7 | import org.springframework.scheduling.annotation.Scheduled; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.ServletRequestEvent; 11 | import javax.servlet.ServletRequestListener; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpSession; 14 | 15 | import static com.minzheng.blog.constant.RedisPrefixConst.BLOG_VIEWS_COUNT; 16 | import static com.minzheng.blog.constant.RedisPrefixConst.IP_SET; 17 | 18 | 19 | /** 20 | * request监听 21 | * 22 | * @author 11921 23 | */ 24 | @Component 25 | public class ServletRequestListenerImpl implements ServletRequestListener { 26 | @Autowired 27 | private RedisTemplate redisTemplate; 28 | 29 | @Override 30 | public void requestInitialized(ServletRequestEvent sre) { 31 | HttpServletRequest request = (HttpServletRequest) sre.getServletRequest(); 32 | HttpSession session = request.getSession(); 33 | String ip = (String) session.getAttribute("ip"); 34 | // 判断当前ip是否访问,增加访问量 35 | String ipAddr = IpUtil.getIpAddr(request); 36 | if (!ipAddr.equals(ip)) { 37 | session.setAttribute("ip", ipAddr); 38 | redisTemplate.boundValueOps(BLOG_VIEWS_COUNT).increment(1); 39 | } 40 | // 将ip存入redis,统计每日用户量 41 | redisTemplate.boundSetOps(IP_SET).add(ipAddr); 42 | } 43 | 44 | @Scheduled(cron = " 0 1 0 * * ?") 45 | private void clear() { 46 | //清空redis中的ip 47 | redisTemplate.delete(IP_SET); 48 | } 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/ArticleTagService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.entity.ArticleTag; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | * @author xiaojie 8 | * @since 2020-05-18 9 | */ 10 | public interface ArticleTagService extends IService { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/BlogInfoService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.BlogBackInfoDTO; 4 | import com.minzheng.blog.dto.BlogHomeInfoDTO; 5 | 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | public interface BlogInfoService { 13 | 14 | /** 15 | * 获取首页数据 16 | * @return 博客首页信息 17 | */ 18 | BlogHomeInfoDTO getBlogInfo(); 19 | 20 | /** 21 | * 获取后台首页数据 22 | * @return 博客后台信息 23 | */ 24 | BlogBackInfoDTO getBlogBackInfo(); 25 | 26 | /** 27 | * 获取关于我内容 28 | * @return 关于我内容 29 | */ 30 | String getAbout(); 31 | 32 | /** 33 | * 修改关于我内容 34 | * @param aboutContent 关于我内容 35 | */ 36 | void updateAbout(String aboutContent); 37 | 38 | /** 39 | * 修改公告 40 | * @param notice 公告 41 | */ 42 | void updateNotice(String notice); 43 | 44 | /** 45 | * 后台查看公告 46 | * @return 公告 47 | */ 48 | String getNotice(); 49 | 50 | } 51 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/CategoryService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.CategoryDTO; 4 | import com.minzheng.blog.dto.PageDTO; 5 | import com.minzheng.blog.entity.Category; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | import com.minzheng.blog.vo.CategoryVO; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | 10 | import java.util.List; 11 | 12 | 13 | /** 14 | * @author xiaojie 15 | * @date 2020-05-16 16 | */ 17 | public interface CategoryService extends IService { 18 | 19 | /** 20 | * 查询分类列表 21 | * 22 | * @return 分类列表 23 | */ 24 | PageDTO listCategories(); 25 | 26 | /** 27 | * 查询后台分类 28 | * 29 | * @param conditionVO 条件 30 | * @return 分类列表 31 | */ 32 | PageDTO listCategoryBackDTO(ConditionVO conditionVO); 33 | 34 | /** 35 | * 删除分类 36 | * 37 | * @param categoryIdList 分类id集合 38 | */ 39 | void deleteCategory(List categoryIdList); 40 | 41 | /** 42 | * 添加或修改分类 43 | * @param categoryVO 分类 44 | */ 45 | void saveOrUpdateCategory(CategoryVO categoryVO); 46 | 47 | } -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/ChatRecordService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.ChatRecord; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-02-19 9 | **/ 10 | public interface ChatRecordService extends IService { 11 | 12 | /** 13 | * 删除7天前的聊天记录 14 | */ 15 | void deleteChartRecord(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/CommentService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.CommentBackDTO; 4 | import com.minzheng.blog.dto.CommentDTO; 5 | import com.minzheng.blog.dto.PageDTO; 6 | import com.minzheng.blog.dto.ReplyDTO; 7 | import com.minzheng.blog.entity.Comment; 8 | import com.baomidou.mybatisplus.extension.service.IService; 9 | import com.minzheng.blog.vo.CommentVO; 10 | import com.minzheng.blog.vo.ConditionVO; 11 | import com.minzheng.blog.vo.DeleteVO; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * 17 | * @author xiaojie 18 | * @since 2020-05-18 19 | */ 20 | public interface CommentService extends IService { 21 | 22 | /** 23 | * 查看评论 24 | * 25 | * @param articleId 文章id 26 | * @param current 当前页码 27 | * @return CommentListDTO 28 | */ 29 | PageDTO listComments(Integer articleId, Long current); 30 | 31 | /** 32 | * 查看评论下的回复 33 | * 34 | * @param commentId 评论id 35 | * @param current 当前页码 36 | * @return 回复列表 37 | */ 38 | List listRepliesByCommentId(Integer commentId, Long current); 39 | 40 | /** 41 | * 添加评论 42 | * 43 | * @param commentVO 评论对象 44 | */ 45 | void saveComment(CommentVO commentVO); 46 | 47 | /** 48 | * 点赞评论 49 | * 50 | * @param commentId 评论id 51 | */ 52 | void saveCommentLike(Integer commentId); 53 | 54 | /** 55 | * 恢复或删除评论 56 | * 57 | * @param deleteVO 逻辑删除对象 58 | */ 59 | void updateCommentDelete(DeleteVO deleteVO); 60 | 61 | /** 62 | * 查询后台评论 63 | * 64 | * @param condition 条件 65 | * @return 评论列表 66 | */ 67 | PageDTO listCommentBackDTO(ConditionVO condition); 68 | 69 | } 70 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/FriendLinkService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.FriendLinkBackDTO; 4 | import com.minzheng.blog.dto.FriendLinkDTO; 5 | import com.minzheng.blog.dto.PageDTO; 6 | import com.minzheng.blog.entity.FriendLink; 7 | import com.baomidou.mybatisplus.extension.service.IService; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.FriendLinkVO; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface FriendLinkService extends IService { 18 | 19 | /** 20 | * 查看友链列表 21 | * 22 | * @return 友链列表 23 | */ 24 | List listFriendLinks(); 25 | 26 | /** 27 | * 查看后台友链列表 28 | * 29 | * @param condition 条件 30 | * @return 友链列表 31 | */ 32 | PageDTO listFriendLinkDTO(ConditionVO condition); 33 | 34 | /** 35 | * 保存或更新友链 36 | * @param friendLinkVO 友链 37 | */ 38 | void saveOrUpdateFriendLink(FriendLinkVO friendLinkVO); 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/MenuService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.MenuDTO; 5 | import com.minzheng.blog.dto.labelOptionDTO; 6 | import com.minzheng.blog.dto.UserMenuDTO; 7 | import com.minzheng.blog.entity.Menu; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2021-01-23 15 | **/ 16 | public interface MenuService extends IService { 17 | 18 | /** 19 | * 查看菜单列表 20 | * @param conditionVO 条件 21 | * @return 菜单列表 22 | */ 23 | List listMenus(ConditionVO conditionVO); 24 | 25 | /** 26 | * 查看角色菜单选项 27 | * @return 角色菜单选项 28 | */ 29 | List listMenuOptions(); 30 | 31 | /** 32 | * 查看用户菜单 33 | * @return 菜单列表 34 | */ 35 | List listUserMenus(); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/MessageService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.MessageBackDTO; 4 | import com.minzheng.blog.dto.PageDTO; 5 | import com.minzheng.blog.vo.ConditionVO; 6 | import com.minzheng.blog.vo.MessageVO; 7 | import com.minzheng.blog.dto.MessageDTO; 8 | import com.minzheng.blog.entity.Message; 9 | import com.baomidou.mybatisplus.extension.service.IService; 10 | import com.minzheng.blog.vo.DeleteVO; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * @author xiaojie 16 | * @since 2020-05-18 17 | */ 18 | public interface MessageService extends IService { 19 | 20 | /** 21 | * 添加留言弹幕 22 | * 23 | * @param messageVO 留言对象 24 | */ 25 | void saveMessage(MessageVO messageVO); 26 | 27 | /** 28 | * 查看留言弹幕 29 | * 30 | * @return 留言列表 31 | */ 32 | List listMessages(); 33 | 34 | /** 35 | * 查看后台留言 36 | * 37 | * @param condition 条件 38 | * @return 留言列表 39 | */ 40 | PageDTO listMessageBackDTO(ConditionVO condition); 41 | 42 | } 43 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/OperationLogService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.OperationLogDTO; 5 | import com.minzheng.blog.dto.PageDTO; 6 | import com.minzheng.blog.entity.OperationLog; 7 | import com.minzheng.blog.vo.ConditionVO; 8 | 9 | /** 10 | * @author: yezhiqiu 11 | * @date: 2021-01-31 12 | **/ 13 | public interface OperationLogService extends IService { 14 | 15 | /** 16 | * 查询日志列表 17 | * 18 | * @param conditionVO 条件 19 | * @return 日志列表 20 | */ 21 | PageDTO listOperationLogs(ConditionVO conditionVO); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/ResourceService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.ResourceDTO; 5 | import com.minzheng.blog.dto.labelOptionDTO; 6 | import com.minzheng.blog.entity.Resource; 7 | import com.minzheng.blog.vo.ResourceVO; 8 | 9 | import java.util.List; 10 | 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2020-12-27 15 | **/ 16 | public interface ResourceService extends IService { 17 | 18 | /** 19 | * 导入swagger权限 20 | */ 21 | void importSwagger(); 22 | 23 | /** 24 | * 添加或修改资源 25 | * @param resourceVO 资源对象 26 | */ 27 | void saveOrUpdateResource(ResourceVO resourceVO); 28 | 29 | /*** 30 | * 删除资源 31 | * @param resourceIdList 资源id列表 32 | */ 33 | void deleteResources(List resourceIdList); 34 | 35 | /** 36 | * 查看资源列表 37 | * 38 | * @return 资源列表 39 | */ 40 | List listResources(); 41 | 42 | /** 43 | * 查看资源选项 44 | * @return 资源选项 45 | */ 46 | List listResourceOption(); 47 | 48 | } 49 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/RoleMenuService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.RoleMenu; 5 | import com.minzheng.blog.entity.RoleResource; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | public interface RoleMenuService extends IService { 12 | 13 | 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/RoleResourceService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.RoleResource; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2020-12-27 9 | **/ 10 | public interface RoleResourceService extends IService { 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.PageDTO; 5 | import com.minzheng.blog.dto.RoleDTO; 6 | import com.minzheng.blog.dto.UserRoleDTO; 7 | import com.minzheng.blog.entity.Role; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.RoleVO; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | public interface RoleService extends IService { 18 | 19 | /** 20 | * 获取用户角色选项 21 | * 22 | * @return 角色 23 | */ 24 | List listUserRoles(); 25 | 26 | /** 27 | * 查询角色列表 28 | * 29 | * @param conditionVO 条件 30 | * @return 角色列表 31 | */ 32 | PageDTO listRoles(ConditionVO conditionVO); 33 | 34 | /** 35 | * 保存或更新角色 36 | * 37 | * @param roleVO 角色 38 | */ 39 | void saveOrUpdateRole(RoleVO roleVO); 40 | 41 | /** 42 | * 删除角色 43 | * @param roleIdList 角色id列表 44 | */ 45 | void deleteRoles(List roleIdList); 46 | 47 | } 48 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/TagService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.PageDTO; 4 | import com.minzheng.blog.dto.TagDTO; 5 | import com.minzheng.blog.entity.Tag; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | import com.minzheng.blog.vo.ConditionVO; 8 | import com.minzheng.blog.vo.TagVO; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface TagService extends IService { 18 | 19 | /** 20 | * 查询标签列表 21 | * 22 | * @return 标签列表 23 | */ 24 | PageDTO listTags(); 25 | 26 | /** 27 | * 查询后台标签 28 | * 29 | * @param condition 条件 30 | * @return 标签列表 31 | */ 32 | PageDTO listTagBackDTO(ConditionVO condition); 33 | 34 | /** 35 | * 删除标签 36 | * 37 | * @param tagIdList 标签id集合 38 | */ 39 | void deleteTag(List tagIdList); 40 | 41 | /** 42 | * 保存或更新标签 43 | * @param tagVO 标签 44 | */ 45 | void saveOrUpdateTag(TagVO tagVO); 46 | 47 | } 48 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UniqueViewService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.UniqueViewDTO; 4 | import com.minzheng.blog.entity.UniqueView; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author xiaojie 11 | * @since 2020-05-18 12 | */ 13 | public interface UniqueViewService extends IService { 14 | 15 | /** 16 | * 统计每日用户量 17 | */ 18 | void saveUniqueView(); 19 | 20 | /** 21 | * 获取7天用户量统计 22 | * @return 用户量 23 | */ 24 | List listUniqueViews(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UserAuthService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.PageDTO; 4 | import com.minzheng.blog.dto.UserBackDTO; 5 | import com.minzheng.blog.dto.UserInfoDTO; 6 | import com.minzheng.blog.entity.UserAuth; 7 | import com.baomidou.mybatisplus.extension.service.IService; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.PasswordVO; 10 | import com.minzheng.blog.vo.UserVO; 11 | 12 | 13 | /** 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface UserAuthService extends IService { 18 | 19 | /** 20 | * 发送邮箱验证码 21 | * 22 | * @param username 邮箱号 23 | */ 24 | void sendCode(String username); 25 | 26 | /** 27 | * 用户注册 28 | * 29 | * @param user 用户对象 30 | */ 31 | void saveUser(UserVO user); 32 | 33 | /** 34 | * qq登录 35 | * 36 | * @param openId qq openId 37 | * @param accessToken qq token 38 | * @return 用户登录信息 39 | */ 40 | UserInfoDTO qqLogin(String openId, String accessToken); 41 | 42 | /** 43 | * 微博登录 44 | * 45 | * @param code 微博code 46 | * @return 用户登录信息 47 | */ 48 | UserInfoDTO weiBoLogin(String code); 49 | 50 | /** 51 | * 修改密码 52 | * 53 | * @param user 用户对象 54 | */ 55 | void updatePassword(UserVO user); 56 | 57 | /** 58 | * 修改管理员密码 59 | * 60 | * @param passwordVO 密码对象 61 | */ 62 | void updateAdminPassword(PasswordVO passwordVO); 63 | 64 | /** 65 | * 查询后台用户列表 66 | * 67 | * @param condition 条件 68 | * @return 用户列表 69 | */ 70 | PageDTO listUserBackDTO(ConditionVO condition); 71 | 72 | } 73 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UserInfoService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.PageDTO; 4 | import com.minzheng.blog.dto.UserInfoDTO; 5 | import com.minzheng.blog.dto.UserOnlineDTO; 6 | import com.minzheng.blog.entity.UserInfo; 7 | import com.baomidou.mybatisplus.extension.service.IService; 8 | import com.minzheng.blog.vo.*; 9 | import org.springframework.web.multipart.MultipartFile; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface UserInfoService extends IService { 18 | 19 | /** 20 | * 修改用户资料 21 | * 22 | * @param userInfoVO 用户资料 23 | */ 24 | void updateUserInfo(UserInfoVO userInfoVO); 25 | 26 | /** 27 | * 修改用户头像 28 | * 29 | * @param file 头像图片 30 | * @return 头像OSS地址 31 | */ 32 | String updateUserAvatar(MultipartFile file); 33 | 34 | /** 35 | * 绑定用户邮箱 36 | * @param emailVO 邮箱 37 | */ 38 | void saveUserEmail(EmailVO emailVO); 39 | 40 | /** 41 | * 修改用户权限 42 | * 43 | * @param userRoleVO 用户权限 44 | */ 45 | void updateUserRole(UserRoleVO userRoleVO); 46 | 47 | /** 48 | * 修改用户禁用状态 49 | * 50 | * @param userInfoId 用户信息id 51 | * @param isDisable 禁用状态 52 | */ 53 | void updateUserDisable(Integer userInfoId, Integer isDisable); 54 | 55 | /** 56 | * 查看在线用户列表 57 | * @param conditionVO 条件 58 | * @return 在线用户列表 59 | */ 60 | PageDTO listOnlineUsers(ConditionVO conditionVO); 61 | 62 | /** 63 | * 下线用户 64 | * @param userInfoId 用户信息id 65 | */ 66 | void removeOnlineUser(Integer userInfoId); 67 | 68 | } 69 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UserRoleService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.UserRole; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2020-12-27 9 | **/ 10 | public interface UserRoleService extends IService { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/ArticleTagServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.minzheng.blog.entity.ArticleTag; 4 | import com.minzheng.blog.dao.ArticleTagDao; 5 | import com.minzheng.blog.service.ArticleTagService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * 11 | * @author xiaojie 12 | * @since 2020-05-18 13 | */ 14 | @Service 15 | public class ArticleTagServiceImpl extends ServiceImpl implements ArticleTagService { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/ChatRecordServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.minzheng.blog.dao.ChatRecordDao; 6 | import com.minzheng.blog.entity.ChatRecord; 7 | import com.minzheng.blog.service.ChatRecordService; 8 | import com.minzheng.blog.utils.DateUtil; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | 12 | import java.util.Date; 13 | 14 | /** 15 | * @author: yezhiqiu 16 | * @date: 2021-02-19 17 | **/ 18 | @Service 19 | public class ChatRecordServiceImpl extends ServiceImpl implements ChatRecordService { 20 | @Autowired 21 | private ChatRecordDao chatRecordDao; 22 | 23 | @Override 24 | public void deleteChartRecord() { 25 | String time = DateUtil.getMinTime(DateUtil.getSomeDay(new Date(), -7)); 26 | chatRecordDao.delete(new LambdaQueryWrapper() 27 | .le(ChatRecord::getCreateTime,time)); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/OperationLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import com.minzheng.blog.dao.OperationLogDao; 8 | import com.minzheng.blog.dto.OperationLogDTO; 9 | import com.minzheng.blog.dto.PageDTO; 10 | import com.minzheng.blog.entity.OperationLog; 11 | import com.minzheng.blog.service.OperationLogService; 12 | import com.minzheng.blog.utils.BeanCopyUtil; 13 | import com.minzheng.blog.vo.ConditionVO; 14 | import org.springframework.stereotype.Service; 15 | 16 | import java.util.List; 17 | import java.util.Objects; 18 | 19 | /** 20 | * @author: yezhiqiu 21 | * @date: 2021-01-31 22 | **/ 23 | @Service 24 | public class OperationLogServiceImpl extends ServiceImpl implements OperationLogService { 25 | 26 | @Override 27 | public PageDTO listOperationLogs(ConditionVO conditionVO) { 28 | Page page = new Page<>(conditionVO.getCurrent(), conditionVO.getSize()); 29 | // 查询日志列表 30 | Page operationLogPage = this.page(page, new LambdaQueryWrapper() 31 | .like(StringUtils.isNotBlank(conditionVO.getKeywords()), OperationLog::getOptModule, conditionVO.getKeywords()) 32 | .or() 33 | .like(StringUtils.isNotBlank(conditionVO.getKeywords()), OperationLog::getOptDesc, conditionVO.getKeywords()) 34 | .gt(Objects.nonNull(conditionVO.getStartTime()), OperationLog::getCreateTime, conditionVO.getStartTime()) 35 | .lt(Objects.nonNull(conditionVO.getEndTime()), OperationLog::getCreateTime, conditionVO.getEndTime()) 36 | .orderByDesc(OperationLog::getId)); 37 | List operationLogDTOList = BeanCopyUtil.copyList(operationLogPage.getRecords(), OperationLogDTO.class); 38 | return new PageDTO<>(operationLogDTOList, (int) operationLogPage.getTotal()); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/RoleMenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.minzheng.blog.dao.RoleMenuDao; 5 | import com.minzheng.blog.dao.RoleResourceDao; 6 | import com.minzheng.blog.entity.RoleMenu; 7 | import com.minzheng.blog.entity.RoleResource; 8 | import com.minzheng.blog.service.RoleMenuService; 9 | import com.minzheng.blog.service.RoleResourceService; 10 | import org.springframework.stereotype.Service; 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2020-12-27 15 | **/ 16 | @Service 17 | public class RoleMenuServiceImpl extends ServiceImpl implements RoleMenuService { 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/RoleResourceServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.minzheng.blog.dao.RoleResourceDao; 5 | import com.minzheng.blog.entity.RoleResource; 6 | import com.minzheng.blog.service.RoleResourceService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author: yezhiqiu 11 | * @date: 2020-12-27 12 | **/ 13 | @Service 14 | public class RoleResourceServiceImpl extends ServiceImpl implements RoleResourceService { 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/UniqueViewServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | 4 | import com.minzheng.blog.dto.UniqueViewDTO; 5 | import com.minzheng.blog.entity.UniqueView; 6 | import com.minzheng.blog.dao.UniqueViewDao; 7 | import com.minzheng.blog.service.UniqueViewService; 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | import com.minzheng.blog.utils.DateUtil; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.data.redis.core.RedisTemplate; 12 | import org.springframework.scheduling.annotation.Scheduled; 13 | import org.springframework.stereotype.Service; 14 | 15 | import java.util.Date; 16 | import java.util.List; 17 | import java.util.Objects; 18 | 19 | /** 20 | * @author xiaojie 21 | * @since 2020-05-18 22 | */ 23 | @Service 24 | public class UniqueViewServiceImpl extends ServiceImpl implements UniqueViewService { 25 | @Autowired 26 | private RedisTemplate redisTemplate; 27 | @Autowired 28 | private UniqueViewDao uniqueViewDao; 29 | 30 | @Scheduled(cron = " 0 0 0 * * ?") 31 | @Override 32 | public void saveUniqueView() { 33 | // 获取每天用户量 34 | Long count = redisTemplate.boundSetOps("ip_set").size(); 35 | // 获取昨天日期插入数据 36 | UniqueView uniqueView = UniqueView.builder() 37 | .createTime(DateUtil.getSomeDay(new Date(), -1)) 38 | .viewsCount(Objects.nonNull(count) ? count.intValue() : 0).build(); 39 | uniqueViewDao.insert(uniqueView); 40 | } 41 | 42 | @Override 43 | public List listUniqueViews() { 44 | String startTime = DateUtil.getMinTime(DateUtil.getSomeDay(new Date(), -7)); 45 | String endTime = DateUtil.getMaxTime(new Date()); 46 | return uniqueViewDao.listUniqueViews(startTime, endTime); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/UserRoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.minzheng.blog.dao.UserInfoDao; 5 | import com.minzheng.blog.dao.UserRoleDao; 6 | import com.minzheng.blog.entity.UserRole; 7 | import com.minzheng.blog.enums.RoleEnum; 8 | import com.minzheng.blog.service.UserRoleService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | 12 | import java.util.List; 13 | import java.util.stream.Collectors; 14 | 15 | /** 16 | * @author: yezhiqiu 17 | * @date: 2020-12-27 18 | **/ 19 | @Service 20 | public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/BeanCopyUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | /** 9 | * 复制对象或集合属性 10 | * @author 11921 11 | */ 12 | public class BeanCopyUtil { 13 | 14 | /** 15 | * 根据现有对象的属性创建目标对象,并赋值 16 | * 17 | * @param source 18 | * @param target 19 | * @param 20 | * @return 21 | * @throws Exception 22 | */ 23 | public static T copyObject(Object source, Class target) { 24 | T temp = null; 25 | try { 26 | temp = target.newInstance(); 27 | if (null != source) { 28 | org.springframework.beans.BeanUtils.copyProperties(source, temp); 29 | } 30 | } catch (Exception e) { 31 | e.printStackTrace(); 32 | } 33 | return temp; 34 | } 35 | 36 | /** 37 | * 拷贝集合 38 | * 39 | * @param source 40 | * @param target 41 | * @param 42 | * @param 43 | * @return 44 | */ 45 | public static List copyList(List source, Class target) { 46 | List list = new ArrayList<>(); 47 | if (null != source && source.size() > 0) { 48 | for (Object obj : source) { 49 | list.add(BeanCopyUtil.copyObject(obj, target)); 50 | } 51 | } 52 | return list; 53 | } 54 | 55 | 56 | } -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/CommonUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-04-16 9 | **/ 10 | public class CommonUtil { 11 | 12 | /** 13 | * 检测邮箱是否合法 14 | * 15 | * @param username 用户名 16 | * @return 合法状态 17 | */ 18 | public static boolean checkEmail(String username) { 19 | String rule = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$"; 20 | //正则表达式的模式 编译正则表达式 21 | Pattern p = Pattern.compile(rule); 22 | //正则表达式的匹配器 23 | Matcher m = p.matcher(username); 24 | //进行正则匹配 25 | return m.matches(); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/HTMLUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | /** 4 | * @author 11921 5 | */ 6 | public class HTMLUtil { 7 | 8 | /** 9 | * 删除评论内容标签 10 | * 11 | * @param source 需要进行剔除HTML的文本 12 | * @return 过滤后的内容 13 | */ 14 | public static String deleteCommentTag(String source) { 15 | // 保留图片标签 16 | source = source.replaceAll("(?!<(img).*?>)<.*?>", ""); 17 | return deleteHMTLTag(source); 18 | } 19 | 20 | /** 21 | * 删除标签 22 | * 23 | * @param source 文本 24 | * @return 过滤后的文本 25 | */ 26 | private static String deleteHMTLTag(String source) { 27 | // 删除转义字符 28 | source = source.replaceAll("&.{2,6}?;", ""); 29 | // 删除script标签 30 | source = source.replaceAll("<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>", ""); 31 | // 删除style标签 32 | source = source.replaceAll("<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>", ""); 33 | return source; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/WebSocketUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | import javax.websocket.RemoteEndpoint; 4 | import javax.websocket.Session; 5 | import java.lang.reflect.Field; 6 | import java.net.InetSocketAddress; 7 | 8 | /** 9 | * WebSocket工具类 10 | * @author: yezhiqiu 11 | * @date: 2021-02-20 12 | **/ 13 | public class WebSocketUtil { 14 | 15 | 16 | public static InetSocketAddress getRemoteAddress(Session session) { 17 | if (session == null) { 18 | return null; 19 | } 20 | RemoteEndpoint.Async async = session.getAsyncRemote(); 21 | return (InetSocketAddress) getFieldInstance(async, "base#socketWrapper#socket#sc#remoteAddress"); 22 | } 23 | 24 | private static Object getFieldInstance(Object obj, String fieldPath) { 25 | String[] fields = fieldPath.split("#"); 26 | for (String field : fields) { 27 | obj = getField(obj, obj.getClass(), field); 28 | if (obj == null) { 29 | return null; 30 | } 31 | } 32 | return obj; 33 | } 34 | 35 | private static Object getField(Object obj, Class> clazz, String fieldName) { 36 | for (; clazz != Object.class; clazz = clazz.getSuperclass()) { 37 | try { 38 | Field field; 39 | field = clazz.getDeclaredField(fieldName); 40 | field.setAccessible(true); 41 | return field.get(obj); 42 | } catch (Exception e) { 43 | } 44 | } 45 | return null; 46 | } 47 | 48 | 49 | } 50 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/ArticleVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | 4 | import com.minzheng.blog.entity.Article; 5 | import io.swagger.annotations.ApiModel; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.*; 8 | 9 | import javax.validation.constraints.NotBlank; 10 | import javax.validation.constraints.NotNull; 11 | import javax.validation.constraints.PositiveOrZero; 12 | import java.util.Date; 13 | import java.util.List; 14 | 15 | 16 | /** 17 | * 文章VO 18 | * 19 | * @author 11921 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @ApiModel(description = "文章") 26 | public class ArticleVO { 27 | 28 | /** 29 | * 文章id 30 | */ 31 | @ApiModelProperty(name = "id", value = "文章id", dataType = "Integer") 32 | private Integer id; 33 | 34 | /** 35 | * 标题 36 | */ 37 | @NotBlank(message = "文章标题不能为空") 38 | @ApiModelProperty(name = "articleTitle", value = "文章标题", required = true, dataType = "String") 39 | private String articleTitle; 40 | 41 | /** 42 | * 内容 43 | */ 44 | @NotBlank(message = "文章内容不能为空") 45 | @ApiModelProperty(name = "articleContent", value = "文章内容", required = true, dataType = "String") 46 | private String articleContent; 47 | 48 | /** 49 | * 文章封面 50 | */ 51 | @ApiModelProperty(name = "articleCover", value = "文章缩略图", dataType = "String") 52 | private String articleCover; 53 | 54 | /** 55 | * 文章分类 56 | */ 57 | @ApiModelProperty(name = "categoryId", value = "文章分类", dataType = "Integer") 58 | private Integer categoryId; 59 | 60 | /** 61 | * 文章标签 62 | */ 63 | @ApiModelProperty(name = "tagIdList", value = "文章标签", dataType = "List") 64 | private List tagIdList; 65 | 66 | /** 67 | * 是否置顶 68 | */ 69 | @ApiModelProperty(name = "isTop", value = "是否置顶", dataType = "Integer") 70 | private Integer isTop; 71 | 72 | /** 73 | * 是否为草稿 74 | */ 75 | @ApiModelProperty(name = "isDraft", value = "是否为草稿", dataType = "Integer") 76 | private Integer isDraft; 77 | 78 | 79 | } 80 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/CategoryVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | 13 | /** 14 | * 分类VO 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "分类") 22 | public class CategoryVO { 23 | 24 | /** 25 | * id 26 | */ 27 | @ApiModelProperty(name = "id", value = "分类id", dataType = "Integer") 28 | private Integer id; 29 | 30 | /** 31 | * 分类名 32 | */ 33 | @NotBlank(message = "分类名不能为空") 34 | @ApiModelProperty(name = "categoryName", value = "分类名", required = true, dataType = "String") 35 | private String categoryName; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/CommentVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.Size; 12 | 13 | /** 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | @ApiModel(description = "评论") 21 | public class CommentVO { 22 | 23 | /** 24 | * 回复用户id 25 | */ 26 | @ApiModelProperty(name = "replyId", value = "回复用户id", dataType = "Integer") 27 | private Integer replyId; 28 | 29 | /** 30 | * 评论文章id 31 | */ 32 | @ApiModelProperty(name = "articleId", value = "文章id", dataType = "Integer") 33 | private Integer articleId; 34 | 35 | /** 36 | * 评论内容 37 | */ 38 | @NotBlank(message = "评论内容不能为空") 39 | @ApiModelProperty(name = "commentContent", value = "评论内容", required = true, dataType = "String") 40 | private String commentContent; 41 | 42 | /** 43 | * 父评论id 44 | */ 45 | @ApiModelProperty(name = "parentId", value = "评论父id", dataType = "Integer") 46 | private Integer parentId; 47 | 48 | } 49 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/ConditionVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * 查询条件 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "查询条件") 22 | public class ConditionVO { 23 | 24 | /** 25 | * 分类id 26 | */ 27 | @ApiModelProperty(name = "categoryId", value = "分类id", dataType = "Integer") 28 | private Integer categoryId; 29 | 30 | /** 31 | * 标签id 32 | */ 33 | @ApiModelProperty(name = "tagId", value = "标签id", dataType = "Integer") 34 | private Integer tagId; 35 | 36 | /** 37 | * 当前页码 38 | */ 39 | @ApiModelProperty(name = "current", value = "当前页码", required = true, dataType = "Integer") 40 | private Integer current; 41 | 42 | /** 43 | * 显示数量 44 | */ 45 | @ApiModelProperty(name = "size", value = "显示数量", required = true, dataType = "Integer") 46 | private Integer size; 47 | 48 | /** 49 | * 搜索内容 50 | */ 51 | @ApiModelProperty(name = "keywords", value = "搜索内容", required = true, dataType = "String") 52 | private String keywords; 53 | 54 | /** 55 | * 状态值 56 | */ 57 | @ApiModelProperty(name = "isDelete", value = "是否删除", dataType = "Integer") 58 | private Integer isDelete; 59 | 60 | /** 61 | * 是否为草稿 62 | */ 63 | @ApiModelProperty(name = "isDraft", value = "草稿状态", dataType = "Integer") 64 | private Integer isDraft; 65 | 66 | /** 67 | * 开始时间 68 | */ 69 | @ApiModelProperty(name = "startTime", value = "开始时间", dataType = "Date") 70 | private Date startTime; 71 | 72 | /** 73 | * 结束时间 74 | */ 75 | @ApiModelProperty(name = "endTime", value = "结束时间", dataType = "Date") 76 | private Date endTime; 77 | 78 | } 79 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/DeleteVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | @ApiModel(description = "逻辑删除") 20 | public class DeleteVO { 21 | 22 | /** 23 | * id列表 24 | */ 25 | @ApiModelProperty(name = "idList", value = "id列表", required = true, dataType = "List") 26 | private List idList; 27 | 28 | /** 29 | * 状态值 30 | */ 31 | @ApiModelProperty(name = "isDelete", value = "删除状态", required = true, dataType = "Integer") 32 | private Integer isDelete; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/EmailVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.Email; 11 | import javax.validation.constraints.NotBlank; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-04-16 16 | **/ 17 | @Data 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | @Builder 21 | @ApiModel(description = "绑定邮箱") 22 | public class EmailVO { 23 | 24 | /** 25 | * 邮箱 26 | */ 27 | @NotBlank(message = "邮箱不能为空") 28 | @Email(message = "邮箱格式不正确") 29 | @ApiModelProperty(name = "email", value = "用户名", required = true, dataType = "String") 30 | private String email; 31 | 32 | /** 33 | * 验证码 34 | */ 35 | @NotBlank(message = "验证码不能为空") 36 | @ApiModelProperty(name = "code", value = "邮箱验证码", required = true, dataType = "String") 37 | private String code; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/FriendLinkVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | /** 13 | * 友链DTO 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "友链") 22 | public class FriendLinkVO { 23 | /** 24 | * id 25 | */ 26 | @ApiModelProperty(name = "categoryId", value = "友链id", dataType = "Integer") 27 | private Integer id; 28 | 29 | /** 30 | * 链接名 31 | */ 32 | @NotBlank(message = "链接名不能为空") 33 | @ApiModelProperty(name = "linkName", value = "友链名", dataType = "String", required = true) 34 | private String linkName; 35 | 36 | /** 37 | * 链接头像 38 | */ 39 | @NotBlank(message = "链接头像不能为空") 40 | @ApiModelProperty(name = "linkAvatar", value = "友链头像", dataType = "String", required = true) 41 | private String linkAvatar; 42 | 43 | /** 44 | * 链接地址 45 | */ 46 | @NotBlank(message = "链接地址不能为空") 47 | @ApiModelProperty(name = "linkAddress", value = "友链头像", dataType = "String", required = true) 48 | private String linkAddress; 49 | 50 | /** 51 | * 介绍 52 | */ 53 | @NotBlank(message = "链接介绍不能为空") 54 | @ApiModelProperty(name = "linkIntro", value = "友链头像", dataType = "String", required = true) 55 | private String linkIntro; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/MessageVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.NotNull; 12 | 13 | /** 14 | * 留言 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "留言") 22 | public class MessageVO { 23 | 24 | /** 25 | * 昵称 26 | */ 27 | @NotBlank(message = "昵称不能为空") 28 | @ApiModelProperty(name = "nickname", value = "昵称", required = true, dataType = "String") 29 | private String nickname; 30 | 31 | /** 32 | * 头像 33 | */ 34 | @NotBlank(message = "头像不能为空") 35 | @ApiModelProperty(name = "avatar", value = "头像", required = true, dataType = "String") 36 | private String avatar; 37 | 38 | /** 39 | * 留言内容 40 | */ 41 | @NotBlank(message = "留言内容不能为空") 42 | @ApiModelProperty(name = "messageContent", value = "留言内容", required = true, dataType = "String") 43 | private String messageContent; 44 | 45 | /** 46 | * 弹幕速度 47 | */ 48 | @NotNull(message = "弹幕速度不能为空") 49 | @ApiModelProperty(name = "time", value = "弹幕速度", required = true, dataType = "Integer") 50 | private Integer time; 51 | } 52 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/PasswordVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.Size; 12 | 13 | /** 14 | * 密码对象 15 | * 16 | * @author 11921 17 | */ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @ApiModel(description = "密码") 23 | public class PasswordVO { 24 | 25 | /** 26 | * 旧密码 27 | */ 28 | @NotBlank(message = "旧密码不能为空") 29 | @ApiModelProperty(name = "oldPassword", value = "旧密码", required = true, dataType = "String") 30 | private String oldPassword; 31 | 32 | /** 33 | * 新密码 34 | */ 35 | @Size(min = 6, message = "新密码不能少于6位") 36 | @NotBlank(message = "新密码不能为空") 37 | @ApiModelProperty(name = "newPassword", value = "新密码", required = true, dataType = "String") 38 | private String newPassword; 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/ResourceVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import io.swagger.annotations.ApiModel; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Builder; 9 | import lombok.Data; 10 | import lombok.NoArgsConstructor; 11 | 12 | import javax.validation.constraints.NotBlank; 13 | import java.util.Date; 14 | 15 | /** 16 | * 资源对象 17 | * @author: yezhiqiu 18 | * @date: 2021-03-01 19 | **/ 20 | @Data 21 | @Builder 22 | @AllArgsConstructor 23 | @NoArgsConstructor 24 | @ApiModel(description = "资源") 25 | public class ResourceVO { 26 | /** 27 | * 资源id 28 | */ 29 | @ApiModelProperty(name = "id", value = "资源id", required = true, dataType = "Integer") 30 | private Integer id; 31 | 32 | /** 33 | * 资源名 34 | */ 35 | @NotBlank(message = "资源名不能为空") 36 | @ApiModelProperty(name = "resourceName", value = "资源名", required = true, dataType = "String") 37 | private String resourceName; 38 | 39 | /** 40 | * 路径 41 | */ 42 | @ApiModelProperty(name = "url", value = "资源路径", required = true, dataType = "String") 43 | private String url; 44 | 45 | /** 46 | * 请求方式 47 | */ 48 | @ApiModelProperty(name = "url", value = "资源路径", required = true, dataType = "String") 49 | private String requestMethod; 50 | 51 | /** 52 | * 父资源id 53 | */ 54 | @ApiModelProperty(name = "parentId", value = "父资源id", required = true, dataType = "Integer") 55 | private Integer parentId; 56 | 57 | /** 58 | * 是否禁用 59 | */ 60 | @ApiModelProperty(name = "isDisable", value = "是否禁用", required = true, dataType = "Integer") 61 | private Integer isDisable; 62 | 63 | /** 64 | * 是否匿名访问 65 | */ 66 | @ApiModelProperty(name = "isAnonymous", value = "是否匿名访问", required = true, dataType = "Integer") 67 | private Integer isAnonymous; 68 | 69 | } 70 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/Result.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import com.minzheng.blog.constant.StatusConst; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * 接口返回类 10 | * 11 | * @author 11921 12 | */ 13 | @Data 14 | public class Result implements Serializable { 15 | private boolean flag; 16 | private Integer code; 17 | private String message; 18 | private T data; 19 | 20 | public Result(boolean flag, Integer code, String message, Object data) { 21 | this.flag = flag; 22 | this.code = code; 23 | this.message = message; 24 | this.data = (T) data; 25 | } 26 | 27 | public Result(boolean flag, Integer code, String message) { 28 | this.flag = flag; 29 | this.code = code; 30 | this.message = message; 31 | } 32 | 33 | public Result() { 34 | this.flag = true; 35 | this.code = StatusConst.OK; 36 | this.message = "操作成功!"; 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/RoleVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import java.util.List; 12 | 13 | /** 14 | * 角色VO 15 | * 16 | * @author: yezhiqiu 17 | * @date: 2021-01-24 18 | **/ 19 | @Data 20 | @Builder 21 | @AllArgsConstructor 22 | @NoArgsConstructor 23 | @ApiModel(description = "角色") 24 | public class RoleVO { 25 | /** 26 | * id 27 | */ 28 | @ApiModelProperty(name = "id", value = "用户id", dataType = "Integer") 29 | private Integer id; 30 | 31 | /** 32 | * 标签名 33 | */ 34 | @NotBlank(message = "角色名不能为空") 35 | @ApiModelProperty(name = "categoryName", value = "标签名", required = true, dataType = "String") 36 | private String roleName; 37 | 38 | /** 39 | * 标签名 40 | */ 41 | @NotBlank(message = "权限标签不能为空") 42 | @ApiModelProperty(name = "categoryName", value = "标签名", required = true, dataType = "String") 43 | private String roleLabel; 44 | 45 | /** 46 | * 资源列表 47 | */ 48 | @ApiModelProperty(name = "resourceIdList", value = "资源列表", required = true, dataType = "List") 49 | private List resourceIdList; 50 | 51 | /** 52 | * 菜单列表 53 | */ 54 | @ApiModelProperty(name = "menuIdList", value = "菜单列表", required = true, dataType = "List") 55 | private List menuIdList; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/TagVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | /** 13 | * 标签VO 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "标签对象") 22 | public class TagVO { 23 | 24 | /** 25 | * id 26 | */ 27 | @ApiModelProperty(name = "id", value = "标签id", dataType = "Integer") 28 | private Integer id; 29 | 30 | /** 31 | * 标签名 32 | */ 33 | @NotBlank(message = "标签名不能为空") 34 | @ApiModelProperty(name = "categoryName", value = "标签名", required = true, dataType = "String") 35 | private String tagName; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/UserInfoVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | /** 13 | * 用户信息vo 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "用户信息对象") 22 | public class UserInfoVO { 23 | 24 | /** 25 | * 用户昵称 26 | */ 27 | @NotBlank(message = "昵称不能为空") 28 | @ApiModelProperty(name = "nickname", value = "昵称", dataType = "String") 29 | private String nickname; 30 | 31 | /** 32 | * 用户简介 33 | */ 34 | @ApiModelProperty(name = "intro", value = "介绍", dataType = "String") 35 | private String intro; 36 | 37 | /** 38 | * 个人网站 39 | */ 40 | @ApiModelProperty(name = "webSite", value = "个人网站", dataType = "String") 41 | private String webSite; 42 | } 43 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/UserRoleVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.NotNull; 12 | import java.util.List; 13 | 14 | /** 15 | * @author xiaojie 16 | * @since 2020-05-18 17 | */ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @ApiModel(description = "用户权限") 23 | public class UserRoleVO { 24 | /** 25 | * 用户id 26 | */ 27 | @NotNull(message = "id不能为空") 28 | @ApiModelProperty(name = "userInfoId", value = "用户信息id", dataType = "Integer") 29 | private Integer userInfoId; 30 | 31 | /** 32 | * 用户昵称 33 | */ 34 | @NotBlank(message = "昵称不能为空") 35 | @ApiModelProperty(name = "nickname", value = "昵称", dataType = "String") 36 | private String nickname; 37 | 38 | /** 39 | * 用户角色 40 | */ 41 | @NotNull(message = "用户角色不能为空") 42 | @ApiModelProperty(name = "roleList", value = "角色id集合", dataType = "List") 43 | private List roleIdList; 44 | 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/UserVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.Email; 11 | import javax.validation.constraints.NotBlank; 12 | import javax.validation.constraints.Size; 13 | 14 | /** 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "用户注册") 22 | public class UserVO { 23 | /** 24 | * 用户名 25 | */ 26 | @NotBlank(message = "邮箱不能为空") 27 | @Email(message = "邮箱格式不正确") 28 | @ApiModelProperty(name = "username", value = "用户名", required = true, dataType = "String") 29 | private String username; 30 | 31 | /** 32 | * 密码 33 | */ 34 | @Size(min = 6, message = "密码不能少于6位") 35 | @NotBlank(message = "密码不能为空") 36 | @ApiModelProperty(name = "password", value = "密码", required = true, dataType = "String") 37 | private String password; 38 | 39 | /** 40 | * 验证码 41 | */ 42 | @NotBlank(message = "验证码不能为空") 43 | @ApiModelProperty(name = "code", value = "邮箱验证码", required = true, dataType = "String") 44 | private String code; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/VoiceVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | import org.springframework.web.multipart.MultipartFile; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * 音频VO 15 | * @author: yezhiqiu 16 | * @date: 2021-02-21 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @ApiModel(description = "音频") 23 | public class VoiceVO { 24 | 25 | /** 26 | * 消息类型 27 | */ 28 | @ApiModelProperty(name = "type", value = "消息类型", required = true, dataType = "Integer") 29 | private Integer type; 30 | 31 | /** 32 | * 文件 33 | */ 34 | @ApiModelProperty(name = "file", value = "文件", required = true, dataType = "MultipartFile") 35 | private MultipartFile file; 36 | 37 | /** 38 | * 用户id 39 | */ 40 | @ApiModelProperty(name = "userId", value = "用户id", required = true, dataType = "Integer") 41 | private Integer userId; 42 | 43 | /** 44 | * 用户昵称 45 | */ 46 | @ApiModelProperty(name = "nickname", value = "用户昵称", required = true, dataType = "String") 47 | private String nickname; 48 | 49 | /** 50 | * 用户头像 51 | */ 52 | @ApiModelProperty(name = "avatar", value = "用户头像", required = true, dataType = "String") 53 | private String avatar; 54 | 55 | /** 56 | * 聊天内容 57 | */ 58 | @ApiModelProperty(name = "content", value = "聊天内容", required = true, dataType = "String") 59 | private String content; 60 | 61 | /** 62 | * 创建时间 63 | */ 64 | @ApiModelProperty(name = "createTime", value = "创建时间", required = true, dataType = "Date") 65 | private Date createTime; 66 | 67 | /** 68 | * 用户登录ip 69 | */ 70 | @ApiModelProperty(name = "ipAddr", value = "用户登录ip", required = true, dataType = "String") 71 | private String ipAddr; 72 | 73 | /** 74 | * ip来源 75 | */ 76 | @ApiModelProperty(name = "ipSource", value = "ip来源", required = true, dataType = "String") 77 | private String ipSource; 78 | 79 | } 80 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/CategoryDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SELECT 8 | c.id, 9 | c.category_name, 10 | COUNT( 1 ) as article_count 11 | FROM 12 | tb_category c 13 | JOIN tb_article a ON c.id = a.category_id 14 | GROUP BY 15 | a.category_id 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/MenuDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SELECT DISTINCT 8 | m.id, 9 | `name`, 10 | `path`, 11 | component, 12 | icon, 13 | is_hidden, 14 | parent_id, 15 | order_num 16 | FROM 17 | tb_user_role ur 18 | JOIN tb_role_menu rm ON ur.role_id = rm.role_id 19 | JOIN `tb_menu` m ON rm.menu_id = m.id 20 | WHERE 21 | user_id = #{userInfoId} 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/ResourceDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/UniqueViewDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SELECT 8 | DATE_FORMAT( create_time, "%Y-%m-%d" ) as `day`, 9 | views_count 10 | FROM 11 | `tb_unique_view` 12 | WHERE 13 | create_time > #{startTime} 14 | AND create_time <= #{endTime} 15 | ORDER BY 16 | create_time 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/UserRoleDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /blog-vue/admin/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /blog-vue/admin/README.md: -------------------------------------------------------------------------------- 1 | # admins 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /blog-vue/admin/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/cli-plugin-babel/preset"] 3 | }; 4 | -------------------------------------------------------------------------------- /blog-vue/admin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "admins", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "axios": "^0.19.2", 12 | "core-js": "^3.6.5", 13 | "echarts": "^4.8.0", 14 | "element-ui": "^2.13.2", 15 | "mavon-editor": "^2.9.0", 16 | "moment": "^2.26.0", 17 | "nprogress": "^0.2.0", 18 | "path": "^0.12.7", 19 | "vue": "^2.6.11", 20 | "vue-axios": "^2.1.5", 21 | "vue-echarts": "^5.0.0-beta.0", 22 | "vue-router": "^3.2.0", 23 | "vue2-animate": "^2.1.4", 24 | "vuex": "^3.4.0", 25 | "vuex-persistedstate": "^3.0.1" 26 | }, 27 | "devDependencies": { 28 | "@vue/cli-plugin-babel": "^4.4.0", 29 | "@vue/cli-plugin-eslint": "^4.4.0", 30 | "@vue/cli-service": "^4.4.0", 31 | "@vue/eslint-config-prettier": "^6.0.0", 32 | "babel-eslint": "^10.1.0", 33 | "eslint": "^6.7.2", 34 | "eslint-plugin-prettier": "^3.1.3", 35 | "eslint-plugin-vue": "^6.2.2", 36 | "prettier": "^1.19.1", 37 | "vue-template-compiler": "^2.6.11" 38 | }, 39 | "eslintConfig": { 40 | "root": true, 41 | "env": { 42 | "node": true 43 | }, 44 | "extends": [ 45 | "plugin:vue/essential", 46 | "eslint:recommended", 47 | "@vue/prettier" 48 | ], 49 | "parserOptions": { 50 | "parser": "babel-eslint" 51 | }, 52 | "rules": {} 53 | }, 54 | "browserslist": [ 55 | "> 1%", 56 | "last 2 versions", 57 | "not dead" 58 | ] 59 | } 60 | -------------------------------------------------------------------------------- /blog-vue/admin/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/public/favicon.ico -------------------------------------------------------------------------------- /blog-vue/admin/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 后台管理系统 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /blog-vue/admin/src/App.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.eot -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.ttf -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.woff -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.woff2 -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | .el-card.is-always-shadow, 6 | .el-card.is-hover-shadow:focus, 7 | .el-card.is-hover-shadow:hover { 8 | box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); 9 | } 10 | .main-card { 11 | min-height: calc(100vh - 126px); 12 | } 13 | .operation-container { 14 | display: flex; 15 | align-items: center; 16 | margin-bottom: 1.25rem; 17 | margin-top: 2.25rem; 18 | } 19 | .pagination-container { 20 | float: right; 21 | margin-top: 1.25rem; 22 | margin-bottom: 1.25rem; 23 | } 24 | .dialog-title-container { 25 | display: flex; 26 | align-items: center; 27 | font-weight: bold; 28 | } 29 | .dialog-title-container i { 30 | font-size: 1.5rem; 31 | margin-right: 0.5rem; 32 | } 33 | .v-note-wrapper.fullscreen { 34 | height: 100vh !important; 35 | } 36 | .title { 37 | position: absolute; 38 | left: 0; 39 | font-size: 16px; 40 | font-weight: bold; 41 | color: #202a34; 42 | } 43 | .title::before { 44 | content: ''; 45 | width: 24px; 46 | height: 16px; 47 | border-left: 3px solid #0081ff; 48 | margin-right: 20px; 49 | } 50 | 51 | .side-nav-bar .el-scrollbar__wrap { 52 | overflow-x: hidden !important; 53 | } -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/js/config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | TENCENT_CAPTCHA: "2088053498" 3 | }; 4 | -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/js/menu.js: -------------------------------------------------------------------------------- 1 | import Layout from "@/layout/index.vue"; 2 | import router from "../../router"; 3 | import store from "../../store"; 4 | import axios from "axios"; 5 | import Vue from "vue"; 6 | 7 | export function generaMenu() { 8 | // 查询用户菜单 9 | axios.get("/api/admin/user/menus").then(({ data }) => { 10 | if (data.flag) { 11 | var userMenuList = data.data; 12 | userMenuList.forEach(item => { 13 | if (item.icon != null) { 14 | item.icon = "iconfont " + item.icon; 15 | } 16 | if (item.component == "Layout") { 17 | item.component = Layout; 18 | } 19 | if (item.children && item.children.length > 0) { 20 | item.children.forEach(route => { 21 | route.icon = "iconfont " + route.icon; 22 | route.component = loadView(route.component); 23 | }); 24 | } 25 | }); 26 | // 添加侧边栏菜单 27 | store.commit("saveUserMenuList", userMenuList); 28 | // 添加菜单到路由 29 | router.addRoutes(userMenuList); 30 | } else { 31 | Vue.prototype.$message.error(data.message); 32 | router.push({ path: "/login" }); 33 | } 34 | }); 35 | } 36 | 37 | export const loadView = view => { 38 | // 路由懒加载 39 | return resolve => require([`@/views${view}`], resolve); 40 | }; 41 | -------------------------------------------------------------------------------- /blog-vue/admin/src/layout/components/SideBar.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | {{ route.name }} 20 | 21 | 22 | 23 | 24 | 25 | {{ item.name }} 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | {{ route.children[0].name }} 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 56 | -------------------------------------------------------------------------------- /blog-vue/admin/src/layout/index.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 39 | 40 | 69 | -------------------------------------------------------------------------------- /blog-vue/admin/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import VueRouter from "vue-router"; 3 | 4 | Vue.use(VueRouter); 5 | 6 | const routes = [ 7 | { 8 | path: "/login", 9 | name: "登录", 10 | hidden: true, 11 | component: () => import("../views/login/Login.vue") 12 | } 13 | ]; 14 | 15 | const createRouter = () => 16 | new VueRouter({ 17 | mode: "history", 18 | routes: routes 19 | }); 20 | 21 | const router = createRouter(); 22 | 23 | export function resetRouter() { 24 | const newRouter = createRouter(); 25 | router.matcher = newRouter.matcher; 26 | } 27 | 28 | export default router; 29 | -------------------------------------------------------------------------------- /blog-vue/admin/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Vuex from "vuex"; 3 | import createPersistedState from "vuex-persistedstate"; 4 | 5 | Vue.use(Vuex); 6 | 7 | export default new Vuex.Store({ 8 | state: { 9 | collapse: false, 10 | tabList: [{ name: "首页", path: "/" }], 11 | userId: null, 12 | roleList: null, 13 | avatar: null, 14 | nickname: null, 15 | intro: null, 16 | webSite: null, 17 | userMenuList: [] 18 | }, 19 | mutations: { 20 | saveTab(state, tab) { 21 | if (state.tabList.findIndex(item => item.path === tab.path) == -1) { 22 | state.tabList.push({ name: tab.name, path: tab.path }); 23 | } 24 | }, 25 | removeTab(state, tab) { 26 | var index = state.tabList.findIndex(item => item.name === tab.name); 27 | state.tabList.splice(index, 1); 28 | }, 29 | resetTab(state) { 30 | state.tabList = [{ name: "首页", path: "/" }]; 31 | }, 32 | trigger(state) { 33 | state.collapse = !state.collapse; 34 | }, 35 | login(state, user) { 36 | state.userId = user.userInfoId; 37 | state.roleList = user.roleList; 38 | state.avatar = user.avatar; 39 | state.nickname = user.nickname; 40 | state.intro = user.intro; 41 | state.webSite = user.webSite; 42 | }, 43 | saveUserMenuList(state, userMenuList) { 44 | state.userMenuList = userMenuList; 45 | }, 46 | logout(state) { 47 | state.userId = null; 48 | state.roleList = null; 49 | state.avatar = null; 50 | state.nickname = null; 51 | state.intro = null; 52 | state.webSite = null; 53 | state.userMenuList = []; 54 | }, 55 | updateAvatar(state, avatar) { 56 | state.avatar = avatar; 57 | }, 58 | updateUserInfo(state, user) { 59 | state.nickname = user.nickname; 60 | state.intro = user.intro; 61 | state.webSite = user.webSite; 62 | } 63 | }, 64 | actions: {}, 65 | modules: {}, 66 | plugins: [ 67 | createPersistedState({ 68 | storage: window.sessionStorage 69 | }) 70 | ] 71 | }); 72 | -------------------------------------------------------------------------------- /blog-vue/admin/src/views/about/About.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ this.$route.name }} 4 | 8 | 14 | 修改 15 | 16 | 17 | 18 | 19 | 55 | 56 | 62 | -------------------------------------------------------------------------------- /blog-vue/admin/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | devServer: { 3 | proxy: { 4 | "/api": { 5 | target: "http://localhost:8080", 6 | changeOrigin: true, 7 | pathRewrite: { 8 | "^/api": "" 9 | } 10 | } 11 | }, 12 | disableHostCheck: true 13 | }, 14 | chainWebpack: config => { 15 | config.resolve.alias.set("@", resolve("src")); 16 | } 17 | }; 18 | 19 | const path = require("path"); 20 | function resolve(dir) { 21 | return path.join(__dirname, dir); 22 | } 23 | -------------------------------------------------------------------------------- /blog-vue/blog/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /blog-vue/blog/README.md: -------------------------------------------------------------------------------- 1 | # blog 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /blog-vue/blog/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/cli-plugin-babel/preset"] 3 | }; 4 | -------------------------------------------------------------------------------- /blog-vue/blog/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blogs", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "animate.css": "^3.7.2", 12 | "axios": "^0.19.2", 13 | "clipboard": "^2.0.6", 14 | "core-js": "^3.6.4", 15 | "easy-typer-js": "^2.1.0", 16 | "highlight.js": "^10.0.3", 17 | "markdown-it": "^11.0.0", 18 | "moment": "^2.26.0", 19 | "nprogress": "^0.2.0", 20 | "recorderx": "^2.0.2", 21 | "stylus": "^0.54.7", 22 | "stylus-loader": "^3.0.2", 23 | "tocbot": "^4.12.2", 24 | "vue": "^2.6.11", 25 | "vue-avatar-cropper": "^1.0.6", 26 | "vue-axios": "^2.1.5", 27 | "vue-baberrage": "^3.2.4", 28 | "vue-cute-timeline": "^1.2.8", 29 | "vue-image-swipe": "^1.0.5", 30 | "vue-infinite-loading": "^2.4.5", 31 | "vue-router": "^3.1.6", 32 | "vue-social-share": "0.0.3", 33 | "vuetify": "^2.2.11", 34 | "vuex": "^3.1.3", 35 | "vuex-persistedstate": "^3.0.1", 36 | "zw-player": "^1.0.6" 37 | }, 38 | "devDependencies": { 39 | "@vue/cli-plugin-babel": "^4.3.0", 40 | "@vue/cli-plugin-eslint": "^4.3.0", 41 | "@vue/cli-service": "^4.3.0", 42 | "@vue/eslint-config-prettier": "^6.0.0", 43 | "babel-eslint": "^10.1.0", 44 | "eslint": "^6.7.2", 45 | "eslint-plugin-prettier": "^3.1.1", 46 | "eslint-plugin-vue": "^6.2.2", 47 | "prettier": "^1.19.1", 48 | "sass": "^1.19.0", 49 | "sass-loader": "^8.0.0", 50 | "vue-cli-plugin-vuetify": "^2.0.5", 51 | "vue-template-compiler": "^2.6.11", 52 | "vuetify-loader": "^1.3.0" 53 | }, 54 | "eslintConfig": { 55 | "root": true, 56 | "env": { 57 | "node": true 58 | }, 59 | "extends": [ 60 | "plugin:vue/essential", 61 | "eslint:recommended", 62 | "@vue/prettier" 63 | ], 64 | "parserOptions": { 65 | "parser": "babel-eslint" 66 | }, 67 | "rules": {} 68 | }, 69 | "browserslist": [ 70 | "> 1%", 71 | "last 2 versions", 72 | "not dead" 73 | ] 74 | } 75 | -------------------------------------------------------------------------------- /blog-vue/blog/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/public/favicon.ico -------------------------------------------------------------------------------- /blog-vue/blog/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 风丶宇的个人博客 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /blog-vue/blog/src/App.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 60 | -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.eot -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.ttf -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.woff -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.woff2 -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/img/alipay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/img/alipay.png -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/img/ds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/img/ds.png -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/img/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/img/wechat.png -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/js/config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | QQ_APP_ID: "101878726", 3 | QQ_REDIRECT_URI: "https://www.talkxj.com/oauth/login/qq", 4 | WEIBO_APP_ID: "4039197195", 5 | WEIBO_REDIRECT_URI: "https://www.talkxj.com/oauth/login/weibo", 6 | TENCENT_CAPTCHA: "2088053498" 7 | }; 8 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/Emoji.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 13 | 14 | 34 | 35 | 56 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/layout/Footer.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 21 | 22 | 50 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/toast/Toast.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ message }} 4 | 5 | 6 | 7 | 37 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/toast/index.js: -------------------------------------------------------------------------------- 1 | import ToastComponent from "./Toast.vue"; // 引入先前写好的vue 2 | 3 | const Toast = {}; 4 | 5 | // 注册Toast 6 | Toast.install = function(Vue) { 7 | // 生成一个Vue的子类 8 | const ToastConstructor = Vue.extend(ToastComponent); 9 | // 生成一个该子类的实例 10 | const instance = new ToastConstructor(); 11 | 12 | // 将这个实例挂载在我创建的div上 13 | // 并将此div加入全局挂载点内部 14 | instance.$mount(document.createElement("div")); 15 | document.body.appendChild(instance.$el); 16 | 17 | // 通过Vue的原型注册一个方法 18 | // 让所有实例共享这个方法 // 其中的duration是持续时间 19 | Vue.prototype.$toast = (options, duration = 2000) => { 20 | instance.message = options.message; 21 | instance.type = options.type; 22 | instance.show = true; 23 | 24 | setTimeout(() => { 25 | instance.show = false; 26 | }, duration); 27 | }; 28 | }; 29 | 30 | export default Toast; 31 | -------------------------------------------------------------------------------- /blog-vue/blog/src/plugins/vuetify.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Vuetify from "vuetify/lib"; 3 | 4 | Vue.use(Vuetify); 5 | 6 | export default new Vuetify({}); 7 | -------------------------------------------------------------------------------- /blog-vue/blog/src/views/about/About.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 关于我 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 43 | 44 | 65 | -------------------------------------------------------------------------------- /blog-vue/blog/src/views/tag/Tag.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 标签 6 | 7 | 8 | 9 | 标签 - {{ count }} 10 | 11 | 17 | {{ item.tagName }} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 45 | 46 | 78 | -------------------------------------------------------------------------------- /blog-vue/blog/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | transpileDependencies: ["vuetify"], 3 | devServer: { 4 | proxy: { 5 | "/api": { 6 | target: "http://localhost:8080", 7 | changeOrigin: true, 8 | pathRewrite: { 9 | "^/api": "" 10 | } 11 | } 12 | }, 13 | disableHostCheck: true 14 | } 15 | }; 16 | --------------------------------------------------------------------------------
listArticleRank(@Param("articleIdList") List articleIdList); 67 | 68 | /** 69 | * 查看文章的推荐文章 70 | * @param articleId 文章id 71 | * @return 推荐文章 72 | */ 73 | List listArticleRecommends(@Param("articleId") Integer articleId); 74 | 75 | } 76 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ArticleTagDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.ArticleTag; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | @Repository 13 | public interface ArticleTagDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/CategoryDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.CategoryDTO; 4 | import com.minzheng.blog.entity.Category; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface CategoryDao extends BaseMapper { 17 | 18 | /** 19 | * 查询分类和对应文章数量 20 | * @return 分类集合 21 | */ 22 | List listCategoryDTO(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ChatRecordDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.ChatRecord; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2021-02-19 10 | **/ 11 | @Repository 12 | public interface ChatRecordDao extends BaseMapper { 13 | } 14 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/CommentDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.CommentBackDTO; 4 | import com.minzheng.blog.dto.CommentDTO; 5 | import com.minzheng.blog.dto.ReplyCountDTO; 6 | import com.minzheng.blog.dto.ReplyDTO; 7 | import com.minzheng.blog.entity.Comment; 8 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 9 | import com.minzheng.blog.vo.ConditionVO; 10 | import org.apache.ibatis.annotations.Param; 11 | import org.springframework.stereotype.Repository; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * @author xiaojie 17 | * @since 2020-05-18 18 | */ 19 | @Repository 20 | public interface CommentDao extends BaseMapper { 21 | 22 | /** 23 | * 查看评论 24 | * 25 | * @param articleId 文章id 26 | * @param current 当前页码 27 | * @return 评论集合 28 | */ 29 | List listComments(@Param("articleId") Integer articleId, @Param("current") Long current); 30 | 31 | /** 32 | * 查看评论id集合下的回复 33 | * 34 | * @param commentIdList 评论id集合 35 | * @return 回复集合 36 | */ 37 | List listReplies(@Param("commentIdList") List commentIdList); 38 | 39 | /** 40 | * 查看当条评论下的回复 41 | * 42 | * @param commentId 评论id 43 | * @param current 当前页码 44 | * @return 回复集合 45 | */ 46 | List listRepliesByCommentId(@Param("commentId") Integer commentId, @Param("current") Long current); 47 | 48 | /** 49 | * 根据评论id查询回复总量 50 | * 51 | * @param commentIdList 评论id集合 52 | * @return 回复数量 53 | */ 54 | List listReplyCountByCommentId(@Param("commentIdList") List commentIdList); 55 | 56 | /** 57 | * 查询后台评论 58 | * 59 | * @param condition 条件 60 | * @return 评论集合 61 | */ 62 | List listCommentBackDTO(@Param("condition") ConditionVO condition); 63 | 64 | /** 65 | * 统计后台评论数量 66 | * 67 | * @param condition 条件 68 | * @return 评论数量 69 | */ 70 | Integer countCommentDTO(@Param("condition") ConditionVO condition); 71 | 72 | } 73 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ElasticsearchDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.ArticleSearchDTO; 4 | import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author 11921 9 | */ 10 | @Repository 11 | public interface ElasticsearchDao extends ElasticsearchRepository { 12 | } 13 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/FriendLinkDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.FriendLink; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | @Repository 13 | public interface FriendLinkDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/MenuDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.Menu; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author: yezhiqiu 11 | * @date: 2021-01-23 12 | **/ 13 | @Repository 14 | public interface MenuDao extends BaseMapper { 15 | 16 | /** 17 | * 根据用户id查询菜单 18 | * @param userInfoId 用户信息id 19 | * @return 菜单列表 20 | */ 21 | List listMenusByUserInfoId(Integer userInfoId); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/MessageDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.Message; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | @Repository 13 | public interface MessageDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/OperationLogDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.Menu; 5 | import com.minzheng.blog.entity.OperationLog; 6 | import org.springframework.stereotype.Repository; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-01-31 11 | **/ 12 | @Repository 13 | public interface OperationLogDao extends BaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ResourceDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.Resource; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | @Repository 12 | public interface ResourceDao extends BaseMapper { 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.dto.RoleDTO; 5 | import com.minzheng.blog.dto.UrlRoleDTO; 6 | import com.minzheng.blog.entity.Role; 7 | import com.minzheng.blog.vo.ConditionVO; 8 | import org.apache.ibatis.annotations.Param; 9 | import org.springframework.stereotype.Repository; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | @Repository 18 | public interface RoleDao extends BaseMapper { 19 | 20 | /** 21 | * 查询路由角色列表 22 | * 23 | * @return 角色标签 24 | */ 25 | List listUrlRoles(); 26 | 27 | /** 28 | * 根据用户id获取角色列表 29 | * 30 | * @param userInfoId 用户id 31 | * @return 角色标签 32 | */ 33 | List listRolesByUserInfoId(Integer userInfoId); 34 | 35 | /** 36 | * 查询角色列表 37 | * 38 | * @param conditionVO 条件 39 | * @return 角色列表 40 | */ 41 | List listRoles(@Param("conditionVO") ConditionVO conditionVO); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/RoleMenuDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.RoleMenu; 5 | import com.minzheng.blog.entity.RoleResource; 6 | import org.springframework.stereotype.Repository; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2020-12-27 11 | **/ 12 | @Repository 13 | public interface RoleMenuDao extends BaseMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/RoleResourceDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.RoleResource; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | @Repository 12 | public interface RoleResourceDao extends BaseMapper { 13 | } 14 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/TagDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.Tag; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * Mapper 接口 10 | * 11 | * 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface TagDao extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UniqueViewDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.UniqueViewDTO; 4 | import com.minzheng.blog.entity.UniqueView; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.apache.ibatis.annotations.Param; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface UniqueViewDao extends BaseMapper { 17 | 18 | /** 19 | * 获取7天用户量 20 | * @param startTime 开始时间 21 | * @param endTime 结束时间 22 | * @return 用户量 23 | */ 24 | List listUniqueViews(@Param("startTime") String startTime, @Param("endTime") String endTime); 25 | } 26 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UserAuthDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.UserBackDTO; 4 | import com.minzheng.blog.entity.UserAuth; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import com.minzheng.blog.vo.ConditionVO; 7 | import org.apache.ibatis.annotations.Param; 8 | import org.springframework.stereotype.Repository; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | @Repository 18 | public interface UserAuthDao extends BaseMapper { 19 | 20 | /** 21 | * 查询后台用户列表 22 | * @param condition 条件 23 | * @return 用户集合 24 | */ 25 | List listUsers(@Param("condition") ConditionVO condition); 26 | 27 | /** 28 | * 查询后台用户数量 29 | * @param condition 条件 30 | * @return 用户数量 31 | */ 32 | Integer countUser(@Param("condition") ConditionVO condition); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UserInfoDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.entity.UserInfo; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * 9 | * Mapper 接口 10 | * 11 | * 12 | * @author xiaojie 13 | * @since 2020-05-18 14 | */ 15 | @Repository 16 | public interface UserInfoDao extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/UserRoleDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.minzheng.blog.entity.UserRole; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | @Repository 12 | public interface UserRoleDao extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArchiveDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 归档文章 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class ArchiveDTO { 19 | /** 20 | * id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 标题 26 | */ 27 | private String articleTitle; 28 | 29 | /** 30 | * 发表时间 31 | */ 32 | private Date createTime; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 后台文章 13 | * 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class ArticleBackDTO { 21 | 22 | /** 23 | * id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 标题 29 | */ 30 | private String articleTitle; 31 | 32 | /** 33 | * 发表时间 34 | */ 35 | private Date createTime; 36 | 37 | /** 38 | * 更新时间 39 | */ 40 | private Date updateTime; 41 | 42 | /** 43 | * 点赞量 44 | */ 45 | private Integer likeCount; 46 | 47 | /** 48 | * 浏览量 49 | */ 50 | private Integer viewsCount; 51 | 52 | /** 53 | * 文章分类名 54 | */ 55 | private String categoryName; 56 | 57 | /** 58 | * 文章标签 59 | */ 60 | private List tagDTOList; 61 | 62 | /** 63 | * 是否置顶 64 | */ 65 | private Integer isTop; 66 | 67 | /** 68 | * 是否为草稿 69 | */ 70 | private Integer isDraft; 71 | 72 | /** 73 | * 是否删除 74 | */ 75 | private Integer isDelete; 76 | 77 | } 78 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 文章 13 | * 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class ArticleDTO { 21 | 22 | /** 23 | * id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 文章缩略图 29 | */ 30 | private String articleCover; 31 | 32 | /** 33 | * 标题 34 | */ 35 | private String articleTitle; 36 | 37 | /** 38 | * 内容 39 | */ 40 | private String articleContent; 41 | 42 | /** 43 | * 点赞量 44 | */ 45 | private Integer likeCount; 46 | 47 | /** 48 | * 浏览量 49 | */ 50 | private Integer viewsCount; 51 | 52 | /** 53 | * 发表时间 54 | */ 55 | private Date createTime; 56 | 57 | /** 58 | * 更新时间 59 | */ 60 | private Date updateTime; 61 | 62 | /** 63 | * 文章分类id 64 | */ 65 | private Integer categoryId; 66 | 67 | /** 68 | * 文章分类名 69 | */ 70 | private String categoryName; 71 | 72 | /** 73 | * 文章标签 74 | */ 75 | private List tagDTOList; 76 | 77 | /** 78 | * 上一篇文章 79 | */ 80 | private ArticlePaginationDTO lastArticle; 81 | 82 | /** 83 | * 下一篇文章 84 | */ 85 | private ArticlePaginationDTO nextArticle; 86 | 87 | /** 88 | * 推荐文章 89 | */ 90 | private List articleRecommendList; 91 | 92 | 93 | } 94 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleHomeDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 首页文章列表 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class ArticleHomeDTO { 20 | 21 | /** 22 | * id 23 | */ 24 | private Integer id; 25 | 26 | /** 27 | * 文章缩略图 28 | */ 29 | private String articleCover; 30 | 31 | /** 32 | * 标题 33 | */ 34 | private String articleTitle; 35 | 36 | /** 37 | * 内容 38 | */ 39 | private String articleContent; 40 | 41 | /** 42 | * 发表时间 43 | */ 44 | private Date createTime; 45 | 46 | /** 47 | * 是否置顶 48 | */ 49 | private Boolean isTop; 50 | 51 | /** 52 | * 文章分类id 53 | */ 54 | private Integer categoryId; 55 | 56 | /** 57 | * 文章分类名 58 | */ 59 | private String categoryName; 60 | 61 | /** 62 | * 文章标签 63 | */ 64 | private List tagDTOList; 65 | 66 | } 67 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleOptionDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 文章选项 12 | * 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class ArticleOptionDTO { 20 | 21 | /** 22 | * 文章标签列表 23 | */ 24 | private List tagDTOList; 25 | 26 | /** 27 | * 文章分类列表 28 | */ 29 | private List categoryDTOList; 30 | 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticlePaginationDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 文章上下篇DTO 10 | * @author: yezhiqiu 11 | * @date: 2021-01-18 12 | **/ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | @Builder 17 | public class ArticlePaginationDTO { 18 | 19 | /** 20 | * id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 文章缩略图 26 | */ 27 | private String articleCover; 28 | 29 | /** 30 | * 标题 31 | */ 32 | private String articleTitle; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticlePreviewDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 分类或标签下的文章 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class ArticlePreviewDTO { 20 | 21 | /** 22 | * 文章id 23 | */ 24 | private Integer id; 25 | 26 | /** 27 | * 文章缩略图 28 | */ 29 | private String articleCover; 30 | 31 | /** 32 | * 标题 33 | */ 34 | private String articleTitle; 35 | 36 | /** 37 | * 发表时间 38 | */ 39 | private Date createTime; 40 | 41 | /** 42 | * 文章分类id 43 | */ 44 | private Integer categoryId; 45 | 46 | /** 47 | * 文章分类名 48 | */ 49 | private String categoryName; 50 | 51 | /** 52 | * 文章标签 53 | */ 54 | private List tagDTOList; 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticlePreviewListDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 分类或标签下的文章列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class ArticlePreviewListDTO { 19 | /** 20 | * 条件对应的文章列表 21 | */ 22 | private List articlePreviewDTOList; 23 | 24 | /** 25 | * 条件名 26 | */ 27 | private String name; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleRankDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 文章排行 10 | * 11 | * @author 11921 12 | */ 13 | @Data 14 | @Builder 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class ArticleRankDTO { 18 | 19 | /** 20 | * 标题 21 | */ 22 | private String articleTitle; 23 | 24 | /** 25 | * 浏览量 26 | */ 27 | private Integer viewsCount; 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleRecommendDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 推荐文章 12 | * @author: yezhiqiu 13 | * @date: 2021-01-20 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | @Builder 19 | public class ArticleRecommendDTO { 20 | /** 21 | * id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 文章缩略图 27 | */ 28 | private String articleCover; 29 | 30 | /** 31 | * 标题 32 | */ 33 | private String articleTitle; 34 | 35 | /** 36 | * 创建时间 37 | */ 38 | private Date createTime; 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ArticleSearchDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.minzheng.blog.entity.Article; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | import org.springframework.data.annotation.Id; 9 | import org.springframework.data.elasticsearch.annotations.Document; 10 | import org.springframework.data.elasticsearch.annotations.Field; 11 | import org.springframework.data.elasticsearch.annotations.FieldType; 12 | 13 | /** 14 | * 文章搜索结果 15 | * 16 | * @author 11921 17 | */ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @Document(indexName = "article") 23 | public class ArticleSearchDTO { 24 | 25 | /** 26 | * 文章id 27 | */ 28 | @Id 29 | private Integer id; 30 | 31 | /** 32 | * 文章标题 33 | */ 34 | @Field(type = FieldType.Text, analyzer = "ik_max_word") 35 | private String articleTitle; 36 | 37 | /** 38 | * 文章内容 39 | */ 40 | @Field(type = FieldType.Text, analyzer = "ik_max_word") 41 | private String articleContent; 42 | 43 | /** 44 | * 文章状态 45 | */ 46 | @Field(type = FieldType.Integer) 47 | private Integer isDelete; 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/BlogBackInfoDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 博客后台信息 12 | * 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class BlogBackInfoDTO { 20 | /** 21 | * 访问量 22 | */ 23 | private Integer viewsCount; 24 | 25 | /** 26 | * 留言量 27 | */ 28 | private Integer messageCount; 29 | 30 | /** 31 | * 用户量 32 | */ 33 | private Integer userCount; 34 | 35 | /** 36 | * 文章量 37 | */ 38 | private Integer articleCount; 39 | 40 | /** 41 | * 分类统计 42 | */ 43 | private List categoryDTOList; 44 | 45 | /** 46 | * 一周用户量集合 47 | */ 48 | private List uniqueViewDTOList; 49 | 50 | /** 51 | * 文章浏览量排行 52 | */ 53 | private List articleRankDTOList; 54 | 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/BlogHomeInfoDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 博客首页信息 10 | * 11 | * @author 11921 12 | */ 13 | @Data 14 | @Builder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class BlogHomeInfoDTO { 18 | /** 19 | * 博主昵称 20 | */ 21 | private String nickname; 22 | 23 | /** 24 | * 博主头像 25 | */ 26 | private String avatar; 27 | 28 | /** 29 | * 博主简介 30 | */ 31 | private String intro; 32 | 33 | /** 34 | * 文章数量 35 | */ 36 | private Integer articleCount; 37 | 38 | /** 39 | * 分类数量 40 | */ 41 | private Integer categoryCount; 42 | 43 | /** 44 | * 标签数量 45 | */ 46 | private Integer tagCount; 47 | 48 | /** 49 | * 公告 50 | */ 51 | private String notice; 52 | 53 | /** 54 | * 访问量 55 | */ 56 | private String viewsCount; 57 | 58 | 59 | } 60 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CategoryBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 后台分类列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class CategoryBackDTO { 17 | /** 18 | * id 19 | */ 20 | private Integer id; 21 | 22 | /** 23 | * 分类名 24 | */ 25 | private String categoryName; 26 | } 27 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CategoryDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 分类列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class CategoryDTO { 17 | 18 | /** 19 | * id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 分类名 25 | */ 26 | private String categoryName; 27 | 28 | /** 29 | * 分类下的文章数量 30 | */ 31 | private Integer articleCount; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ChatRecordDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.minzheng.blog.entity.ChatRecord; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author: yezhiqiu 13 | * @date: 2021-03-30 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | @Builder 19 | public class ChatRecordDTO { 20 | 21 | /** 22 | * 聊天记录 23 | */ 24 | private List chatRecordList; 25 | 26 | /** 27 | * ip地址 28 | */ 29 | private String ipAddr; 30 | 31 | /** 32 | * ip来源 33 | */ 34 | private String ipSource; 35 | } 36 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CommentBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.Date; 10 | 11 | /** 12 | * 后台评论列表 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class CommentBackDTO { 20 | /** 21 | * id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 用户头像 27 | */ 28 | private String avatar; 29 | 30 | /** 31 | * 用户昵称 32 | */ 33 | private String nickname; 34 | 35 | /** 36 | * 被回复用户昵称 37 | */ 38 | private String replyNickname; 39 | 40 | /** 41 | * 文章标题 42 | */ 43 | private String articleTitle; 44 | 45 | /** 46 | * 评论内容 47 | */ 48 | private String commentContent; 49 | 50 | /** 51 | * 点赞量 52 | */ 53 | private Integer likeCount; 54 | 55 | /** 56 | * 发表时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 状态 62 | */ 63 | private Integer isDelete; 64 | 65 | } 66 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/CommentDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 评论列表 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class CommentDTO { 20 | /** 21 | * 评论id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 用户id 27 | */ 28 | private Integer userId; 29 | 30 | /** 31 | * 用户昵称 32 | */ 33 | private String nickname; 34 | 35 | /** 36 | * 用户头像 37 | */ 38 | private String avatar; 39 | 40 | /** 41 | * 个人网站 42 | */ 43 | private String webSite; 44 | 45 | /** 46 | * 评论内容 47 | */ 48 | private String commentContent; 49 | 50 | /** 51 | * 点赞数 52 | */ 53 | private Integer likeCount; 54 | 55 | /** 56 | * 评论时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 回复量 62 | */ 63 | private Integer replyCount; 64 | 65 | /** 66 | * 回复列表 67 | */ 68 | private List replyDTOList; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/EmailDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-04-16 11 | **/ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class EmailDTO { 17 | 18 | /** 19 | * 邮箱号 20 | */ 21 | private String email; 22 | 23 | /** 24 | * 主题 25 | */ 26 | private String subject; 27 | 28 | /** 29 | * 内容 30 | */ 31 | private String content; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/FriendLinkBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 后台友链列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class FriendLinkBackDTO { 19 | /** 20 | * id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 链接名 26 | */ 27 | private String linkName; 28 | 29 | /** 30 | * 链接头像 31 | */ 32 | private String linkAvatar; 33 | 34 | /** 35 | * 链接地址 36 | */ 37 | private String linkAddress; 38 | 39 | /** 40 | * 链接介绍 41 | */ 42 | private String linkIntro; 43 | 44 | /** 45 | * 创建时间 46 | */ 47 | private Date createTime; 48 | 49 | } 50 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/FriendLinkDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 友链列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class FriendLinkDTO { 17 | 18 | /** 19 | * id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 链接名 25 | */ 26 | private String linkName; 27 | 28 | /** 29 | * 链接头像 30 | */ 31 | private String linkAvatar; 32 | 33 | /** 34 | * 链接地址 35 | */ 36 | private String linkAddress; 37 | 38 | /** 39 | * 介绍 40 | */ 41 | private String linkIntro; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/MenuDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | import java.util.List; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-01-26 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | public class MenuDTO { 22 | 23 | /** 24 | * id 25 | */ 26 | private Integer id; 27 | 28 | /** 29 | * 菜单名 30 | */ 31 | private String name; 32 | 33 | /** 34 | * 路径 35 | */ 36 | private String path; 37 | 38 | /** 39 | * 组件 40 | */ 41 | private String component; 42 | 43 | /** 44 | * icon 45 | */ 46 | private String icon; 47 | 48 | /** 49 | * 创建时间 50 | */ 51 | private Date createTime; 52 | 53 | /** 54 | * 排序 55 | */ 56 | private Integer orderNum; 57 | 58 | /** 59 | * 是否禁用 60 | */ 61 | private Integer isDisable; 62 | 63 | /** 64 | * 是否隐藏 65 | */ 66 | private Integer isHidden; 67 | 68 | /** 69 | * 子菜单列表 70 | */ 71 | private List children; 72 | 73 | } 74 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/MessageBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 后台留言列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class MessageBackDTO { 19 | 20 | /** 21 | * 主键id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 用户ip 27 | */ 28 | private String ipAddress; 29 | 30 | /** 31 | * 用户ip地址 32 | */ 33 | private String ipSource; 34 | 35 | /** 36 | * 昵称 37 | */ 38 | private String nickname; 39 | 40 | /** 41 | * 头像 42 | */ 43 | private String avatar; 44 | 45 | /** 46 | * 留言内容 47 | */ 48 | private String messageContent; 49 | 50 | /** 51 | * 留言时间 52 | */ 53 | private Date createTime; 54 | 55 | } 56 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/MessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 留言列表 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class MessageDTO { 17 | 18 | /** 19 | * 主键id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 昵称 25 | */ 26 | private String nickname; 27 | 28 | /** 29 | * 头像 30 | */ 31 | private String avatar; 32 | 33 | /** 34 | * 留言内容 35 | */ 36 | private String messageContent; 37 | 38 | /** 39 | * 弹幕速度 40 | */ 41 | private Integer time; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/OperationLogDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * 操作日志DTO 14 | * 15 | * @author: yezhiqiu 16 | * @date: 2021-01-31 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | public class OperationLogDTO { 23 | /** 24 | * 日志id 25 | */ 26 | private Integer id; 27 | 28 | /** 29 | * 操作模块 30 | */ 31 | private String optModule; 32 | 33 | /** 34 | * 操作路径 35 | */ 36 | private String optUrl; 37 | 38 | /** 39 | * 操作类型 40 | */ 41 | private String optType; 42 | 43 | /** 44 | * 操作方法 45 | */ 46 | private String optMethod; 47 | 48 | /** 49 | * 操作描述 50 | */ 51 | private String optDesc; 52 | 53 | /** 54 | * 请求方式 55 | */ 56 | private String requestMethod; 57 | 58 | /** 59 | * 请求参数 60 | */ 61 | private String requestParam; 62 | 63 | /** 64 | * 返回数据 65 | */ 66 | private String responseData; 67 | 68 | /** 69 | * 用户昵称 70 | */ 71 | private String nickname; 72 | 73 | /** 74 | * 用户登录ip 75 | */ 76 | private String ipAddr; 77 | 78 | /** 79 | * ip来源 80 | */ 81 | private String ipSource; 82 | 83 | /** 84 | * 创建时间 85 | */ 86 | private Date createTime; 87 | 88 | } 89 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/PageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 分页列表 11 | * @author 11921 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class PageDTO { 17 | 18 | /** 19 | * 分页列表 20 | */ 21 | private List recordList; 22 | 23 | /** 24 | * 总数 25 | */ 26 | private Integer count; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/RecallMessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-03-30 11 | **/ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Builder 16 | public class RecallMessageDTO { 17 | 18 | /** 19 | * 消息id 20 | */ 21 | private Integer id; 22 | 23 | /** 24 | * 是否为语音 25 | */ 26 | private Boolean isVoice; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ReplyCountDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 回复数量 10 | * @author 11921 11 | */ 12 | @Data 13 | @Builder 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class ReplyCountDTO { 17 | 18 | /** 19 | * 评论id 20 | */ 21 | private Integer commentId; 22 | 23 | /** 24 | * 回复数量 25 | */ 26 | private Integer replyCount; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ReplyDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 回复列表 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class ReplyDTO { 19 | 20 | /** 21 | * 评论id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 父评论id 27 | */ 28 | private Integer parentId; 29 | 30 | /** 31 | * 用户id 32 | */ 33 | private Integer userId; 34 | 35 | /** 36 | * 用户昵称 37 | */ 38 | private String nickname; 39 | 40 | /** 41 | * 用户头像 42 | */ 43 | private String avatar; 44 | 45 | /** 46 | * 个人网站 47 | */ 48 | private String webSite; 49 | 50 | /** 51 | * 被回复用户id 52 | */ 53 | private Integer replyId; 54 | 55 | /** 56 | * 被回复用户昵称 57 | */ 58 | private String replyNickname; 59 | 60 | /** 61 | * 被回复个人网站 62 | */ 63 | private String replyWebSite; 64 | 65 | /** 66 | * 评论内容 67 | */ 68 | private String commentContent; 69 | 70 | /** 71 | * 点赞数 72 | */ 73 | private Integer likeCount; 74 | 75 | /** 76 | * 评论时间 77 | */ 78 | private Date createTime; 79 | 80 | } 81 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/ResourceDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 权限DTO 13 | * @author: yezhiqiu 14 | * @date: 2021-01-22 15 | **/ 16 | @Data 17 | @Builder 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class ResourceDTO { 21 | 22 | /** 23 | * 权限id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 资源名 29 | */ 30 | private String resourceName; 31 | 32 | /** 33 | * 权限路径 34 | */ 35 | private String url; 36 | 37 | /** 38 | * 请求方式 39 | */ 40 | private String requestMethod; 41 | 42 | /** 43 | * 创建时间 44 | */ 45 | private Date createTime; 46 | 47 | /** 48 | * 是否禁用 49 | */ 50 | private Integer isDisable; 51 | 52 | /** 53 | * 是否匿名访问 54 | */ 55 | private Integer isAnonymous; 56 | 57 | /** 58 | * 权限列表 59 | */ 60 | private List children; 61 | 62 | } 63 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/RoleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | import java.util.List; 12 | 13 | /** 14 | * 角色DTO 15 | * @author: yezhiqiu 16 | * @date: 2021-01-22 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | public class RoleDTO { 23 | 24 | /** 25 | * 角色id 26 | */ 27 | private Integer id; 28 | 29 | /** 30 | * 角色名 31 | */ 32 | private String roleName; 33 | 34 | /** 35 | * 角色标签 36 | */ 37 | private String roleLabel; 38 | 39 | /** 40 | * 创建时间 41 | */ 42 | private Date createTime; 43 | 44 | /** 45 | * 是否禁用 46 | */ 47 | private Integer isDisable; 48 | 49 | /** 50 | * 资源id列表 51 | */ 52 | private List resourceIdList; 53 | 54 | /** 55 | * 菜单id列表 56 | */ 57 | private List menuIdList; 58 | 59 | } 60 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/TagDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | 10 | /** 11 | * 标签 12 | * @author 11921 13 | */ 14 | @Data 15 | @Builder 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class TagDTO { 19 | 20 | /** 21 | * id 22 | */ 23 | private Integer id; 24 | 25 | /** 26 | * 标签名 27 | */ 28 | private String tagName; 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UniqueViewDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * 访问量DTO 12 | * @author: yezhiqiu 13 | * @date: 2021-01-16 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | @Builder 19 | public class UniqueViewDTO { 20 | 21 | /** 22 | * 日期 23 | */ 24 | private String day; 25 | 26 | /** 27 | * 访问量 28 | */ 29 | private Integer viewsCount; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UrlRoleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2021-01-12 10 | **/ 11 | @Data 12 | public class UrlRoleDTO { 13 | 14 | /** 15 | * 资源id 16 | */ 17 | private Integer id; 18 | 19 | /** 20 | * 路径 21 | */ 22 | private String url; 23 | 24 | /** 25 | * 请求方式 26 | */ 27 | private String requestMethod; 28 | 29 | /** 30 | * 角色名 31 | */ 32 | private List roleList; 33 | 34 | /** 35 | * 是否匿名 36 | */ 37 | private Integer isAnonymous; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserBackDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 后台用户列表 13 | * 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class UserBackDTO { 21 | 22 | /** 23 | * id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 用户信息id 29 | */ 30 | private Integer userInfoId; 31 | 32 | /** 33 | * 头像 34 | */ 35 | private String avatar; 36 | 37 | /** 38 | * 昵称 39 | */ 40 | private String nickname; 41 | 42 | /** 43 | * 用户角色 44 | */ 45 | private List roleList; 46 | 47 | /** 48 | * 登录类型 49 | */ 50 | private Integer loginType; 51 | 52 | /** 53 | * 用户登录ip 54 | */ 55 | private String ipAddr; 56 | 57 | /** 58 | * ip来源 59 | */ 60 | private String ipSource; 61 | 62 | /** 63 | * 创建时间 64 | */ 65 | private Date createTime; 66 | 67 | /** 68 | * 最近登录时间 69 | */ 70 | private Date lastLoginTime; 71 | 72 | /** 73 | * 用户评论状态 74 | */ 75 | private Integer isDisable; 76 | 77 | /** 78 | * 状态 79 | */ 80 | private Integer status; 81 | 82 | } 83 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserLoginDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | import java.util.Set; 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2021-04-16 15 | **/ 16 | @Data 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | @Builder 20 | public class UserLoginDTO { 21 | 22 | /** 23 | * 用户账号id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 用户信息id 29 | */ 30 | private Integer userInfoId; 31 | 32 | /** 33 | * 邮箱号 34 | */ 35 | private String email; 36 | 37 | /** 38 | * 登录方式 39 | */ 40 | private Integer loginType; 41 | 42 | /** 43 | * 用户名 44 | */ 45 | private String username; 46 | 47 | /** 48 | * 用户昵称 49 | */ 50 | private String nickname; 51 | 52 | /** 53 | * 用户头像 54 | */ 55 | private String avatar; 56 | 57 | /** 58 | * 用户简介 59 | */ 60 | private String intro; 61 | 62 | /** 63 | * 个人网站 64 | */ 65 | private String webSite; 66 | 67 | /** 68 | * 点赞文章集合 69 | */ 70 | private Set articleLikeSet; 71 | 72 | /** 73 | * 点赞评论集合 74 | */ 75 | private Set commentLikeSet; 76 | 77 | /** 78 | * 用户登录ip 79 | */ 80 | private String ipAddr; 81 | 82 | /** 83 | * ip来源 84 | */ 85 | private String ipSource; 86 | 87 | /** 88 | * 最近登录时间 89 | */ 90 | private Date lastLoginTime; 91 | 92 | } 93 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserMenuDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | /** 12 | * 用户菜单DTO 13 | * @author: yezhiqiu 14 | * @date: 2021-01-26 15 | **/ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class UserMenuDTO { 21 | 22 | /** 23 | * 菜单名 24 | */ 25 | private String name; 26 | 27 | /** 28 | * 路径 29 | */ 30 | private String path; 31 | 32 | /** 33 | * 组件 34 | */ 35 | private String component; 36 | 37 | /** 38 | * icon 39 | */ 40 | private String icon; 41 | 42 | /** 43 | * 是否隐藏 44 | */ 45 | private Boolean hidden; 46 | 47 | /** 48 | * 子菜单列表 49 | */ 50 | private List children; 51 | 52 | } 53 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserOnlineDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.Date; 9 | 10 | 11 | /** 12 | * 在线用户DTO 13 | * @author: yezhiqiu 14 | * @date: 2021-02-04 15 | **/ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class UserOnlineDTO { 21 | 22 | /** 23 | * 用户信息id 24 | */ 25 | private Integer userInfoId; 26 | 27 | /** 28 | * 用户昵称 29 | */ 30 | private String nickname; 31 | 32 | /** 33 | * 用户头像 34 | */ 35 | private String avatar; 36 | 37 | /** 38 | * 用户登录ip 39 | */ 40 | private String ipAddr; 41 | 42 | /** 43 | * ip来源 44 | */ 45 | private String ipSource; 46 | 47 | /** 48 | * 浏览器 49 | */ 50 | private String browser; 51 | 52 | /** 53 | * 操作系统 54 | */ 55 | private String os; 56 | 57 | /** 58 | * 最近登录时间 59 | */ 60 | private Date lastLoginTime; 61 | 62 | } 63 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/UserRoleDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 用户角色选项DTO 10 | * @author: yezhiqiu 11 | * @date: 2021-01-14 12 | **/ 13 | @Data 14 | @Builder 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class UserRoleDTO { 18 | 19 | /** 20 | * 角色id 21 | */ 22 | private Integer id; 23 | 24 | /** 25 | * 角色名 26 | */ 27 | private String roleName; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/WebsocketMessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: yezhiqiu 10 | * @date: 2021-03-30 11 | **/ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Builder 16 | public class WebsocketMessageDTO { 17 | 18 | /** 19 | * 类型 20 | */ 21 | private Integer type; 22 | 23 | /** 24 | * 数据 25 | */ 26 | private Object data; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dto/labelOptionDTO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 角色选项DTO 12 | * 13 | * @author: yezhiqiu 14 | * @date: 2021-01-24 15 | **/ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class labelOptionDTO { 21 | 22 | /** 23 | * 选项id 24 | */ 25 | private Integer id; 26 | 27 | /** 28 | * 选项名 29 | */ 30 | private String label; 31 | 32 | /** 33 | * 子选项 34 | */ 35 | private List children; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Article.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.utils.UserUtil; 10 | import com.minzheng.blog.vo.ArticleVO; 11 | import lombok.AllArgsConstructor; 12 | import lombok.Builder; 13 | import lombok.Data; 14 | import lombok.NoArgsConstructor; 15 | import org.springframework.security.crypto.bcrypt.BCrypt; 16 | 17 | /** 18 | * 文章 19 | * 20 | * @author xiaojie 21 | * @since 2020-05-18 22 | */ 23 | @Data 24 | @Builder 25 | @AllArgsConstructor 26 | @NoArgsConstructor 27 | @TableName("tb_article") 28 | public class Article { 29 | 30 | /** 31 | * id 32 | */ 33 | @TableId(value = "id", type = IdType.AUTO) 34 | private Integer id; 35 | 36 | /** 37 | * 作者 38 | */ 39 | private Integer userId; 40 | 41 | /** 42 | * 文章分类 43 | */ 44 | private Integer categoryId; 45 | 46 | /** 47 | * 文章缩略图 48 | */ 49 | private String articleCover; 50 | 51 | /** 52 | * 标题 53 | */ 54 | private String articleTitle; 55 | 56 | /** 57 | * 内容 58 | */ 59 | private String articleContent; 60 | 61 | /** 62 | * 发表时间 63 | */ 64 | private Date createTime; 65 | 66 | /** 67 | * 更新时间 68 | */ 69 | private Date updateTime; 70 | 71 | /** 72 | * 是否置顶 73 | */ 74 | private Integer isTop; 75 | 76 | /** 77 | * 是否为草稿 78 | */ 79 | private Integer isDraft; 80 | 81 | /** 82 | * 状态码 83 | */ 84 | private Integer isDelete; 85 | 86 | 87 | } 88 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/ArticleTag.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.io.Serializable; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import lombok.*; 10 | import lombok.experimental.Accessors; 11 | 12 | /** 13 | * 标签 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_article_tag") 22 | public class ArticleTag { 23 | 24 | /** 25 | * id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 文章id 32 | */ 33 | private Integer articleId; 34 | 35 | /** 36 | * 标签id 37 | */ 38 | private Integer tagId; 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Category.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.time.LocalDateTime; 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | import com.baomidou.mybatisplus.annotation.TableName; 11 | import com.minzheng.blog.vo.CategoryVO; 12 | import lombok.*; 13 | import lombok.experimental.Accessors; 14 | 15 | /** 16 | * 分类 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_category") 26 | public class Category { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 分类名 36 | */ 37 | private String categoryName; 38 | 39 | /** 40 | * 创建时间 41 | */ 42 | private Date createTime; 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/ChatRecord.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-02-19 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_chat_record") 22 | public class ChatRecord { 23 | 24 | /** 25 | * 主键 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 用户id 32 | */ 33 | private Integer userId; 34 | 35 | /** 36 | * 用户昵称 37 | */ 38 | private String nickname; 39 | 40 | /** 41 | * 用户头像 42 | */ 43 | private String avatar; 44 | 45 | /** 46 | * 聊天内容 47 | */ 48 | private String content; 49 | 50 | /** 51 | * 类型 52 | */ 53 | private Integer type; 54 | 55 | /** 56 | * 创建时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 用户登录ip 62 | */ 63 | private String ipAddr; 64 | 65 | /** 66 | * ip来源 67 | */ 68 | private String ipSource; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Comment.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.utils.UserUtil; 10 | import com.minzheng.blog.vo.CommentVO; 11 | import lombok.AllArgsConstructor; 12 | import lombok.Builder; 13 | import lombok.Data; 14 | import lombok.NoArgsConstructor; 15 | 16 | /** 17 | * 评论 18 | * 19 | * @author xiaojie 20 | * @since 2020-05-18 21 | */ 22 | @Data 23 | @Builder 24 | @AllArgsConstructor 25 | @NoArgsConstructor 26 | @TableName("tb_comment") 27 | public class Comment { 28 | 29 | /** 30 | * id 31 | */ 32 | @TableId(value = "id", type = IdType.AUTO) 33 | private Integer id; 34 | 35 | /** 36 | * 评论用户Id 37 | */ 38 | private Integer userId; 39 | 40 | /** 41 | * 回复用户id 42 | */ 43 | private Integer replyId; 44 | 45 | /** 46 | * 评论文章id 47 | */ 48 | private Integer articleId; 49 | 50 | /** 51 | * 评论内容 52 | */ 53 | private String commentContent; 54 | 55 | /** 56 | * 评论时间 57 | */ 58 | private Date createTime; 59 | 60 | /** 61 | * 父评论id 62 | */ 63 | private Integer parentId; 64 | 65 | /** 66 | * 状态码 67 | */ 68 | private Integer isDelete; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/FriendLink.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.vo.FriendLinkVO; 10 | import lombok.AllArgsConstructor; 11 | import lombok.Builder; 12 | import lombok.Data; 13 | import lombok.NoArgsConstructor; 14 | 15 | /** 16 | * 友链列表 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_friend_link") 26 | public class FriendLink { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 链接名 36 | */ 37 | private String linkName; 38 | 39 | /** 40 | * 链接头像 41 | */ 42 | private String linkAvatar; 43 | 44 | /** 45 | * 链接地址 46 | */ 47 | private String linkAddress; 48 | 49 | /** 50 | * 介绍 51 | */ 52 | private String linkIntro; 53 | 54 | /** 55 | * 创建时间 56 | */ 57 | private Date createTime; 58 | 59 | 60 | } 61 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Menu.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-01-23 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_menu") 22 | public class Menu { 23 | 24 | /** 25 | * id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 菜单名 32 | */ 33 | private String name; 34 | 35 | /** 36 | * 路径 37 | */ 38 | private String path; 39 | 40 | /** 41 | * 组件 42 | */ 43 | private String component; 44 | 45 | /** 46 | * icon 47 | */ 48 | private String icon; 49 | 50 | /** 51 | * 创建时间 52 | */ 53 | private Date createTime; 54 | 55 | /** 56 | * 更新时间 57 | */ 58 | private Date updateTime; 59 | 60 | /** 61 | * 排序 62 | */ 63 | private Integer orderNum; 64 | 65 | /** 66 | * 父id 67 | */ 68 | private Integer parentId; 69 | 70 | /** 71 | * 是否禁用 72 | */ 73 | private Integer isDisable; 74 | 75 | /** 76 | * 是否隐藏 77 | */ 78 | private Integer isHidden; 79 | 80 | } 81 | 82 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Message.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import java.util.Date; 4 | 5 | import com.baomidou.mybatisplus.annotation.IdType; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import com.baomidou.mybatisplus.annotation.TableName; 8 | import com.minzheng.blog.vo.MessageVO; 9 | import lombok.AllArgsConstructor; 10 | import lombok.Builder; 11 | import lombok.Data; 12 | import lombok.NoArgsConstructor; 13 | 14 | /** 15 | * 留言 16 | * 17 | * @author xiaojie 18 | * @since 2020-05-18 19 | */ 20 | @Data 21 | @Builder 22 | @AllArgsConstructor 23 | @NoArgsConstructor 24 | @TableName("tb_message") 25 | public class Message { 26 | 27 | /** 28 | * 主键id 29 | */ 30 | @TableId(value = "id", type = IdType.AUTO) 31 | private Integer id; 32 | 33 | /** 34 | * 用户ip 35 | */ 36 | private String ipAddress; 37 | 38 | /** 39 | * 用户地址 40 | */ 41 | private String ipSource; 42 | 43 | /** 44 | * 昵称 45 | */ 46 | private String nickname; 47 | 48 | /** 49 | * 头像 50 | */ 51 | private String avatar; 52 | 53 | /** 54 | * 留言内容 55 | */ 56 | private String messageContent; 57 | 58 | /** 59 | * 弹幕速度 60 | */ 61 | private Integer time; 62 | 63 | /** 64 | * 留言时间 65 | */ 66 | private Date createTime; 67 | 68 | } 69 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/OperationLog.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-01-31 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_operation_log") 22 | public class OperationLog { 23 | 24 | /** 25 | * 日志id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 操作模块 32 | */ 33 | private String optModule; 34 | 35 | /** 36 | * 操作路径 37 | */ 38 | private String optUrl; 39 | 40 | /** 41 | * 操作类型 42 | */ 43 | private String optType; 44 | 45 | /** 46 | * 操作方法 47 | */ 48 | private String optMethod; 49 | 50 | /** 51 | * 操作描述 52 | */ 53 | private String optDesc; 54 | 55 | /** 56 | * 请求方式 57 | */ 58 | private String requestMethod; 59 | 60 | /** 61 | * 请求参数 62 | */ 63 | private String requestParam; 64 | 65 | /** 66 | * 返回数据 67 | */ 68 | private String responseData; 69 | 70 | /** 71 | * 用户id 72 | */ 73 | private Integer userId; 74 | 75 | /** 76 | * 用户昵称 77 | */ 78 | private String nickname; 79 | 80 | /** 81 | * 用户登录ip 82 | */ 83 | private String ipAddr; 84 | 85 | /** 86 | * ip来源 87 | */ 88 | private String ipSource; 89 | 90 | /** 91 | * 创建时间 92 | */ 93 | private Date createTime; 94 | } 95 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Resource.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * 权限表 15 | * @author: yezhiqiu 16 | * @date: 2020-12-27 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @TableName("tb_resource") 23 | public class Resource { 24 | /** 25 | * 权限id 26 | */ 27 | @TableId(value = "id", type = IdType.AUTO) 28 | private Integer id; 29 | 30 | /** 31 | * 权限名 32 | */ 33 | private String resourceName; 34 | 35 | /** 36 | * 权限路径 37 | */ 38 | private String url; 39 | 40 | /** 41 | * 请求方式 42 | */ 43 | private String requestMethod; 44 | 45 | /** 46 | * 父权限id 47 | */ 48 | private Integer parentId; 49 | 50 | /** 51 | * 创建时间 52 | */ 53 | private Date createTime; 54 | 55 | /** 56 | * 更新时间 57 | */ 58 | private Date updateTime; 59 | 60 | /** 61 | * 是否禁用 62 | */ 63 | private Integer isDisable; 64 | 65 | /** 66 | * 是否匿名访问 67 | */ 68 | private Integer isAnonymous; 69 | 70 | } 71 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Role.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * 角色表 15 | * 16 | * @author: yezhiqiu 17 | * @date: 2020-12-27 18 | **/ 19 | @Data 20 | @Builder 21 | @AllArgsConstructor 22 | @NoArgsConstructor 23 | @TableName("tb_role") 24 | public class Role { 25 | 26 | /** 27 | * 角色id 28 | */ 29 | @TableId(value = "id", type = IdType.AUTO) 30 | private Integer id; 31 | 32 | /** 33 | * 角色名 34 | */ 35 | private String roleName; 36 | 37 | /** 38 | * 角色标签 39 | */ 40 | private String roleLabel; 41 | 42 | /** 43 | * 创建时间 44 | */ 45 | private Date createTime; 46 | 47 | /** 48 | * 更新时间 49 | */ 50 | private Date updateTime; 51 | 52 | /** 53 | * 是否禁用 54 | */ 55 | private Integer isDisable; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/RoleMenu.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | /** 12 | * @author: yezhiqiu 13 | * @date: 2020-12-27 14 | **/ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | @TableName("tb_role_menu") 20 | public class RoleMenu { 21 | 22 | /** 23 | * 主键id 24 | */ 25 | @TableId(value = "id", type = IdType.AUTO) 26 | private Integer id; 27 | 28 | /** 29 | * 角色id 30 | */ 31 | private Integer roleId; 32 | 33 | /** 34 | * 菜单id 35 | */ 36 | private Integer menuId; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/RoleResource.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_role_resource") 22 | public class RoleResource { 23 | /** 24 | * 主键id 25 | */ 26 | @TableId(value = "id", type = IdType.AUTO) 27 | private Integer id; 28 | 29 | /** 30 | * 角色id 31 | */ 32 | private Integer roleId; 33 | 34 | /** 35 | * 资源id 36 | */ 37 | private Integer resourceId; 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/Tag.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.vo.TagVO; 10 | import lombok.AllArgsConstructor; 11 | import lombok.Builder; 12 | import lombok.Data; 13 | import lombok.NoArgsConstructor; 14 | 15 | /** 16 | * 标签 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_tag") 26 | public class Tag { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 标签名 36 | */ 37 | private String tagName; 38 | 39 | /** 40 | * 创建时间 41 | */ 42 | private Date createTime; 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UniqueView.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.time.LocalDateTime; 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | import com.baomidou.mybatisplus.annotation.TableName; 11 | import lombok.*; 12 | import lombok.experimental.Accessors; 13 | 14 | /** 15 | * 网站访问量 16 | * 17 | * @author xiaojie 18 | * @since 2020-05-18 19 | */ 20 | @Data 21 | @Builder 22 | @AllArgsConstructor 23 | @NoArgsConstructor 24 | @TableName("tb_unique_view") 25 | public class UniqueView { 26 | 27 | /** 28 | * id 29 | */ 30 | @TableId(value = "id", type = IdType.AUTO) 31 | private Integer id; 32 | 33 | /** 34 | * 时间 35 | */ 36 | private Date createTime; 37 | 38 | /** 39 | * 访问量 40 | */ 41 | private Integer viewsCount; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UserAuth.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import java.util.Date; 4 | 5 | import com.baomidou.mybatisplus.annotation.IdType; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import com.baomidou.mybatisplus.annotation.TableName; 8 | import com.minzheng.blog.utils.UserUtil; 9 | import lombok.AllArgsConstructor; 10 | import lombok.Builder; 11 | import lombok.Data; 12 | import lombok.NoArgsConstructor; 13 | import org.springframework.security.crypto.bcrypt.BCrypt; 14 | 15 | /** 16 | * 用户账号 17 | * 18 | * @author xiaojie 19 | * @since 2020-05-18 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @TableName("tb_user_auth") 26 | public class UserAuth { 27 | 28 | /** 29 | * id 30 | */ 31 | @TableId(value = "id", type = IdType.AUTO) 32 | private Integer id; 33 | 34 | /** 35 | * 用户信息id 36 | */ 37 | private Integer userInfoId; 38 | 39 | /** 40 | * 用户名 41 | */ 42 | private String username; 43 | 44 | /** 45 | * 密码 46 | */ 47 | private String password; 48 | 49 | /** 50 | * 登录类型 51 | */ 52 | private Integer loginType; 53 | 54 | /** 55 | * 用户登录ip 56 | */ 57 | private String ipAddr; 58 | 59 | /** 60 | * ip来源 61 | */ 62 | private String ipSource; 63 | 64 | /** 65 | * 创建时间 66 | */ 67 | private Date createTime; 68 | 69 | /** 70 | * 最近登录时间 71 | */ 72 | private Date lastLoginTime; 73 | 74 | } 75 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UserInfo.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | 6 | import java.util.Date; 7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; 9 | import com.minzheng.blog.utils.UserUtil; 10 | import com.minzheng.blog.vo.UserInfoVO; 11 | import com.minzheng.blog.vo.UserRoleVO; 12 | import lombok.AllArgsConstructor; 13 | import lombok.Builder; 14 | import lombok.Data; 15 | import lombok.NoArgsConstructor; 16 | 17 | /** 18 | * 用户信息 19 | * 20 | * @author xiaojie 21 | * @since 2020-05-18 22 | */ 23 | @Data 24 | @Builder 25 | @AllArgsConstructor 26 | @NoArgsConstructor 27 | @TableName("tb_user_info") 28 | public class UserInfo { 29 | 30 | /** 31 | * 用户ID 32 | */ 33 | @TableId(value = "id", type = IdType.AUTO) 34 | private Integer id; 35 | 36 | /** 37 | * 邮箱号 38 | */ 39 | private String email; 40 | 41 | /** 42 | * 用户昵称 43 | */ 44 | private String nickname; 45 | 46 | /** 47 | * 用户头像 48 | */ 49 | private String avatar; 50 | 51 | /** 52 | * 用户简介 53 | */ 54 | private String intro; 55 | 56 | /** 57 | * 个人网站 58 | */ 59 | private String webSite; 60 | 61 | /** 62 | * 是否禁言 63 | */ 64 | private Integer isDisable; 65 | 66 | /** 67 | * 创建时间 68 | */ 69 | private Date createTime; 70 | 71 | /** 72 | * 更新时间 73 | */ 74 | private Date updateTime; 75 | 76 | } 77 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/entity/UserRole.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @TableName("tb_user_role") 22 | public class UserRole { 23 | /** 24 | * 主键id 25 | */ 26 | @TableId(value = "id", type = IdType.AUTO) 27 | private Integer id; 28 | 29 | /** 30 | * 用户id 31 | */ 32 | private Integer userId; 33 | 34 | /** 35 | * 角色id 36 | */ 37 | private Integer roleId; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/ChatTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 聊天类型枚举 8 | * 9 | * @author: yezhiqiu 10 | * @date: 2021-02-21 11 | **/ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum ChatTypeEnum { 15 | /** 16 | * 在线人数 17 | */ 18 | ONLINE_COUNT(1, "在线人数"), 19 | /** 20 | * 历史记录 21 | */ 22 | HISTORY_RECORD(2, "历史记录"), 23 | /** 24 | * 发送消息 25 | */ 26 | SEND_MESSAGE(3, "发送消息"), 27 | /** 28 | * 撤回消息 29 | */ 30 | RECALL_MESSAGE(4, "撤回消息"), 31 | /** 32 | * 语音消息 33 | */ 34 | VOICE_MESSAGE(5,"语音消息"), 35 | /** 36 | * 心跳消息 37 | */ 38 | HEART_BEAT(6,"心跳消息"); 39 | 40 | /** 41 | * 类型 42 | */ 43 | private final Integer type; 44 | 45 | /** 46 | * 描述 47 | */ 48 | private final String desc; 49 | 50 | /** 51 | * 根据类型获取枚举 52 | * @param type 类型 53 | * @return 枚举 54 | */ 55 | public static ChatTypeEnum getChatType(Integer type) { 56 | for (ChatTypeEnum chatType : ChatTypeEnum.values()) { 57 | if (chatType.getType().equals(type)) { 58 | return chatType; 59 | } 60 | } 61 | return null; 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/FilePathEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-01-29 9 | **/ 10 | @Getter 11 | @AllArgsConstructor 12 | public enum FilePathEnum { 13 | /** 14 | * 头像路径 15 | */ 16 | AVATAR("avatar/", "头像路径"), 17 | /** 18 | * 文章图片路径 19 | */ 20 | ARTICLE("articles/", "文章图片路径"), 21 | /** 22 | * 音频路径 23 | */ 24 | VOICE("voice/", "音频路径"); 25 | 26 | /** 27 | * 路径 28 | */ 29 | private final String path; 30 | 31 | /** 32 | * 描述 33 | */ 34 | private final String desc; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/LoginTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 登录方式枚举 8 | * 9 | * @author: yezhiqiu 10 | * @date: 2021-01-29 11 | **/ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum LoginTypeEnum { 15 | /** 16 | * 邮箱登录 17 | */ 18 | EMAIL(0, "邮箱登录"), 19 | /** 20 | * QQ登录 21 | */ 22 | QQ(1, "QQ登录"), 23 | /** 24 | * 微博登录 25 | */ 26 | WEIBO(2, "微博登录"); 27 | 28 | /** 29 | * 登录方式 30 | */ 31 | private final Integer type; 32 | 33 | /** 34 | * 描述 35 | */ 36 | private final String desc; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/OptLogTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 操作类型枚举 8 | * @author: yezhiqiu 9 | * @date: 2021-01-31 10 | **/ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum OptLogTypeEnum { 14 | /** 15 | * 新增 16 | */ 17 | ADD(1,"新增"), 18 | /** 19 | * 修改 20 | */ 21 | UPDATE(2,"修改"), 22 | /** 23 | * 删除 24 | */ 25 | REMOVE(3,"删除"); 26 | /** 27 | * 类型 28 | */ 29 | private final int type; 30 | 31 | /** 32 | * 描述 33 | */ 34 | private final String desc; 35 | } 36 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/enums/RoleEnum.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-01-11 9 | **/ 10 | @Getter 11 | @AllArgsConstructor 12 | public enum RoleEnum { 13 | /** 14 | * 管理员 15 | */ 16 | ADMIN(1, "管理员", "admin"), 17 | /** 18 | * 普通用户 19 | */ 20 | USER(2, "用户", "user"), 21 | /** 22 | * 测试账号 23 | */ 24 | TEST(3, "测试", "test"); 25 | 26 | /** 27 | * 角色id 28 | */ 29 | private final Integer roleId; 30 | 31 | /** 32 | * 描述 33 | */ 34 | private final String name; 35 | 36 | /** 37 | * 权限标签 38 | */ 39 | private final String label; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/exception/ServeException.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.exception; 2 | 3 | 4 | 5 | /** 6 | * 自定义异常类 7 | * @author 11921 8 | */ 9 | public class ServeException extends RuntimeException { 10 | public ServeException(String message) { 11 | super(message); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AccessDecisionManagerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import org.springframework.security.access.AccessDecisionManager; 4 | import org.springframework.security.access.AccessDeniedException; 5 | import org.springframework.security.access.ConfigAttribute; 6 | import org.springframework.security.authentication.InsufficientAuthenticationException; 7 | import org.springframework.security.core.Authentication; 8 | import org.springframework.security.core.GrantedAuthority; 9 | import org.springframework.stereotype.Component; 10 | 11 | import java.util.Collection; 12 | import java.util.List; 13 | import java.util.stream.Collectors; 14 | 15 | /** 16 | * @author: yezhiqiu 17 | * @date: 2021-01-06 18 | **/ 19 | @Component 20 | public class AccessDecisionManagerImpl implements AccessDecisionManager { 21 | @Override 22 | public void decide(Authentication authentication, Object o, Collection collection) throws AccessDeniedException, InsufficientAuthenticationException { 23 | // 获取用户权限列表 24 | List permissionList = authentication.getAuthorities() 25 | .stream() 26 | .map(GrantedAuthority::getAuthority) 27 | .collect(Collectors.toList()); 28 | for (ConfigAttribute item : collection) { 29 | if (permissionList.contains(item.getAttribute())) { 30 | return; 31 | } 32 | } 33 | throw new AccessDeniedException("没有操作权限"); 34 | } 35 | 36 | @Override 37 | public boolean supports(ConfigAttribute configAttribute) { 38 | return true; 39 | } 40 | 41 | @Override 42 | public boolean supports(Class> aClass) { 43 | return true; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AccessDeniedHandlerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | 5 | import com.minzheng.blog.vo.Result; 6 | import com.minzheng.blog.constant.StatusConst; 7 | import org.springframework.security.access.AccessDeniedException; 8 | import org.springframework.security.web.access.AccessDeniedHandler; 9 | import org.springframework.stereotype.Component; 10 | 11 | import javax.servlet.ServletException; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | 16 | /** 17 | * 用户权限处理 18 | * @author 11921 19 | */ 20 | @Component 21 | public class AccessDeniedHandlerImpl implements AccessDeniedHandler { 22 | 23 | @Override 24 | public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException, ServletException { 25 | httpServletResponse.setContentType("application/json;charset=utf-8"); 26 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(false, StatusConst.AUTHORIZED,"没有操作权限"))); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AuthenticationEntryPointImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.vo.Result; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import org.springframework.security.core.AuthenticationException; 7 | import org.springframework.security.web.AuthenticationEntryPoint; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | 15 | /** 16 | * 用户未登录处理 17 | * 18 | * @author 11921 19 | */ 20 | @Component 21 | public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint { 22 | 23 | @Override 24 | public void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException { 25 | httpServletResponse.setContentType("application/json;charset=utf-8"); 26 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(false, StatusConst.NOT_LOGIN, "请登录"))); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/AuthenticationFailHandlerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.vo.Result; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import org.springframework.security.core.AuthenticationException; 7 | import org.springframework.security.web.authentication.AuthenticationFailureHandler; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.http.HttpServletRequest; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.io.IOException; 13 | 14 | /** 15 | * 登录失败处理 16 | * @author 11921 17 | */ 18 | @Component 19 | public class AuthenticationFailHandlerImpl implements AuthenticationFailureHandler { 20 | @Override 21 | public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException { 22 | httpServletResponse.setContentType("application/json;charset=UTF-8"); 23 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(false, StatusConst.ERROR,e.getMessage()))); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/EmailReceiver.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.dto.EmailDTO; 5 | import org.springframework.amqp.rabbit.annotation.RabbitHandler; 6 | import org.springframework.amqp.rabbit.annotation.RabbitListener; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.beans.factory.annotation.Value; 9 | import org.springframework.mail.SimpleMailMessage; 10 | import org.springframework.mail.javamail.JavaMailSender; 11 | import org.springframework.stereotype.Component; 12 | 13 | 14 | import static com.minzheng.blog.constant.MQPrefixConst.EMAIL_QUEUE; 15 | 16 | /** 17 | * 通知邮箱 18 | * 19 | * @author: yezhiqiu 20 | * @date: 2021-04-16 21 | **/ 22 | @Component 23 | @RabbitListener(queues = EMAIL_QUEUE) 24 | public class EmailReceiver { 25 | 26 | /** 27 | * 邮箱号 28 | */ 29 | @Value("${spring.mail.username}") 30 | private String email; 31 | 32 | @Autowired 33 | private JavaMailSender javaMailSender; 34 | 35 | @RabbitHandler 36 | public void process(byte[] data) { 37 | EmailDTO emailDTO = JSON.parseObject(new String(data), EmailDTO.class); 38 | SimpleMailMessage message = new SimpleMailMessage(); 39 | message.setFrom(email); 40 | message.setTo(emailDTO.getEmail()); 41 | message.setSubject(emailDTO.getSubject()); 42 | message.setText(emailDTO.getContent()); 43 | javaMailSender.send(message); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/LogoutSuccessHandlerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.minzheng.blog.vo.Result; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import org.springframework.security.core.Authentication; 7 | import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | 15 | /** 16 | * 注销处理 17 | * @author 11921 18 | */ 19 | @Component 20 | public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler { 21 | @Override 22 | public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { 23 | httpServletResponse.setContentType("application/json;charset=UTF-8"); 24 | httpServletResponse.getWriter().write(JSON.toJSONString(new Result(true, StatusConst.OK,"注销成功"))); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/handler/ServletRequestListenerImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.handler; 2 | 3 | 4 | import com.minzheng.blog.utils.IpUtil; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.data.redis.core.RedisTemplate; 7 | import org.springframework.scheduling.annotation.Scheduled; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.servlet.ServletRequestEvent; 11 | import javax.servlet.ServletRequestListener; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpSession; 14 | 15 | import static com.minzheng.blog.constant.RedisPrefixConst.BLOG_VIEWS_COUNT; 16 | import static com.minzheng.blog.constant.RedisPrefixConst.IP_SET; 17 | 18 | 19 | /** 20 | * request监听 21 | * 22 | * @author 11921 23 | */ 24 | @Component 25 | public class ServletRequestListenerImpl implements ServletRequestListener { 26 | @Autowired 27 | private RedisTemplate redisTemplate; 28 | 29 | @Override 30 | public void requestInitialized(ServletRequestEvent sre) { 31 | HttpServletRequest request = (HttpServletRequest) sre.getServletRequest(); 32 | HttpSession session = request.getSession(); 33 | String ip = (String) session.getAttribute("ip"); 34 | // 判断当前ip是否访问,增加访问量 35 | String ipAddr = IpUtil.getIpAddr(request); 36 | if (!ipAddr.equals(ip)) { 37 | session.setAttribute("ip", ipAddr); 38 | redisTemplate.boundValueOps(BLOG_VIEWS_COUNT).increment(1); 39 | } 40 | // 将ip存入redis,统计每日用户量 41 | redisTemplate.boundSetOps(IP_SET).add(ipAddr); 42 | } 43 | 44 | @Scheduled(cron = " 0 1 0 * * ?") 45 | private void clear() { 46 | //清空redis中的ip 47 | redisTemplate.delete(IP_SET); 48 | } 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/ArticleTagService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.entity.ArticleTag; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | * @author xiaojie 8 | * @since 2020-05-18 9 | */ 10 | public interface ArticleTagService extends IService { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/BlogInfoService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.BlogBackInfoDTO; 4 | import com.minzheng.blog.dto.BlogHomeInfoDTO; 5 | 6 | 7 | /** 8 | * 9 | * @author xiaojie 10 | * @since 2020-05-18 11 | */ 12 | public interface BlogInfoService { 13 | 14 | /** 15 | * 获取首页数据 16 | * @return 博客首页信息 17 | */ 18 | BlogHomeInfoDTO getBlogInfo(); 19 | 20 | /** 21 | * 获取后台首页数据 22 | * @return 博客后台信息 23 | */ 24 | BlogBackInfoDTO getBlogBackInfo(); 25 | 26 | /** 27 | * 获取关于我内容 28 | * @return 关于我内容 29 | */ 30 | String getAbout(); 31 | 32 | /** 33 | * 修改关于我内容 34 | * @param aboutContent 关于我内容 35 | */ 36 | void updateAbout(String aboutContent); 37 | 38 | /** 39 | * 修改公告 40 | * @param notice 公告 41 | */ 42 | void updateNotice(String notice); 43 | 44 | /** 45 | * 后台查看公告 46 | * @return 公告 47 | */ 48 | String getNotice(); 49 | 50 | } 51 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/CategoryService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.CategoryDTO; 4 | import com.minzheng.blog.dto.PageDTO; 5 | import com.minzheng.blog.entity.Category; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | import com.minzheng.blog.vo.CategoryVO; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | 10 | import java.util.List; 11 | 12 | 13 | /** 14 | * @author xiaojie 15 | * @date 2020-05-16 16 | */ 17 | public interface CategoryService extends IService { 18 | 19 | /** 20 | * 查询分类列表 21 | * 22 | * @return 分类列表 23 | */ 24 | PageDTO listCategories(); 25 | 26 | /** 27 | * 查询后台分类 28 | * 29 | * @param conditionVO 条件 30 | * @return 分类列表 31 | */ 32 | PageDTO listCategoryBackDTO(ConditionVO conditionVO); 33 | 34 | /** 35 | * 删除分类 36 | * 37 | * @param categoryIdList 分类id集合 38 | */ 39 | void deleteCategory(List categoryIdList); 40 | 41 | /** 42 | * 添加或修改分类 43 | * @param categoryVO 分类 44 | */ 45 | void saveOrUpdateCategory(CategoryVO categoryVO); 46 | 47 | } -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/ChatRecordService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.ChatRecord; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-02-19 9 | **/ 10 | public interface ChatRecordService extends IService { 11 | 12 | /** 13 | * 删除7天前的聊天记录 14 | */ 15 | void deleteChartRecord(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/CommentService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.CommentBackDTO; 4 | import com.minzheng.blog.dto.CommentDTO; 5 | import com.minzheng.blog.dto.PageDTO; 6 | import com.minzheng.blog.dto.ReplyDTO; 7 | import com.minzheng.blog.entity.Comment; 8 | import com.baomidou.mybatisplus.extension.service.IService; 9 | import com.minzheng.blog.vo.CommentVO; 10 | import com.minzheng.blog.vo.ConditionVO; 11 | import com.minzheng.blog.vo.DeleteVO; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * 17 | * @author xiaojie 18 | * @since 2020-05-18 19 | */ 20 | public interface CommentService extends IService { 21 | 22 | /** 23 | * 查看评论 24 | * 25 | * @param articleId 文章id 26 | * @param current 当前页码 27 | * @return CommentListDTO 28 | */ 29 | PageDTO listComments(Integer articleId, Long current); 30 | 31 | /** 32 | * 查看评论下的回复 33 | * 34 | * @param commentId 评论id 35 | * @param current 当前页码 36 | * @return 回复列表 37 | */ 38 | List listRepliesByCommentId(Integer commentId, Long current); 39 | 40 | /** 41 | * 添加评论 42 | * 43 | * @param commentVO 评论对象 44 | */ 45 | void saveComment(CommentVO commentVO); 46 | 47 | /** 48 | * 点赞评论 49 | * 50 | * @param commentId 评论id 51 | */ 52 | void saveCommentLike(Integer commentId); 53 | 54 | /** 55 | * 恢复或删除评论 56 | * 57 | * @param deleteVO 逻辑删除对象 58 | */ 59 | void updateCommentDelete(DeleteVO deleteVO); 60 | 61 | /** 62 | * 查询后台评论 63 | * 64 | * @param condition 条件 65 | * @return 评论列表 66 | */ 67 | PageDTO listCommentBackDTO(ConditionVO condition); 68 | 69 | } 70 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/FriendLinkService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.FriendLinkBackDTO; 4 | import com.minzheng.blog.dto.FriendLinkDTO; 5 | import com.minzheng.blog.dto.PageDTO; 6 | import com.minzheng.blog.entity.FriendLink; 7 | import com.baomidou.mybatisplus.extension.service.IService; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.FriendLinkVO; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface FriendLinkService extends IService { 18 | 19 | /** 20 | * 查看友链列表 21 | * 22 | * @return 友链列表 23 | */ 24 | List listFriendLinks(); 25 | 26 | /** 27 | * 查看后台友链列表 28 | * 29 | * @param condition 条件 30 | * @return 友链列表 31 | */ 32 | PageDTO listFriendLinkDTO(ConditionVO condition); 33 | 34 | /** 35 | * 保存或更新友链 36 | * @param friendLinkVO 友链 37 | */ 38 | void saveOrUpdateFriendLink(FriendLinkVO friendLinkVO); 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/MenuService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.MenuDTO; 5 | import com.minzheng.blog.dto.labelOptionDTO; 6 | import com.minzheng.blog.dto.UserMenuDTO; 7 | import com.minzheng.blog.entity.Menu; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2021-01-23 15 | **/ 16 | public interface MenuService extends IService { 17 | 18 | /** 19 | * 查看菜单列表 20 | * @param conditionVO 条件 21 | * @return 菜单列表 22 | */ 23 | List listMenus(ConditionVO conditionVO); 24 | 25 | /** 26 | * 查看角色菜单选项 27 | * @return 角色菜单选项 28 | */ 29 | List listMenuOptions(); 30 | 31 | /** 32 | * 查看用户菜单 33 | * @return 菜单列表 34 | */ 35 | List listUserMenus(); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/MessageService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.MessageBackDTO; 4 | import com.minzheng.blog.dto.PageDTO; 5 | import com.minzheng.blog.vo.ConditionVO; 6 | import com.minzheng.blog.vo.MessageVO; 7 | import com.minzheng.blog.dto.MessageDTO; 8 | import com.minzheng.blog.entity.Message; 9 | import com.baomidou.mybatisplus.extension.service.IService; 10 | import com.minzheng.blog.vo.DeleteVO; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * @author xiaojie 16 | * @since 2020-05-18 17 | */ 18 | public interface MessageService extends IService { 19 | 20 | /** 21 | * 添加留言弹幕 22 | * 23 | * @param messageVO 留言对象 24 | */ 25 | void saveMessage(MessageVO messageVO); 26 | 27 | /** 28 | * 查看留言弹幕 29 | * 30 | * @return 留言列表 31 | */ 32 | List listMessages(); 33 | 34 | /** 35 | * 查看后台留言 36 | * 37 | * @param condition 条件 38 | * @return 留言列表 39 | */ 40 | PageDTO listMessageBackDTO(ConditionVO condition); 41 | 42 | } 43 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/OperationLogService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.OperationLogDTO; 5 | import com.minzheng.blog.dto.PageDTO; 6 | import com.minzheng.blog.entity.OperationLog; 7 | import com.minzheng.blog.vo.ConditionVO; 8 | 9 | /** 10 | * @author: yezhiqiu 11 | * @date: 2021-01-31 12 | **/ 13 | public interface OperationLogService extends IService { 14 | 15 | /** 16 | * 查询日志列表 17 | * 18 | * @param conditionVO 条件 19 | * @return 日志列表 20 | */ 21 | PageDTO listOperationLogs(ConditionVO conditionVO); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/ResourceService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.ResourceDTO; 5 | import com.minzheng.blog.dto.labelOptionDTO; 6 | import com.minzheng.blog.entity.Resource; 7 | import com.minzheng.blog.vo.ResourceVO; 8 | 9 | import java.util.List; 10 | 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2020-12-27 15 | **/ 16 | public interface ResourceService extends IService { 17 | 18 | /** 19 | * 导入swagger权限 20 | */ 21 | void importSwagger(); 22 | 23 | /** 24 | * 添加或修改资源 25 | * @param resourceVO 资源对象 26 | */ 27 | void saveOrUpdateResource(ResourceVO resourceVO); 28 | 29 | /*** 30 | * 删除资源 31 | * @param resourceIdList 资源id列表 32 | */ 33 | void deleteResources(List resourceIdList); 34 | 35 | /** 36 | * 查看资源列表 37 | * 38 | * @return 资源列表 39 | */ 40 | List listResources(); 41 | 42 | /** 43 | * 查看资源选项 44 | * @return 资源选项 45 | */ 46 | List listResourceOption(); 47 | 48 | } 49 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/RoleMenuService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.RoleMenu; 5 | import com.minzheng.blog.entity.RoleResource; 6 | 7 | /** 8 | * @author: yezhiqiu 9 | * @date: 2020-12-27 10 | **/ 11 | public interface RoleMenuService extends IService { 12 | 13 | 14 | } 15 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/RoleResourceService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.RoleResource; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2020-12-27 9 | **/ 10 | public interface RoleResourceService extends IService { 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.dto.PageDTO; 5 | import com.minzheng.blog.dto.RoleDTO; 6 | import com.minzheng.blog.dto.UserRoleDTO; 7 | import com.minzheng.blog.entity.Role; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.RoleVO; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2020-12-27 16 | **/ 17 | public interface RoleService extends IService { 18 | 19 | /** 20 | * 获取用户角色选项 21 | * 22 | * @return 角色 23 | */ 24 | List listUserRoles(); 25 | 26 | /** 27 | * 查询角色列表 28 | * 29 | * @param conditionVO 条件 30 | * @return 角色列表 31 | */ 32 | PageDTO listRoles(ConditionVO conditionVO); 33 | 34 | /** 35 | * 保存或更新角色 36 | * 37 | * @param roleVO 角色 38 | */ 39 | void saveOrUpdateRole(RoleVO roleVO); 40 | 41 | /** 42 | * 删除角色 43 | * @param roleIdList 角色id列表 44 | */ 45 | void deleteRoles(List roleIdList); 46 | 47 | } 48 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/TagService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.PageDTO; 4 | import com.minzheng.blog.dto.TagDTO; 5 | import com.minzheng.blog.entity.Tag; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | import com.minzheng.blog.vo.ConditionVO; 8 | import com.minzheng.blog.vo.TagVO; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface TagService extends IService { 18 | 19 | /** 20 | * 查询标签列表 21 | * 22 | * @return 标签列表 23 | */ 24 | PageDTO listTags(); 25 | 26 | /** 27 | * 查询后台标签 28 | * 29 | * @param condition 条件 30 | * @return 标签列表 31 | */ 32 | PageDTO listTagBackDTO(ConditionVO condition); 33 | 34 | /** 35 | * 删除标签 36 | * 37 | * @param tagIdList 标签id集合 38 | */ 39 | void deleteTag(List tagIdList); 40 | 41 | /** 42 | * 保存或更新标签 43 | * @param tagVO 标签 44 | */ 45 | void saveOrUpdateTag(TagVO tagVO); 46 | 47 | } 48 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UniqueViewService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.UniqueViewDTO; 4 | import com.minzheng.blog.entity.UniqueView; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author xiaojie 11 | * @since 2020-05-18 12 | */ 13 | public interface UniqueViewService extends IService { 14 | 15 | /** 16 | * 统计每日用户量 17 | */ 18 | void saveUniqueView(); 19 | 20 | /** 21 | * 获取7天用户量统计 22 | * @return 用户量 23 | */ 24 | List listUniqueViews(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UserAuthService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.PageDTO; 4 | import com.minzheng.blog.dto.UserBackDTO; 5 | import com.minzheng.blog.dto.UserInfoDTO; 6 | import com.minzheng.blog.entity.UserAuth; 7 | import com.baomidou.mybatisplus.extension.service.IService; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.PasswordVO; 10 | import com.minzheng.blog.vo.UserVO; 11 | 12 | 13 | /** 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface UserAuthService extends IService { 18 | 19 | /** 20 | * 发送邮箱验证码 21 | * 22 | * @param username 邮箱号 23 | */ 24 | void sendCode(String username); 25 | 26 | /** 27 | * 用户注册 28 | * 29 | * @param user 用户对象 30 | */ 31 | void saveUser(UserVO user); 32 | 33 | /** 34 | * qq登录 35 | * 36 | * @param openId qq openId 37 | * @param accessToken qq token 38 | * @return 用户登录信息 39 | */ 40 | UserInfoDTO qqLogin(String openId, String accessToken); 41 | 42 | /** 43 | * 微博登录 44 | * 45 | * @param code 微博code 46 | * @return 用户登录信息 47 | */ 48 | UserInfoDTO weiBoLogin(String code); 49 | 50 | /** 51 | * 修改密码 52 | * 53 | * @param user 用户对象 54 | */ 55 | void updatePassword(UserVO user); 56 | 57 | /** 58 | * 修改管理员密码 59 | * 60 | * @param passwordVO 密码对象 61 | */ 62 | void updateAdminPassword(PasswordVO passwordVO); 63 | 64 | /** 65 | * 查询后台用户列表 66 | * 67 | * @param condition 条件 68 | * @return 用户列表 69 | */ 70 | PageDTO listUserBackDTO(ConditionVO condition); 71 | 72 | } 73 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UserInfoService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.minzheng.blog.dto.PageDTO; 4 | import com.minzheng.blog.dto.UserInfoDTO; 5 | import com.minzheng.blog.dto.UserOnlineDTO; 6 | import com.minzheng.blog.entity.UserInfo; 7 | import com.baomidou.mybatisplus.extension.service.IService; 8 | import com.minzheng.blog.vo.*; 9 | import org.springframework.web.multipart.MultipartFile; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author xiaojie 15 | * @since 2020-05-18 16 | */ 17 | public interface UserInfoService extends IService { 18 | 19 | /** 20 | * 修改用户资料 21 | * 22 | * @param userInfoVO 用户资料 23 | */ 24 | void updateUserInfo(UserInfoVO userInfoVO); 25 | 26 | /** 27 | * 修改用户头像 28 | * 29 | * @param file 头像图片 30 | * @return 头像OSS地址 31 | */ 32 | String updateUserAvatar(MultipartFile file); 33 | 34 | /** 35 | * 绑定用户邮箱 36 | * @param emailVO 邮箱 37 | */ 38 | void saveUserEmail(EmailVO emailVO); 39 | 40 | /** 41 | * 修改用户权限 42 | * 43 | * @param userRoleVO 用户权限 44 | */ 45 | void updateUserRole(UserRoleVO userRoleVO); 46 | 47 | /** 48 | * 修改用户禁用状态 49 | * 50 | * @param userInfoId 用户信息id 51 | * @param isDisable 禁用状态 52 | */ 53 | void updateUserDisable(Integer userInfoId, Integer isDisable); 54 | 55 | /** 56 | * 查看在线用户列表 57 | * @param conditionVO 条件 58 | * @return 在线用户列表 59 | */ 60 | PageDTO listOnlineUsers(ConditionVO conditionVO); 61 | 62 | /** 63 | * 下线用户 64 | * @param userInfoId 用户信息id 65 | */ 66 | void removeOnlineUser(Integer userInfoId); 67 | 68 | } 69 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/UserRoleService.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.minzheng.blog.entity.UserRole; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2020-12-27 9 | **/ 10 | public interface UserRoleService extends IService { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/ArticleTagServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.minzheng.blog.entity.ArticleTag; 4 | import com.minzheng.blog.dao.ArticleTagDao; 5 | import com.minzheng.blog.service.ArticleTagService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * 11 | * @author xiaojie 12 | * @since 2020-05-18 13 | */ 14 | @Service 15 | public class ArticleTagServiceImpl extends ServiceImpl implements ArticleTagService { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/ChatRecordServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.minzheng.blog.dao.ChatRecordDao; 6 | import com.minzheng.blog.entity.ChatRecord; 7 | import com.minzheng.blog.service.ChatRecordService; 8 | import com.minzheng.blog.utils.DateUtil; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | 12 | import java.util.Date; 13 | 14 | /** 15 | * @author: yezhiqiu 16 | * @date: 2021-02-19 17 | **/ 18 | @Service 19 | public class ChatRecordServiceImpl extends ServiceImpl implements ChatRecordService { 20 | @Autowired 21 | private ChatRecordDao chatRecordDao; 22 | 23 | @Override 24 | public void deleteChartRecord() { 25 | String time = DateUtil.getMinTime(DateUtil.getSomeDay(new Date(), -7)); 26 | chatRecordDao.delete(new LambdaQueryWrapper() 27 | .le(ChatRecord::getCreateTime,time)); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/OperationLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import com.minzheng.blog.dao.OperationLogDao; 8 | import com.minzheng.blog.dto.OperationLogDTO; 9 | import com.minzheng.blog.dto.PageDTO; 10 | import com.minzheng.blog.entity.OperationLog; 11 | import com.minzheng.blog.service.OperationLogService; 12 | import com.minzheng.blog.utils.BeanCopyUtil; 13 | import com.minzheng.blog.vo.ConditionVO; 14 | import org.springframework.stereotype.Service; 15 | 16 | import java.util.List; 17 | import java.util.Objects; 18 | 19 | /** 20 | * @author: yezhiqiu 21 | * @date: 2021-01-31 22 | **/ 23 | @Service 24 | public class OperationLogServiceImpl extends ServiceImpl implements OperationLogService { 25 | 26 | @Override 27 | public PageDTO listOperationLogs(ConditionVO conditionVO) { 28 | Page page = new Page<>(conditionVO.getCurrent(), conditionVO.getSize()); 29 | // 查询日志列表 30 | Page operationLogPage = this.page(page, new LambdaQueryWrapper() 31 | .like(StringUtils.isNotBlank(conditionVO.getKeywords()), OperationLog::getOptModule, conditionVO.getKeywords()) 32 | .or() 33 | .like(StringUtils.isNotBlank(conditionVO.getKeywords()), OperationLog::getOptDesc, conditionVO.getKeywords()) 34 | .gt(Objects.nonNull(conditionVO.getStartTime()), OperationLog::getCreateTime, conditionVO.getStartTime()) 35 | .lt(Objects.nonNull(conditionVO.getEndTime()), OperationLog::getCreateTime, conditionVO.getEndTime()) 36 | .orderByDesc(OperationLog::getId)); 37 | List operationLogDTOList = BeanCopyUtil.copyList(operationLogPage.getRecords(), OperationLogDTO.class); 38 | return new PageDTO<>(operationLogDTOList, (int) operationLogPage.getTotal()); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/RoleMenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.minzheng.blog.dao.RoleMenuDao; 5 | import com.minzheng.blog.dao.RoleResourceDao; 6 | import com.minzheng.blog.entity.RoleMenu; 7 | import com.minzheng.blog.entity.RoleResource; 8 | import com.minzheng.blog.service.RoleMenuService; 9 | import com.minzheng.blog.service.RoleResourceService; 10 | import org.springframework.stereotype.Service; 11 | 12 | /** 13 | * @author: yezhiqiu 14 | * @date: 2020-12-27 15 | **/ 16 | @Service 17 | public class RoleMenuServiceImpl extends ServiceImpl implements RoleMenuService { 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/RoleResourceServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.minzheng.blog.dao.RoleResourceDao; 5 | import com.minzheng.blog.entity.RoleResource; 6 | import com.minzheng.blog.service.RoleResourceService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author: yezhiqiu 11 | * @date: 2020-12-27 12 | **/ 13 | @Service 14 | public class RoleResourceServiceImpl extends ServiceImpl implements RoleResourceService { 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/UniqueViewServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | 4 | import com.minzheng.blog.dto.UniqueViewDTO; 5 | import com.minzheng.blog.entity.UniqueView; 6 | import com.minzheng.blog.dao.UniqueViewDao; 7 | import com.minzheng.blog.service.UniqueViewService; 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | import com.minzheng.blog.utils.DateUtil; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.data.redis.core.RedisTemplate; 12 | import org.springframework.scheduling.annotation.Scheduled; 13 | import org.springframework.stereotype.Service; 14 | 15 | import java.util.Date; 16 | import java.util.List; 17 | import java.util.Objects; 18 | 19 | /** 20 | * @author xiaojie 21 | * @since 2020-05-18 22 | */ 23 | @Service 24 | public class UniqueViewServiceImpl extends ServiceImpl implements UniqueViewService { 25 | @Autowired 26 | private RedisTemplate redisTemplate; 27 | @Autowired 28 | private UniqueViewDao uniqueViewDao; 29 | 30 | @Scheduled(cron = " 0 0 0 * * ?") 31 | @Override 32 | public void saveUniqueView() { 33 | // 获取每天用户量 34 | Long count = redisTemplate.boundSetOps("ip_set").size(); 35 | // 获取昨天日期插入数据 36 | UniqueView uniqueView = UniqueView.builder() 37 | .createTime(DateUtil.getSomeDay(new Date(), -1)) 38 | .viewsCount(Objects.nonNull(count) ? count.intValue() : 0).build(); 39 | uniqueViewDao.insert(uniqueView); 40 | } 41 | 42 | @Override 43 | public List listUniqueViews() { 44 | String startTime = DateUtil.getMinTime(DateUtil.getSomeDay(new Date(), -7)); 45 | String endTime = DateUtil.getMaxTime(new Date()); 46 | return uniqueViewDao.listUniqueViews(startTime, endTime); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/service/impl/UserRoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.minzheng.blog.dao.UserInfoDao; 5 | import com.minzheng.blog.dao.UserRoleDao; 6 | import com.minzheng.blog.entity.UserRole; 7 | import com.minzheng.blog.enums.RoleEnum; 8 | import com.minzheng.blog.service.UserRoleService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | 12 | import java.util.List; 13 | import java.util.stream.Collectors; 14 | 15 | /** 16 | * @author: yezhiqiu 17 | * @date: 2020-12-27 18 | **/ 19 | @Service 20 | public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/BeanCopyUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | /** 9 | * 复制对象或集合属性 10 | * @author 11921 11 | */ 12 | public class BeanCopyUtil { 13 | 14 | /** 15 | * 根据现有对象的属性创建目标对象,并赋值 16 | * 17 | * @param source 18 | * @param target 19 | * @param 20 | * @return 21 | * @throws Exception 22 | */ 23 | public static T copyObject(Object source, Class target) { 24 | T temp = null; 25 | try { 26 | temp = target.newInstance(); 27 | if (null != source) { 28 | org.springframework.beans.BeanUtils.copyProperties(source, temp); 29 | } 30 | } catch (Exception e) { 31 | e.printStackTrace(); 32 | } 33 | return temp; 34 | } 35 | 36 | /** 37 | * 拷贝集合 38 | * 39 | * @param source 40 | * @param target 41 | * @param 42 | * @param 43 | * @return 44 | */ 45 | public static List copyList(List source, Class target) { 46 | List list = new ArrayList<>(); 47 | if (null != source && source.size() > 0) { 48 | for (Object obj : source) { 49 | list.add(BeanCopyUtil.copyObject(obj, target)); 50 | } 51 | } 52 | return list; 53 | } 54 | 55 | 56 | } -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/CommonUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | /** 7 | * @author: yezhiqiu 8 | * @date: 2021-04-16 9 | **/ 10 | public class CommonUtil { 11 | 12 | /** 13 | * 检测邮箱是否合法 14 | * 15 | * @param username 用户名 16 | * @return 合法状态 17 | */ 18 | public static boolean checkEmail(String username) { 19 | String rule = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$"; 20 | //正则表达式的模式 编译正则表达式 21 | Pattern p = Pattern.compile(rule); 22 | //正则表达式的匹配器 23 | Matcher m = p.matcher(username); 24 | //进行正则匹配 25 | return m.matches(); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/HTMLUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | /** 4 | * @author 11921 5 | */ 6 | public class HTMLUtil { 7 | 8 | /** 9 | * 删除评论内容标签 10 | * 11 | * @param source 需要进行剔除HTML的文本 12 | * @return 过滤后的内容 13 | */ 14 | public static String deleteCommentTag(String source) { 15 | // 保留图片标签 16 | source = source.replaceAll("(?!<(img).*?>)<.*?>", ""); 17 | return deleteHMTLTag(source); 18 | } 19 | 20 | /** 21 | * 删除标签 22 | * 23 | * @param source 文本 24 | * @return 过滤后的文本 25 | */ 26 | private static String deleteHMTLTag(String source) { 27 | // 删除转义字符 28 | source = source.replaceAll("&.{2,6}?;", ""); 29 | // 删除script标签 30 | source = source.replaceAll("<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>", ""); 31 | // 删除style标签 32 | source = source.replaceAll("<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>", ""); 33 | return source; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/utils/WebSocketUtil.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.utils; 2 | 3 | import javax.websocket.RemoteEndpoint; 4 | import javax.websocket.Session; 5 | import java.lang.reflect.Field; 6 | import java.net.InetSocketAddress; 7 | 8 | /** 9 | * WebSocket工具类 10 | * @author: yezhiqiu 11 | * @date: 2021-02-20 12 | **/ 13 | public class WebSocketUtil { 14 | 15 | 16 | public static InetSocketAddress getRemoteAddress(Session session) { 17 | if (session == null) { 18 | return null; 19 | } 20 | RemoteEndpoint.Async async = session.getAsyncRemote(); 21 | return (InetSocketAddress) getFieldInstance(async, "base#socketWrapper#socket#sc#remoteAddress"); 22 | } 23 | 24 | private static Object getFieldInstance(Object obj, String fieldPath) { 25 | String[] fields = fieldPath.split("#"); 26 | for (String field : fields) { 27 | obj = getField(obj, obj.getClass(), field); 28 | if (obj == null) { 29 | return null; 30 | } 31 | } 32 | return obj; 33 | } 34 | 35 | private static Object getField(Object obj, Class> clazz, String fieldName) { 36 | for (; clazz != Object.class; clazz = clazz.getSuperclass()) { 37 | try { 38 | Field field; 39 | field = clazz.getDeclaredField(fieldName); 40 | field.setAccessible(true); 41 | return field.get(obj); 42 | } catch (Exception e) { 43 | } 44 | } 45 | return null; 46 | } 47 | 48 | 49 | } 50 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/ArticleVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | 4 | import com.minzheng.blog.entity.Article; 5 | import io.swagger.annotations.ApiModel; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.*; 8 | 9 | import javax.validation.constraints.NotBlank; 10 | import javax.validation.constraints.NotNull; 11 | import javax.validation.constraints.PositiveOrZero; 12 | import java.util.Date; 13 | import java.util.List; 14 | 15 | 16 | /** 17 | * 文章VO 18 | * 19 | * @author 11921 20 | */ 21 | @Data 22 | @Builder 23 | @AllArgsConstructor 24 | @NoArgsConstructor 25 | @ApiModel(description = "文章") 26 | public class ArticleVO { 27 | 28 | /** 29 | * 文章id 30 | */ 31 | @ApiModelProperty(name = "id", value = "文章id", dataType = "Integer") 32 | private Integer id; 33 | 34 | /** 35 | * 标题 36 | */ 37 | @NotBlank(message = "文章标题不能为空") 38 | @ApiModelProperty(name = "articleTitle", value = "文章标题", required = true, dataType = "String") 39 | private String articleTitle; 40 | 41 | /** 42 | * 内容 43 | */ 44 | @NotBlank(message = "文章内容不能为空") 45 | @ApiModelProperty(name = "articleContent", value = "文章内容", required = true, dataType = "String") 46 | private String articleContent; 47 | 48 | /** 49 | * 文章封面 50 | */ 51 | @ApiModelProperty(name = "articleCover", value = "文章缩略图", dataType = "String") 52 | private String articleCover; 53 | 54 | /** 55 | * 文章分类 56 | */ 57 | @ApiModelProperty(name = "categoryId", value = "文章分类", dataType = "Integer") 58 | private Integer categoryId; 59 | 60 | /** 61 | * 文章标签 62 | */ 63 | @ApiModelProperty(name = "tagIdList", value = "文章标签", dataType = "List") 64 | private List tagIdList; 65 | 66 | /** 67 | * 是否置顶 68 | */ 69 | @ApiModelProperty(name = "isTop", value = "是否置顶", dataType = "Integer") 70 | private Integer isTop; 71 | 72 | /** 73 | * 是否为草稿 74 | */ 75 | @ApiModelProperty(name = "isDraft", value = "是否为草稿", dataType = "Integer") 76 | private Integer isDraft; 77 | 78 | 79 | } 80 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/CategoryVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | 13 | /** 14 | * 分类VO 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "分类") 22 | public class CategoryVO { 23 | 24 | /** 25 | * id 26 | */ 27 | @ApiModelProperty(name = "id", value = "分类id", dataType = "Integer") 28 | private Integer id; 29 | 30 | /** 31 | * 分类名 32 | */ 33 | @NotBlank(message = "分类名不能为空") 34 | @ApiModelProperty(name = "categoryName", value = "分类名", required = true, dataType = "String") 35 | private String categoryName; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/CommentVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.Size; 12 | 13 | /** 14 | * @author 11921 15 | */ 16 | @Data 17 | @Builder 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | @ApiModel(description = "评论") 21 | public class CommentVO { 22 | 23 | /** 24 | * 回复用户id 25 | */ 26 | @ApiModelProperty(name = "replyId", value = "回复用户id", dataType = "Integer") 27 | private Integer replyId; 28 | 29 | /** 30 | * 评论文章id 31 | */ 32 | @ApiModelProperty(name = "articleId", value = "文章id", dataType = "Integer") 33 | private Integer articleId; 34 | 35 | /** 36 | * 评论内容 37 | */ 38 | @NotBlank(message = "评论内容不能为空") 39 | @ApiModelProperty(name = "commentContent", value = "评论内容", required = true, dataType = "String") 40 | private String commentContent; 41 | 42 | /** 43 | * 父评论id 44 | */ 45 | @ApiModelProperty(name = "parentId", value = "评论父id", dataType = "Integer") 46 | private Integer parentId; 47 | 48 | } 49 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/ConditionVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * 查询条件 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "查询条件") 22 | public class ConditionVO { 23 | 24 | /** 25 | * 分类id 26 | */ 27 | @ApiModelProperty(name = "categoryId", value = "分类id", dataType = "Integer") 28 | private Integer categoryId; 29 | 30 | /** 31 | * 标签id 32 | */ 33 | @ApiModelProperty(name = "tagId", value = "标签id", dataType = "Integer") 34 | private Integer tagId; 35 | 36 | /** 37 | * 当前页码 38 | */ 39 | @ApiModelProperty(name = "current", value = "当前页码", required = true, dataType = "Integer") 40 | private Integer current; 41 | 42 | /** 43 | * 显示数量 44 | */ 45 | @ApiModelProperty(name = "size", value = "显示数量", required = true, dataType = "Integer") 46 | private Integer size; 47 | 48 | /** 49 | * 搜索内容 50 | */ 51 | @ApiModelProperty(name = "keywords", value = "搜索内容", required = true, dataType = "String") 52 | private String keywords; 53 | 54 | /** 55 | * 状态值 56 | */ 57 | @ApiModelProperty(name = "isDelete", value = "是否删除", dataType = "Integer") 58 | private Integer isDelete; 59 | 60 | /** 61 | * 是否为草稿 62 | */ 63 | @ApiModelProperty(name = "isDraft", value = "草稿状态", dataType = "Integer") 64 | private Integer isDraft; 65 | 66 | /** 67 | * 开始时间 68 | */ 69 | @ApiModelProperty(name = "startTime", value = "开始时间", dataType = "Date") 70 | private Date startTime; 71 | 72 | /** 73 | * 结束时间 74 | */ 75 | @ApiModelProperty(name = "endTime", value = "结束时间", dataType = "Date") 76 | private Date endTime; 77 | 78 | } 79 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/DeleteVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author 11921 14 | */ 15 | @Data 16 | @Builder 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | @ApiModel(description = "逻辑删除") 20 | public class DeleteVO { 21 | 22 | /** 23 | * id列表 24 | */ 25 | @ApiModelProperty(name = "idList", value = "id列表", required = true, dataType = "List") 26 | private List idList; 27 | 28 | /** 29 | * 状态值 30 | */ 31 | @ApiModelProperty(name = "isDelete", value = "删除状态", required = true, dataType = "Integer") 32 | private Integer isDelete; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/EmailVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.Email; 11 | import javax.validation.constraints.NotBlank; 12 | 13 | /** 14 | * @author: yezhiqiu 15 | * @date: 2021-04-16 16 | **/ 17 | @Data 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | @Builder 21 | @ApiModel(description = "绑定邮箱") 22 | public class EmailVO { 23 | 24 | /** 25 | * 邮箱 26 | */ 27 | @NotBlank(message = "邮箱不能为空") 28 | @Email(message = "邮箱格式不正确") 29 | @ApiModelProperty(name = "email", value = "用户名", required = true, dataType = "String") 30 | private String email; 31 | 32 | /** 33 | * 验证码 34 | */ 35 | @NotBlank(message = "验证码不能为空") 36 | @ApiModelProperty(name = "code", value = "邮箱验证码", required = true, dataType = "String") 37 | private String code; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/FriendLinkVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | /** 13 | * 友链DTO 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "友链") 22 | public class FriendLinkVO { 23 | /** 24 | * id 25 | */ 26 | @ApiModelProperty(name = "categoryId", value = "友链id", dataType = "Integer") 27 | private Integer id; 28 | 29 | /** 30 | * 链接名 31 | */ 32 | @NotBlank(message = "链接名不能为空") 33 | @ApiModelProperty(name = "linkName", value = "友链名", dataType = "String", required = true) 34 | private String linkName; 35 | 36 | /** 37 | * 链接头像 38 | */ 39 | @NotBlank(message = "链接头像不能为空") 40 | @ApiModelProperty(name = "linkAvatar", value = "友链头像", dataType = "String", required = true) 41 | private String linkAvatar; 42 | 43 | /** 44 | * 链接地址 45 | */ 46 | @NotBlank(message = "链接地址不能为空") 47 | @ApiModelProperty(name = "linkAddress", value = "友链头像", dataType = "String", required = true) 48 | private String linkAddress; 49 | 50 | /** 51 | * 介绍 52 | */ 53 | @NotBlank(message = "链接介绍不能为空") 54 | @ApiModelProperty(name = "linkIntro", value = "友链头像", dataType = "String", required = true) 55 | private String linkIntro; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/MessageVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.NotNull; 12 | 13 | /** 14 | * 留言 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "留言") 22 | public class MessageVO { 23 | 24 | /** 25 | * 昵称 26 | */ 27 | @NotBlank(message = "昵称不能为空") 28 | @ApiModelProperty(name = "nickname", value = "昵称", required = true, dataType = "String") 29 | private String nickname; 30 | 31 | /** 32 | * 头像 33 | */ 34 | @NotBlank(message = "头像不能为空") 35 | @ApiModelProperty(name = "avatar", value = "头像", required = true, dataType = "String") 36 | private String avatar; 37 | 38 | /** 39 | * 留言内容 40 | */ 41 | @NotBlank(message = "留言内容不能为空") 42 | @ApiModelProperty(name = "messageContent", value = "留言内容", required = true, dataType = "String") 43 | private String messageContent; 44 | 45 | /** 46 | * 弹幕速度 47 | */ 48 | @NotNull(message = "弹幕速度不能为空") 49 | @ApiModelProperty(name = "time", value = "弹幕速度", required = true, dataType = "Integer") 50 | private Integer time; 51 | } 52 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/PasswordVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.Size; 12 | 13 | /** 14 | * 密码对象 15 | * 16 | * @author 11921 17 | */ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @ApiModel(description = "密码") 23 | public class PasswordVO { 24 | 25 | /** 26 | * 旧密码 27 | */ 28 | @NotBlank(message = "旧密码不能为空") 29 | @ApiModelProperty(name = "oldPassword", value = "旧密码", required = true, dataType = "String") 30 | private String oldPassword; 31 | 32 | /** 33 | * 新密码 34 | */ 35 | @Size(min = 6, message = "新密码不能少于6位") 36 | @NotBlank(message = "新密码不能为空") 37 | @ApiModelProperty(name = "newPassword", value = "新密码", required = true, dataType = "String") 38 | private String newPassword; 39 | } 40 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/ResourceVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import io.swagger.annotations.ApiModel; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Builder; 9 | import lombok.Data; 10 | import lombok.NoArgsConstructor; 11 | 12 | import javax.validation.constraints.NotBlank; 13 | import java.util.Date; 14 | 15 | /** 16 | * 资源对象 17 | * @author: yezhiqiu 18 | * @date: 2021-03-01 19 | **/ 20 | @Data 21 | @Builder 22 | @AllArgsConstructor 23 | @NoArgsConstructor 24 | @ApiModel(description = "资源") 25 | public class ResourceVO { 26 | /** 27 | * 资源id 28 | */ 29 | @ApiModelProperty(name = "id", value = "资源id", required = true, dataType = "Integer") 30 | private Integer id; 31 | 32 | /** 33 | * 资源名 34 | */ 35 | @NotBlank(message = "资源名不能为空") 36 | @ApiModelProperty(name = "resourceName", value = "资源名", required = true, dataType = "String") 37 | private String resourceName; 38 | 39 | /** 40 | * 路径 41 | */ 42 | @ApiModelProperty(name = "url", value = "资源路径", required = true, dataType = "String") 43 | private String url; 44 | 45 | /** 46 | * 请求方式 47 | */ 48 | @ApiModelProperty(name = "url", value = "资源路径", required = true, dataType = "String") 49 | private String requestMethod; 50 | 51 | /** 52 | * 父资源id 53 | */ 54 | @ApiModelProperty(name = "parentId", value = "父资源id", required = true, dataType = "Integer") 55 | private Integer parentId; 56 | 57 | /** 58 | * 是否禁用 59 | */ 60 | @ApiModelProperty(name = "isDisable", value = "是否禁用", required = true, dataType = "Integer") 61 | private Integer isDisable; 62 | 63 | /** 64 | * 是否匿名访问 65 | */ 66 | @ApiModelProperty(name = "isAnonymous", value = "是否匿名访问", required = true, dataType = "Integer") 67 | private Integer isAnonymous; 68 | 69 | } 70 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/Result.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import com.minzheng.blog.constant.StatusConst; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * 接口返回类 10 | * 11 | * @author 11921 12 | */ 13 | @Data 14 | public class Result implements Serializable { 15 | private boolean flag; 16 | private Integer code; 17 | private String message; 18 | private T data; 19 | 20 | public Result(boolean flag, Integer code, String message, Object data) { 21 | this.flag = flag; 22 | this.code = code; 23 | this.message = message; 24 | this.data = (T) data; 25 | } 26 | 27 | public Result(boolean flag, Integer code, String message) { 28 | this.flag = flag; 29 | this.code = code; 30 | this.message = message; 31 | } 32 | 33 | public Result() { 34 | this.flag = true; 35 | this.code = StatusConst.OK; 36 | this.message = "操作成功!"; 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/RoleVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import java.util.List; 12 | 13 | /** 14 | * 角色VO 15 | * 16 | * @author: yezhiqiu 17 | * @date: 2021-01-24 18 | **/ 19 | @Data 20 | @Builder 21 | @AllArgsConstructor 22 | @NoArgsConstructor 23 | @ApiModel(description = "角色") 24 | public class RoleVO { 25 | /** 26 | * id 27 | */ 28 | @ApiModelProperty(name = "id", value = "用户id", dataType = "Integer") 29 | private Integer id; 30 | 31 | /** 32 | * 标签名 33 | */ 34 | @NotBlank(message = "角色名不能为空") 35 | @ApiModelProperty(name = "categoryName", value = "标签名", required = true, dataType = "String") 36 | private String roleName; 37 | 38 | /** 39 | * 标签名 40 | */ 41 | @NotBlank(message = "权限标签不能为空") 42 | @ApiModelProperty(name = "categoryName", value = "标签名", required = true, dataType = "String") 43 | private String roleLabel; 44 | 45 | /** 46 | * 资源列表 47 | */ 48 | @ApiModelProperty(name = "resourceIdList", value = "资源列表", required = true, dataType = "List") 49 | private List resourceIdList; 50 | 51 | /** 52 | * 菜单列表 53 | */ 54 | @ApiModelProperty(name = "menuIdList", value = "菜单列表", required = true, dataType = "List") 55 | private List menuIdList; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/TagVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | /** 13 | * 标签VO 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "标签对象") 22 | public class TagVO { 23 | 24 | /** 25 | * id 26 | */ 27 | @ApiModelProperty(name = "id", value = "标签id", dataType = "Integer") 28 | private Integer id; 29 | 30 | /** 31 | * 标签名 32 | */ 33 | @NotBlank(message = "标签名不能为空") 34 | @ApiModelProperty(name = "categoryName", value = "标签名", required = true, dataType = "String") 35 | private String tagName; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/UserInfoVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | 12 | /** 13 | * 用户信息vo 14 | * 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "用户信息对象") 22 | public class UserInfoVO { 23 | 24 | /** 25 | * 用户昵称 26 | */ 27 | @NotBlank(message = "昵称不能为空") 28 | @ApiModelProperty(name = "nickname", value = "昵称", dataType = "String") 29 | private String nickname; 30 | 31 | /** 32 | * 用户简介 33 | */ 34 | @ApiModelProperty(name = "intro", value = "介绍", dataType = "String") 35 | private String intro; 36 | 37 | /** 38 | * 个人网站 39 | */ 40 | @ApiModelProperty(name = "webSite", value = "个人网站", dataType = "String") 41 | private String webSite; 42 | } 43 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/UserRoleVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.NotBlank; 11 | import javax.validation.constraints.NotNull; 12 | import java.util.List; 13 | 14 | /** 15 | * @author xiaojie 16 | * @since 2020-05-18 17 | */ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @ApiModel(description = "用户权限") 23 | public class UserRoleVO { 24 | /** 25 | * 用户id 26 | */ 27 | @NotNull(message = "id不能为空") 28 | @ApiModelProperty(name = "userInfoId", value = "用户信息id", dataType = "Integer") 29 | private Integer userInfoId; 30 | 31 | /** 32 | * 用户昵称 33 | */ 34 | @NotBlank(message = "昵称不能为空") 35 | @ApiModelProperty(name = "nickname", value = "昵称", dataType = "String") 36 | private String nickname; 37 | 38 | /** 39 | * 用户角色 40 | */ 41 | @NotNull(message = "用户角色不能为空") 42 | @ApiModelProperty(name = "roleList", value = "角色id集合", dataType = "List") 43 | private List roleIdList; 44 | 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/UserVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import javax.validation.constraints.Email; 11 | import javax.validation.constraints.NotBlank; 12 | import javax.validation.constraints.Size; 13 | 14 | /** 15 | * @author 11921 16 | */ 17 | @Data 18 | @Builder 19 | @AllArgsConstructor 20 | @NoArgsConstructor 21 | @ApiModel(description = "用户注册") 22 | public class UserVO { 23 | /** 24 | * 用户名 25 | */ 26 | @NotBlank(message = "邮箱不能为空") 27 | @Email(message = "邮箱格式不正确") 28 | @ApiModelProperty(name = "username", value = "用户名", required = true, dataType = "String") 29 | private String username; 30 | 31 | /** 32 | * 密码 33 | */ 34 | @Size(min = 6, message = "密码不能少于6位") 35 | @NotBlank(message = "密码不能为空") 36 | @ApiModelProperty(name = "password", value = "密码", required = true, dataType = "String") 37 | private String password; 38 | 39 | /** 40 | * 验证码 41 | */ 42 | @NotBlank(message = "验证码不能为空") 43 | @ApiModelProperty(name = "code", value = "邮箱验证码", required = true, dataType = "String") 44 | private String code; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/vo/VoiceVO.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | import org.springframework.web.multipart.MultipartFile; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * 音频VO 15 | * @author: yezhiqiu 16 | * @date: 2021-02-21 17 | **/ 18 | @Data 19 | @Builder 20 | @AllArgsConstructor 21 | @NoArgsConstructor 22 | @ApiModel(description = "音频") 23 | public class VoiceVO { 24 | 25 | /** 26 | * 消息类型 27 | */ 28 | @ApiModelProperty(name = "type", value = "消息类型", required = true, dataType = "Integer") 29 | private Integer type; 30 | 31 | /** 32 | * 文件 33 | */ 34 | @ApiModelProperty(name = "file", value = "文件", required = true, dataType = "MultipartFile") 35 | private MultipartFile file; 36 | 37 | /** 38 | * 用户id 39 | */ 40 | @ApiModelProperty(name = "userId", value = "用户id", required = true, dataType = "Integer") 41 | private Integer userId; 42 | 43 | /** 44 | * 用户昵称 45 | */ 46 | @ApiModelProperty(name = "nickname", value = "用户昵称", required = true, dataType = "String") 47 | private String nickname; 48 | 49 | /** 50 | * 用户头像 51 | */ 52 | @ApiModelProperty(name = "avatar", value = "用户头像", required = true, dataType = "String") 53 | private String avatar; 54 | 55 | /** 56 | * 聊天内容 57 | */ 58 | @ApiModelProperty(name = "content", value = "聊天内容", required = true, dataType = "String") 59 | private String content; 60 | 61 | /** 62 | * 创建时间 63 | */ 64 | @ApiModelProperty(name = "createTime", value = "创建时间", required = true, dataType = "Date") 65 | private Date createTime; 66 | 67 | /** 68 | * 用户登录ip 69 | */ 70 | @ApiModelProperty(name = "ipAddr", value = "用户登录ip", required = true, dataType = "String") 71 | private String ipAddr; 72 | 73 | /** 74 | * ip来源 75 | */ 76 | @ApiModelProperty(name = "ipSource", value = "ip来源", required = true, dataType = "String") 77 | private String ipSource; 78 | 79 | } 80 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/CategoryDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SELECT 8 | c.id, 9 | c.category_name, 10 | COUNT( 1 ) as article_count 11 | FROM 12 | tb_category c 13 | JOIN tb_article a ON c.id = a.category_id 14 | GROUP BY 15 | a.category_id 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/MenuDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SELECT DISTINCT 8 | m.id, 9 | `name`, 10 | `path`, 11 | component, 12 | icon, 13 | is_hidden, 14 | parent_id, 15 | order_num 16 | FROM 17 | tb_user_role ur 18 | JOIN tb_role_menu rm ON ur.role_id = rm.role_id 19 | JOIN `tb_menu` m ON rm.menu_id = m.id 20 | WHERE 21 | user_id = #{userInfoId} 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/ResourceDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/UniqueViewDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SELECT 8 | DATE_FORMAT( create_time, "%Y-%m-%d" ) as `day`, 9 | views_count 10 | FROM 11 | `tb_unique_view` 12 | WHERE 13 | create_time > #{startTime} 14 | AND create_time <= #{endTime} 15 | ORDER BY 16 | create_time 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/UserRoleDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /blog-vue/admin/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /blog-vue/admin/README.md: -------------------------------------------------------------------------------- 1 | # admins 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /blog-vue/admin/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/cli-plugin-babel/preset"] 3 | }; 4 | -------------------------------------------------------------------------------- /blog-vue/admin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "admins", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "axios": "^0.19.2", 12 | "core-js": "^3.6.5", 13 | "echarts": "^4.8.0", 14 | "element-ui": "^2.13.2", 15 | "mavon-editor": "^2.9.0", 16 | "moment": "^2.26.0", 17 | "nprogress": "^0.2.0", 18 | "path": "^0.12.7", 19 | "vue": "^2.6.11", 20 | "vue-axios": "^2.1.5", 21 | "vue-echarts": "^5.0.0-beta.0", 22 | "vue-router": "^3.2.0", 23 | "vue2-animate": "^2.1.4", 24 | "vuex": "^3.4.0", 25 | "vuex-persistedstate": "^3.0.1" 26 | }, 27 | "devDependencies": { 28 | "@vue/cli-plugin-babel": "^4.4.0", 29 | "@vue/cli-plugin-eslint": "^4.4.0", 30 | "@vue/cli-service": "^4.4.0", 31 | "@vue/eslint-config-prettier": "^6.0.0", 32 | "babel-eslint": "^10.1.0", 33 | "eslint": "^6.7.2", 34 | "eslint-plugin-prettier": "^3.1.3", 35 | "eslint-plugin-vue": "^6.2.2", 36 | "prettier": "^1.19.1", 37 | "vue-template-compiler": "^2.6.11" 38 | }, 39 | "eslintConfig": { 40 | "root": true, 41 | "env": { 42 | "node": true 43 | }, 44 | "extends": [ 45 | "plugin:vue/essential", 46 | "eslint:recommended", 47 | "@vue/prettier" 48 | ], 49 | "parserOptions": { 50 | "parser": "babel-eslint" 51 | }, 52 | "rules": {} 53 | }, 54 | "browserslist": [ 55 | "> 1%", 56 | "last 2 versions", 57 | "not dead" 58 | ] 59 | } 60 | -------------------------------------------------------------------------------- /blog-vue/admin/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/public/favicon.ico -------------------------------------------------------------------------------- /blog-vue/admin/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 后台管理系统 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /blog-vue/admin/src/App.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.eot -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.ttf -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.woff -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/admin/src/assets/css/iconfont.woff2 -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/css/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | .el-card.is-always-shadow, 6 | .el-card.is-hover-shadow:focus, 7 | .el-card.is-hover-shadow:hover { 8 | box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); 9 | } 10 | .main-card { 11 | min-height: calc(100vh - 126px); 12 | } 13 | .operation-container { 14 | display: flex; 15 | align-items: center; 16 | margin-bottom: 1.25rem; 17 | margin-top: 2.25rem; 18 | } 19 | .pagination-container { 20 | float: right; 21 | margin-top: 1.25rem; 22 | margin-bottom: 1.25rem; 23 | } 24 | .dialog-title-container { 25 | display: flex; 26 | align-items: center; 27 | font-weight: bold; 28 | } 29 | .dialog-title-container i { 30 | font-size: 1.5rem; 31 | margin-right: 0.5rem; 32 | } 33 | .v-note-wrapper.fullscreen { 34 | height: 100vh !important; 35 | } 36 | .title { 37 | position: absolute; 38 | left: 0; 39 | font-size: 16px; 40 | font-weight: bold; 41 | color: #202a34; 42 | } 43 | .title::before { 44 | content: ''; 45 | width: 24px; 46 | height: 16px; 47 | border-left: 3px solid #0081ff; 48 | margin-right: 20px; 49 | } 50 | 51 | .side-nav-bar .el-scrollbar__wrap { 52 | overflow-x: hidden !important; 53 | } -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/js/config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | TENCENT_CAPTCHA: "2088053498" 3 | }; 4 | -------------------------------------------------------------------------------- /blog-vue/admin/src/assets/js/menu.js: -------------------------------------------------------------------------------- 1 | import Layout from "@/layout/index.vue"; 2 | import router from "../../router"; 3 | import store from "../../store"; 4 | import axios from "axios"; 5 | import Vue from "vue"; 6 | 7 | export function generaMenu() { 8 | // 查询用户菜单 9 | axios.get("/api/admin/user/menus").then(({ data }) => { 10 | if (data.flag) { 11 | var userMenuList = data.data; 12 | userMenuList.forEach(item => { 13 | if (item.icon != null) { 14 | item.icon = "iconfont " + item.icon; 15 | } 16 | if (item.component == "Layout") { 17 | item.component = Layout; 18 | } 19 | if (item.children && item.children.length > 0) { 20 | item.children.forEach(route => { 21 | route.icon = "iconfont " + route.icon; 22 | route.component = loadView(route.component); 23 | }); 24 | } 25 | }); 26 | // 添加侧边栏菜单 27 | store.commit("saveUserMenuList", userMenuList); 28 | // 添加菜单到路由 29 | router.addRoutes(userMenuList); 30 | } else { 31 | Vue.prototype.$message.error(data.message); 32 | router.push({ path: "/login" }); 33 | } 34 | }); 35 | } 36 | 37 | export const loadView = view => { 38 | // 路由懒加载 39 | return resolve => require([`@/views${view}`], resolve); 40 | }; 41 | -------------------------------------------------------------------------------- /blog-vue/admin/src/layout/components/SideBar.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | {{ route.name }} 20 | 21 | 22 | 23 | 24 | 25 | {{ item.name }} 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | {{ route.children[0].name }} 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 56 | -------------------------------------------------------------------------------- /blog-vue/admin/src/layout/index.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 39 | 40 | 69 | -------------------------------------------------------------------------------- /blog-vue/admin/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import VueRouter from "vue-router"; 3 | 4 | Vue.use(VueRouter); 5 | 6 | const routes = [ 7 | { 8 | path: "/login", 9 | name: "登录", 10 | hidden: true, 11 | component: () => import("../views/login/Login.vue") 12 | } 13 | ]; 14 | 15 | const createRouter = () => 16 | new VueRouter({ 17 | mode: "history", 18 | routes: routes 19 | }); 20 | 21 | const router = createRouter(); 22 | 23 | export function resetRouter() { 24 | const newRouter = createRouter(); 25 | router.matcher = newRouter.matcher; 26 | } 27 | 28 | export default router; 29 | -------------------------------------------------------------------------------- /blog-vue/admin/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Vuex from "vuex"; 3 | import createPersistedState from "vuex-persistedstate"; 4 | 5 | Vue.use(Vuex); 6 | 7 | export default new Vuex.Store({ 8 | state: { 9 | collapse: false, 10 | tabList: [{ name: "首页", path: "/" }], 11 | userId: null, 12 | roleList: null, 13 | avatar: null, 14 | nickname: null, 15 | intro: null, 16 | webSite: null, 17 | userMenuList: [] 18 | }, 19 | mutations: { 20 | saveTab(state, tab) { 21 | if (state.tabList.findIndex(item => item.path === tab.path) == -1) { 22 | state.tabList.push({ name: tab.name, path: tab.path }); 23 | } 24 | }, 25 | removeTab(state, tab) { 26 | var index = state.tabList.findIndex(item => item.name === tab.name); 27 | state.tabList.splice(index, 1); 28 | }, 29 | resetTab(state) { 30 | state.tabList = [{ name: "首页", path: "/" }]; 31 | }, 32 | trigger(state) { 33 | state.collapse = !state.collapse; 34 | }, 35 | login(state, user) { 36 | state.userId = user.userInfoId; 37 | state.roleList = user.roleList; 38 | state.avatar = user.avatar; 39 | state.nickname = user.nickname; 40 | state.intro = user.intro; 41 | state.webSite = user.webSite; 42 | }, 43 | saveUserMenuList(state, userMenuList) { 44 | state.userMenuList = userMenuList; 45 | }, 46 | logout(state) { 47 | state.userId = null; 48 | state.roleList = null; 49 | state.avatar = null; 50 | state.nickname = null; 51 | state.intro = null; 52 | state.webSite = null; 53 | state.userMenuList = []; 54 | }, 55 | updateAvatar(state, avatar) { 56 | state.avatar = avatar; 57 | }, 58 | updateUserInfo(state, user) { 59 | state.nickname = user.nickname; 60 | state.intro = user.intro; 61 | state.webSite = user.webSite; 62 | } 63 | }, 64 | actions: {}, 65 | modules: {}, 66 | plugins: [ 67 | createPersistedState({ 68 | storage: window.sessionStorage 69 | }) 70 | ] 71 | }); 72 | -------------------------------------------------------------------------------- /blog-vue/admin/src/views/about/About.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ this.$route.name }} 4 | 8 | 14 | 修改 15 | 16 | 17 | 18 | 19 | 55 | 56 | 62 | -------------------------------------------------------------------------------- /blog-vue/admin/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | devServer: { 3 | proxy: { 4 | "/api": { 5 | target: "http://localhost:8080", 6 | changeOrigin: true, 7 | pathRewrite: { 8 | "^/api": "" 9 | } 10 | } 11 | }, 12 | disableHostCheck: true 13 | }, 14 | chainWebpack: config => { 15 | config.resolve.alias.set("@", resolve("src")); 16 | } 17 | }; 18 | 19 | const path = require("path"); 20 | function resolve(dir) { 21 | return path.join(__dirname, dir); 22 | } 23 | -------------------------------------------------------------------------------- /blog-vue/blog/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /blog-vue/blog/README.md: -------------------------------------------------------------------------------- 1 | # blog 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /blog-vue/blog/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/cli-plugin-babel/preset"] 3 | }; 4 | -------------------------------------------------------------------------------- /blog-vue/blog/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blogs", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "animate.css": "^3.7.2", 12 | "axios": "^0.19.2", 13 | "clipboard": "^2.0.6", 14 | "core-js": "^3.6.4", 15 | "easy-typer-js": "^2.1.0", 16 | "highlight.js": "^10.0.3", 17 | "markdown-it": "^11.0.0", 18 | "moment": "^2.26.0", 19 | "nprogress": "^0.2.0", 20 | "recorderx": "^2.0.2", 21 | "stylus": "^0.54.7", 22 | "stylus-loader": "^3.0.2", 23 | "tocbot": "^4.12.2", 24 | "vue": "^2.6.11", 25 | "vue-avatar-cropper": "^1.0.6", 26 | "vue-axios": "^2.1.5", 27 | "vue-baberrage": "^3.2.4", 28 | "vue-cute-timeline": "^1.2.8", 29 | "vue-image-swipe": "^1.0.5", 30 | "vue-infinite-loading": "^2.4.5", 31 | "vue-router": "^3.1.6", 32 | "vue-social-share": "0.0.3", 33 | "vuetify": "^2.2.11", 34 | "vuex": "^3.1.3", 35 | "vuex-persistedstate": "^3.0.1", 36 | "zw-player": "^1.0.6" 37 | }, 38 | "devDependencies": { 39 | "@vue/cli-plugin-babel": "^4.3.0", 40 | "@vue/cli-plugin-eslint": "^4.3.0", 41 | "@vue/cli-service": "^4.3.0", 42 | "@vue/eslint-config-prettier": "^6.0.0", 43 | "babel-eslint": "^10.1.0", 44 | "eslint": "^6.7.2", 45 | "eslint-plugin-prettier": "^3.1.1", 46 | "eslint-plugin-vue": "^6.2.2", 47 | "prettier": "^1.19.1", 48 | "sass": "^1.19.0", 49 | "sass-loader": "^8.0.0", 50 | "vue-cli-plugin-vuetify": "^2.0.5", 51 | "vue-template-compiler": "^2.6.11", 52 | "vuetify-loader": "^1.3.0" 53 | }, 54 | "eslintConfig": { 55 | "root": true, 56 | "env": { 57 | "node": true 58 | }, 59 | "extends": [ 60 | "plugin:vue/essential", 61 | "eslint:recommended", 62 | "@vue/prettier" 63 | ], 64 | "parserOptions": { 65 | "parser": "babel-eslint" 66 | }, 67 | "rules": {} 68 | }, 69 | "browserslist": [ 70 | "> 1%", 71 | "last 2 versions", 72 | "not dead" 73 | ] 74 | } 75 | -------------------------------------------------------------------------------- /blog-vue/blog/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/public/favicon.ico -------------------------------------------------------------------------------- /blog-vue/blog/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 风丶宇的个人博客 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /blog-vue/blog/src/App.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 60 | -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.eot -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.ttf -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.woff -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/css/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/css/iconfont.woff2 -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/img/alipay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/img/alipay.png -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/img/ds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/img/ds.png -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/img/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-fang/thatblog/1be4d8f65157b7b0149a3e0e488ee6b284b71123/blog-vue/blog/src/assets/img/wechat.png -------------------------------------------------------------------------------- /blog-vue/blog/src/assets/js/config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | QQ_APP_ID: "101878726", 3 | QQ_REDIRECT_URI: "https://www.talkxj.com/oauth/login/qq", 4 | WEIBO_APP_ID: "4039197195", 5 | WEIBO_REDIRECT_URI: "https://www.talkxj.com/oauth/login/weibo", 6 | TENCENT_CAPTCHA: "2088053498" 7 | }; 8 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/Emoji.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 13 | 14 | 34 | 35 | 56 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/layout/Footer.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 21 | 22 | 50 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/toast/Toast.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ message }} 4 | 5 | 6 | 7 | 37 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/toast/index.js: -------------------------------------------------------------------------------- 1 | import ToastComponent from "./Toast.vue"; // 引入先前写好的vue 2 | 3 | const Toast = {}; 4 | 5 | // 注册Toast 6 | Toast.install = function(Vue) { 7 | // 生成一个Vue的子类 8 | const ToastConstructor = Vue.extend(ToastComponent); 9 | // 生成一个该子类的实例 10 | const instance = new ToastConstructor(); 11 | 12 | // 将这个实例挂载在我创建的div上 13 | // 并将此div加入全局挂载点内部 14 | instance.$mount(document.createElement("div")); 15 | document.body.appendChild(instance.$el); 16 | 17 | // 通过Vue的原型注册一个方法 18 | // 让所有实例共享这个方法 // 其中的duration是持续时间 19 | Vue.prototype.$toast = (options, duration = 2000) => { 20 | instance.message = options.message; 21 | instance.type = options.type; 22 | instance.show = true; 23 | 24 | setTimeout(() => { 25 | instance.show = false; 26 | }, duration); 27 | }; 28 | }; 29 | 30 | export default Toast; 31 | -------------------------------------------------------------------------------- /blog-vue/blog/src/plugins/vuetify.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Vuetify from "vuetify/lib"; 3 | 4 | Vue.use(Vuetify); 5 | 6 | export default new Vuetify({}); 7 | -------------------------------------------------------------------------------- /blog-vue/blog/src/views/about/About.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 关于我 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 43 | 44 | 65 | -------------------------------------------------------------------------------- /blog-vue/blog/src/views/tag/Tag.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 标签 6 | 7 | 8 | 9 | 标签 - {{ count }} 10 | 11 | 17 | {{ item.tagName }} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 45 | 46 | 78 | -------------------------------------------------------------------------------- /blog-vue/blog/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | transpileDependencies: ["vuetify"], 3 | devServer: { 4 | proxy: { 5 | "/api": { 6 | target: "http://localhost:8080", 7 | changeOrigin: true, 8 | pathRewrite: { 9 | "^/api": "" 10 | } 11 | } 12 | }, 13 | disableHostCheck: true 14 | } 15 | }; 16 | --------------------------------------------------------------------------------