├── LICENSE ├── README.md ├── blog-mysql8.sql ├── blog-springboot ├── blog-springboot.iml ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── minzheng │ │ └── blog │ │ ├── BlogApplication.java │ │ ├── annotation │ │ └── OptLog.java │ │ ├── config │ │ ├── ElasticSearchConfig.java │ │ ├── MybatisPlusConfig.java │ │ ├── RabbitConfig.java │ │ ├── RedisConfig.java │ │ ├── SwaggerConfig.java │ │ ├── WebMvcConfig.java │ │ ├── WebSecurityConfig.java │ │ └── WebSocketConfig.java │ │ ├── constant │ │ ├── CommonConst.java │ │ ├── MQPrefixConst.java │ │ ├── OptTypeConst.java │ │ ├── RedisPrefixConst.java │ │ └── StatusConst.java │ │ ├── controller │ │ ├── ArticleController.java │ │ ├── BlogInfoController.java │ │ ├── CategoryController.java │ │ ├── CommentController.java │ │ ├── ControllerAdvice.java │ │ ├── FriendLinkController.java │ │ ├── LogController.java │ │ ├── MenuController.java │ │ ├── MessageController.java │ │ ├── ResourceController.java │ │ ├── RoleController.java │ │ ├── TagController.java │ │ ├── UserAuthController.java │ │ └── UserInfoController.java │ │ ├── dao │ │ ├── ArticleDao.java │ │ ├── ArticleTagDao.java │ │ ├── CategoryDao.java │ │ ├── ChatRecordDao.java │ │ ├── CommentDao.java │ │ ├── ElasticsearchDao.java │ │ ├── FriendLinkDao.java │ │ ├── MenuDao.java │ │ ├── MessageDao.java │ │ ├── OperationLogDao.java │ │ ├── ResourceDao.java │ │ ├── RoleDao.java │ │ ├── RoleMenuDao.java │ │ ├── RoleResourceDao.java │ │ ├── TagDao.java │ │ ├── UniqueViewDao.java │ │ ├── UserAuthDao.java │ │ ├── UserInfoDao.java │ │ └── UserRoleDao.java │ │ ├── dto │ │ ├── ArchiveDTO.java │ │ ├── ArticleBackDTO.java │ │ ├── ArticleDTO.java │ │ ├── ArticleHomeDTO.java │ │ ├── ArticleOptionDTO.java │ │ ├── ArticlePaginationDTO.java │ │ ├── ArticlePreviewDTO.java │ │ ├── ArticlePreviewListDTO.java │ │ ├── ArticleRankDTO.java │ │ ├── ArticleRecommendDTO.java │ │ ├── ArticleSearchDTO.java │ │ ├── BlogBackInfoDTO.java │ │ ├── BlogHomeInfoDTO.java │ │ ├── CategoryBackDTO.java │ │ ├── CategoryDTO.java │ │ ├── ChatRecordDTO.java │ │ ├── CommentBackDTO.java │ │ ├── CommentDTO.java │ │ ├── EmailDTO.java │ │ ├── FriendLinkBackDTO.java │ │ ├── FriendLinkDTO.java │ │ ├── MenuDTO.java │ │ ├── MessageBackDTO.java │ │ ├── MessageDTO.java │ │ ├── OperationLogDTO.java │ │ ├── PageDTO.java │ │ ├── RecallMessageDTO.java │ │ ├── ReplyCountDTO.java │ │ ├── ReplyDTO.java │ │ ├── ResourceDTO.java │ │ ├── RoleDTO.java │ │ ├── TagDTO.java │ │ ├── UniqueViewDTO.java │ │ ├── UrlRoleDTO.java │ │ ├── UserBackDTO.java │ │ ├── UserInfoDTO.java │ │ ├── UserLoginDTO.java │ │ ├── UserMenuDTO.java │ │ ├── UserOnlineDTO.java │ │ ├── UserRoleDTO.java │ │ ├── WebsocketMessageDTO.java │ │ └── labelOptionDTO.java │ │ ├── entity │ │ ├── Article.java │ │ ├── ArticleTag.java │ │ ├── Category.java │ │ ├── ChatRecord.java │ │ ├── Comment.java │ │ ├── FriendLink.java │ │ ├── Menu.java │ │ ├── Message.java │ │ ├── OperationLog.java │ │ ├── Resource.java │ │ ├── Role.java │ │ ├── RoleMenu.java │ │ ├── RoleResource.java │ │ ├── Tag.java │ │ ├── UniqueView.java │ │ ├── UserAuth.java │ │ ├── UserInfo.java │ │ └── UserRole.java │ │ ├── enums │ │ ├── ChatTypeEnum.java │ │ ├── FilePathEnum.java │ │ ├── LoginTypeEnum.java │ │ ├── OptLogTypeEnum.java │ │ └── RoleEnum.java │ │ ├── exception │ │ └── ServeException.java │ │ ├── handler │ │ ├── AccessDecisionManagerImpl.java │ │ ├── AccessDeniedHandlerImpl.java │ │ ├── AuthenticationEntryPointImpl.java │ │ ├── AuthenticationFailHandlerImpl.java │ │ ├── AuthenticationSuccessHandlerImpl.java │ │ ├── EmailReceiver.java │ │ ├── FilterInvocationSecurityMetadataSourceImpl.java │ │ ├── LogoutSuccessHandlerImpl.java │ │ ├── MaxWellReceiver.java │ │ ├── OptLogAspect.java │ │ └── ServletRequestListenerImpl.java │ │ ├── service │ │ ├── ArticleService.java │ │ ├── ArticleTagService.java │ │ ├── BlogInfoService.java │ │ ├── CategoryService.java │ │ ├── ChatRecordService.java │ │ ├── CommentService.java │ │ ├── FriendLinkService.java │ │ ├── MenuService.java │ │ ├── MessageService.java │ │ ├── OperationLogService.java │ │ ├── ResourceService.java │ │ ├── RoleMenuService.java │ │ ├── RoleResourceService.java │ │ ├── RoleService.java │ │ ├── TagService.java │ │ ├── UniqueViewService.java │ │ ├── UserAuthService.java │ │ ├── UserInfoService.java │ │ ├── UserRoleService.java │ │ └── impl │ │ │ ├── ArticleServiceImpl.java │ │ │ ├── ArticleTagServiceImpl.java │ │ │ ├── BlogInfoServiceImpl.java │ │ │ ├── CategoryServiceImpl.java │ │ │ ├── ChatRecordServiceImpl.java │ │ │ ├── CommentServiceImpl.java │ │ │ ├── FriendLinkServiceImpl.java │ │ │ ├── MenuServiceImpl.java │ │ │ ├── MessageServiceImpl.java │ │ │ ├── OperationLogServiceImpl.java │ │ │ ├── ResourceServiceImpl.java │ │ │ ├── RoleMenuServiceImpl.java │ │ │ ├── RoleResourceServiceImpl.java │ │ │ ├── RoleServiceImpl.java │ │ │ ├── TagServiceImpl.java │ │ │ ├── UniqueViewServiceImpl.java │ │ │ ├── UserAuthServiceImpl.java │ │ │ ├── UserDetailsServiceImpl.java │ │ │ ├── UserInfoServiceImpl.java │ │ │ ├── UserRoleServiceImpl.java │ │ │ └── WebSocketServiceImpl.java │ │ ├── utils │ │ ├── BeanCopyUtil.java │ │ ├── CommonUtil.java │ │ ├── DateUtil.java │ │ ├── HTMLUtil.java │ │ ├── IpUtil.java │ │ ├── OSSUtil.java │ │ ├── UserUtil.java │ │ └── WebSocketUtil.java │ │ └── vo │ │ ├── ArticleVO.java │ │ ├── CategoryVO.java │ │ ├── CommentVO.java │ │ ├── ConditionVO.java │ │ ├── DeleteVO.java │ │ ├── EmailVO.java │ │ ├── FriendLinkVO.java │ │ ├── MessageVO.java │ │ ├── PasswordVO.java │ │ ├── ResourceVO.java │ │ ├── Result.java │ │ ├── RoleVO.java │ │ ├── TagVO.java │ │ ├── UserInfoVO.java │ │ ├── UserRoleVO.java │ │ ├── UserVO.java │ │ └── VoiceVO.java │ └── resources │ ├── application.yml │ └── mapper │ ├── ArticleDao.xml │ ├── CategoryDao.xml │ ├── CommentDao.xml │ ├── MenuDao.xml │ ├── ResourceDao.xml │ ├── RoleDao.xml │ ├── UniqueViewDao.xml │ ├── UserAuthDao.xml │ └── UserRoleDao.xml └── blog-vue ├── admin ├── .gitignore ├── README.md ├── babel.config.js ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ └── index.html ├── src │ ├── App.vue │ ├── assets │ │ ├── css │ │ │ ├── iconfont.css │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ ├── iconfont.woff2 │ │ │ └── index.css │ │ └── js │ │ │ ├── config.js │ │ │ └── menu.js │ ├── layout │ │ ├── components │ │ │ ├── NavBar.vue │ │ │ └── SideBar.vue │ │ └── index.vue │ ├── main.js │ ├── router │ │ └── index.js │ ├── store │ │ └── index.js │ └── views │ │ ├── about │ │ └── About.vue │ │ ├── article │ │ ├── Article.vue │ │ └── ArticleList.vue │ │ ├── category │ │ └── Category.vue │ │ ├── comment │ │ └── Comment.vue │ │ ├── friendLink │ │ └── FriendLink.vue │ │ ├── home │ │ └── Home.vue │ │ ├── log │ │ └── Operation.vue │ │ ├── login │ │ └── Login.vue │ │ ├── menu │ │ └── Menu.vue │ │ ├── message │ │ └── Message.vue │ │ ├── resource │ │ └── Resource.vue │ │ ├── role │ │ └── Role.vue │ │ ├── setting │ │ └── Setting.vue │ │ ├── tag │ │ └── Tag.vue │ │ └── user │ │ ├── Online.vue │ │ └── User.vue └── vue.config.js └── blog ├── .gitignore ├── README.md ├── babel.config.js ├── package-lock.json ├── package.json ├── public ├── favicon.ico ├── index.html └── ribbon.js ├── src ├── App.vue ├── assets │ ├── css │ │ ├── iconfont.css │ │ ├── iconfont.eot │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ ├── iconfont.woff2 │ │ ├── index.css │ │ └── markdown.css │ ├── img │ │ ├── alipay.png │ │ ├── ds.png │ │ └── wechat.png │ └── js │ │ ├── config.js │ │ └── emoji.js ├── components │ ├── ArticleList.vue │ ├── BackTop.vue │ ├── ChatRoom.vue │ ├── Comment.vue │ ├── Emoji.vue │ ├── OauthLogin.vue │ ├── Paging.vue │ ├── Reply.vue │ ├── layout │ │ ├── Footer.vue │ │ ├── SideNavBar.vue │ │ └── TopNavBar.vue │ ├── model │ │ ├── EmailModel.vue │ │ ├── ForgetModel.vue │ │ ├── LoginModel.vue │ │ ├── RegisterModel.vue │ │ └── SearchModel.vue │ └── toast │ │ ├── Toast.vue │ │ └── index.js ├── main.js ├── plugins │ └── vuetify.js ├── router │ └── index.js ├── store │ └── index.js └── views │ ├── about │ └── About.vue │ ├── archive │ └── Archive.vue │ ├── article │ └── Article.vue │ ├── category │ └── Category.vue │ ├── home │ └── Home.vue │ ├── link │ └── Link.vue │ ├── message │ └── Messsage.vue │ ├── tag │ └── Tag.vue │ └── user │ └── User.vue └── vue.config.js /blog-springboot/blog-springboot.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/BlogApplication.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog; 2 | 3 | 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.context.annotation.Bean; 8 | 9 | import org.springframework.scheduling.annotation.EnableScheduling; 10 | import org.springframework.web.client.RestTemplate; 11 | 12 | /** 13 | * 博客启动类 14 | * 15 | * @author 11921 16 | */ 17 | @MapperScan("com.minzheng.blog.dao") 18 | @SpringBootApplication 19 | @EnableScheduling 20 | public class BlogApplication { 21 | 22 | public static void main(String[] args) { 23 | SpringApplication.run(BlogApplication.class, args); 24 | } 25 | 26 | @Bean 27 | public RestTemplate restTemplate() { 28 | return new RestTemplate(); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/annotation/OptLog.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 操作日志注解 7 | * 8 | * @author 11921 9 | */ 10 | @Target(ElementType.METHOD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | public @interface OptLog { 14 | 15 | /** 16 | * @return 操作类型 17 | */ 18 | String optType() default ""; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/config/ElasticSearchConfig.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.config; 2 | 3 | import org.elasticsearch.client.RestClientBuilder; 4 | import org.elasticsearch.client.RestHighLevelClient; 5 | import org.springframework.beans.factory.annotation.Value; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.data.elasticsearch.client.ClientConfiguration; 9 | import org.springframework.data.elasticsearch.client.RestClients; 10 | 11 | import javax.annotation.Resource; 12 | import java.util.concurrent.TimeUnit; 13 | 14 | /** 15 | * elasticsearch配置类 16 | * 17 | * @author: yezhiqiu 18 | * @date: 2020-12-26 19 | **/ 20 | @Configuration 21 | public class ElasticSearchConfig { 22 | @Value("${elasticsearch.host}") 23 | private String host; 24 | 25 | @Value("${elasticsearch.port}") 26 | private String port; 27 | 28 | @Resource 29 | private RestClientBuilder restClientBuilder; 30 | 31 | @Bean 32 | public RestHighLevelClient client() { 33 | ClientConfiguration clientConfiguration = ClientConfiguration.builder() 34 | .connectedTo(host + ":" + port) 35 | .build(); 36 | return RestClients.create(clientConfiguration).rest(); 37 | } 38 | 39 | @Bean 40 | public RestHighLevelClient restHighLevelClient() { 41 | return new RestHighLevelClient(restClientBuilder.setHttpClientConfigCallback(requestConfig -> 42 | requestConfig.setKeepAliveStrategy((response, context) -> TimeUnit.MINUTES.toMillis(3)))); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/config/MybatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.config; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | import org.springframework.transaction.annotation.EnableTransactionManagement; 8 | 9 | /** 10 | * mybatis plus配置类 11 | * @author xiaojie 12 | */ 13 | @EnableTransactionManagement 14 | @Configuration 15 | @MapperScan("com.baomidou.cloud.service.*.mapper*") 16 | public class MybatisPlusConfig { 17 | 18 | @Bean 19 | public PaginationInterceptor paginationInterceptor() { 20 | PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); 21 | return paginationInterceptor; 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/config/RabbitConfig.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.config; 2 | 3 | import org.springframework.amqp.core.*; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | import static com.minzheng.blog.constant.MQPrefixConst.*; 8 | 9 | /** 10 | * Rabbitmq配置类 11 | * 12 | * @author 11921 13 | */ 14 | @Configuration 15 | public class RabbitConfig { 16 | 17 | @Bean 18 | public Queue articleQueue() { 19 | return new Queue(MAXWELL_QUEUE, true); 20 | } 21 | 22 | @Bean 23 | public FanoutExchange maxWellExchange() { 24 | return new FanoutExchange(MAXWELL_EXCHANGE, true, false); 25 | } 26 | 27 | @Bean 28 | public Binding bindingArticleDirect() { 29 | return BindingBuilder.bind(articleQueue()).to(maxWellExchange()); 30 | } 31 | 32 | @Bean 33 | public Queue emailQueue() { 34 | return new Queue(EMAIL_QUEUE, true); 35 | } 36 | 37 | @Bean 38 | public FanoutExchange emailExchange() { 39 | return new FanoutExchange(EMAIL_EXCHANGE, true, false); 40 | } 41 | 42 | @Bean 43 | public Binding bindingEmailDirect() { 44 | return BindingBuilder.bind(emailQueue()).to(emailExchange()); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/config/RedisConfig.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.config; 2 | 3 | import com.fasterxml.jackson.annotation.JsonAutoDetect; 4 | import com.fasterxml.jackson.annotation.PropertyAccessor; 5 | import com.fasterxml.jackson.databind.ObjectMapper; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.data.redis.connection.RedisConnectionFactory; 9 | import org.springframework.data.redis.core.RedisTemplate; 10 | import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; 11 | import org.springframework.data.redis.serializer.StringRedisSerializer; 12 | 13 | /** 14 | * redis配置 15 | * @author 11921 16 | */ 17 | @Configuration 18 | public class RedisConfig { 19 | 20 | @Bean 21 | public RedisTemplate redisTemplate(RedisConnectionFactory factory) { 22 | RedisTemplate redisTemplate = new RedisTemplate(); 23 | redisTemplate.setConnectionFactory(factory); 24 | Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); 25 | ObjectMapper mapper = new ObjectMapper(); 26 | mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); 27 | mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); 28 | jackson2JsonRedisSerializer.setObjectMapper(mapper); 29 | StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); 30 | // key采用String的序列化方式 31 | redisTemplate.setKeySerializer(stringRedisSerializer); 32 | // hash的key也采用String的序列化方式 33 | redisTemplate.setHashKeySerializer(stringRedisSerializer); 34 | // value序列化方式采用jackson 35 | redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); 36 | // hash的value序列化方式采用jackson 37 | redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); 38 | redisTemplate.afterPropertiesSet(); 39 | return redisTemplate; 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/config/SwaggerConfig.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.config; 2 | 3 | 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.web.servlet.config.annotation.EnableWebMvc; 7 | import springfox.documentation.builders.ApiInfoBuilder; 8 | import springfox.documentation.builders.PathSelectors; 9 | import springfox.documentation.builders.RequestHandlerSelectors; 10 | import springfox.documentation.service.ApiInfo; 11 | import springfox.documentation.spi.DocumentationType; 12 | import springfox.documentation.spring.web.plugins.Docket; 13 | import springfox.documentation.swagger2.annotations.EnableSwagger2; 14 | 15 | import java.util.Collections; 16 | 17 | /** 18 | * swagger配置类 19 | * 20 | * @author xiaojie 21 | */ 22 | @Configuration 23 | @EnableSwagger2 24 | public class SwaggerConfig { 25 | @Bean 26 | public Docket createRestApi() { 27 | return new Docket(DocumentationType.SWAGGER_2) 28 | .protocols(Collections.singleton("https")) 29 | .host("www.admin.talkxj.com") 30 | .apiInfo(apiInfo()) 31 | .select() 32 | .apis(RequestHandlerSelectors.basePackage("com.minzheng.blog.controller")) 33 | .paths(PathSelectors.any()) 34 | .build(); 35 | } 36 | 37 | private ApiInfo apiInfo() { 38 | return new ApiInfoBuilder() 39 | .title("博客api文档") 40 | .description("springboot+vue开发的博客项目") 41 | .termsOfServiceUrl("https://www.talkxj.com") 42 | .version("1.0") 43 | .build(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/config/WebMvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.config; 2 | 3 | 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 6 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 7 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 8 | 9 | /** 10 | * mvc配置类 11 | * 12 | * @author xiaojie 13 | */ 14 | @Configuration 15 | public class WebMvcConfig implements WebMvcConfigurer { 16 | 17 | @Override 18 | public void addResourceHandlers(ResourceHandlerRegistry registry) { 19 | registry.addResourceHandler("/swagger-ui.html") 20 | .addResourceLocations("classpath:/META-INF/resources/"); 21 | } 22 | 23 | @Override 24 | public void addCorsMappings(CorsRegistry registry) { 25 | registry.addMapping("/**") 26 | .allowCredentials(true) 27 | .allowedHeaders("*") 28 | .allowedOriginPatterns("*") 29 | .allowedMethods("*"); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/config/WebSocketConfig.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.socket.server.standard.ServerEndpointExporter; 6 | 7 | 8 | /** 9 | * websocket配置类 10 | * @author: yezhiqiu 11 | * @date: 2021-02-19 12 | **/ 13 | @Configuration 14 | public class WebSocketConfig { 15 | @Bean 16 | public ServerEndpointExporter serverEndpointExporter() { 17 | return new ServerEndpointExporter(); 18 | } 19 | 20 | 21 | } -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/constant/CommonConst.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.constant; 2 | 3 | import com.baomidou.mybatisplus.core.toolkit.IdWorker; 4 | 5 | /** 6 | * 公共常量 7 | * 8 | * @author: yezhiqiu 9 | * @date: 2021-01-29 10 | **/ 11 | public class CommonConst { 12 | 13 | /** 14 | * 否 15 | */ 16 | public static final int FALSE = 0; 17 | 18 | /** 19 | * 是 20 | */ 21 | public static final int TURE = 1; 22 | 23 | /** 24 | * 博主id 25 | */ 26 | public static final int BLOGGER_ID = 1; 27 | 28 | /** 29 | * 默认用户昵称 30 | */ 31 | public static final String DEFAULT_NICKNAME = "用户" + IdWorker.getId(); 32 | 33 | /** 34 | * 默认用户头像 35 | */ 36 | public static final String DEFAULT_AVATAR = "https://www.static.talkxj.com/avatar/user.png"; 37 | 38 | /** 39 | * 前端组件名 40 | */ 41 | public static String COMPONENT = "Layout"; 42 | 43 | /** 44 | * 网站域名 45 | */ 46 | public static final String URL = "https://www.talkxj.com"; 47 | 48 | /** 49 | * 文章页面路径 50 | */ 51 | public static final String ARTICLE_PATH = "/articles/"; 52 | 53 | /** 54 | * 友联页面路径 55 | */ 56 | public static final String LINK_PATH = "/links"; 57 | 58 | } 59 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/constant/MQPrefixConst.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.constant; 2 | 3 | /** 4 | * mq常量 5 | * 6 | * @author: yezhiqiu 7 | * @date: 2021-04-16 8 | **/ 9 | public class MQPrefixConst { 10 | 11 | /** 12 | * maxwell交换机 13 | */ 14 | public static final String MAXWELL_EXCHANGE = "maxwell"; 15 | 16 | /** 17 | * maxwell队列 18 | */ 19 | public static final String MAXWELL_QUEUE = "article"; 20 | 21 | /** 22 | * email交换机 23 | */ 24 | public static final String EMAIL_EXCHANGE = "send"; 25 | 26 | /** 27 | * 邮件队列 28 | */ 29 | public static final String EMAIL_QUEUE = "email"; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/constant/OptTypeConst.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.constant; 2 | 3 | /** 4 | * 操作日志类型常量 5 | * 6 | * @author: yezhiqiu 7 | * @date: 2021-01-31 8 | **/ 9 | public class OptTypeConst { 10 | 11 | /** 12 | * 新增操作 13 | */ 14 | public static final String SAVE_OR_UPDATE = "新增或修改"; 15 | 16 | /** 17 | * 新增 18 | */ 19 | public static final String SAVE = "修改"; 20 | 21 | /** 22 | * 修改操作 23 | */ 24 | public static final String UPDATE = "修改"; 25 | 26 | /** 27 | * 删除操作 28 | */ 29 | public static final String REMOVE = "删除"; 30 | 31 | /** 32 | * 上传操作 33 | */ 34 | public static final String UPLOAD = "上传"; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/constant/RedisPrefixConst.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.constant; 2 | 3 | /** 4 | * redis常量 5 | * 6 | * @author: yezhiqiu 7 | * @date: 2021-03-18 8 | **/ 9 | public class RedisPrefixConst { 10 | 11 | /** 12 | * 验证码过期时间 13 | */ 14 | public static final long CODE_EXPIRE_TIME = 15 * 60 * 1000; 15 | 16 | /** 17 | * 验证码 18 | */ 19 | public static final String CODE_KEY = "code_"; 20 | 21 | /** 22 | * 博客浏览量 23 | */ 24 | public static final String BLOG_VIEWS_COUNT = "blog_views_count"; 25 | 26 | /** 27 | * 文章浏览量 28 | */ 29 | public static final String ARTICLE_VIEWS_COUNT = "article_views_count"; 30 | 31 | /** 32 | * 文章点赞量 33 | */ 34 | public static final String ARTICLE_LIKE_COUNT = "article_like_count"; 35 | 36 | /** 37 | * 用户点赞文章 38 | */ 39 | public static final String ARTICLE_USER_LIKE = "article_user_like"; 40 | 41 | /** 42 | * 评论点赞量 43 | */ 44 | public static final String COMMENT_LIKE_COUNT = "comment_like_count"; 45 | 46 | /** 47 | * 用户点赞评论 48 | */ 49 | public static final String COMMENT_USER_LIKE = "comment_user_like"; 50 | 51 | /** 52 | * 关于我信息 53 | */ 54 | public static final String ABOUT = "about"; 55 | 56 | /** 57 | * 公告 58 | */ 59 | public static final String NOTICE = "notice"; 60 | 61 | /** 62 | * ip集合 63 | */ 64 | public static final String IP_SET = "ip_set"; 65 | 66 | 67 | } 68 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/constant/StatusConst.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.constant; 2 | 3 | /** 4 | * 返回码常量 5 | * 6 | * @author xiaojie 7 | */ 8 | public class StatusConst { 9 | 10 | /** 11 | * 成功 12 | */ 13 | public static final int OK = 20000; 14 | 15 | /** 16 | * 失败 17 | */ 18 | public static final int ERROR = 20001; 19 | 20 | /** 21 | * 系统异常 22 | */ 23 | public static final int SYSTEM_ERROR = 50000; 24 | 25 | /** 26 | * 未登录 27 | */ 28 | public static final int NOT_LOGIN = 40001; 29 | 30 | /** 31 | * 没有操作权限 32 | */ 33 | public static final int AUTHORIZED = 40003; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/controller/ControllerAdvice.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.controller; 2 | 3 | import com.minzheng.blog.exception.ServeException; 4 | import com.minzheng.blog.vo.Result; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import org.springframework.web.bind.MethodArgumentNotValidException; 7 | import org.springframework.web.bind.annotation.ExceptionHandler; 8 | import org.springframework.web.bind.annotation.RestControllerAdvice; 9 | 10 | 11 | /** 12 | * 全局异常处理 13 | * 14 | * @author 11921 15 | */ 16 | @RestControllerAdvice 17 | public class ControllerAdvice { 18 | 19 | /** 20 | * 处理服务异常 21 | * 22 | * @param e 23 | * @return 24 | */ 25 | @ExceptionHandler(value = ServeException.class) 26 | public Result errorHandler(ServeException e) { 27 | return new Result(false, StatusConst.ERROR, e.getMessage()); 28 | } 29 | 30 | /** 31 | * 处理参数异常 32 | * 33 | * @param e 34 | * @return 35 | */ 36 | @ExceptionHandler(MethodArgumentNotValidException.class) 37 | public Result errorHandler(MethodArgumentNotValidException e) { 38 | return new Result(false, StatusConst.ERROR, e.getBindingResult().getFieldError().getDefaultMessage()); 39 | } 40 | 41 | /** 42 | * 处理系统异常 43 | * 44 | * @param e 45 | * @return 46 | */ 47 | @ExceptionHandler(value = Exception.class) 48 | public Result errorHandler(Exception e) { 49 | e.printStackTrace(); 50 | return new Result(false, StatusConst.SYSTEM_ERROR, "系统异常"); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/controller/LogController.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.controller; 2 | 3 | import com.minzheng.blog.constant.StatusConst; 4 | import com.minzheng.blog.dto.OperationLogDTO; 5 | import com.minzheng.blog.dto.PageDTO; 6 | import com.minzheng.blog.service.OperationLogService; 7 | import com.minzheng.blog.vo.ConditionVO; 8 | import com.minzheng.blog.vo.Result; 9 | import io.swagger.annotations.Api; 10 | import io.swagger.annotations.ApiOperation; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.web.bind.annotation.DeleteMapping; 13 | import org.springframework.web.bind.annotation.GetMapping; 14 | import org.springframework.web.bind.annotation.RequestBody; 15 | import org.springframework.web.bind.annotation.RestController; 16 | 17 | import java.util.List; 18 | 19 | /** 20 | * @author: yezhiqiu 21 | * @date: 2021-01-31 22 | **/ 23 | @Api(tags = "日志模块") 24 | @RestController 25 | public class LogController { 26 | @Autowired 27 | private OperationLogService operationLogService; 28 | 29 | @ApiOperation(value = "查看操作日志") 30 | @GetMapping("/admin/operation/logs") 31 | public Result> listOperationLogs(ConditionVO conditionVO) { 32 | return new Result<>(true, StatusConst.OK, "查询成功", operationLogService.listOperationLogs(conditionVO)); 33 | } 34 | 35 | @ApiOperation(value = "删除操作日志") 36 | @DeleteMapping("/admin/operation/logs") 37 | public Result deleteOperationLogs(@RequestBody List logIdList) { 38 | operationLogService.removeByIds(logIdList); 39 | return new Result<>(true, StatusConst.OK, "删除成功"); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/controller/MenuController.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.controller; 2 | 3 | import com.minzheng.blog.constant.StatusConst; 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.service.MenuService; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.Result; 10 | import io.swagger.annotations.Api; 11 | import io.swagger.annotations.ApiOperation; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.web.bind.annotation.GetMapping; 14 | import org.springframework.web.bind.annotation.RestController; 15 | 16 | import java.util.List; 17 | 18 | /** 19 | * @author: yezhiqiu 20 | * @date: 2021-01-23 21 | **/ 22 | @Api(tags = "菜单模块") 23 | @RestController 24 | public class MenuController { 25 | @Autowired 26 | private MenuService menuService; 27 | 28 | @ApiOperation(value = "查看菜单列表") 29 | @GetMapping("/admin/menus") 30 | public Result> listMenus(ConditionVO conditionVO) { 31 | return new Result<>(true, StatusConst.OK, "查询成功", menuService.listMenus(conditionVO)); 32 | } 33 | 34 | @ApiOperation(value = "查看角色菜单选项") 35 | @GetMapping("/admin/role/menus") 36 | public Result> listMenuOptions() { 37 | return new Result<>(true, StatusConst.OK, "查询成功", menuService.listMenuOptions()); 38 | } 39 | 40 | @ApiOperation(value = "查看用户菜单") 41 | @GetMapping("/admin/user/menus") 42 | public Result> listUserMenus() { 43 | return new Result<>(true, StatusConst.OK, "查询成功", menuService.listUserMenus()); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/controller/MessageController.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.controller; 2 | 3 | 4 | import com.minzheng.blog.annotation.OptLog; 5 | import com.minzheng.blog.constant.StatusConst; 6 | import com.minzheng.blog.dto.MessageBackDTO; 7 | import com.minzheng.blog.dto.PageDTO; 8 | import com.minzheng.blog.vo.*; 9 | import com.minzheng.blog.dto.MessageDTO; 10 | import com.minzheng.blog.service.MessageService; 11 | import io.swagger.annotations.Api; 12 | import io.swagger.annotations.ApiOperation; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.web.bind.annotation.*; 15 | 16 | import javax.validation.Valid; 17 | import java.util.List; 18 | 19 | import static com.minzheng.blog.constant.OptTypeConst.REMOVE; 20 | 21 | /** 22 | * @author xiaojie 23 | * @since 2020-05-18 24 | */ 25 | @Api(tags = "留言模块") 26 | @RestController 27 | public class MessageController { 28 | @Autowired 29 | private MessageService messageService; 30 | 31 | @ApiOperation(value = "添加留言") 32 | @PostMapping("/messages") 33 | public Result saveMessage(@Valid @RequestBody MessageVO messageVO) { 34 | messageService.saveMessage(messageVO); 35 | return new Result<>(true, StatusConst.OK, "添加成功"); 36 | } 37 | 38 | @ApiOperation(value = "查看留言列表") 39 | @GetMapping("/messages") 40 | public Result> listMessages() { 41 | return new Result<>(true, StatusConst.OK, "添加成功", messageService.listMessages()); 42 | } 43 | 44 | @ApiOperation(value = "查看后台留言列表") 45 | @GetMapping("/admin/messages") 46 | public Result> listMessageBackDTO(ConditionVO condition) { 47 | return new Result<>(true, StatusConst.OK, "添加成功", messageService.listMessageBackDTO(condition)); 48 | } 49 | 50 | @OptLog(optType = REMOVE) 51 | @ApiOperation(value = "删除留言") 52 | @DeleteMapping("/admin/messages") 53 | public Result deleteMessages(@RequestBody List messageIdList) { 54 | messageService.removeByIds(messageIdList); 55 | return new Result<>(true, StatusConst.OK, "操作成功"); 56 | } 57 | 58 | } 59 | 60 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/controller/ResourceController.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.controller; 2 | 3 | import com.minzheng.blog.constant.StatusConst; 4 | import com.minzheng.blog.dto.ResourceDTO; 5 | import com.minzheng.blog.dto.labelOptionDTO; 6 | import com.minzheng.blog.service.ResourceService; 7 | import com.minzheng.blog.vo.ResourceVO; 8 | import com.minzheng.blog.vo.Result; 9 | import io.swagger.annotations.Api; 10 | import io.swagger.annotations.ApiOperation; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.web.bind.annotation.*; 13 | 14 | import javax.validation.Valid; 15 | import java.util.List; 16 | 17 | /** 18 | * @author: yezhiqiu 19 | * @date: 2020-12-27 20 | **/ 21 | @Api(tags = "资源模块") 22 | @RestController 23 | public class ResourceController { 24 | @Autowired 25 | private ResourceService resourceService; 26 | 27 | @ApiOperation(value = "导入swagger接口") 28 | @GetMapping("/admin/resources/import/swagger") 29 | public Result importSwagger() { 30 | resourceService.importSwagger(); 31 | return new Result<>(true, StatusConst.OK, "导入成功"); 32 | } 33 | 34 | @ApiOperation(value = "查看资源列表") 35 | @GetMapping("/admin/resources") 36 | public Result> listResources() { 37 | return new Result<>(true, StatusConst.OK, "查询成功", resourceService.listResources()); 38 | } 39 | 40 | @ApiOperation(value = "删除资源") 41 | @DeleteMapping("/admin/resources") 42 | public Result deleteResources(@RequestBody List resourceIdList) { 43 | resourceService.deleteResources(resourceIdList); 44 | return new Result<>(true, StatusConst.OK, "删除成功"); 45 | } 46 | 47 | @ApiOperation(value = "新增或修改资源") 48 | @PostMapping("/admin/resources") 49 | public Result saveOrUpdateResource(@RequestBody @Valid ResourceVO resourceVO) { 50 | resourceService.saveOrUpdateResource(resourceVO); 51 | return new Result<>(true, StatusConst.OK, "操作成功"); 52 | } 53 | 54 | @ApiOperation(value = "查看角色资源选项") 55 | @GetMapping("/admin/role/resources") 56 | public Result> listResourceOption() { 57 | return new Result<>(true, StatusConst.OK, "查询成功", resourceService.listResourceOption()); 58 | } 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/controller/RoleController.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.controller; 2 | 3 | import com.minzheng.blog.annotation.OptLog; 4 | import com.minzheng.blog.constant.StatusConst; 5 | import com.minzheng.blog.dto.UserRoleDTO; 6 | import com.minzheng.blog.service.RoleService; 7 | import com.minzheng.blog.service.UserRoleService; 8 | import com.minzheng.blog.vo.ConditionVO; 9 | import com.minzheng.blog.vo.Result; 10 | import com.minzheng.blog.vo.RoleVO; 11 | import io.swagger.annotations.Api; 12 | import io.swagger.annotations.ApiOperation; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.web.bind.annotation.*; 15 | 16 | import javax.validation.Valid; 17 | import java.util.List; 18 | 19 | import static com.minzheng.blog.constant.OptTypeConst.REMOVE; 20 | import static com.minzheng.blog.constant.OptTypeConst.SAVE_OR_UPDATE; 21 | 22 | /** 23 | * @author: yezhiqiu 24 | * @date: 2020-12-27 25 | **/ 26 | @Api(tags = "角色模块") 27 | @RestController 28 | public class RoleController { 29 | @Autowired 30 | private RoleService roleService; 31 | 32 | @ApiOperation(value = "查询用户角色选项") 33 | @GetMapping("/admin/users/role") 34 | public Result> listUserRole() { 35 | return new Result<>(true, StatusConst.OK, "查询成功", roleService.listUserRoles()); 36 | } 37 | 38 | @ApiOperation(value = "查询角色列表") 39 | @GetMapping("/admin/roles") 40 | public Result> listRoles(ConditionVO conditionVO) { 41 | return new Result<>(true, StatusConst.OK, "查询成功", roleService.listRoles(conditionVO)); 42 | } 43 | 44 | @OptLog(optType = SAVE_OR_UPDATE) 45 | @ApiOperation(value = "保存或更新角色") 46 | @PostMapping("/admin/role") 47 | public Result listRoles(@RequestBody @Valid RoleVO roleVO) { 48 | roleService.saveOrUpdateRole(roleVO); 49 | return new Result<>(true, StatusConst.OK, "操作成功"); 50 | } 51 | 52 | @OptLog(optType = REMOVE) 53 | @ApiOperation(value = "删除角色") 54 | @DeleteMapping("/admin/roles") 55 | public Result deleteRoles(@RequestBody List roleIdList) { 56 | roleService.deleteRoles(roleIdList); 57 | return new Result<>(true, StatusConst.OK, "操作成功"); 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /blog-springboot/src/main/java/com/minzheng/blog/dao/ArticleDao.java: -------------------------------------------------------------------------------- 1 | package com.minzheng.blog.dao; 2 | 3 | import com.minzheng.blog.dto.*; 4 | import com.minzheng.blog.entity.Article; 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 ArticleDao extends BaseMapper
{ 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 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /blog-springboot/src/main/resources/mapper/MenuDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 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 | 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 | 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 | 41 | 42 | 56 | -------------------------------------------------------------------------------- /blog-vue/admin/src/layout/index.vue: -------------------------------------------------------------------------------- 1 | 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 | 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 | 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 | 13 | 14 | 34 | 35 | 56 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/layout/Footer.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 21 | 22 | 50 | -------------------------------------------------------------------------------- /blog-vue/blog/src/components/toast/Toast.vue: -------------------------------------------------------------------------------- 1 | 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 | 21 | 22 | 43 | 44 | 65 | -------------------------------------------------------------------------------- /blog-vue/blog/src/views/tag/Tag.vue: -------------------------------------------------------------------------------- 1 | 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 | --------------------------------------------------------------------------------