Commit a4be9759 by 田超

Merge branch 'feature/book_search_app_0204' into 'master'

feat:[none] 小程序查询增加V2版本接口(搜索编辑端创建并且有资源的书)

See merge request rays/pcloud-book!1188
parents 902cf10b 7b0485fc
...@@ -3,31 +3,11 @@ ...@@ -3,31 +3,11 @@
*/ */
package com.pcloud.book.book.biz; package com.pcloud.book.book.biz;
import com.pcloud.book.book.dto.AdviserBookInfoDTO; import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.dto.BookAdviserUpdateTimeDTO;
import com.pcloud.book.book.dto.BookAssocCount;
import com.pcloud.book.book.dto.BookDetialDTO;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO;
import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.book.dto.CreateBookResultVO;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.EditionAnalysisResultVO;
import com.pcloud.book.book.dto.QrcodeServeDto;
import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookLabel; import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.entity.SeriesBookRecord; import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.vo.BookInfo4ScanCount; import com.pcloud.book.book.vo.*;
import com.pcloud.book.book.vo.BookLabelVO;
import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO; import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO;
import com.pcloud.book.book.vo.request.BookQualifyInfoVO; import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO; import com.pcloud.book.book.vo.request.BookSearchParamVO;
...@@ -194,31 +174,6 @@ public interface BookBiz { ...@@ -194,31 +174,6 @@ public interface BookBiz {
Map<String,BookDto> listDetailByIds(BookDetialDTO bookDetialDTO)throws BizException; Map<String,BookDto> listDetailByIds(BookDetialDTO bookDetialDTO)throws BizException;
/** /**
* 获取书籍列表
*
* @param isbn
* @param bookName
* 图书名称
* @param publish
* 出版社
* @param fundName
* 基金名称
* @param serialNumber
* 序列号
* @param isCurrentMonth
* 是否当前月
* @param currentPage
* 当前页
* @param numPerPage
* 每页条数
*
* @return
* @throws BizException
*/
PageBeanNew<BookDto> getListPage(String isbn, String bookName, String publish, String fundName, String serialNumber,
Integer isCurrentMonth, Integer currentPage, Integer numPerPage) throws BizException;
/**
* 获取书籍列表(编辑) * 获取书籍列表(编辑)
* *
* @param paramMap * @param paramMap
......
...@@ -3,10 +3,11 @@ ...@@ -3,10 +3,11 @@
*/ */
package com.pcloud.book.book.biz.impl; package com.pcloud.book.book.biz.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.alibaba.fastjson.JSONObject;
import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto; import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto;
import com.pcloud.appcenter.app.dto.AppDto; import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.appcenter.assist.dto.AssistTempletDTO; import com.pcloud.appcenter.assist.dto.AssistTempletDTO;
...@@ -18,78 +19,19 @@ import com.pcloud.book.applet.dao.AnswerSubscribeDao; ...@@ -18,78 +19,19 @@ import com.pcloud.book.applet.dao.AnswerSubscribeDao;
import com.pcloud.book.applet.entity.AnswerSubscribe; import com.pcloud.book.applet.entity.AnswerSubscribe;
import com.pcloud.book.applet.entity.AppletUserLabelRelation; import com.pcloud.book.applet.entity.AppletUserLabelRelation;
import com.pcloud.book.applet.enums.LabelTypeEnum; import com.pcloud.book.applet.enums.LabelTypeEnum;
import com.pcloud.book.base.enums.BookFreezeEnum;
import com.pcloud.book.base.enums.BookStatusEnum; import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.enums.BookTypeEnum; import com.pcloud.book.base.enums.BookTypeEnum;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookAdviserBiz; import com.pcloud.book.book.biz.*;
import com.pcloud.book.book.biz.BookAdviserErpBiz;
import com.pcloud.book.book.biz.BookAppBiz;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.biz.BookFreezeBiz;
import com.pcloud.book.book.biz.BookFundBiz;
import com.pcloud.book.book.biz.BookLabelBiz;
import com.pcloud.book.book.biz.BookProductBiz;
import com.pcloud.book.book.biz.BookResourceBiz;
import com.pcloud.book.book.biz.BookSerialNumberBiz;
import com.pcloud.book.book.cache.BookCache; import com.pcloud.book.book.cache.BookCache;
import com.pcloud.book.book.constant.BookConstant; import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dao.BookAdviserDao; import com.pcloud.book.book.dao.*;
import com.pcloud.book.book.dao.BookDao; import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.dao.BookEdtionDao; import com.pcloud.book.book.entity.*;
import com.pcloud.book.book.dao.BookLabelDao; import com.pcloud.book.book.facade.impl.AppletSearchSwitchController;
import com.pcloud.book.book.dao.BookRaysClassifyDao;
import com.pcloud.book.book.dao.BookTypeDao;
import com.pcloud.book.book.dao.EdtionRecordDao;
import com.pcloud.book.book.dao.QrcodeSceneErpDao;
import com.pcloud.book.book.dao.SeriesBookDao;
import com.pcloud.book.book.dao.SeriesBookRecordDao;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookAdviserUpdateTimeDTO;
import com.pcloud.book.book.dto.BookAssocCount;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookDetialDTO;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookFreezeDto;
import com.pcloud.book.book.dto.BookFundDto;
import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO;
import com.pcloud.book.book.dto.BookMinimumSupportDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO;
import com.pcloud.book.book.dto.BookTypeDto;
import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.book.dto.CreateBookResultVO;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.CreateQrcodeVO;
import com.pcloud.book.book.dto.ErpBookApprovalDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.EditionAnalysisListVO;
import com.pcloud.book.book.dto.EditionAnalysisResultVO;
import com.pcloud.book.book.dto.EditionAnalysisVO;
import com.pcloud.book.book.dto.QrcodeServeDto;
import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.entity.BookAdviserErp;
import com.pcloud.book.book.entity.BookEdition;
import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.book.book.entity.EditionRecord;
import com.pcloud.book.book.entity.QrcodeSceneErp;
import com.pcloud.book.book.entity.SeriesBook;
import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.set.BookSet; import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.book.tools.BookTools; import com.pcloud.book.book.tools.BookTools;
import com.pcloud.book.book.vo.BookInfo4ScanCount; import com.pcloud.book.book.vo.*;
import com.pcloud.book.book.vo.BookLabelVO;
import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.BookResourceNumDTO;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO; import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO;
import com.pcloud.book.book.vo.request.BookQualifyInfoVO; import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO; import com.pcloud.book.book.vo.request.BookSearchParamVO;
...@@ -105,11 +47,7 @@ import com.pcloud.book.consumer.label.LabelConsr; ...@@ -105,11 +47,7 @@ import com.pcloud.book.consumer.label.LabelConsr;
import com.pcloud.book.consumer.message.MessageConsr; import com.pcloud.book.consumer.message.MessageConsr;
import com.pcloud.book.consumer.raystask.MainLineConsr; import com.pcloud.book.consumer.raystask.MainLineConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.*;
import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.consumer.user.MerchantConsr;
import com.pcloud.book.consumer.user.PartyConsr;
import com.pcloud.book.consumer.wechat.WechatConsr; import com.pcloud.book.consumer.wechat.WechatConsr;
import com.pcloud.book.copyright.biz.BookAuthInfoBiz; import com.pcloud.book.copyright.biz.BookAuthInfoBiz;
import com.pcloud.book.copyright.vo.BookAuthInfoVO; import com.pcloud.book.copyright.vo.BookAuthInfoVO;
...@@ -128,7 +66,6 @@ import com.pcloud.book.group.enums.JoinGroupTypeEnum; ...@@ -128,7 +66,6 @@ import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.mq.producer.BookMQProducer; import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.book.rightsSetting.constants.RightsSettingConstant; import com.pcloud.book.rightsSetting.constants.RightsSettingConstant;
import com.pcloud.book.rightsSetting.dao.RightsNowItemDao; import com.pcloud.book.rightsSetting.dao.RightsNowItemDao;
import com.pcloud.book.rightsSetting.dao.RightsSettingItemDao;
import com.pcloud.book.rightsSetting.mapper.RightsSettingBookRelationMapper; import com.pcloud.book.rightsSetting.mapper.RightsSettingBookRelationMapper;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.book.util.common.YesOrNoEnums; import com.pcloud.book.util.common.YesOrNoEnums;
...@@ -162,7 +99,6 @@ import com.pcloud.resourcecenter.product.dto.ProductDto; ...@@ -162,7 +99,6 @@ import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.SpecificationDto; import com.pcloud.resourcecenter.product.dto.SpecificationDto;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.usercenter.party.agent.dto.SaleAgentDTO; import com.pcloud.usercenter.party.agent.dto.SaleAgentDTO;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -178,17 +114,7 @@ import org.springframework.util.CollectionUtils; ...@@ -178,17 +114,7 @@ import org.springframework.util.CollectionUtils;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Random;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
...@@ -197,9 +123,6 @@ import java.util.function.Function; ...@@ -197,9 +123,6 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
/** /**
* @描述:书籍业务层接口实现类 * @描述:书籍业务层接口实现类
* @作者:songx * @作者:songx
...@@ -878,86 +801,6 @@ public class BookBizImpl implements BookBiz { ...@@ -878,86 +801,6 @@ public class BookBizImpl implements BookBiz {
return bookMap; return bookMap;
} }
/**
* 获取书籍列表
*/
@Override
public PageBeanNew<BookDto> getListPage(String isbn, String bookName, String publish, String fundName,
String serialNumber, Integer isCurrentMonth, Integer currentPage, Integer numPerPage) throws BizException {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("isbn", isbn != null && "".equals(isbn.trim()) ? null : isbn);
paramMap.put("bookName", bookName != null && "".equals(bookName.trim()) ? null : bookName);
paramMap.put("publish", publish != null && "".equals(publish.trim()) ? null : publish);
paramMap.put("fundName", fundName != null && "".equals(fundName.trim()) ? null : fundName);
paramMap.put("serialNumber", serialNumber != null && "".equals(serialNumber.trim()) ? null : serialNumber);
paramMap.put("isCurrentMonth", isCurrentMonth);
paramMap.put("currentPage", currentPage * numPerPage);
paramMap.put("numPerPage", numPerPage);
if(!StringUtil.isEmpty(bookName)){
String[] bookNameList = bookName.trim().split("\\s+");
paramMap.put("bookNameList",Lists.newArrayList(bookNameList));
}
List<BookDto> bookList = bookDao.getListPage4Platform(paramMap);
// 获取平台端所有账号用户名
Map<Long, String> pcloudUserMap = partyConsr.getAllUserLoginName(0L, SystemCode.pcloud.code);
if (!ListUtils.isEmpty(bookList) && !pcloudUserMap.isEmpty()) {
for (BookDto bookDto : bookList) {
List<BookFundDto> bookFunds = bookDto.getBookFunds();
Integer freezeStatus = BookFreezeEnum.WAIT_FREEZE.value;
boolean isFundSupport = false;
BookFreezeDto bf = bookFreezeBiz.getById(bookDto.getBookId());
String transferor = bf == null ? null : bf.getTransferor();
if (!ListUtils.isEmpty(bookFunds)) {
for (BookFundDto bookFundDto : bookFunds) {
if (StringUtil.isEmpty(transferor)) {
transferor = bookFundDto.getTransferor();
}
Date startTime = bookFundDto.getStartTime();
Date endTime = bookFundDto.getEndTime();
if (new Date().before(startTime)) {
bookFundDto.setButton(2);
freezeStatus = BookFreezeEnum.NO_FREEZE.value;
} else if (new Date().after(startTime) && new Date().before(endTime)) {
bookFundDto.setButton(1);
freezeStatus = BookFreezeEnum.NO_FREEZE.value;
} else {
bookFundDto.setButton(0);
}
Long opearateUserId = bookFundDto.getLastModifiedUser();
if (pcloudUserMap.containsKey(opearateUserId)) {
bookFundDto.setOperateUserName(pcloudUserMap.get(opearateUserId));
}
if (new Date().before(endTime)) {
isFundSupport = true;
}
}
bookDto.setIsHaveFund(true);
}
bookDto.setTransferor(transferor);
bookDto.setIsFundSupport(isFundSupport);
bookDto.setFreezeStatus(freezeStatus);
}
}
int totalCount;
if (StringUtil.isEmpty(isbn) && StringUtil.isEmpty(bookName) && StringUtil.isEmpty(publish)
&& StringUtil.isEmpty(fundName) && StringUtil.isEmpty(serialNumber) && null == isCurrentMonth) {
totalCount = this.getAllBookCount();
} else {
totalCount = bookDao.getBookCount4Platform(paramMap);
}
if (!ListUtils.isEmpty(bookList)) {
bookSet.setPageDetailInfo4Platform(bookList);
}
PageBeanNew<BookDto> result = new PageBeanNew<>();
result.setCurrentPage(currentPage);
result.setNumPerPage(numPerPage);
result.setRecordList(bookList);
result.setTotalCount(totalCount);
return result;
}
/** /**
* 获取书籍总数信息 * 获取书籍总数信息
...@@ -2682,6 +2525,16 @@ public class BookBizImpl implements BookBiz { ...@@ -2682,6 +2525,16 @@ public class BookBizImpl implements BookBiz {
return s; return s;
} }
private Page<ESBookAndAdviser> getESAdviserBooks4Applet(String grayStatus, String keyword, List<Long> templetIds, List<Long> graLabelIds, List<Long> subLabelIds, Integer currentPage, Integer numPerPage, List<Long> scecondTempletIds, Integer isAdviserBook, List<Long> adviserIds, Long agentId) {
if (AppletSearchSwitchController.useV2Search()) {
return esBookAndAdviserBiz.getESAdviserBooks4AppletV2(grayStatus, keyword, templetIds, graLabelIds, subLabelIds,
currentPage, numPerPage,scecondTempletIds, adviserIds, agentId);
} else {
return esBookAndAdviserBiz.getESAdviserBooks4Applet(grayStatus, keyword, templetIds, graLabelIds, subLabelIds,
currentPage, numPerPage,scecondTempletIds, isAdviserBook, adviserIds, agentId);
}
}
@Override @Override
public PageBeanNew<BookDto> getAdviserBooks4Applet(BookSearchParamVO bookSearchParamVO) { public PageBeanNew<BookDto> getAdviserBooks4Applet(BookSearchParamVO bookSearchParamVO) {
List<Long> templetIds = new ArrayList<>(); List<Long> templetIds = new ArrayList<>();
...@@ -2716,8 +2569,9 @@ public class BookBizImpl implements BookBiz { ...@@ -2716,8 +2569,9 @@ public class BookBizImpl implements BookBiz {
if (null != agentId) { if (null != agentId) {
adviserIds = adviserConsr.getByAgentId(agentId); adviserIds = adviserConsr.getByAgentId(agentId);
} }
Page<ESBookAndAdviser> esPage = esBookAndAdviserBiz.getESAdviserBooks4Applet(grayStatus, keyword, templetIds, graLabelIds, subLabelIds, Page<ESBookAndAdviser> esPage = getESAdviserBooks4Applet(grayStatus, keyword, templetIds, graLabelIds, subLabelIds,
currentPage, numPerPage,scecondTempletIds, isAdviserBook, adviserIds, agentId); currentPage, numPerPage,scecondTempletIds, isAdviserBook, adviserIds, agentId);
List<ESBookAndAdviser> esBookAndAdvisers = esPage.getContent(); List<ESBookAndAdviser> esBookAndAdvisers = esPage.getContent();
if (ListUtils.isEmpty(esBookAndAdvisers)) { if (ListUtils.isEmpty(esBookAndAdvisers)) {
return new PageBeanNew<>(currentPage,numPerPage,0,new ArrayList<>()); return new PageBeanNew<>(currentPage,numPerPage,0,new ArrayList<>());
......
package com.pcloud.book.book.facade.impl;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Optional;
/**
* ES同步Controller,开发人员初始化es数据使用
*/
@RestController
@RequestMapping(value = "applet/search")
public class AppletSearchSwitchController {
private static final String KEY = "applet:book:search:v2";
@GetMapping("switch")
public ResponseDto<?> use(@RequestParam("use") Boolean use,
@RequestParam("time") Integer time) {
if (Optional.ofNullable(use).orElse(false)) {
int dur = Optional.ofNullable(time).orElse(5 * 60);
JedisClusterUtils.set(KEY, "true", dur);
return new ResponseDto<>("小程序图书搜索开始使用V2版本, 时长=" + (dur / 60) + "分钟");
} else {
JedisClusterUtils.del(KEY);
return new ResponseDto<>("小程序图书搜索切回V1版本");
}
}
public static boolean useV2Search() {
return JedisClusterUtils.exists(KEY);
}
}
...@@ -5,32 +5,19 @@ package com.pcloud.book.book.facade.impl; ...@@ -5,32 +5,19 @@ package com.pcloud.book.book.facade.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.biz.BookLabelBiz; import com.pcloud.book.book.biz.BookLabelBiz;
import com.pcloud.book.book.biz.impl.BookElasticSearchBizImpl; import com.pcloud.book.book.biz.impl.BookElasticSearchBizImpl;
import com.pcloud.book.book.dto.AdviserBookInfoDTO; import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.dto.BookAssocCount;
import com.pcloud.book.book.dto.BookDetialDTO;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.SeriesBookRecord; import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.facade.BookFacade; import com.pcloud.book.book.facade.BookFacade;
import com.pcloud.book.book.vo.BookInfo4ScanCount; import com.pcloud.book.book.vo.*;
import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO; import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO;
import com.pcloud.book.book.vo.request.BookQualifyInfoVO; import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO; import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto; import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
import com.pcloud.book.elasticsearch7.constants.SwitchKey;
import com.pcloud.book.elasticsearch7.search.domain.dto.param.PlatformSearchDto; import com.pcloud.book.elasticsearch7.search.domain.dto.param.PlatformSearchDto;
import com.pcloud.common.core.constant.SystemCode; import com.pcloud.common.core.constant.SystemCode;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -43,33 +30,17 @@ import com.pcloud.common.permission.PermissionCode.ServerPermissionCode; ...@@ -43,33 +30,17 @@ import com.pcloud.common.permission.PermissionCode.ServerPermissionCode;
import com.pcloud.common.permission.PermissionException; import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.SessionUtil; import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.cookie.Cookie; import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.message.enums.IsSystem; import com.pcloud.wechatgroup.message.enums.IsSystem;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import java.util.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
* @描述:书籍接口实现类 * @描述:书籍接口实现类
...@@ -267,23 +238,18 @@ public class BookFacadeImpl implements BookFacade { ...@@ -267,23 +238,18 @@ public class BookFacadeImpl implements BookFacade {
throw BookBizException.PAGE_PARAM_DELETION; throw BookBizException.PAGE_PARAM_DELETION;
} }
if (JedisClusterUtils.exists(SwitchKey.PLATFORM_SEARCH_ELASTICSEARCH)) { PlatformSearchDto param = new PlatformSearchDto();
PlatformSearchDto param = new PlatformSearchDto(); param.setPublish(publish);
param.setPublish(publish); param.setFundName(fundName);
param.setFundName(fundName); param.setBookName(bookName);
param.setBookName(bookName); param.setIsbn(isbn);
param.setIsbn(isbn); param.setSerialNumber(serialNumber);
param.setSerialNumber(serialNumber); param.setIsCurrentMonth(isCurrentMonth);
param.setIsCurrentMonth(isCurrentMonth); // 页面起始为0,故+1
// 页面起始为0,故+1 param.setCurrentPage(currentPage + 1);
param.setCurrentPage(currentPage + 1); param.setPageSize(numPerPage);
param.setPageSize(numPerPage);
return new ResponseDto<>(bookElasticSearchBiz.getListPage(param));
return new ResponseDto<>(bookElasticSearchBiz.getListPage(param));
} else {
return new ResponseDto<>(bookBiz.getListPage(isbn, bookName, publish, fundName,
serialNumber, isCurrentMonth, currentPage, numPerPage));
}
} }
/** /**
......
...@@ -20,6 +20,8 @@ public interface ESBookAndAdviserBiz { ...@@ -20,6 +20,8 @@ public interface ESBookAndAdviserBiz {
Page<ESBookAndAdviser> getESAdviserBooks4Applet(String grayStatus, String keyword, List<Long> templetIds, List<Long> graLabelIds, List<Long> subLabelIds, Integer currentPage, Integer numPerPage, List<Long> scecondTempletIds, Integer isAdviserBook, List<Long> adviserIds, Long agentId); Page<ESBookAndAdviser> getESAdviserBooks4Applet(String grayStatus, String keyword, List<Long> templetIds, List<Long> graLabelIds, List<Long> subLabelIds, Integer currentPage, Integer numPerPage, List<Long> scecondTempletIds, Integer isAdviserBook, List<Long> adviserIds, Long agentId);
Page<ESBookAndAdviser> getESAdviserBooks4AppletV2(String grayStatus, String keyword, List<Long> templetIds, List<Long> graLabelIds, List<Long> subLabelIds, Integer currentPage, Integer numPerPage, List<Long> scecondTempletIds, List<Long> adviserIds, Long agentId);
void deleteAdviserBooks4ES(); void deleteAdviserBooks4ES();
void deleteChoosedAdviserBooks4ES(String keyword); void deleteChoosedAdviserBooks4ES(String keyword);
......
...@@ -379,6 +379,66 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz { ...@@ -379,6 +379,66 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
} }
@Override @Override
public Page<ESBookAndAdviser> getESAdviserBooks4AppletV2(String grayStatus, String keyword, List<Long> templetIds, List<Long> graLabelIds,
List<Long> subLabelIds, Integer currentPage, Integer numPerPage, List<Long> scecondTempletIds, List<Long> adviserIds, Long agentId) {
long start = System.currentTimeMillis();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("isBookDelete", 0))
.filter(QueryBuilders.termQuery("isBookAdviserDelete", 0))
.filter(QueryBuilders.termQuery("isAdviserBook", 1))
.filter(QueryBuilders.rangeQuery("resourceCount").gt(0));
if (CollectionUtils.isNotEmpty(templetIds)) {
boolQueryBuilder.filter(QueryBuilders.termsQuery("templetId", templetIds));
}
if (agentId != null) {
boolQueryBuilder.filter(QueryBuilders.termsQuery("adviserId", adviserIds));
}
//(年级&&科目)||二级分类
BoolQueryBuilder must1 = QueryBuilders.boolQuery()
.filter(ListUtils.isEmpty(graLabelIds) ? QueryBuilders.boolQuery() : QueryBuilders.termsQuery("graLabelId", graLabelIds))
.filter(ListUtils.isEmpty(subLabelIds) ? QueryBuilders.boolQuery() : QueryBuilders.termsQuery("subLabelId", subLabelIds));
BoolQueryBuilder must2 = QueryBuilders.boolQuery().filter(ListUtils.isEmpty(scecondTempletIds) ? QueryBuilders.boolQuery() : QueryBuilders.termsQuery("secondTempletId", scecondTempletIds));
BoolQueryBuilder should2 = QueryBuilders.boolQuery().should(must1).should(must2);
// 审核通过之后屏蔽掉测试编辑的书刊
BoolQueryBuilder adviserIdBuilder = getAdviserIdBuilder(grayStatus);
boolQueryBuilder.must(adviserIdBuilder);
if (isIsbn(keyword)) {
boolQueryBuilder.must(QueryBuilders.termsQuery("isbn", keyword));
} else if (StringUtils.isNotBlank(keyword)) {
MatchQueryBuilder mqb = QueryBuilders.matchQuery("ikBookName", keyword).minimumShouldMatch("75%");
boolQueryBuilder.must(mqb);
}
if (!ListUtils.isEmpty(scecondTempletIds)) {
if (ListUtils.isEmpty(graLabelIds) && ListUtils.isEmpty(subLabelIds)) {
boolQueryBuilder.must(must2);
} else {
boolQueryBuilder.must(should2);
}
} else if (!ListUtils.isEmpty(graLabelIds) || !ListUtils.isEmpty(subLabelIds)) {
boolQueryBuilder.must(must1);
}
// 排序:因为涉及分词,故而_score固定放在第一位
Sort sort = new Sort(Sort.Direction.DESC, "_score", "isApproval", "isFundSupport", "fundBookValue", "resourceCount", "isAdviserBook", "lastModifiedDate", "bookId");
if(StringUtil.isEmpty(keyword)){
sort = new Sort(Sort.Direction.DESC, "isApproval", "_score", "isFundSupport", "fundBookValue", "resourceCount", "isAdviserBook", "lastModifiedDate", "bookId");
}
PageRequest pageRequest = new PageRequest(currentPage, numPerPage, sort);
Page<ESBookAndAdviser> search = bookAndAdviserRepository.search(boolQueryBuilder, pageRequest);
log.info("es.search({})==>{},total={},cost={}",
StringUtils.replaceEach(boolQueryBuilder.toString(), new String[]{"\n", " ", " : "}, new String[]{"", "", ":"}),
search, search.getTotalElements(), (System.currentTimeMillis() - start));
return search;
}
@Override
public void deleteAdviserBooks4ES() { public void deleteAdviserBooks4ES() {
Page<ESBookAndAdviser> search = getEsBookAndAdvisers(); Page<ESBookAndAdviser> search = getEsBookAndAdvisers();
while (search.getContent().size() > 0){ while (search.getContent().size() > 0){
......
...@@ -80,5 +80,32 @@ public class ESBookAndAdviserBizTest { ...@@ -80,5 +80,32 @@ public class ESBookAndAdviserBizTest {
sw.stop(); sw.stop();
} }
@Test
public void testV2() {
StopWatch sw = new StopWatch();
sw.start();
String keyword = "语文";
Page<ESBookAndAdviser> p = esBookAndAdviserBiz.getESAdviserBooks4Applet(null,
keyword, null, null, null,
0, 100,
null, null, null, null);
log.info("key:{},count:{},cost:{},==>{}", keyword, p.getTotalElements(), sw.getTime(), StringUtils.join(IKAnalyzerUtil.analyzerText(keyword), " "));
p.forEach((baa) -> log.info(JSON.toJSONString(baa)));
sw.reset();
sw.start();
p = esBookAndAdviserBiz.getESAdviserBooks4AppletV2(null,
keyword, null, null, null,
0, 100,
null, null, null);
log.info("key:{},count:{},cost:{},==>{}", keyword, p.getTotalElements(), sw.getTime(), StringUtils.join(IKAnalyzerUtil.analyzerText(keyword), " "));
p.forEach((baa) -> log.info(JSON.toJSONString(baa)));
sw.stop();
}
} }
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