Commit 470d74ed by 吴博

feat: [1002979] 部分测试书刊数据过滤规则优化

parent b848c184
......@@ -335,9 +335,18 @@ public class BookConstant {
public static final String DEFAULT_COVER_PIC="https://oss.5rs.me/oss/uploadfe/jpg/b10f42694d17429fe9ebd8dfd85704e0.jpg";
public static final Integer MAX_NEWS_COUNT = 3;
public static final String APP_PRODUCT = "APP/PRODUCT";
public static final String[] APPANDPRODUCT = {"APP","PRODUCT"};
public static final Long[] PROD_ADVISERS = new Long[]{1362L};
public static final Long[] UAT_ADVISERS = new Long[]{12829L};
public static final Long[] TEST_ADVISERS = new Long[]{1404L,1001195L};
public static final String HANZI = "哈或";
}
......@@ -18,4 +18,8 @@ public interface ESBookAndAdviserBiz {
Page<ESBookAndAdviser> getAdviserBooks4ES(String grayStatus, String keyword, Long templetId, Long secondTempletId, Integer currentPage, Integer numPerPage);
Page<ESBookAndAdviser> getESAdviserBooks4Applet(String grayStatus, String keyword, List<Long> templetIds, List<Long> graLabelIds, List<Long> subLabelIds, Integer currentPage, Integer numPerPage);
void deleteAdviserBooks4ES();
void deleteChoosedAdviserBooks4ES(String keyword);
}
package com.pcloud.book.es.biz.impl;
import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.consumer.user.BookcaseConsr;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.book.es.repository.BookAndAdviserRepository;
......@@ -10,6 +12,8 @@ import com.pcloud.book.util.properties.BookProps;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import java.util.Iterator;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
......@@ -32,6 +36,7 @@ import java.util.Objects;
* @Date 2020/4/13 12:21
**/
@Component("esBookAndAdviserBiz")
@Slf4j
public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(ESBookAndAdviserBizImpl.class);
......@@ -76,6 +81,7 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
}
try {
List<ESBookAndAdviser> list = bookDao.findBookAndAdviserByBookIds(bookIds);
filterBooks(list);
if (ListUtils.isEmpty(list)){
return;
}
......@@ -86,6 +92,25 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
}
private void filterBooks(List<ESBookAndAdviser> books) {
if ((ListUtils.isEmpty(books))){
return;
}
Iterator<ESBookAndAdviser> iterator = books.iterator();
while (iterator.hasNext()) {
ESBookAndAdviser esBookAndAdviser = iterator.next();
String bookName = esBookAndAdviser.getBookName();
if (StringUtil.isEmpty(bookName)){
iterator.remove();
}
if (bookName.matches("^[`~!@#$%^&*()+=|{}:;\\[\\].<>/\\\\?~!@#¥%……()——+|{}【】‘;:”“’。,,、?0123456789]+$") ||
bookName.matches("(["+BookConstant.HANZI+"])[^\1]{2,}\1") ||
bookName.matches("(.*)(红榜)(.*)")){
iterator.remove();
}
}
}
@Override
public Page<ESBookAndAdviser> getAdviserBooks4ES(String grayStatus, String keyword, Long templetId, Long secondTempletId, Integer currentPage, Integer numPerPage) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
......@@ -137,22 +162,68 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
BoolQueryBuilder adviserIdBuilder = QueryBuilders.boolQuery();
if (YesOrNoEnums.YES.getCode().equals(grayStatus)) {
if ("test".equalsIgnoreCase(BookProps.getSystemEnv())) {
adviserIdBuilder = QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("adviserId", 1404));
for (Long adviserId : BookConstant.TEST_ADVISERS){
adviserIdBuilder = QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("adviserId", adviserId));
boolQueryBuilder.must(adviserIdBuilder);
}
}
if ("uat".equalsIgnoreCase(BookProps.getSystemEnv())) {
adviserIdBuilder = QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("adviserId", 12829));
for (Long adviserId : BookConstant.UAT_ADVISERS){
adviserIdBuilder = QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("adviserId", adviserId));
boolQueryBuilder.must(adviserIdBuilder);
}
}
if ("pro".equalsIgnoreCase(BookProps.getSystemEnv())) {
adviserIdBuilder = QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("adviserId", 1362));
for (Long adviserId : BookConstant.PROD_ADVISERS){
adviserIdBuilder = QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("adviserId", adviserId));
boolQueryBuilder.must(adviserIdBuilder);
}
}
}
boolQueryBuilder.must(should);
boolQueryBuilder.must(should1);
boolQueryBuilder.must(adviserIdBuilder);
Sort sort = new Sort(Sort.Direction.DESC, "isAdviserBook", "lastModifiedDate", "bookId");
PageRequest pageRequest = new PageRequest(currentPage, numPerPage, sort);
Page<ESBookAndAdviser> search = bookAndAdviserRepository.search(boolQueryBuilder, pageRequest);
return search;
}
@Override
public void deleteAdviserBooks4ES() {
Page<ESBookAndAdviser> search = getEsBookAndAdvisers();
while (search.getContent().size() > 0){
search.getContent().stream().forEach(e -> log.info("从es中删除的书是" + e.getVerLabelId() + ":" + e.getBookName()) );
bookAndAdviserRepository.delete(search.getContent());
search = getEsBookAndAdvisers();
}
}
@Override
@ParamLog("删除选中的书籍")
public void deleteChoosedAdviserBooks4ES(String keyword) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("bookName", keyword));
PageRequest pageRequest = new PageRequest(0, 100);
Page<ESBookAndAdviser> search = bookAndAdviserRepository.search(boolQueryBuilder, pageRequest);
if (search.getSize() > 0){
search.getContent().stream().forEach(e -> log.info("从es中删除的书是" + e.getVerLabelId() + ":" + e.getBookName()) );
bookAndAdviserRepository.delete(search.getContent());
}
}
private Page<ESBookAndAdviser> getEsBookAndAdvisers() {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
BoolQueryBuilder should1 = QueryBuilders.boolQuery()
.should(QueryBuilders.termQuery("isBookAdviserDelete", 0))
.should(QueryBuilders.termQuery("isAdviserBook", 0));
BoolQueryBuilder should2 = QueryBuilders.boolQuery()
.should(QueryBuilders.regexpQuery("bookName","([`~!@#$%^&*()+=|{}:;\\[\\].<>/\\\\?~!@#¥%……()——+|{}【】‘;:”“’。,,、?]+)"))
.should(QueryBuilders.regexpQuery("bookName","([0123456789]+)"))
.should(QueryBuilders.regexpQuery("bookName","((.*)(["+ BookConstant.HANZI+"]){4,}(.*))"))
.should(QueryBuilders.regexpQuery("bookName","("+"(.*)(红榜)(.*)"+")"));
boolQueryBuilder.must(should1);
boolQueryBuilder.must(should2);
PageRequest pageRequest = new PageRequest(0, 10);
return bookAndAdviserRepository.search(boolQueryBuilder, pageRequest);
}
}
......@@ -51,4 +51,18 @@ public class ESBookAndAdviserFacade {
return esBookAndAdviserBiz.getAdviserBooks4ES("0", keyword,templetId,secondTempletId,currentPage,numPerPage).getContent();
}
@ApiOperation("es中删除部分测试图书")
@GetMapping("deleteAdviserBooks4ES")
public ResponseDto<?> deleteAdviserBooks4ES() throws BizException {
esBookAndAdviserBiz.deleteAdviserBooks4ES();
return new ResponseDto<>();
}
@ApiOperation("es中删除选中图书")
@GetMapping("deleteChoosedAdviserBooks4ES")
public ResponseDto<?> deleteChoosedAdviserBooks4ES(@RequestParam(value = "keyword") String keyword) throws BizException {
esBookAndAdviserBiz.deleteChoosedAdviserBooks4ES(keyword);
return new ResponseDto<>();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment