Commit e95b742f by 田超

Merge branch 'fixbug/getAdviserBook' into 'master'

bug: [none] 接口性能优化 book/getAdviserBook

See merge request rays/pcloud-book!1507
parents 09f12b15 501c5c64
......@@ -7,7 +7,6 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
......@@ -30,16 +29,90 @@ import com.pcloud.book.applet.enums.LabelTypeEnum;
import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.enums.BookTypeEnum;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.*;
import com.pcloud.book.book.biz.BookAdviserBiz;
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.constant.BookConstant;
import com.pcloud.book.book.dao.*;
import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.entity.*;
import com.pcloud.book.book.dao.BookAdviserDao;
import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.book.dao.BookEdtionDao;
import com.pcloud.book.book.dao.BookLabelDao;
import com.pcloud.book.book.dao.BookLinkDao;
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.NoviceGuideDeleteDao;
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.AviserBookInfoParam;
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.ERPPublishNumDTO;
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.ErpBookApprovalDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.ProjectOrderSheetDTO;
import com.pcloud.book.book.dto.ProjectRelateVO;
import com.pcloud.book.book.dto.ProjectUploaderDTO;
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.BookLink;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.book.book.entity.EditionRecord;
import com.pcloud.book.book.entity.NoviceGuideDelete;
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.tools.BookTools;
import com.pcloud.book.book.vo.*;
import com.pcloud.book.book.vo.request.*;
import com.pcloud.book.book.vo.BookCountsVO;
import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.BookLabelVO;
import com.pcloud.book.book.vo.BookLinkVO;
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.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.vo.request.SyncRelateDataToRaysVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
import com.pcloud.book.consumer.analysisengine.SceneRecordConsr;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.app.AssistTempletConsr;
......@@ -54,7 +127,11 @@ import com.pcloud.book.consumer.raystask.AdviserTaskConsr;
import com.pcloud.book.consumer.raystask.MainLineConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.trade.TradeConsr;
import com.pcloud.book.consumer.user.*;
import com.pcloud.book.consumer.user.AdviserConsr;
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.copyright.biz.BookAuthInfoBiz;
import com.pcloud.book.copyright.vo.BookAuthInfoVO;
......@@ -131,8 +208,22 @@ import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
......@@ -140,6 +231,8 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.pcloud.book.util.common.ThreadPoolUtils.REMOTE_CALL_POOL;
/**
* @描述:书籍业务层接口实现类
* @作者:songx
......@@ -2505,42 +2598,43 @@ public class BookBizImpl implements BookBiz {
return new BookDto();
}
Integer joinGroupType = bookGroupDao.getJoinGroupType(paramMap);
if(null!=joinGroupType && JoinGroupTypeEnum.XIAORUI.getCode().equals(joinGroupType)){
if (JoinGroupTypeEnum.XIAORUI.getCode().equals(joinGroupType)) {
Long classifyId = bookRaysClassifyDao.getClassifyIdByBookTemplateId(bookDto.getTempletId());
bookDto.setClassifyId(null!=classifyId ? classifyId.intValue():null);
}
// 设置模板名字
List<Long> templetIds = new ArrayList<>();
if(bookDto.getTempletId()!=null) {
templetIds.add(bookDto.getTempletId());
}
if(bookDto.getSecondTempletId()!=null) {
templetIds.add(bookDto.getSecondTempletId());
}
if(bookDto.getThirdTempletId()!=null) {
templetIds.add(bookDto.getThirdTempletId());
}
Map<Long, AssistTempletDTO> assistTempletDTOMap = assistTempletConsr.mapByIds(templetIds);
Long thirdTempletId = bookDto.getThirdTempletId();
Long secondTempletId = bookDto.getSecondTempletId();
Long templetId = bookDto.getTempletId();
if (thirdTempletId != null && assistTempletDTOMap != null) {
AssistTempletDTO templetDTO = assistTempletDTOMap.get(thirdTempletId);
bookDto.setThirdTempletName(Optional.ofNullable(templetDTO).map(AssistTempletDTO::getTempletName).orElse(null));
bookDto.setClassifyId(null != classifyId ? classifyId.intValue() : null);
}
if (secondTempletId!=null&&assistTempletDTOMap!=null) {
AssistTempletDTO templetDTO = assistTempletDTOMap.get(secondTempletId);
bookDto.setSecondTempletName(Optional.ofNullable(templetDTO).map(AssistTempletDTO::getTempletName).orElse(null));
}
if (templetId!=null&&assistTempletDTOMap!=null) {
AssistTempletDTO templetDTO = assistTempletDTOMap.get(templetId);
bookDto.setTempletName(Optional.ofNullable(templetDTO).map(AssistTempletDTO::getTempletName).orElse(null));
// 填充分类
CompletableFuture<Void> fillClassifyFuture = CompletableFuture.runAsync(() -> {
if (JoinGroupTypeEnum.XIAORUI.getCode().equals(bookGroupDao.getJoinGroupType(paramMap))) {
bookDto.setClassifyId(Optional.ofNullable(bookRaysClassifyDao.getClassifyIdByBookTemplateId(bookDto.getTempletId())).map(Long::intValue).orElse(null));
}
Map<Long, AdviserBaseInfoDto> adviserInfoDtoMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(Arrays.asList(adviserId));
if (adviserInfoDtoMap != null) {
AdviserBaseInfoDto adviserBaseInfoDto = adviserInfoDtoMap.get(adviserId);
bookDto.setAgentId(adviserBaseInfoDto==null?null:adviserBaseInfoDto.getAgentId());
bookDto.setAgentName(adviserBaseInfoDto==null?null:adviserBaseInfoDto.getAgentName());
}, REMOTE_CALL_POOL);
// 设置模板名字
CompletableFuture<Void> fillTempletNameFuture = CompletableFuture.runAsync(() -> {
Map<Long, AssistTempletDTO> assistTempletDTOMap = assistTempletConsr.mapByIds(Stream.of(bookDto.getTempletId(), bookDto.getSecondTempletId(), bookDto.getThirdTempletId())
.filter(Objects::nonNull).collect(Collectors.toList()));
if (org.apache.commons.collections4.MapUtils.isNotEmpty(assistTempletDTOMap)) {
bookDto.setTempletName(Optional.ofNullable(assistTempletDTOMap.get(bookDto.getTempletId())).map(AssistTempletDTO::getTempletName).orElse(null));
bookDto.setSecondTempletName(Optional.ofNullable(assistTempletDTOMap.get(bookDto.getSecondTempletId())).map(AssistTempletDTO::getTempletName).orElse(null));
bookDto.setThirdTempletName(Optional.ofNullable(assistTempletDTOMap.get(bookDto.getThirdTempletId())).map(AssistTempletDTO::getTempletName).orElse(null));
}
}, REMOTE_CALL_POOL);
// 填充出版社
Long finalAdviserId = adviserId;
CompletableFuture<Void> fillAgentFuture = CompletableFuture.runAsync(() -> {
Map<Long, AdviserBaseInfoDto> adviserInfoDtoMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(Collections.singletonList(finalAdviserId));
if (org.apache.commons.collections4.MapUtils.isNotEmpty(adviserInfoDtoMap)) {
bookDto.setAgentId(Optional.ofNullable(adviserInfoDtoMap.get(finalAdviserId)).map(AdviserBaseInfoDto::getAgentId).orElse(null));
bookDto.setAgentName(Optional.ofNullable(adviserInfoDtoMap.get(finalAdviserId)).map(AdviserBaseInfoDto::getAgentName).orElse(null));
}
}, REMOTE_CALL_POOL);
try {
CompletableFuture.allOf(fillAgentFuture, fillClassifyFuture, fillTempletNameFuture).get();
} catch (InterruptedException | ExecutionException e) {
LOGGER.warn("获取书刊信息失败 [BookBizImpl.getAdviserBook] ERR:{}", e.getMessage(), e);
}
return bookDto;
}
......
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