commit
612fc2b403
@ -23,6 +23,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Spring MVC 配置
|
* Spring MVC 配置
|
||||||
|
*
|
||||||
* @author ronger
|
* @author ronger
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@ -49,7 +50,7 @@ public class WebMvcConfigurer extends WebMvcConfigurationSupport {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 解决跨域问题
|
* 解决跨域问题
|
||||||
* */
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addCorsMappings(CorsRegistry registry) {
|
public void addCorsMappings(CorsRegistry registry) {
|
||||||
registry.addMapping("/**")
|
registry.addMapping("/**")
|
||||||
@ -65,17 +66,18 @@ public class WebMvcConfigurer extends WebMvcConfigurationSupport {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加拦截器
|
* 添加拦截器
|
||||||
* */
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addInterceptors(InterceptorRegistry registry) {
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
registry.addInterceptor(restAuthTokenInterceptor()).addPathPatterns("/api/**")
|
registry.addInterceptor(restAuthTokenInterceptor()).addPathPatterns("/api/**")
|
||||||
.excludePathPatterns("/api/v1/console/**","/api/v1/article/articles/**","/api/v1/article/detail/**","/api/v1/topic/**","/api/v1/user/**");
|
.excludePathPatterns("/api/v1/console/**", "/api/v1/article/articles/**", "/api/v1/article/detail/**"
|
||||||
|
, "/api/v1/topic/**", "/api/v1/user/**", "/api/v1/article/*/comments");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 访问静态资源
|
* 访问静态资源
|
||||||
* */
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||||
/**
|
/**
|
||||||
@ -89,7 +91,7 @@ public class WebMvcConfigurer extends WebMvcConfigurationSupport {
|
|||||||
registry.addResourceHandler("/webjars/**")
|
registry.addResourceHandler("/webjars/**")
|
||||||
.addResourceLocations("classpath:/META-INF/resources/webjars/");
|
.addResourceLocations("classpath:/META-INF/resources/webjars/");
|
||||||
//将所有/static/** 访问都映射到classpath:/static/ 目录下
|
//将所有/static/** 访问都映射到classpath:/static/ 目录下
|
||||||
registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX +"/static/");
|
registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/");
|
||||||
super.addResourceHandlers(registry);
|
super.addResourceHandlers(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,8 +50,6 @@ public class ArticleDTO {
|
|||||||
|
|
||||||
private List<ArticleTagDTO> tags;
|
private List<ArticleTagDTO> tags;
|
||||||
|
|
||||||
private List<CommentDTO> articleComments;
|
|
||||||
|
|
||||||
private List<PortfolioArticleDTO> portfolios;
|
private List<PortfolioArticleDTO> portfolios;
|
||||||
|
|
||||||
private Integer sortNo;
|
private Integer sortNo;
|
||||||
|
17
src/main/java/com/rymcu/vertical/dto/ArticleSearchDTO.java
Normal file
17
src/main/java/com/rymcu/vertical/dto/ArticleSearchDTO.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package com.rymcu.vertical.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ronger
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ArticleSearchDTO {
|
||||||
|
|
||||||
|
private String searchText;
|
||||||
|
|
||||||
|
private String topicUri;
|
||||||
|
|
||||||
|
private String tag;
|
||||||
|
|
||||||
|
}
|
@ -19,9 +19,10 @@ public interface ArticleMapper extends Mapper<Article> {
|
|||||||
* 获取文章列表
|
* 获取文章列表
|
||||||
* @param searchText
|
* @param searchText
|
||||||
* @param tag
|
* @param tag
|
||||||
|
* @param topicUri
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<ArticleDTO> selectArticles(@Param("searchText") String searchText, @Param("tag") String tag);
|
List<ArticleDTO> selectArticles(@Param("searchText") String searchText, @Param("tag") String tag, @Param("topicUri") String topicUri);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据文章 ID 查询文章
|
* 根据文章 ID 查询文章
|
||||||
|
@ -2,6 +2,7 @@ package com.rymcu.vertical.service;
|
|||||||
|
|
||||||
import com.rymcu.vertical.core.service.Service;
|
import com.rymcu.vertical.core.service.Service;
|
||||||
import com.rymcu.vertical.dto.ArticleDTO;
|
import com.rymcu.vertical.dto.ArticleDTO;
|
||||||
|
import com.rymcu.vertical.dto.ArticleSearchDTO;
|
||||||
import com.rymcu.vertical.entity.Article;
|
import com.rymcu.vertical.entity.Article;
|
||||||
import com.rymcu.vertical.web.api.exception.BaseApiException;
|
import com.rymcu.vertical.web.api.exception.BaseApiException;
|
||||||
|
|
||||||
@ -17,11 +18,10 @@ public interface ArticleService extends Service<Article> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据检索内容/标签查询文章列表
|
* 根据检索内容/标签查询文章列表
|
||||||
* @param searchText
|
* @param searchDTO
|
||||||
* @param tag
|
|
||||||
* @return
|
* @return
|
||||||
* */
|
* */
|
||||||
List<ArticleDTO> findArticles(String searchText, String tag);
|
List<ArticleDTO> findArticles(ArticleSearchDTO searchDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询文章详情信息
|
* 查询文章详情信息
|
||||||
|
@ -52,10 +52,16 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
|||||||
|
|
||||||
private static final int MAX_PREVIEW = 200;
|
private static final int MAX_PREVIEW = 200;
|
||||||
private static final String defaultStatus = "0";
|
private static final String defaultStatus = "0";
|
||||||
|
private static final String defaultTopicUri = "news";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ArticleDTO> findArticles(String searchText, String tag) {
|
public List<ArticleDTO> findArticles(ArticleSearchDTO searchDTO) {
|
||||||
List<ArticleDTO> list = articleMapper.selectArticles(searchText, tag);
|
List<ArticleDTO> list;
|
||||||
|
if (StringUtils.isNotBlank(searchDTO.getTopicUri()) && !defaultTopicUri.equals(searchDTO.getTopicUri())) {
|
||||||
|
list = articleMapper.selectArticlesByTopicUri(searchDTO.getTopicUri());
|
||||||
|
} else {
|
||||||
|
list = articleMapper.selectArticles(searchDTO.getSearchText(), searchDTO.getTag(), searchDTO.getTopicUri());
|
||||||
|
}
|
||||||
list.forEach(article->{
|
list.forEach(article->{
|
||||||
genArticle(article,0);
|
genArticle(article,0);
|
||||||
});
|
});
|
||||||
@ -292,14 +298,13 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
|||||||
ArticleContent articleContent = articleMapper.selectArticleContent(article.getIdArticle());
|
ArticleContent articleContent = articleMapper.selectArticleContent(article.getIdArticle());
|
||||||
if (type.equals(ARTICLE_VIEW)){
|
if (type.equals(ARTICLE_VIEW)){
|
||||||
article.setArticleContent(articleContent.getArticleContentHtml());
|
article.setArticleContent(articleContent.getArticleContentHtml());
|
||||||
// 获取评论列表数据
|
|
||||||
List<CommentDTO> commentDTOList = commentService.getArticleComments(article.getIdArticle());
|
|
||||||
article.setArticleComments(commentDTOList);
|
|
||||||
// 获取所属作品集列表数据
|
// 获取所属作品集列表数据
|
||||||
List<PortfolioArticleDTO> portfolioArticleDTOList = articleMapper.selectPortfolioArticles(article.getIdArticle());
|
List<PortfolioArticleDTO> portfolioArticleDTOList = articleMapper.selectPortfolioArticles(article.getIdArticle());
|
||||||
article.setPortfolios(portfolioArticleDTOList);
|
article.setPortfolios(portfolioArticleDTOList);
|
||||||
} else if (type.equals(ARTICLE_EDIT)) {
|
} else if (type.equals(ARTICLE_EDIT)) {
|
||||||
article.setArticleContent(articleContent.getArticleContent());
|
article.setArticleContent(articleContent.getArticleContent());
|
||||||
|
} else {
|
||||||
|
article.setArticleContent(articleContent.getArticleContentHtml());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return article;
|
return article;
|
||||||
|
@ -43,14 +43,14 @@ public class CommonApiController {
|
|||||||
@GetMapping("/get-email-code")
|
@GetMapping("/get-email-code")
|
||||||
public GlobalResult<Map<String, String>> getEmailCode(@RequestParam("email") String email) throws MessagingException {
|
public GlobalResult<Map<String, String>> getEmailCode(@RequestParam("email") String email) throws MessagingException {
|
||||||
Map<String, String> map = new HashMap<>(1);
|
Map<String, String> map = new HashMap<>(1);
|
||||||
map.put("message",GlobalResultMessage.SEND_SUCCESS.getMessage());
|
map.put("message", GlobalResultMessage.SEND_SUCCESS.getMessage());
|
||||||
User user = userService.findByAccount(email);
|
User user = userService.findByAccount(email);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
map.put("message","该邮箱已被注册!");
|
map.put("message","该邮箱已被注册!");
|
||||||
} else {
|
} else {
|
||||||
Integer result = javaMailService.sendEmailCode(email);
|
Integer result = javaMailService.sendEmailCode(email);
|
||||||
if(result == 0){
|
if(result == 0){
|
||||||
map.put("message",GlobalResultMessage.SEND_FAIL.getMessage());
|
map.put("message", GlobalResultMessage.SEND_FAIL.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return GlobalResultGenerator.genSuccessResult(map);
|
return GlobalResultGenerator.genSuccessResult(map);
|
||||||
@ -60,12 +60,12 @@ public class CommonApiController {
|
|||||||
@GetMapping("/get-forget-password-email")
|
@GetMapping("/get-forget-password-email")
|
||||||
public GlobalResult<Map<Object, Object>> getForgetPasswordEmail(@RequestParam("email") String email) throws MessagingException {
|
public GlobalResult<Map<Object, Object>> getForgetPasswordEmail(@RequestParam("email") String email) throws MessagingException {
|
||||||
Map<Object, Object> map = new HashMap<>(1);
|
Map<Object, Object> map = new HashMap<>(1);
|
||||||
map.put("message",GlobalResultMessage.SEND_SUCCESS.getMessage());
|
map.put("message", GlobalResultMessage.SEND_SUCCESS.getMessage());
|
||||||
User user = userService.findByAccount(email);
|
User user = userService.findByAccount(email);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
Integer result = javaMailService.sendForgetPasswordEmail(email);
|
Integer result = javaMailService.sendForgetPasswordEmail(email);
|
||||||
if(result == 0){
|
if(result == 0){
|
||||||
map.put("message",GlobalResultMessage.SEND_FAIL.getMessage());
|
map.put("message", GlobalResultMessage.SEND_FAIL.getMessage());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
map.put("message","该邮箱未注册!");
|
map.put("message","该邮箱未注册!");
|
||||||
@ -92,9 +92,9 @@ public class CommonApiController {
|
|||||||
|
|
||||||
@GetMapping("/articles")
|
@GetMapping("/articles")
|
||||||
@VisitLogger
|
@VisitLogger
|
||||||
public GlobalResult<Map> articles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, @RequestParam(defaultValue = "") String searchText, @RequestParam(defaultValue = "") String tag){
|
public GlobalResult<Map> articles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, ArticleSearchDTO searchDTO){
|
||||||
PageHelper.startPage(page, rows);
|
PageHelper.startPage(page, rows);
|
||||||
List<ArticleDTO> list = articleService.findArticles(searchText,tag);
|
List<ArticleDTO> list = articleService.findArticles(searchDTO);
|
||||||
PageInfo<ArticleDTO> pageInfo = new PageInfo(list);
|
PageInfo<ArticleDTO> pageInfo = new PageInfo(list);
|
||||||
Map map = Utils.getArticlesGlobalResult(pageInfo);
|
Map map = Utils.getArticlesGlobalResult(pageInfo);
|
||||||
return GlobalResultGenerator.genSuccessResult(map);
|
return GlobalResultGenerator.genSuccessResult(map);
|
||||||
|
@ -33,7 +33,7 @@ public class UploadController {
|
|||||||
|
|
||||||
private final static String UPLOAD_SIMPLE_URL = "/api/upload/file";
|
private final static String UPLOAD_SIMPLE_URL = "/api/upload/file";
|
||||||
private final static String UPLOAD_URL = "/api/upload/file/batch";
|
private final static String UPLOAD_URL = "/api/upload/file/batch";
|
||||||
public static final String ctxHeadPicPath = "/usr/local/src/tomcat-hp/webapps/vertical";
|
public static final String ctxHeadPicPath = "/usr/local/src/nebula/static";
|
||||||
|
|
||||||
@PostMapping("/file")
|
@PostMapping("/file")
|
||||||
public GlobalResult uploadPicture(@RequestParam(value = "file", required = false) MultipartFile multipartFile,@RequestParam(defaultValue = "1")Integer type, HttpServletRequest request){
|
public GlobalResult uploadPicture(@RequestParam(value = "file", required = false) MultipartFile multipartFile,@RequestParam(defaultValue = "1")Integer type, HttpServletRequest request){
|
||||||
|
@ -1,52 +1,52 @@
|
|||||||
spring:
|
spring:
|
||||||
# profiles:
|
# profiles:
|
||||||
# active: pord
|
# active: dev
|
||||||
thymeleaf:
|
thymeleaf:
|
||||||
prefix: classpath:/templates/
|
prefix: classpath:/templates/
|
||||||
suffix: .html
|
suffix: .html
|
||||||
mode: LEGACYHTML5
|
mode: LEGACYHTML5
|
||||||
encoding: UTF-8
|
encoding: UTF-8
|
||||||
servlet:
|
servlet:
|
||||||
content-type: text/html
|
content-type: text/html
|
||||||
cache: false
|
cache: false
|
||||||
redis:
|
redis:
|
||||||
host: 127.0.0.1
|
host: 127.0.0.1
|
||||||
port: 6379
|
port: 6379
|
||||||
password: # redis 密码
|
password: # redis 密码
|
||||||
database: 1
|
database: 1
|
||||||
timeout: 3000
|
timeout: 3000
|
||||||
jedis:
|
jedis:
|
||||||
pool:
|
pool:
|
||||||
max-active: 8
|
max-active: 8
|
||||||
max-wait: 1
|
max-wait: 1
|
||||||
max-idle: 500
|
max-idle: 500
|
||||||
min-idle: 0
|
min-idle: 0
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:mysql://localhost:3306/vertical?characterEncoding=UTF-8&autoReconnect=true&useSSL=false
|
url: jdbc:mysql://localhost:3306/vertical?characterEncoding=UTF-8&autoReconnect=true&useSSL=false
|
||||||
username: root
|
username: root
|
||||||
password: # 数据库密码
|
password: # 数据库密码
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
resources:
|
resources:
|
||||||
add-mappings: true
|
add-mappings: true
|
||||||
mail:
|
mail:
|
||||||
host: smtp.163.com
|
host: smtp.163.com
|
||||||
port: 465
|
port: 465
|
||||||
username: # 邮箱
|
username: # 邮箱
|
||||||
password: # 密码
|
password: # 密码
|
||||||
env: dev
|
env: dev
|
||||||
logging:
|
logging:
|
||||||
file:
|
file:
|
||||||
path: /logs/vertical
|
path: /logs/vertical
|
||||||
server:
|
server:
|
||||||
port: 8099
|
port: 8099
|
||||||
servlet:
|
servlet:
|
||||||
context-path: /vertical
|
context-path: /vertical
|
||||||
version: 1.0
|
version: 1.0
|
||||||
resource:
|
resource:
|
||||||
file-path: https://abc.com/vertical
|
file-path: https://abc.com/vertical
|
||||||
baidu:
|
baidu:
|
||||||
data:
|
data:
|
||||||
site: https://abc.com # 百度搜索资源配置网址
|
site: https://abc.com # 百度搜索资源配置网址
|
||||||
token: xxxx # 百度搜索资源token
|
token: xxxx # 百度搜索资源token
|
||||||
reserved-words: \u7cfb\u7edf\u516c\u544a\u002c\u516c\u544a
|
reserved-words: \u7cfb\u7edf\u516c\u544a\u002c\u516c\u544a
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user