mirror of
https://github.com/201206030/novel-plus.git
synced 2025-04-27 01:30:51 +00:00
点击量计算优化
This commit is contained in:
parent
16447c60ec
commit
430504ee28
@ -4,9 +4,7 @@ import com.github.pagehelper.PageInfo;
|
||||
import com.java2nb.novel.core.bean.ResultBean;
|
||||
import com.java2nb.novel.core.bean.UserDetails;
|
||||
import com.java2nb.novel.core.enums.ResponseStatus;
|
||||
import com.java2nb.novel.entity.Book;
|
||||
import com.java2nb.novel.entity.BookComment;
|
||||
import com.java2nb.novel.entity.BookIndex;
|
||||
import com.java2nb.novel.search.BookSP;
|
||||
import com.java2nb.novel.service.BookService;
|
||||
import com.java2nb.novel.vo.BookVO;
|
||||
@ -21,7 +19,6 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -115,7 +112,7 @@ public class BookController extends BaseController{
|
||||
if(enableMq == 1) {
|
||||
rabbitTemplate.convertAndSend("ADD-BOOK-VISIT-EXCHANGE", null, bookId);
|
||||
}else {
|
||||
bookService.addVisitCount(bookId);
|
||||
bookService.addVisitCount(bookId, 1);
|
||||
}
|
||||
return ResultBean.ok();
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.java2nb.novel.core.listener;
|
||||
|
||||
import com.java2nb.novel.core.cache.CacheKey;
|
||||
import com.java2nb.novel.core.cache.CacheService;
|
||||
import com.java2nb.novel.core.utils.Constants;
|
||||
import com.java2nb.novel.entity.Book;
|
||||
import com.java2nb.novel.service.BookService;
|
||||
import com.java2nb.novel.service.SearchService;
|
||||
@ -62,14 +63,16 @@ public class BookVisitAddListener {
|
||||
if(visitCount == null){
|
||||
visitCount = 0 ;
|
||||
}
|
||||
cacheService.setObject(CacheKey.BOOK_ADD_VISIT_COUNT+bookId,++visitCount);
|
||||
if(visitCount >= Constants.ADD_MAX_VISIT_COUNT) {
|
||||
bookService.addVisitCount(bookId,visitCount);
|
||||
cacheService.del(CacheKey.BOOK_ADD_VISIT_COUNT+bookId);
|
||||
}
|
||||
|
||||
//TODO 操作共享资源visitCount,集群环境下有线程安全问题,引入Redisson框架实现分布式锁
|
||||
//lock.unlock();
|
||||
|
||||
cacheService.setObject(CacheKey.BOOK_ADD_VISIT_COUNT+bookId,++visitCount);
|
||||
if(cacheService.get(CacheKey.ES_IS_UPDATE_VISIT + bookId) == null) {
|
||||
bookService.addVisitCount(bookId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -30,4 +30,9 @@ public class Constants {
|
||||
* 首页设置的小说数量
|
||||
* */
|
||||
public static final int INDEX_BOOK_SETTING_NUM = 32;
|
||||
|
||||
/**
|
||||
* 累积的最大点击量
|
||||
* */
|
||||
public static final Integer ADD_MAX_VISIT_COUNT = 10;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ public interface FrontBookMapper extends BookMapper {
|
||||
|
||||
List<BookVO> searchByPage(BookSP params);
|
||||
|
||||
void addVisitCount(@Param("bookId") Long bookId);
|
||||
void addVisitCount(@Param("bookId") Long bookId, @Param("visitCount") Integer visitCount);
|
||||
|
||||
List<Book> listRecBookByCatId(@Param("catId") Integer catId);
|
||||
|
||||
|
@ -112,8 +112,8 @@ public interface BookService {
|
||||
/**
|
||||
* 增加点击次数
|
||||
* @param bookId 书籍ID
|
||||
* */
|
||||
void addVisitCount(Long bookId);
|
||||
* @param visitCount*/
|
||||
void addVisitCount(Long bookId, Integer visitCount);
|
||||
|
||||
/**
|
||||
* 查询章节数
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.java2nb.novel.service.impl;
|
||||
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
@ -19,18 +18,10 @@ import com.java2nb.novel.service.SearchService;
|
||||
import com.java2nb.novel.vo.BookCommentVO;
|
||||
import com.java2nb.novel.vo.BookSettingVO;
|
||||
import com.java2nb.novel.vo.BookVO;
|
||||
import com.java2nb.novel.vo.EsBookVO;
|
||||
import io.searchbox.client.JestClient;
|
||||
import io.searchbox.core.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.mybatis.dynamic.sql.SortSpecification;
|
||||
import org.mybatis.dynamic.sql.render.RenderingStrategies;
|
||||
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||
@ -40,7 +31,6 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.orderbyhelper.OrderByHelper;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@ -349,8 +339,8 @@ public class BookServiceImpl implements BookService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVisitCount(Long bookId) {
|
||||
bookMapper.addVisitCount(bookId);
|
||||
public void addVisitCount(Long bookId, Integer visitCount) {
|
||||
bookMapper.addVisitCount(bookId,visitCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -35,7 +35,7 @@
|
||||
</select>
|
||||
|
||||
<update id="addVisitCount" >
|
||||
update book set visit_count = visit_count + 1
|
||||
update book set visit_count = visit_count + ${visitCount}
|
||||
where id = #{bookId}
|
||||
</update>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user