代码结构调整,增加首页推荐小说可配置化

This commit is contained in:
xiongxiaoyang 2019-11-11 14:31:56 +08:00
parent de0634de89
commit bd65e4e373
28 changed files with 139 additions and 106 deletions

View File

@ -9,8 +9,8 @@
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>xyz.zinglizingli</groupId>
<artifactId>search</artifactId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>fiction_hourse</artifactId>
<version>1.1</version>
<name>search</name>
<description>小说精品楼</description>

View File

@ -6,4 +6,5 @@ public class CacheKeyConstans {
public static final String BOOK_CONTENT_KEY_PREFIX = "bookContentKeyPrefix";
public static final String EMAIL_URL_PREFIX_KEY = "emailUrlPrefixKey";
public static final String RANDOM_NEWS_CONTENT_KEY = "randomNewsContentKey";
public static final String REC_BOOK_LIST_KEY = "recBookListKey";
}

View File

@ -1,10 +1,12 @@
package xyz.zinglizingli.books.mapper;
import org.apache.ibatis.annotations.Param;
import xyz.zinglizingli.books.po.Book;
import xyz.zinglizingli.books.po.BookIndex;
import xyz.zinglizingli.books.po.BookIndexExample;
import java.util.List;
import java.util.Map;
public interface BookIndexMapper {
int countByExample(BookIndexExample example);
@ -32,4 +34,6 @@ public interface BookIndexMapper {
void insertBatch(List<BookIndex> bookIndex);
String queryNewstIndexName(@Param("bookId") Long bookId);
}

View File

@ -5,6 +5,7 @@ import xyz.zinglizingli.books.po.Book;
import xyz.zinglizingli.books.po.BookExample;
import java.util.List;
import java.util.Map;
import java.util.Set;
public interface BookMapper {
@ -41,4 +42,9 @@ public interface BookMapper {
List<String> queryNewstBookIdList();
List<String> queryEndBookIdList();
/**
* 查询推荐书籍数据
* */
List<Book> queryRecBooks(List<Map<String, String>> configMap);
}

View File

@ -22,9 +22,8 @@ import xyz.zinglizingli.books.mapper.BookIndexMapper;
import xyz.zinglizingli.books.mapper.BookMapper;
import xyz.zinglizingli.books.mapper.ScreenBulletMapper;
import xyz.zinglizingli.books.po.*;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.search.schedule.SendUrlSchedule;
import xyz.zinglizingli.search.utils.RestTemplateUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import xyz.zinglizingli.common.utils.RestTemplateUtil;
import java.io.IOException;
import java.util.*;
@ -600,4 +599,11 @@ public class BookService {
return result;
}
/**
* 查询推荐书籍数据
* */
public List<Book> queryRecBooks(List<Map<String, String>> configMap) {
return bookMapper.queryRecBooks(configMap);
}
}

View File

@ -11,7 +11,7 @@ import xyz.zinglizingli.books.po.BookContent;
import xyz.zinglizingli.books.po.BookIndex;
import xyz.zinglizingli.books.service.BookService;
import xyz.zinglizingli.books.vo.BookVO;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

View File

@ -1,24 +1,18 @@
package xyz.zinglizingli.books.web;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
import xyz.zinglizingli.books.constant.CacheKeyConstans;
import xyz.zinglizingli.books.po.Book;
import xyz.zinglizingli.books.po.BookContent;
@ -26,20 +20,15 @@ import xyz.zinglizingli.books.po.BookIndex;
import xyz.zinglizingli.books.po.ScreenBullet;
import xyz.zinglizingli.books.service.BookService;
import xyz.zinglizingli.books.vo.BookVO;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.search.utils.RestTemplateUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import xyz.zinglizingli.common.config.IndexRecBooksConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Controller
@RequestMapping("book")
@ -52,12 +41,26 @@ public class BookController {
@Autowired
private CommonCacheUtil commonCacheUtil;
@Autowired
private IndexRecBooksConfig indexRecBooksConfig;
private Logger log = LoggerFactory.getLogger(BookController.class);
@RequestMapping("index.html")
public String index(ModelMap modelMap) {
List<Book> recBooks = (List<Book>) commonCacheUtil.getObject(CacheKeyConstans.REC_BOOK_LIST_KEY);
if (!indexRecBooksConfig.isRead() || recBooks == null) {
List<Map<String,String>> configMap = indexRecBooksConfig.getRecBooks();
//查询推荐书籍数据
recBooks = bookService.queryRecBooks(configMap);
commonCacheUtil.setObject(CacheKeyConstans.REC_BOOK_LIST_KEY, recBooks, 60 * 60 * 24 * 10);
indexRecBooksConfig.setRead(true);
}
List<Book> hotBooks = (List<Book>) commonCacheUtil.getObject(CacheKeyConstans.HOT_BOOK_LIST_KEY);
if (hotBooks == null) {
//查询热点数据
@ -70,6 +73,7 @@ public class BookController {
newBooks = bookService.search(1, 20, null, null, null, null, null, null, null, "update_time", "DESC");
commonCacheUtil.setObject(CacheKeyConstans.NEWST_BOOK_LIST_KEY, newBooks, 60 * 30);
}
modelMap.put("recBooks", recBooks);
modelMap.put("hotBooks", hotBooks);
modelMap.put("newBooks", newBooks);
return "books/index";
@ -341,6 +345,4 @@ public class BookController {
}
}

View File

@ -1,27 +1,18 @@
package xyz.zinglizingli.books.web;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import xyz.zinglizingli.books.po.Book;
import xyz.zinglizingli.books.po.BookContent;
import xyz.zinglizingli.books.po.BookIndex;
import xyz.zinglizingli.books.po.User;
import xyz.zinglizingli.books.service.BookService;
import xyz.zinglizingli.books.service.UserService;
import xyz.zinglizingli.books.util.UUIDUtils;
import xyz.zinglizingli.books.vo.BookVO;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Controller

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.cache;
package xyz.zinglizingli.common.cache;
public interface CommonCacheUtil {

View File

@ -1,11 +1,11 @@
package xyz.zinglizingli.search.cache.impl;
package xyz.zinglizingli.common.cache.impl;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
@Service
public class EHCacheUtil implements CommonCacheUtil {

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.config;
package xyz.zinglizingli.common.config;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.ErrorPageRegistrar;

View File

@ -1,9 +1,8 @@
package xyz.zinglizingli.search.config;
package xyz.zinglizingli.common.config;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import xyz.zinglizingli.search.filter.SearchFilter;
import xyz.zinglizingli.common.filter.SearchFilter;
@Configuration
public class FilterConfig{

View File

@ -0,0 +1,33 @@
package xyz.zinglizingli.common.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
@ConfigurationProperties(prefix = "index")
public class IndexRecBooksConfig {
private List<Map<String,String>> recBooks;
private boolean isRead;
public List<Map<String, String>> getRecBooks() {
return recBooks;
}
public void setRecBooks(List<Map<String, String>> recBooks) {
this.recBooks = recBooks;
}
public boolean isRead() {
return isRead;
}
public void setRead(boolean read) {
isRead = read;
}
}

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.filter;
package xyz.zinglizingli.common.filter;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
@ -7,11 +7,10 @@ import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RequestCallback;
import org.springframework.web.client.RestTemplate;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.search.utils.RestTemplateUtil;
import xyz.zinglizingli.search.utils.SpringUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import xyz.zinglizingli.common.utils.RestTemplateUtil;
import xyz.zinglizingli.common.utils.SpringUtil;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.schedule;
package xyz.zinglizingli.common.schedule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -13,7 +13,7 @@ import xyz.zinglizingli.books.po.BookContent;
import xyz.zinglizingli.books.po.BookIndex;
import xyz.zinglizingli.books.service.BookService;
import xyz.zinglizingli.books.util.ExcutorUtils;
import xyz.zinglizingli.search.utils.RestTemplateUtil;
import xyz.zinglizingli.common.utils.RestTemplateUtil;
import java.text.ParseException;
import java.text.SimpleDateFormat;

View File

@ -1,30 +1,14 @@
package xyz.zinglizingli.search.schedule;
package xyz.zinglizingli.common.schedule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import xyz.zinglizingli.books.constant.CacheKeyConstans;
import xyz.zinglizingli.books.po.Book;
import xyz.zinglizingli.books.service.BookService;
import xyz.zinglizingli.books.service.MailService;
import xyz.zinglizingli.books.util.RandomValueUtil;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.search.utils.RestTemplateUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Random;

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.schedule;
package xyz.zinglizingli.common.schedule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -13,15 +13,11 @@ import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import xyz.zinglizingli.books.po.Book;
import xyz.zinglizingli.books.service.BookService;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.search.utils.RestTemplateUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import xyz.zinglizingli.common.utils.RestTemplateUtil;
import java.io.IOException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.schedule;
package xyz.zinglizingli.common.schedule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -12,14 +12,12 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import xyz.zinglizingli.books.po.Book;
import xyz.zinglizingli.books.service.BookService;
import xyz.zinglizingli.search.cache.CommonCacheUtil;
import xyz.zinglizingli.search.utils.RestTemplateUtil;
import xyz.zinglizingli.common.cache.CommonCacheUtil;
import xyz.zinglizingli.common.utils.RestTemplateUtil;
import java.io.IOException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.utils;
package xyz.zinglizingli.common.utils;
import java.util.*;

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.utils;
package xyz.zinglizingli.common.utils;
public class NumberUtil {

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.utils;
package xyz.zinglizingli.common.utils;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search.utils;
package xyz.zinglizingli.common.utils;
import org.springframework.context.ApplicationContext;
import org.springframework.beans.BeansException;

View File

@ -1,12 +1,8 @@
package xyz.zinglizingli.search.web;
package xyz.zinglizingli.common.web;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import xyz.zinglizingli.search.utils.ContentFactory;
import java.util.Set;
@Controller
@RequestMapping

View File

@ -53,6 +53,19 @@ mybatis:
type-aliases-package: xyz.zinglizingli.books.po
#首页本站推荐小说配置
index:
recBooks:
- {bookName: 黎明之剑,bookAuthor: 远瞳}
- {bookName: 诸天投影,bookAuthor: 裴屠狗}
- {bookName: 我有一座恐怖屋,bookAuthor: 我会修空调}
search:
schedule:

View File

@ -217,4 +217,7 @@
select index_name from book_index where book_id = #{bookId,jdbcType=BIGINT} order by index_num desc limit 1
</select>
</mapper>

View File

@ -371,4 +371,20 @@
<select id="queryEndBookIdList" resultType="string">
select id from book/* where book_status like '%完成%'*/
</select>
<select id="queryRecBooks" parameterType="java.util.List" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from book
<where>
<foreach collection="list" item="item" index="index"
separator="or">
<trim prefix="(" suffix=")">
book_name = #{item.bookName,jdbcType=VARCHAR} and
author = #{item.bookAuthor,jdbcType=VARCHAR}
</trim>
</foreach>
</where>
</select>
</mapper>

View File

@ -120,30 +120,17 @@
<div class="layui-container" style="padding: 0px">
<div class="layui-row" style="text-align: center">
<a href="/book/466.html">
<span th:each="recBook : ${recBooks}">
<a th:href="'/book/' + ${recBook.id} + '.html'">
<div style="padding: 1%" class="layui-col-xs4 layui-col-sm4 layui-col-md4 layui-col-lg4">
<img style=" width:80%; height:auto; max-width:100%; max-height:100%;"
src="https://www.biquta.com//BookFiles/BookImages/106708.jpg"/>
th:src="${recBook.picUrl}"/>
<br/>
黎明之剑
</div>
</a>
<a href="/book/482.html">
<div style="padding: 1%" class="layui-col-xs4 layui-col-sm4 layui-col-md4 layui-col-lg4">
<img style=" width:80%; height:auto; max-width:100%; max-height:100%;"
src="https://www.biquta.com//BookFiles/BookImages/111346.jpg"/>
<br/>
诸天投影
</div>
</a>
<a href="/book/349.html">
<div style="padding: 1%" class="layui-col-xs4 layui-col-sm4 layui-col-md4 layui-col-lg4">
<img style=" width:80%; height:auto; max-width:100%; max-height:100%;"
src="https://www.biquta.com//BookFiles/BookImages/122158.jpg"/>
<br/>
我有一座恐怖屋
<span th:text="${recBook.bookName}"></span>
</div>
</a>
</span>
</div>
</div>
</div>
@ -260,8 +247,7 @@
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
} else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];

View File

@ -1,4 +1,4 @@
package xyz.zinglizingli.search;
package xyz.zinglizingli.common;
import org.junit.Test;
import org.junit.runner.RunWith;