Commit 63cf64b5 by 桂前礼

feat: [none] 导出所有书刊及资源

parent 1c5d8ffd
...@@ -22,6 +22,8 @@ import com.pcloud.book.book.dto.QrcodeStatisticsDTO; ...@@ -22,6 +22,8 @@ import com.pcloud.book.book.dto.QrcodeStatisticsDTO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookServeInfo;
import com.pcloud.book.book.vo.BookServesListDTO;
import com.pcloud.book.book.vo.ErpAdviserBookVO; import com.pcloud.book.book.vo.ErpAdviserBookVO;
import com.pcloud.book.book.vo.PcloudAdviserBookVO; import com.pcloud.book.book.vo.PcloudAdviserBookVO;
import com.pcloud.book.book.vo.QrCodeVO; import com.pcloud.book.book.vo.QrCodeVO;
...@@ -365,4 +367,6 @@ public interface BookAdviserBiz { ...@@ -365,4 +367,6 @@ public interface BookAdviserBiz {
*erp获取二维码下面配置了企业微信的二维码 *erp获取二维码下面配置了企业微信的二维码
*/ */
List<Long> getHasWxWorkCode(List<Long> sceneIds); List<Long> getHasWxWorkCode(List<Long> sceneIds);
BookServeInfo listBookServes4Book(String cursor, Integer limit);
} }
...@@ -9,11 +9,13 @@ import com.google.common.collect.Lists; ...@@ -9,11 +9,13 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.pcloud.analysisengine.browse.dto.BookBrowseAndScanStatsDTO; import com.pcloud.analysisengine.browse.dto.BookBrowseAndScanStatsDTO;
import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto; import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.base.dto.CountDto; import com.pcloud.book.base.dto.CountDto;
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.BookAdviserBiz;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.biz.BookFundBiz; import com.pcloud.book.book.biz.BookFundBiz;
import com.pcloud.book.book.biz.BookLabelBiz;
import com.pcloud.book.book.biz.BookQrcodeWxworkBiz; import com.pcloud.book.book.biz.BookQrcodeWxworkBiz;
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.BookAdviserDao;
...@@ -39,18 +41,23 @@ import com.pcloud.book.book.entity.BookAdviser; ...@@ -39,18 +41,23 @@ import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.enums.BookQrcodeType; import com.pcloud.book.book.enums.BookQrcodeType;
import com.pcloud.book.book.set.BookSet; import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookServeInfo;
import com.pcloud.book.book.vo.BookServesListDTO;
import com.pcloud.book.book.vo.ErpAdviserBookVO; import com.pcloud.book.book.vo.ErpAdviserBookVO;
import com.pcloud.book.book.vo.PcloudAdviserBookVO; import com.pcloud.book.book.vo.PcloudAdviserBookVO;
import com.pcloud.book.book.vo.QrCodeVO; import com.pcloud.book.book.vo.QrCodeVO;
import com.pcloud.book.book.vo.QrcodeInfoDto; import com.pcloud.book.book.vo.QrcodeInfoDto;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto; import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr; import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr; import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.common.ExportConsr; import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.erp.ErpConsr; import com.pcloud.book.consumer.erp.ErpConsr;
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.message.TemplateConsr; import com.pcloud.book.consumer.message.TemplateConsr;
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.settlement.BookConsr; import com.pcloud.book.consumer.settlement.BookConsr;
import com.pcloud.book.consumer.trade.TradeConsr; import com.pcloud.book.consumer.trade.TradeConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
...@@ -66,8 +73,11 @@ import com.pcloud.book.group.dto.BookAppletSceneDTO; ...@@ -66,8 +73,11 @@ import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO; import com.pcloud.book.group.dto.BookGroupServeCountDTO;
import com.pcloud.book.group.dto.BookServeDTO; import com.pcloud.book.group.dto.BookServeDTO;
import com.pcloud.book.group.dto.BookServeLabelDTO;
import com.pcloud.book.group.enums.AppAndProductTypeEnum;
import com.pcloud.book.group.enums.JoinGroupTypeEnum; import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.rightsSetting.biz.RightsSettingBiz; import com.pcloud.book.rightsSetting.biz.RightsSettingBiz;
import com.pcloud.book.rightsSetting.constants.RightsSettingConstant;
import com.pcloud.book.rightsSetting.dao.RightsSettingDAO; import com.pcloud.book.rightsSetting.dao.RightsSettingDAO;
import com.pcloud.book.rightsSetting.dto.RightsSettingDto; import com.pcloud.book.rightsSetting.dto.RightsSettingDto;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
...@@ -77,6 +87,7 @@ import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO; ...@@ -77,6 +87,7 @@ import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto; import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.common.constant.CacheConstant; import com.pcloud.common.constant.CacheConstant;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.ProductTypeConstant;
import com.pcloud.common.core.constant.SceneCode; import com.pcloud.common.core.constant.SceneCode;
import com.pcloud.common.core.constant.SendType; import com.pcloud.common.core.constant.SendType;
import com.pcloud.common.core.constant.SystemCode; import com.pcloud.common.core.constant.SystemCode;
...@@ -92,11 +103,15 @@ import com.pcloud.common.utils.string.StringUtil; ...@@ -92,11 +103,15 @@ import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.facade.tradecenter.dto.Amount4BookAdviserDto; import com.pcloud.facade.tradecenter.dto.Amount4BookAdviserDto;
import com.pcloud.raystask.entity.AdviserDefault; import com.pcloud.raystask.entity.AdviserDefault;
import com.pcloud.readercenter.common.enums.YesOrNoNumEnum; import com.pcloud.readercenter.common.enums.YesOrNoNumEnum;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductLabelDto;
import com.pcloud.resourcecenter.product.dto.ProductTypeDto;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.usercenter.user.entity.UserLogin; import com.pcloud.usercenter.user.entity.UserLogin;
import com.pcloud.wechatgroup.group.dto.GroupScanUserStatsDTO; import com.pcloud.wechatgroup.group.dto.GroupScanUserStatsDTO;
import com.pcloud.wechatgroup.group.dto.GroupUserCountDTO; import com.pcloud.wechatgroup.group.dto.GroupUserCountDTO;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -117,13 +132,17 @@ import java.util.Iterator; ...@@ -117,13 +132,17 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @描述:编辑管理书籍逻辑层接口实现类 * @描述:编辑管理书籍逻辑层接口实现类
...@@ -203,6 +222,14 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -203,6 +222,14 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
private BookAdviserBiz bookAdviserBiz; private BookAdviserBiz bookAdviserBiz;
@Autowired @Autowired
private BookQrcodeWxworkBiz bookQrcodeWxworkBiz; private BookQrcodeWxworkBiz bookQrcodeWxworkBiz;
@Autowired
private ProductConsr productConsr;
@Autowired
private AppConsr appConsr;
@Autowired
private LabelConsr labelConsr;
@Autowired
private BookLabelBiz bookLabelBiz;
@Override @Override
public List<BookDto> listByAdviserId(Long adviserId) { public List<BookDto> listByAdviserId(Long adviserId) {
...@@ -2237,4 +2264,177 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -2237,4 +2264,177 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
public List<Long> getHasWxWorkCode(List<Long> sceneIds) { public List<Long> getHasWxWorkCode(List<Long> sceneIds) {
return bookQrcodeWxworkBiz.getHasWxWorkCode(sceneIds); return bookQrcodeWxworkBiz.getHasWxWorkCode(sceneIds);
} }
@Override
public BookServeInfo listBookServes4Book(String cursor, Integer limit) {
Long lastId = null;
if (StringUtil.isNotBlank(cursor)) lastId = Long.parseLong(JedisClusterUtils.get(cursor));
limit = (Objects.isNull(limit) || limit < 1 || limit > 100) ? 20 : limit;
List<BookServesListDTO> bookServesListDTOS = bookAdviserDao.listBookServes4Book(lastId, limit);
if(CollUtil.isEmpty(bookServesListDTOS)) return new BookServeInfo();
Long maxId = bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getBookAdviserId).max(Long::compareTo).orElse(0L);
String key = UUID.randomUUID().toString();
JedisClusterUtils.set(key,String.valueOf(maxId), 2 * 60 * 60);
BookServeInfo bookServeInfo = new BookServeInfo();
bookServeInfo.setCursor(key);
// 年级科目版本上下册标签
CompletableFuture<Map<Long, String>> newLabelIdFuture = CompletableFuture.supplyAsync(() -> bookLabelBiz.getLabelMapByIds(Stream.of(
bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getGraLabelId),
bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getSubLabelId),
bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getVerLabelId),
bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getVolLabelId)
).flatMap(Function.identity()).filter(Objects::nonNull).distinct().collect(Collectors.toList())), ThreadPoolUtils.SMALL_THREAD_POOL);
// 专业深度目的标签
CompletableFuture<Map<Long, String>> oldLabelIdFuture = CompletableFuture.supplyAsync(() -> labelConsr.getLabelName(Stream.of(
bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getProLabelId),
bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getPurLabelId),
bookServesListDTOS.stream().filter(Objects::nonNull).map(BookServesListDTO::getDepLabelId)
).flatMap(Function.identity()).filter(Objects::nonNull).distinct().collect(Collectors.toList())), ThreadPoolUtils.SMALL_THREAD_POOL);
Stream<CompletableFuture<Void>> futureStream = bookServesListDTOS.stream().filter(Objects::nonNull).map(bookServesListDTO -> CompletableFuture.runAsync(() -> {
List<BookServeDTO> bookServeVOS = bookGroupBiz.getBookAndBookGroupServeIds(bookServesListDTO.getAdviserId(), bookServesListDTO.getBookId(), bookServesListDTO.getChannelId());
bookGroupBiz.removeCanNotBuy(bookServeVOS);
bookServesListDTO.setBookServeList(warpAndFillBookServeLabelDTO(bookServeVOS));
}, ThreadPoolUtils.SMALL_THREAD_POOL));
CompletableFuture[] completableFutures = Stream.concat(Stream.of(newLabelIdFuture, oldLabelIdFuture), futureStream).toArray(CompletableFuture[]::new);
CompletableFuture<Void> allCompletableFuture = CompletableFuture.allOf(completableFutures);
try{
allCompletableFuture.get();
Map<Long, String> newLabelMap = Optional.ofNullable(newLabelIdFuture.get()).orElse(new HashMap<>());
Map<Long, String> oldLabelMap = Optional.ofNullable(oldLabelIdFuture.get()).orElse(new HashMap<>());
bookServesListDTOS.forEach(book->{
book.setProLabelName(Optional.ofNullable(oldLabelMap.get(book.getProLabelId())).orElse(""));
book.setPurLabelName(Optional.ofNullable(oldLabelMap.get(book.getPurLabelId())).orElse(""));
book.setDepLabelName(Optional.ofNullable(oldLabelMap.get(book.getDepLabelId())).orElse(""));
book.setGraLabelName(Optional.ofNullable(newLabelMap.get(book.getGraLabelId())).orElse(""));
book.setSubLabelName(Optional.ofNullable(newLabelMap.get(book.getSubLabelId())).orElse(""));
book.setVerLabelName(Optional.ofNullable(newLabelMap.get(book.getVerLabelId())).orElse(""));
book.setVolLabelName(Optional.ofNullable(newLabelMap.get(book.getVolLabelId())).orElse(""));
});
}catch (InterruptedException | ExecutionException e) {
LOGGER.warn("listBookServes4Book 异步任务处理失败");
}
bookServeInfo.setBookServesListDTOS(bookServesListDTOS);
return bookServeInfo;
}
private List<BookServeLabelDTO> warpAndFillBookServeLabelDTO(List<BookServeDTO> serveDTOList) {
if (ListUtils.isEmpty(serveDTOList)) {
return new ArrayList<>();
}
List<BookServeLabelDTO> list = serveDTOList.stream().filter(Objects::nonNull).map(x -> {
BookServeLabelDTO bookServeLabelDTO = new BookServeLabelDTO();
BeanUtils.copyProperties(x, bookServeLabelDTO);
return bookServeLabelDTO;
}).collect(Collectors.toList());
List<Long> appIds = Optional.of(list).map(x ->
x.stream().filter(item -> Objects.nonNull(item) && StrUtil.equals(item.getServeType(), AppAndProductTypeEnum.APP.value)).map(BookServeLabelDTO::getServeId)
.distinct().collect(Collectors.toList())
).orElse(new ArrayList<>());
List<Long> productIds = Optional.of(list).map(x ->
x.stream().filter(item -> Objects.nonNull(item) && StrUtil.equals(item.getServeType(), AppAndProductTypeEnum.PRODUCT.value)).map(BookServeLabelDTO::getServeId)
.distinct().collect(Collectors.toList())
).orElse(new ArrayList<>());
Map<Long, ProductDto> productDtoMap = new HashMap<>();
Map<Long, AppDto> appDtoMap = new HashMap<>();
if (!ListUtils.isEmpty(productIds)) {
productDtoMap = productConsr.getProBasesByIds(productIds);
}
if (!ListUtils.isEmpty(appIds)) {
appDtoMap = appConsr.mapByIds(appIds);
}
ArrayList<AppDto> appDtos = new ArrayList<>(appDtoMap.values());
List<Long> labelIds = Stream.of(
appDtos.stream().filter(Objects::nonNull).map(AppDto::getProLabelId),
appDtos.stream().filter(Objects::nonNull).map(AppDto::getPurLabelId),
appDtos.stream().filter(Objects::nonNull).map(AppDto::getDepLabelId)
).flatMap(Function.identity()).filter(Objects::nonNull).distinct().collect(Collectors.toList());
Map<Long, String> labelNameMap = labelConsr.getLabelName(labelIds);
List<BookServeLabelDTO> removeList = new ArrayList<>();
for (BookServeLabelDTO bookServeDTO : list) {
if (!MapUtils.isEmpty(productDtoMap) && AppAndProductTypeEnum.PRODUCT.value.equals(bookServeDTO.getServeType())) {
ProductDto productDto = productDtoMap.get(bookServeDTO.getServeId());
if (productDto != null) {
bookServeDTO.setServeName(productDto.getProductName());
bookServeDTO.setCoverImg(productDto.getCoverImg());
bookServeDTO.setProLabelId(Optional.ofNullable(productDto.getProductLabels()).map(x->x.get(0)).map(ProductLabelDto::getProLabelId).orElse(null));
bookServeDTO.setProLabelName(Optional.ofNullable(productDto.getProductLabels()).map(x->x.get(0)).map(ProductLabelDto::getProLabelName).orElse(""));
bookServeDTO.setPurLabelId(Optional.ofNullable(productDto.getProductLabels()).map(x->x.get(0)).map(ProductLabelDto::getPurLabelId).orElse(null));
bookServeDTO.setPurLabelName(Optional.ofNullable(productDto.getProductLabels()).map(x->x.get(0)).map(ProductLabelDto::getPurLabelName).orElse(""));
bookServeDTO.setDepLabelId(Optional.ofNullable(productDto.getProductLabels()).map(x->x.get(0)).map(ProductLabelDto::getDepLabelId).orElse(null));
bookServeDTO.setDepLabelName(Optional.ofNullable(productDto.getProductLabels()).map(x->x.get(0)).map(ProductLabelDto::getDepLabelName).orElse(""));
ProductTypeDto productTypeDto = productDto.getProductTypeDto();
if (productTypeDto != null) {
bookServeDTO.setFromType(productTypeDto.getTypeCode());
bookServeDTO.setFromTypeName(productTypeDto.getTypeName());
}
if (!StringUtil.isEmpty(productDto.getSkipUrl())){
bookServeDTO.setHasThirdLink(true);
} else {
bookServeDTO.setHasThirdLink(false);
}
if (bookGroupBiz.checkRayUrl(productDto.getSkipUrl()) && ProductTypeConstant.ARTICLE.equals(bookServeDTO.getFromType())){
removeList.add(bookServeDTO);
}
} else {
removeList.add(bookServeDTO);
}
}
if (!MapUtils.isEmpty(appDtoMap) && AppAndProductTypeEnum.APP.value.equals(bookServeDTO.getServeType())) {
AppDto appDto = appDtoMap.get(bookServeDTO.getServeId());
if (appDto != null) {
bookServeDTO.setServeName(appDto.getTitle());
bookServeDTO.setCoverImg(appDto.getSquareImg());
bookServeDTO.setFromType(appDto.getTypeCode());
bookServeDTO.setFromTypeName(appDto.getTypeName());
if (!StringUtil.isEmpty(appDto.getTurnUrl())){
bookServeDTO.setHasThirdLink(true);
} else {
bookServeDTO.setHasThirdLink(false);
}
if (bookGroupBiz.checkRayUrl(appDto.getTurnUrl()) && AppTypeEnum.ARTICLE.value.equals(appDto.getTypeCode())){
removeList.add(bookServeDTO);
}
bookServeDTO.setProLabelId(appDto.getProLabelId());
bookServeDTO.setProLabelName(labelNameMap.get(appDto.getProLabelId()));
bookServeDTO.setPurLabelId(appDto.getPurLabelId());
bookServeDTO.setPurLabelName(labelNameMap.get(appDto.getPurLabelId()));
bookServeDTO.setDepLabelId(appDto.getDepLabelId());
bookServeDTO.setDepLabelName(labelNameMap.get(appDto.getDepLabelId()));
} else {
removeList.add(bookServeDTO);
}
}
}
list.removeAll(removeList);
List<BookServeLabelDTO> toRemoveList = new ArrayList<>();
for (BookServeLabelDTO item : list) {
if ((AppAndProductTypeEnum.APP.value.equals(item.getServeType()) && ArrayUtils.contains(RightsSettingConstant.APPLET_APP_NOT_SUPPORT, item.getFromType()))
|| (AppAndProductTypeEnum.PRODUCT.value.equals(item.getServeType()) && ArrayUtils.contains(RightsSettingConstant.APPLET_PRODUCT_NOT_SUPPORT, item.getFromType())) || StringUtil.isEmpty(item.getFromType())) {
toRemoveList.add(item);
}
}
if (!ListUtils.isEmpty(toRemoveList)) {
list.removeAll(toRemoveList);
}
return list;
}
} }
...@@ -16,6 +16,7 @@ import com.pcloud.book.book.dto.ErpBookInfoDTO; ...@@ -16,6 +16,7 @@ import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookInfo4ScanCount; import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.BookServesListDTO;
import com.pcloud.book.book.vo.ErpAdviserBookVO; import com.pcloud.book.book.vo.ErpAdviserBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser; import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -317,4 +318,6 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> { ...@@ -317,4 +318,6 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
BookDto getBookByBookIdAdviserIdChannelId(Long bookId, Long channelId, Long adviserId1); BookDto getBookByBookIdAdviserIdChannelId(Long bookId, Long channelId, Long adviserId1);
BookDto getLatestAdviserBookByIsbn(String isbn); BookDto getLatestAdviserBookByIsbn(String isbn);
List<BookServesListDTO> listBookServes4Book(Long cursor, Integer limit);
} }
...@@ -21,6 +21,7 @@ import com.pcloud.book.book.dto.ErpBookInfoDTO; ...@@ -21,6 +21,7 @@ import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookInfo4ScanCount; import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.BookServesListDTO;
import com.pcloud.book.book.vo.ErpAdviserBookVO; import com.pcloud.book.book.vo.ErpAdviserBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser; import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -402,4 +403,11 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book ...@@ -402,4 +403,11 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
public BookDto getLatestAdviserBookByIsbn(String isbn) { public BookDto getLatestAdviserBookByIsbn(String isbn) {
return getSessionTemplate().selectOne(getStatement("getLatestAdviserBookByIsbn"), isbn); return getSessionTemplate().selectOne(getStatement("getLatestAdviserBookByIsbn"), isbn);
} }
@Override
public List<BookServesListDTO> listBookServes4Book(Long cursor, Integer limit) {
HashMap<String, Object> params = MapUtil.of("cursor", cursor);
params.put("limit", limit);
return getSessionTemplate().selectList(getStatement("listBookServes4Book"), params);
}
} }
...@@ -19,6 +19,7 @@ import com.pcloud.book.book.dto.QrcodeStatisticsDTO; ...@@ -19,6 +19,7 @@ import com.pcloud.book.book.dto.QrcodeStatisticsDTO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.facade.BookAdviserFacade; import com.pcloud.book.book.facade.BookAdviserFacade;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookServeInfo;
import com.pcloud.book.book.vo.PcloudAdviserBookVO; import com.pcloud.book.book.vo.PcloudAdviserBookVO;
import com.pcloud.book.book.vo.QrCodeVO; import com.pcloud.book.book.vo.QrCodeVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto; import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
...@@ -379,4 +380,12 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade { ...@@ -379,4 +380,12 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
public ResponseDto<?> getHasWxWorkCode4Erp(@RequestBody List<Long> sceneIds) { public ResponseDto<?> getHasWxWorkCode4Erp(@RequestBody List<Long> sceneIds) {
return new ResponseDto<>(bookAdviserBiz.getHasWxWorkCode(sceneIds)); return new ResponseDto<>(bookAdviserBiz.getHasWxWorkCode(sceneIds));
} }
@ApiOperation("获取图书及其资源")
@GetMapping("listBookServes4Book")
public ResponseDto<BookServeInfo> listBookServes4Book(@RequestParam(value = "cursor",required = false) String cursor,
@RequestParam(value = "limit",required = false) Integer limit){
return new ResponseDto<>(bookAdviserBiz.listBookServes4Book(cursor,limit));
}
} }
package com.pcloud.book.book.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import java.util.List;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BookServeInfo {
private List<BookServesListDTO> bookServesListDTOS;
private String cursor;
}
package com.pcloud.book.book.vo;
import com.pcloud.book.group.dto.BookServeLabelDTO;
import lombok.Data;
import java.util.List;
@Data
public class BookServesListDTO {
private Long bookAdviserId;
private Long bookId;
private Long channelId;
private Long adviserId;
private Long templateId;
private Long graLabelId;
private String graLabelName;
private Long subLabelId;
private String subLabelName;
private Long verLabelId;
private String verLabelName;
private Long volLabelId;
private String volLabelName;
private Long depLabelId;
private String depLabelName;
private Long proLabelId;
private String proLabelName;
private Long purLabelId;
private String purLabelName;
private String bookName;
private List<BookServeLabelDTO> bookServeList;
}
package com.pcloud.book.group.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class BookServeLabelDTO extends BookServeDTO{
private Long depLabelId;
private String depLabelName;
private Long proLabelId;
private String proLabelName;
private Long purLabelId;
private String purLabelName;
}
...@@ -72,4 +72,8 @@ public class ThreadPoolUtils { ...@@ -72,4 +72,8 @@ public class ThreadPoolUtils {
new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("book_read_record-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy()); new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("book_read_record-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy());
public static final ExecutorService SMALL_THREAD_POOL = new ThreadPoolExecutor(8, 8, 0L, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("small-pool-%d").build(), new ThreadPoolExecutor.CallerRunsPolicy());
} }
...@@ -1100,4 +1100,30 @@ ...@@ -1100,4 +1100,30 @@
a.CREATED_DATE DESC a.CREATED_DATE DESC
LIMIT 1 LIMIT 1
</select> </select>
<select id="listBookServes4Book" parameterType="map" resultType="com.pcloud.book.book.vo.BookServesListDTO">
SELECT
BOOK_ADVISER_ID bookAdviserId,
a.BOOK_ID bookId,
CHANNEL_ID channelId,
ADVISER_ID adviserId,
TEMPLET_ID templateId,
GRA_LABEL_ID graLabelId,
SUB_LABEL_ID subLabelId,
VER_LABEL_ID verLabelId,
vol_label_id volLabelId,
pro_label_id proLabelId,
pur_label_id purLabelId,
dep_label_id depLabelId,
BOOK_NAME bookName
FROM
book_adviser a LEFT JOIN book b on a.BOOK_ID = b.BOOK_ID
WHERE
a.IS_DELETE = 0
<if test="cursor != null">
AND BOOK_ADVISER_ID > ${cursor}
</if>
ORDER BY BOOK_ADVISER_ID
limit ${limit}
</select>
</mapper> </mapper>
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