模块化拆分

This commit is contained in:
禾几海
2021-09-29 23:09:54 +08:00
parent c8e93c45c7
commit 6d3739517a
157 changed files with 9528 additions and 9014 deletions

2
.gitignore vendored
View File

@@ -4,5 +4,5 @@
target/
# 本地项目的私有文件
src/main/resources/application-dev.properties
blog-deploy/src/main/resources/application-dev.properties
src/main/resources/application-prod.properties

50
blog-article/pom.xml Normal file
View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blog</artifactId>
<groupId>cn.celess</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blog-article</artifactId>
<properties>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-common</artifactId>
<version>${blog-common.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-user</artifactId>
<version>${blog-user.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--MarkDown 2 html -->
<dependency>
<groupId>com.youbenzi</groupId>
<artifactId>MDTool</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>net.minidev</groupId>
<artifactId>json-smart</artifactId>
<version>2.4.7</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -1,12 +1,12 @@
package cn.celess.blog.controller;
package cn.celess.article.controller;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Response;
import cn.celess.blog.entity.model.ArticleModel;
import cn.celess.blog.entity.request.ArticleReq;
import cn.celess.blog.service.ArticleService;
import cn.celess.blog.util.RedisUserUtil;
import cn.celess.blog.util.SitemapGenerateUtil;
import cn.celess.article.util.SitemapGenerateUtil;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.entity.Response;
import cn.celess.common.entity.dto.ArticleReq;
import cn.celess.common.entity.vo.ArticleModel;
import cn.celess.common.service.ArticleService;
import cn.celess.user.util.RedisUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

View File

@@ -1,25 +1,26 @@
package cn.celess.blog.service.serviceimpl;
package cn.celess.article.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.enmu.RoleEnum;
import cn.celess.blog.entity.*;
import cn.celess.blog.entity.model.ArticleModel;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.ArticleReq;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.*;
import cn.celess.blog.service.ArticleService;
import cn.celess.blog.service.UserService;
import cn.celess.blog.util.ModalTrans;
import cn.celess.blog.util.RedisUserUtil;
import cn.celess.blog.util.RegexUtil;
import cn.celess.blog.util.StringFromHtmlUtil;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.enmu.RoleEnum;
import cn.celess.common.entity.*;
import cn.celess.common.entity.dto.ArticleReq;
import cn.celess.common.entity.vo.ArticleModel;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.exception.MyException;
import cn.celess.common.mapper.*;
import cn.celess.common.service.ArticleService;
import cn.celess.common.service.UserService;
import cn.celess.common.util.ModalTrans;
import cn.celess.common.util.RegexUtil;
import cn.celess.common.util.StringFromHtmlUtil;
import cn.celess.user.util.RedisUserUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.youbenzi.mdtool.tool.MDTool;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -249,6 +250,7 @@ public class ArticleServiceImpl implements ArticleService {
}
@Override
@Cacheable(value = {"article"}, key = "'retrieveOneById'+#articleId")
public ArticleModel retrieveOneById(long articleId, boolean is4update) {
Article article = articleMapper.findArticleById(articleId);
if (article == null) {
@@ -300,6 +302,7 @@ public class ArticleServiceImpl implements ArticleService {
}
@Override
@Cacheable(value = {"article"}, key = "'retrievePageForOpen:'+#page+':'+#count")
public PageData<ArticleModel> retrievePageForOpen(int count, int page) {
PageHelper.startPage(page, count);
List<Article> articleList = articleMapper.findAllByOpen(true);
@@ -314,6 +317,7 @@ public class ArticleServiceImpl implements ArticleService {
}
@Override
@Cacheable(value = {"article"}, key = "'findByCategory:'+#name")
public PageData<ArticleModel> findByCategory(String name, int page, int count) {
Category category = categoryMapper.findCategoryByName(name);
if (category == null) {
@@ -333,6 +337,7 @@ public class ArticleServiceImpl implements ArticleService {
}
@Override
@Cacheable(value = {"article"}, key = "'findByTag:'+#name")
public PageData<ArticleModel> findByTag(String name, int page, int count) {
Tag tag = tagMapper.findTagByName(name);
if (tag == null) {
@@ -350,6 +355,7 @@ public class ArticleServiceImpl implements ArticleService {
return new PageData<>(new PageInfo<>(articleByTag), modelList);
}
private ArticleModel setPreAndNextArticle(ArticleModel articleModel) {
if (articleModel == null) {
return null;

View File

@@ -1,7 +1,9 @@
package cn.celess.blog.util;
package cn.celess.article.util;
import cn.celess.blog.entity.Article;
import cn.celess.blog.mapper.ArticleMapper;
import cn.celess.common.entity.Article;
import cn.celess.common.mapper.ArticleMapper;
import cn.celess.common.util.DateFormatUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
@@ -36,6 +38,7 @@ public class SitemapGenerateUtil {
@Autowired
ArticleMapper articleMapper;
@Value("${sitemap.path}")
private String path;
private Map<String, String> urlList;
@@ -108,4 +111,3 @@ public class SitemapGenerateUtil {
}
}

31
blog-categorytag/pom.xml Normal file
View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blog</artifactId>
<groupId>cn.celess</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blog-categorytag</artifactId>
<properties>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-common</artifactId>
<version>${blog-common.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -1,7 +1,7 @@
package cn.celess.blog.controller;
package cn.celess.categorytag.controller;
import cn.celess.blog.entity.Response;
import cn.celess.blog.service.CategoryService;
import cn.celess.common.entity.Response;
import cn.celess.common.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

View File

@@ -1,8 +1,8 @@
package cn.celess.blog.controller;
package cn.celess.categorytag.controller;
import cn.celess.blog.entity.Response;
import cn.celess.blog.entity.model.TagModel;
import cn.celess.blog.service.TagService;
import cn.celess.common.entity.Response;
import cn.celess.common.entity.vo.TagModel;
import cn.celess.common.service.TagService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

View File

@@ -1,16 +1,16 @@
package cn.celess.blog.service.serviceimpl;
package cn.celess.categorytag.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Article;
import cn.celess.blog.entity.Category;
import cn.celess.blog.entity.model.ArticleModel;
import cn.celess.blog.entity.model.CategoryModel;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.ArticleMapper;
import cn.celess.blog.mapper.CategoryMapper;
import cn.celess.blog.service.CategoryService;
import cn.celess.blog.util.ModalTrans;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.entity.Article;
import cn.celess.common.entity.Category;
import cn.celess.common.entity.vo.ArticleModel;
import cn.celess.common.entity.vo.CategoryModel;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.exception.MyException;
import cn.celess.common.mapper.ArticleMapper;
import cn.celess.common.mapper.CategoryMapper;
import cn.celess.common.service.CategoryService;
import cn.celess.common.util.ModalTrans;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,17 +1,17 @@
package cn.celess.blog.service.serviceimpl;
package cn.celess.categorytag.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.ArticleTag;
import cn.celess.blog.entity.Tag;
import cn.celess.blog.entity.model.ArticleModel;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.TagModel;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.ArticleMapper;
import cn.celess.blog.mapper.ArticleTagMapper;
import cn.celess.blog.mapper.TagMapper;
import cn.celess.blog.service.TagService;
import cn.celess.blog.util.ModalTrans;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.entity.ArticleTag;
import cn.celess.common.entity.Tag;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.entity.vo.TagModel;
import cn.celess.common.exception.MyException;
import cn.celess.common.mapper.ArticleMapper;
import cn.celess.common.mapper.ArticleTagMapper;
import cn.celess.common.mapper.TagMapper;
import cn.celess.common.service.TagService;
import cn.celess.common.util.ModalTrans;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;

38
blog-comment/pom.xml Normal file
View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blog</artifactId>
<groupId>cn.celess</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blog-comment</artifactId>
<properties>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-common</artifactId>
<version>${blog-common.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-user</artifactId>
<version>${blog-user.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -1,8 +1,8 @@
package cn.celess.blog.controller;
package cn.celess.comment.controller;
import cn.celess.blog.entity.Response;
import cn.celess.blog.entity.request.CommentReq;
import cn.celess.blog.service.CommentService;
import cn.celess.common.entity.Response;
import cn.celess.common.entity.dto.CommentReq;
import cn.celess.common.service.CommentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

View File

@@ -1,19 +1,19 @@
package cn.celess.blog.service.serviceimpl;
package cn.celess.comment.serviceimpl;
import cn.celess.blog.enmu.CommentStatusEnum;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Comment;
import cn.celess.blog.entity.User;
import cn.celess.blog.entity.model.CommentModel;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.CommentReq;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.ArticleMapper;
import cn.celess.blog.mapper.CommentMapper;
import cn.celess.blog.mapper.UserMapper;
import cn.celess.blog.service.CommentService;
import cn.celess.blog.util.ModalTrans;
import cn.celess.blog.util.RedisUserUtil;
import cn.celess.common.enmu.CommentStatusEnum;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.entity.Comment;
import cn.celess.common.entity.User;
import cn.celess.common.entity.dto.CommentReq;
import cn.celess.common.entity.vo.CommentModel;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.exception.MyException;
import cn.celess.common.mapper.ArticleMapper;
import cn.celess.common.mapper.CommentMapper;
import cn.celess.common.mapper.UserMapper;
import cn.celess.common.service.CommentService;
import cn.celess.common.util.ModalTrans;
import cn.celess.user.util.RedisUserUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.BeanUtils;
@@ -21,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

91
blog-common/pom.xml Normal file
View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blog</artifactId>
<groupId>cn.celess</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blog-common</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- pageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!--Email-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- TODO: remove this -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.2.99]</version>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.45.0</version>
</dependency>
<!-- protostuff序列化依赖 -->
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>1.1.6</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,9 @@
package cn.celess.common.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("cn.celess.common.mapper")
public class MybatisConfig {
}

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.enmu;
package cn.celess.common.enmu;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.enmu;
package cn.celess.common.enmu;
/**
* @author : xiaohai

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.enmu;
package cn.celess.common.enmu;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.enmu;
package cn.celess.common.enmu;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,7 +1,8 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@@ -10,7 +11,7 @@ import java.util.List;
* @date : 2019/03/28 14:51
*/
@Data
public class Article {
public class Article implements Serializable {
private Long id;
/**

View File

@@ -1,9 +1,11 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author: 小海
* @Date: 2020-05-24 14:52
@@ -12,7 +14,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ArticleTag {
public class ArticleTag implements Serializable {
private Long id;
private Article article;

View File

@@ -1,13 +1,15 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/03/28 22:18
*/
@NoArgsConstructor
public class Category extends TagCategory {
public class Category extends TagCategory implements Serializable {
public Category(String name) {
super.setName(name);
}

View File

@@ -1,7 +1,8 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
@@ -10,7 +11,7 @@ import java.util.Date;
*/
@Data
public class Comment {
public class Comment implements Serializable {
private Long id;

View File

@@ -1,7 +1,9 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.Data;
import java.io.Serializable;
/**
* 友链
*
@@ -9,7 +11,7 @@ import lombok.Data;
* @date : 2019/05/12 11:33
*/
@Data
public class PartnerSite {
public class PartnerSite implements Serializable {
private Long id;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.common.enmu.ResponseEnum;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import lombok.SneakyThrows;

View File

@@ -1,13 +1,15 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/03/28 22:19
*/
@NoArgsConstructor
public class Tag extends TagCategory {
public class Tag extends TagCategory implements Serializable {
public Tag(String name) {
super.setName(name);

View File

@@ -1,14 +1,16 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: 小海
* @Date: 2020-05-24 14:03
* @Desc:
*/
@Data
public class TagCategory {
public class TagCategory implements Serializable {
private Long id;
private String name;

View File

@@ -1,9 +1,10 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
@@ -12,7 +13,7 @@ import java.util.Date;
*/
@Data
@NoArgsConstructor
public class User {
public class User implements Serializable {
private Long id;
/**

View File

@@ -1,7 +1,8 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
@@ -9,7 +10,7 @@ import java.util.Date;
* @date : 2019/04/02 22:14
*/
@Data
public class Visitor {
public class Visitor implements Serializable {
private long id;
private String ip;

View File

@@ -1,7 +1,8 @@
package cn.celess.blog.entity;
package cn.celess.common.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
@@ -9,7 +10,7 @@ import java.util.Date;
* @date : 2019/05/12 11:29
*/
@Data
public class WebUpdate {
public class WebUpdate implements Serializable {
private long id;

View File

@@ -1,13 +1,15 @@
package cn.celess.blog.entity.request;
package cn.celess.common.entity.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/06/01 22:46
*/
@Data
public class ArticleReq {
public class ArticleReq implements Serializable {
private Long id;
private String title;
private String mdContent;

View File

@@ -1,13 +1,15 @@
package cn.celess.blog.entity.request;
package cn.celess.common.entity.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/06/02 10:35
*/
@Data
public class CommentReq {
public class CommentReq implements Serializable {
private Long id;
private String content;
private long pid = -1;

View File

@@ -1,13 +1,15 @@
package cn.celess.blog.entity.request;
package cn.celess.common.entity.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2020/07/31 20:50
*/
@Data
public class LinkApplyReq {
public class LinkApplyReq implements Serializable {
private String name;
private String email;
private String url;

View File

@@ -1,13 +1,15 @@
package cn.celess.blog.entity.request;
package cn.celess.common.entity.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/06/02 11:40
*/
@Data
public class LinkReq {
public class LinkReq implements Serializable {
private long id;
private String name;
private String url;

View File

@@ -1,9 +1,11 @@
package cn.celess.blog.entity.request;
package cn.celess.common.entity.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/06/01 22:47
@@ -11,7 +13,7 @@ import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginReq {
public class LoginReq implements Serializable {
private String email;
private String password;
/**

View File

@@ -1,14 +1,16 @@
package cn.celess.blog.entity.request;
package cn.celess.common.entity.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: 小海
* @Date 2019/09/06 13:33
* @Description
*/
@Data
public class UserReq {
public class UserReq implements Serializable {
private Long id;
private String email;

View File

@@ -1,9 +1,10 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import cn.celess.blog.entity.Tag;
import cn.celess.common.entity.Tag;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
/**
@@ -12,7 +13,7 @@ import java.util.List;
*/
@Getter
@Setter
public class ArticleModel {
public class ArticleModel implements Serializable {
private Long id;
/**

View File

@@ -1,9 +1,10 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
@@ -14,7 +15,7 @@ import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CategoryModel {
public class CategoryModel implements Serializable {
private Long id;
private String name;

View File

@@ -1,8 +1,9 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
/**
@@ -11,7 +12,7 @@ import java.util.List;
*/
@Setter
@Getter
public class CommentModel {
public class CommentModel implements Serializable {
private long id;
private UserModel fromUser;

View File

@@ -1,10 +1,11 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
@@ -15,7 +16,7 @@ import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageData<T> {
public class PageData<T> implements Serializable {
private List<T> list;

View File

@@ -1,11 +1,13 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/04/21 22:43
*/
public class QiniuResponse {
public class QiniuResponse implements Serializable {
public String key;
public String hash;
public String bucket;

View File

@@ -1,9 +1,10 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
@@ -14,7 +15,7 @@ import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TagModel {
public class TagModel implements Serializable {
private Long id;
private String name;

View File

@@ -1,16 +1,18 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import cn.celess.blog.enmu.UserAccountStatusEnum;
import cn.celess.common.enmu.UserAccountStatusEnum;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/04/22 23:13
*/
@Getter
@Setter
public class UserModel {
public class UserModel implements Serializable {
private Long id;

View File

@@ -1,13 +1,15 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/05/05 16:05
*/
@Data
public class VisitorModel {
public class VisitorModel implements Serializable {
private long id;
private String ip;

View File

@@ -1,15 +1,17 @@
package cn.celess.blog.entity.model;
package cn.celess.common.entity.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author : xiaohai
* @date : 2019/05/12 11:32
*/
@Data
@NoArgsConstructor
public class WebUpdateModel {
public class WebUpdateModel implements Serializable {
private long id;
private String info;

View File

@@ -1,9 +1,9 @@
package cn.celess.blog.exception;
package cn.celess.common.exception;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Response;
import cn.celess.blog.service.MailService;
import cn.celess.blog.util.DateFormatUtil;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.entity.Response;
import cn.celess.common.service.MailService;
import cn.celess.common.util.DateFormatUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
@@ -27,7 +28,7 @@ import javax.servlet.http.HttpServletRequest;
@ControllerAdvice
public class ExceptionHandle {
public static final Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);
@Autowired
@Resource
MailService mailService;
@Autowired
HttpServletRequest request;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.exception;
package cn.celess.common.exception;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.common.enmu.ResponseEnum;
import lombok.Data;
/**

View File

@@ -1,7 +1,8 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.Article;
import cn.celess.common.entity.Article;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -41,8 +42,10 @@ public interface ArticleMapper {
List<Article> findAll();
@Cacheable(value = {"articleDao"}, key = "'getPreArticle:'+#id")
Article getPreArticle(Long id);
@Cacheable(value = {"articleDao"}, key = "'getNextArticle:'+#id")
Article getNextArticle(Long id);
int updateReadingNumber(long id);

View File

@@ -1,7 +1,7 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.ArticleTag;
import cn.celess.blog.entity.Tag;
import cn.celess.common.entity.ArticleTag;
import cn.celess.common.entity.Tag;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.Category;
import cn.celess.common.entity.Category;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.Comment;
import cn.celess.common.entity.Comment;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.PartnerSite;
import cn.celess.common.entity.PartnerSite;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.Tag;
import cn.celess.common.entity.Tag;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.User;
import cn.celess.common.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.Visitor;
import cn.celess.common.entity.Visitor;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.mapper;
package cn.celess.common.mapper;
import cn.celess.blog.entity.WebUpdate;
import cn.celess.common.entity.WebUpdate;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

View File

@@ -1,8 +1,8 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.ArticleModel;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.ArticleReq;
import cn.celess.common.entity.dto.ArticleReq;
import cn.celess.common.entity.vo.ArticleModel;
import cn.celess.common.entity.vo.PageData;
import org.springframework.stereotype.Service;

View File

@@ -1,7 +1,7 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.CategoryModel;
import cn.celess.blog.entity.model.PageData;
import cn.celess.common.entity.vo.CategoryModel;
import cn.celess.common.entity.vo.PageData;
import org.springframework.stereotype.Service;
/**

View File

@@ -1,8 +1,9 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.CommentModel;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.CommentReq;
import cn.celess.common.entity.dto.CommentReq;
import cn.celess.common.entity.vo.CommentModel;
import cn.celess.common.entity.vo.PageData;
import org.springframework.stereotype.Service;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Service;

View File

@@ -1,9 +1,9 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.PartnerSite;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.LinkApplyReq;
import cn.celess.blog.entity.request.LinkReq;
import cn.celess.common.entity.PartnerSite;
import cn.celess.common.entity.dto.LinkApplyReq;
import cn.celess.common.entity.dto.LinkReq;
import cn.celess.common.entity.vo.PageData;
import org.springframework.stereotype.Service;
import java.util.List;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.QiniuResponse;
import cn.celess.common.entity.vo.QiniuResponse;
import com.qiniu.storage.model.FileInfo;
import org.springframework.stereotype.Service;

View File

@@ -1,7 +1,7 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.TagModel;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.entity.vo.TagModel;
import org.springframework.stereotype.Service;
import java.util.List;

View File

@@ -1,9 +1,9 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.UserModel;
import cn.celess.blog.entity.request.LoginReq;
import cn.celess.blog.entity.request.UserReq;
import cn.celess.common.entity.dto.LoginReq;
import cn.celess.common.entity.dto.UserReq;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.entity.vo.UserModel;
import org.springframework.stereotype.Service;
import java.io.InputStream;

View File

@@ -1,7 +1,7 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.VisitorModel;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.entity.vo.VisitorModel;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;

View File

@@ -1,7 +1,8 @@
package cn.celess.blog.service;
package cn.celess.common.service;
import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.WebUpdateModel;
import cn.celess.common.entity.vo.PageData;
import cn.celess.common.entity.vo.WebUpdateModel;
import org.springframework.stereotype.Service;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;

View File

@@ -1,15 +1,13 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
import java.util.Objects;
/**
* @Author: 小海
@@ -17,15 +15,20 @@ import java.util.Objects;
* @Desc:
*/
public class HttpUtil {
private static final OkHttpClient CLIENT = new OkHttpClient();
public static String get(String urlStr) {
Request request = new Request.Builder()
.url(urlStr)
.get()
.build();
try (Response response = CLIENT.newCall(request).execute()) {
return Objects.requireNonNull(response.body()).string();
try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setDownloadImages(false);
webClient.getOptions().setActiveXNative(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
Page clientPage = webClient.getPage(urlStr);
if (clientPage.isHtmlPage()) {
return clientPage.toString();
}
return null;
} catch (IOException e) {
return null;
}
@@ -33,7 +36,7 @@ public class HttpUtil {
public static String getAfterRendering(String url) {
try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
try (final WebClient webClient = new WebClient(BrowserVersion.BEST_SUPPORTED)) {
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import org.springframework.util.DigestUtils;

View File

@@ -1,8 +1,9 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import cn.celess.blog.enmu.UserAccountStatusEnum;
import cn.celess.blog.entity.*;
import cn.celess.blog.entity.model.*;
import cn.celess.common.enmu.UserAccountStatusEnum;
import cn.celess.common.entity.*;
import cn.celess.common.entity.vo.*;
import org.springframework.beans.BeanUtils;
/**

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import com.dyuproject.protostuff.LinkedBuffer;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import org.springframework.beans.factory.annotation.Autowired;
@@ -1369,12 +1369,9 @@ public class RedisUtil {
public <T> boolean putListCacheWithExpireTime(String key, List<T> objList, final long expireTime) {
final byte[] bkey = key.getBytes();
final byte[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
boolean result = redisTemplate.execute((RedisCallback<Boolean>) connection -> {
connection.setEx(bkey, expireTime, bvalue);
return true;
}
});
return result;
}

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import javax.servlet.http.HttpServletRequest;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
/**
* @author : xiaohai

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.util;
package cn.celess.common.util;
import java.awt.*;

View File

@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.celess.blog.mapper.ArticleTagMapper">
<mapper namespace="cn.celess.common.mapper.ArticleTagMapper">
<resultMap id="articleTagResultMap" type="cn.celess.blog.entity.ArticleTag">
<resultMap id="articleTagResultMap" type="cn.celess.common.entity.ArticleTag">
<id column="at_id" property="id"/>
<result column="a_id" property="article.id"/>
<result column="t_id" property="tag.id"/>
<association property="article" column="a_id" resultMap="cn.celess.blog.mapper.ArticleMapper.articleResultMap"
javaType="cn.celess.blog.entity.Article">
<association property="article" column="a_id" resultMap="cn.celess.common.mapper.ArticleMapper.articleResultMap"
javaType="cn.celess.common.entity.Article">
</association>
<association property="tag" column="t_id" resultMap="cn.celess.blog.mapper.CategoryMapper.categoryResultMap"
javaType="cn.celess.blog.entity.TagCategory">
<association property="tag" column="t_id" resultMap="cn.celess.common.mapper.CategoryMapper.categoryResultMap"
javaType="cn.celess.common.entity.TagCategory">
</association>
</resultMap>
@@ -64,7 +64,7 @@
and article_tag.t_id = tag_category.t_id
</select>
<select id="findTagByArticleId" resultMap="cn.celess.blog.mapper.TagMapper.tagResultMap">
<select id="findTagByArticleId" resultMap="cn.celess.common.mapper.TagMapper.tagResultMap">
select tag_category.*
from article_tag,
tag_category

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.CategoryMapper">
<resultMap id="categoryResultMap" type="cn.celess.blog.entity.Category">
<mapper namespace="cn.celess.common.mapper.CategoryMapper">
<resultMap id="categoryResultMap" type="cn.celess.common.entity.Category">
<id column="t_id" property="id"/>
<result column="t_name" property="name"/>
<result column="is_category" property="category"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.CommentMapper">
<resultMap id="commentResultMap" type="cn.celess.blog.entity.Comment">
<mapper namespace="cn.celess.common.mapper.CommentMapper">
<resultMap id="commentResultMap" type="cn.celess.common.entity.Comment">
<id column="co_id" property="id"/>
<result column="co_page_path" property="pagePath"/>
<result column="co_status" property="status"/>
@@ -12,7 +12,7 @@
<result column="co_to_author_id" property="toUser.id"/>
</resultMap>
<resultMap id="commentViewResultMap" type="cn.celess.blog.entity.Comment">
<resultMap id="commentViewResultMap" type="cn.celess.common.entity.Comment">
<id column="commentId" property="id"/>
<result column="pagePath" property="pagePath"/>
<result column="status" property="status"/>
@@ -21,13 +21,13 @@
<result column="pid" property="pid"/>
<result column="fromAuthorId" property="fromUser.id"/>
<result column="toAuthorId" property="toUser.id"/>
<association property="fromUser" column="fromAuthorId" javaType="cn.celess.blog.entity.User">
<association property="fromUser" column="fromAuthorId" javaType="cn.celess.common.entity.User">
<id column="fromAuthorId" property="id"/>
<result column="fromAuthorEmail" property="email"/>
<result column="fromAuthorDisplayName" property="displayName"/>
<result column="fromAuthorAvatar" property="avatarImgUrl"/>
</association>
<association property="toUser" column="toAuthorId" javaType="cn.celess.blog.entity.User">
<association property="toUser" column="toAuthorId" javaType="cn.celess.common.entity.User">
<id column="toAuthorId" property="id"/>
<result column="toAuthorEmail" property="email"/>
<result column="toAuthorDisplayName" property="displayName"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.PartnerMapper">
<resultMap id="partnerSiteResultMap" type="cn.celess.blog.entity.PartnerSite">
<mapper namespace="cn.celess.common.mapper.PartnerMapper">
<resultMap id="partnerSiteResultMap" type="cn.celess.common.entity.PartnerSite">
<id column="l_id" property="id"/>
<result column="l_name" property="name"/>
<result column="l_url" property="url"/>
@@ -13,12 +13,12 @@
<result column="l_notification" property="notification"/>
</resultMap>
<insert id="insert" parameterType="cn.celess.blog.entity.PartnerSite" useGeneratedKeys="true" keyProperty="id">
<insert id="insert" parameterType="cn.celess.common.entity.PartnerSite" useGeneratedKeys="true" keyProperty="id">
insert into links (l_name, l_is_open, l_url, l_icon_path, l_desc, l_email, l_notification, is_delete)
values (#{name}, #{open}, #{url}, #{iconPath}, #{desc}, #{email}, #{notification}, false)
</insert>
<update id="update" parameterType="cn.celess.blog.entity.PartnerSite">
<update id="update" parameterType="cn.celess.common.entity.PartnerSite">
update links
<trim prefix="set" suffixOverrides=",">
<if test="open!=null">l_is_open=#{open},</if>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.UserMapper">
<resultMap id="userResultMap" type="cn.celess.blog.entity.User">
<mapper namespace="cn.celess.common.mapper.UserMapper">
<resultMap id="userResultMap" type="cn.celess.common.entity.User">
<id column="u_id" property="id"/>
<result column="u_email" property="email"/>
<result column="u_pwd" property="pwd"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.VisitorMapper">
<resultMap id="partnerSiteResultMap" type="cn.celess.blog.entity.Visitor">
<mapper namespace="cn.celess.common.mapper.VisitorMapper">
<resultMap id="partnerSiteResultMap" type="cn.celess.common.entity.Visitor">
<id column="v_id" property="id"/>
<result column="v_date" property="date"/>
<result column="v_user_agent" property="ua"/>

View File

@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.WebUpdateInfoMapper">
<resultMap id="webUpdateResultMap" type="cn.celess.blog.entity.WebUpdate">
<mapper namespace="cn.celess.common.mapper.WebUpdateInfoMapper">
<resultMap id="webUpdateResultMap" type="cn.celess.common.entity.WebUpdate">
<id column="wu_id" property="id"/>
<result column="wu_info" property="updateInfo"/>
<result column="wu_time" property="updateTime"/>
<result column="is_delete" property="delete"/>
</resultMap>
<insert id="insert" parameterType="cn.celess.blog.entity.WebUpdate" useGeneratedKeys="true" keyProperty="id">
<insert id="insert" parameterType="cn.celess.common.entity.WebUpdate" useGeneratedKeys="true" keyProperty="id">
insert into web_update(wu_info, wu_time, is_delete)
values (#{updateInfo}, now(), false)
</insert>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.ArticleMapper">
<resultMap id="articleResultMap" type="cn.celess.blog.entity.Article">
<mapper namespace="cn.celess.common.mapper.ArticleMapper">
<resultMap id="articleResultMap" type="cn.celess.common.entity.Article">
<id column="a_id" property="id"/>
<result column="a_title" property="title"/>
<result column="a_summary" property="summary"/>
@@ -16,18 +16,18 @@
<result column="a_publish_date" property="publishDate"/>
<result column="a_update_date" property="updateDate"/>
<result column="is_delete" property="deleted"/>
<association property="category" column="a_category_id" javaType="cn.celess.blog.entity.TagCategory"
resultMap="cn.celess.blog.mapper.CategoryMapper.categoryResultMap">
<association property="category" column="a_category_id" javaType="cn.celess.common.entity.TagCategory"
resultMap="cn.celess.common.mapper.CategoryMapper.categoryResultMap">
</association>
<collection property="tags" ofType="cn.celess.blog.entity.Tag"
select="cn.celess.blog.mapper.ArticleTagMapper.findTagByArticleId" column="a_id">
<collection property="tags" ofType="cn.celess.common.entity.Tag"
select="cn.celess.common.mapper.ArticleTagMapper.findTagByArticleId" column="a_id">
<id column="tagId" property="id"/>
<result column="tagName" property="name"/>
</collection>
</resultMap>
<resultMap id="articleViewResultMap" type="cn.celess.blog.entity.Article">
<resultMap id="articleViewResultMap" type="cn.celess.common.entity.Article">
<id column="articleId" property="id"/>
<result column="title" property="title"/>
<result column="summary" property="summary"/>
@@ -41,25 +41,25 @@
<result column="publishDate" property="publishDate"/>
<result column="updateDate" property="updateDate"/>
<result column="isDelete" property="deleted"/>
<association property="category" column="categoryId" javaType="cn.celess.blog.entity.Category">
<association property="category" column="categoryId" javaType="cn.celess.common.entity.Category">
<id column="categoryId" property="id"/>
<result column="categoryName" property="name"/>
</association>
<association property="user" column="authorId" javaType="cn.celess.blog.entity.User">
<association property="user" column="authorId" javaType="cn.celess.common.entity.User">
<id column="authorId" property="id"/>
<result column="userEmail" property="email"/>
<result column="userAvatar" property="avatarImgUrl"/>
<result column="userDisplayName" property="displayName"/>
</association>
<collection property="tags" ofType="cn.celess.blog.entity.Tag"
select="cn.celess.blog.mapper.ArticleTagMapper.findTagByArticleId" column="{articleId=articleId}">
<collection property="tags" ofType="cn.celess.common.entity.Tag"
select="cn.celess.common.mapper.ArticleTagMapper.findTagByArticleId" column="{articleId=articleId}">
<id column="tagId" property="id"/>
<result column="tagName" property="name"/>
</collection>
</resultMap>
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="cn.celess.blog.entity.Article">
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="cn.celess.common.entity.Article">
insert into article (a_author_id, a_category_id, a_md_content, a_is_original,
a_summary, a_title, a_url)
values (#{user.id}, #{category.id}, #{mdContent}, #{type}, #{summary}, #{title}, #{url})
@@ -89,7 +89,7 @@
where a_id = #{id}
</update>
<select id="getLastestArticle" resultMap="articleViewResultMap" resultType="cn.celess.blog.entity.Article">
<select id="getLastestArticle" resultMap="articleViewResultMap" resultType="cn.celess.common.entity.Article">
select *
from articleView
order by articleId desc

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.celess.blog.mapper.TagMapper">
<mapper namespace="cn.celess.common.mapper.TagMapper">
<resultMap id="tagResultMap" type="cn.celess.blog.entity.Tag"
extends="cn.celess.blog.mapper.CategoryMapper.categoryResultMap">
<resultMap id="tagResultMap" type="cn.celess.common.entity.Tag"
extends="cn.celess.common.mapper.CategoryMapper.categoryResultMap">
</resultMap>
<insert id="insert" useGeneratedKeys="true" keyProperty="id">

114
blog-deploy/pom.xml Normal file
View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blog</artifactId>
<groupId>cn.celess</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blog-deploy</artifactId>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
<dependency>
<groupId>com.github.kstyrc</groupId>
<artifactId>embedded-redis</artifactId>
<version>0.6</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-common</artifactId>
<version>${blog-common.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-article</artifactId>
<version>${blog-article.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-categorytag</artifactId>
<version>${blog-categorytag.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-comment</artifactId>
<version>${blog-comment.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-extension</artifactId>
<version>${blog-extension.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-partnersite</artifactId>
<version>${blog-partnersite.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-siteinfo</artifactId>
<version>${blog-siteinfo.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-user</artifactId>
<version>${blog-user.version}</version>
</dependency>
<dependency>
<groupId>cn.celess</groupId>
<artifactId>blog-visitor</artifactId>
<version>${blog-visitor.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,6 +1,5 @@
package cn.celess.blog;
package cn.celess;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
@@ -9,7 +8,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication
@EnableAsync
@MapperScan("cn.celess.blog.mapper")
public class BlogApplication {
public static final Logger logger = LoggerFactory.getLogger(BlogApplication.class);

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.configuration;
package cn.celess.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.configuration;
package cn.celess.configuration;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;

View File

@@ -1,9 +1,9 @@
package cn.celess.blog.configuration;
package cn.celess.configuration;
import cn.celess.blog.configuration.filter.AuthenticationFilter;
import cn.celess.blog.configuration.filter.MultipleSubmitFilter;
import cn.celess.blog.configuration.filter.VisitorRecord;
import cn.celess.blog.configuration.listener.SessionListener;
import cn.celess.configuration.filter.AuthenticationFilter;
import cn.celess.configuration.filter.MultipleSubmitFilter;
import cn.celess.configuration.filter.VisitorRecord;
import cn.celess.configuration.listener.SessionListener;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.configuration;
package cn.celess.configuration;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
@@ -12,8 +12,6 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import java.lang.reflect.Method;
/**
* @author : xiaohai

View File

@@ -1,4 +1,4 @@
package cn.celess.blog.configuration;
package cn.celess.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
@@ -29,7 +29,7 @@ public class SwaggerConfig {
.enable(!"prod".equals(environment))
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("cn.celess.blog"))
.apis(RequestHandlerSelectors.basePackage("cn.celess"))
.paths(PathSelectors.any())
.build();
}

View File

@@ -1,10 +1,11 @@
package cn.celess.blog.configuration.filter;
package cn.celess.configuration.filter;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Response;
import cn.celess.blog.service.UserService;
import cn.celess.blog.util.JwtUtil;
import cn.celess.blog.util.RedisUtil;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.entity.Response;
import cn.celess.common.service.UserService;
import cn.celess.common.util.RedisUtil;
import cn.celess.user.util.JwtUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,7 +46,7 @@ public class AuthenticationFilter implements HandlerInterceptor {
request.getSession().setAttribute("email", jwtUtil.getUsernameFromToken(jwtStr));
}
// 不需要鉴权的路径
if (!USER_PREFIX.equals(rootPath.toLowerCase()) && !ADMIN_PREFIX.equals(rootPath.toLowerCase())) {
if (!USER_PREFIX.equalsIgnoreCase(rootPath) && !ADMIN_PREFIX.equalsIgnoreCase(rootPath)) {
return true;
}

View File

@@ -1,8 +1,8 @@
package cn.celess.blog.configuration.filter;
package cn.celess.configuration.filter;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Response;
import cn.celess.blog.util.RequestUtil;
import cn.celess.common.enmu.ResponseEnum;
import cn.celess.common.entity.Response;
import cn.celess.common.util.RequestUtil;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
@@ -29,7 +29,7 @@ public class MultipleSubmitFilter implements HandlerInterceptor {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
Response result = new Response(ResponseEnum.FAILURE.getCode(), "重复请求", null);
response.getWriter().println(result.toString());
response.getWriter().println(result);
return false;
}
return true;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.configuration.filter;
package cn.celess.configuration.filter;
import cn.celess.blog.util.RequestUtil;
import cn.celess.common.util.RequestUtil;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;

View File

@@ -1,6 +1,6 @@
package cn.celess.blog.configuration.listener;
package cn.celess.configuration.listener;
import cn.celess.blog.util.RedisUserUtil;
import cn.celess.user.util.RedisUserUtil;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -36,7 +36,7 @@ spring.datasource.data=classpath:sql/data.sql
################## mybatis ##################
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=cn.celess.blog.entity
mybatis.type-aliases-package=cn.celess.common.entity
pagehelper.helper-dialect=mysql

View File

@@ -0,0 +1,68 @@
server.port=8081
# 七牛的密钥配置
qiniu.accessKey=si3O2_Q7edFtjzmyyzXkoE9G1toxcjDfULhX5zdh
qiniu.secretKey=Pnq8q2Iy1Ez8RQXQR33XmgAYlit7M8C197BZ4lCj
qiniu.bucket=xiaohai
# sitemap 存放地址
sitemap.path=
# 生成JWT时候的密钥
jwt.secret=sdjfi77;47h7uuo4l;4lgiu4;dl5684aasdasdpsidf;sdf
#mybatis.type-handlers-package=cn.celess.common.mapper.typehandler
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=update
# 上传单个文件的大小
spring.servlet.multipart.max-file-size=10MB
# 上传文件的总大小
spring.servlet.multipart.max-request-size=10MB
spring.jackson.default-property-inclusion=non_null
################# 数据库 ##################
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=zhenghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.initialization-mode=never
################## mybatis ##################
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=cn.celess.common.entity
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
#### 用于nginx的代理 获取真实ip
server.use-forward-headers=true
server.tomcat.remote-ip-header=X-Real-IP
server.tomcat.protocol-header=X-Forwarded-Proto
############### email ##############
spring.mail.host=smtp.163.com
spring.mail.username=xiaohai2271@163.com
spring.mail.password=56462271Zh
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.default-encoding=UTF-8
spring.mail.port=465
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=false
############### redis ##############
# REDIS (RedisProperties)
# Redis数据库索引默认为0
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码默认为空
spring.redis.password=zhenghai
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=-1
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=5000

View File

@@ -8,23 +8,17 @@ qiniu.bucket=
sitemap.path=
# 生成JWT时候的密钥
jwt.secret=sdaniod213k123123ipoeqowekqwe
##spring.jpa.show-sql=false
##spring.jpa.hibernate.ddl-auto=update
mybatis.type-handlers-package=cn.celess.blog.mapper.typehandler
logging.level.cn.celess.blog.mapper=debug
mybatis.type-handlers-package=cn.celess.common.mapper.typehandler
logging.level.cn.celess.common.mapper=debug
# 上传单个文件的大小
spring.servlet.multipart.max-file-size=10MB
# 上传文件的总大小
spring.servlet.multipart.max-request-size=10MB
spring.jackson.default-property-inclusion=non_null
################# 数据库 ##################
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#h2
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb;mode=mysql;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
@@ -41,7 +35,7 @@ spring.datasource.data=classpath:sql/data.sql
################## mybatis ##################
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=cn.celess.blog.entity
mybatis.type-aliases-package=cn.celess.common.entity
pagehelper.helper-dialect=mysql

Some files were not shown because too many files have changed in this diff Show More