Commit eec136d6 by 郑永强

feat:[1003410] 首页数据概览-二维码数据统计

parent 321174af
package com.pcloud.book.book.dto;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class BookQrcodeStatisticsDTO {
private String bookChannelAdviserId;
@ApiModelProperty("图书标识")
private Long bookId;
@ApiModelProperty("运营标识")
private Long channelId;
@ApiModelProperty("编辑id")
private Long adviserId;
@ApiModelProperty("二维码统计详情")
private List<QrcodeStatisticsDTO> qrcodeSceneDtoList = Lists.newArrayList();
}
package com.pcloud.book.book.dto;
import lombok.Data;
@Data
public class QrcodeStatisticsDTO {
private Long id;
private String qrcodeName;
private String qrcodeUrl;
private Long counts;
private Long browserCounts;
}
package com.pcloud.book.group.dto; package com.pcloud.book.group.dto;
import com.google.common.collect.Lists;
import com.pcloud.common.dto.BaseDto; import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @Author zhuyajie * @Author zhuyajie
* @Description 书刊资源数量 * @Description 书刊资源数量
......
...@@ -240,4 +240,16 @@ public interface BookAdviserBiz { ...@@ -240,4 +240,16 @@ public interface BookAdviserBiz {
* * @param null * * @param null
*/ */
Integer getBookCountByAgentAndTime(Long agentId, String startTime, String endTime); Integer getBookCountByAgentAndTime(Long agentId, String startTime, String endTime);
/**
* 获取书刊二维码统计数据
* @param adviserIds
* @param bookIds
* @param channelIds
* @return
*/
Map<String, BookQrcodeStatisticsDTO> mapBookQrcodeStatistics(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds);
PageBeanNew<QrcodeStatisticsDTO> getBookQrcodeStatistics(Long adviserId, Long bookId, Long channelId, Integer currentPage, Integer numPerPage);
} }
...@@ -2,18 +2,26 @@ package com.pcloud.book.book.biz.impl; ...@@ -2,18 +2,26 @@ package com.pcloud.book.book.biz.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto; import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto;
import com.pcloud.book.book.biz.BookFundBiz; import com.pcloud.book.book.biz.BookFundBiz;
import com.pcloud.book.book.dto.BookDataStatisticsDTO; import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO; import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.BookRightsSettingDTO; import com.pcloud.book.book.dto.BookRightsSettingDTO;
import com.pcloud.book.book.dto.QrcodeStatisticsDTO;
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;
import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr; import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr;
...@@ -26,10 +34,12 @@ import com.pcloud.book.rightsSetting.dao.RightsSettingDAO; ...@@ -26,10 +34,12 @@ 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.es.biz.ESBookAndAdviserBiz; import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.channelcenter.base.exceptions.ChannelBizException; import com.pcloud.channelcenter.base.exceptions.ChannelBizException;
import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO; 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.utils.NumberUtil;
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.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -1007,10 +1017,41 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1007,10 +1017,41 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
if(CollectionUtils.isEmpty(adviserIds) || CollectionUtils.isEmpty(bookIds) || CollectionUtils.isEmpty(channelIds)){ if(CollectionUtils.isEmpty(adviserIds) || CollectionUtils.isEmpty(bookIds) || CollectionUtils.isEmpty(channelIds)){
throw new ChannelBizException(ChannelBizException.FILED_NULL, "adviserIds、bookIds、channelIds 参数为空!"); throw new ChannelBizException(ChannelBizException.FILED_NULL, "adviserIds、bookIds、channelIds 参数为空!");
} }
Map<String, QrcodeMessageDTO> mapQrcodeMessage = channelConsr.mapResourceCount(adviserIds, bookIds, channelIds); Future<Map<String, QrcodeMessageDTO>> mapQrcodeMessageSubmit = ThreadPoolUtils.OTHER_POOL.submit(() -> channelConsr.mapResourceCount(adviserIds, bookIds, channelIds));
Map<String, BookGroupServeCountDTO> mapBookGroupServeCount = bookGroupBiz.mapBookGroupServeCount(adviserIds, bookIds, channelIds); Future<Map<String, BookGroupServeCountDTO>> mapBookGroupServeCountSubmit = ThreadPoolUtils.OTHER_POOL.submit(() -> bookGroupBiz.mapBookGroupServeCount(adviserIds, bookIds, channelIds));
Map<String, BookGroupServeCountDTO> mapBookGroupQrcodeServeCount = bookGroupBiz.mapBookGroupQrcodeServeCount(adviserIds, bookIds, channelIds, JoinGroupTypeEnum.GROUP_QRCODE.getCode()); Future<Map<String, BookGroupServeCountDTO>> mapBookGroupQrcodeSubmit = ThreadPoolUtils.OTHER_POOL.submit(() -> bookGroupBiz.mapBookGroupQrcodeServeCount(adviserIds, bookIds, channelIds, JoinGroupTypeEnum.GROUP_QRCODE.getCode()));
Map<String, BookGroupServeCountDTO> mapBookGroupRobotServeCount = bookGroupBiz.mapBookGroupQrcodeServeCount(adviserIds, bookIds, channelIds, JoinGroupTypeEnum.ROBOT.getCode()); Future<Map<String, BookGroupServeCountDTO>> mapBookGroupRobotServeCountSubmit = ThreadPoolUtils.OTHER_POOL.submit(()-> bookGroupBiz.mapBookGroupQrcodeServeCount(adviserIds, bookIds, channelIds, JoinGroupTypeEnum.ROBOT.getCode()));
Future<Map<Long, RightsSettingDto>> rightsMapSubmit = ThreadPoolUtils.OTHER_POOL.submit(()-> rightsSettingDAO.listByBookIds(bookIds));
Map<String, QrcodeMessageDTO> mapQrcodeMessage =new HashMap<>();
Map<String, BookGroupServeCountDTO> mapBookGroupServeCount = new HashMap<>();
Map<String, BookGroupServeCountDTO> mapBookGroupQrcodeServeCount = new HashMap<>();
Map<String, BookGroupServeCountDTO> mapBookGroupRobotServeCount =new HashMap<>();
Map<Long, RightsSettingDto> rightsMap=new HashMap<>();
try {
mapQrcodeMessage = mapQrcodeMessageSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOGGER.error("获取二维码信息错误: {}==", e);
}
try {
mapBookGroupServeCount = mapBookGroupServeCountSubmit.get();
}catch (InterruptedException | ExecutionException e) {
LOGGER.error("获取资源服务数量错误: {}==", e);
}
try {
mapBookGroupQrcodeServeCount = mapBookGroupQrcodeSubmit.get();
} catch (InterruptedException | ExecutionException e) {
LOGGER.error("批量获取书下的资源数错误: {}==", e);
}
try {
mapBookGroupRobotServeCount = mapBookGroupRobotServeCountSubmit.get();
} catch (InterruptedException | ExecutionException e) {
LOGGER.error("批量获取书下的资源数小睿错误: {}==", e);
}
try {
rightsMap = rightsMapSubmit.get();
} catch (InterruptedException | ExecutionException e) {
LOGGER.error("获取权益数量错误: {}==", e);
}
if(mapQrcodeMessage == null || mapQrcodeMessage.isEmpty()){ if(mapQrcodeMessage == null || mapQrcodeMessage.isEmpty()){
mapQrcodeMessage = new HashMap<>(); mapQrcodeMessage = new HashMap<>();
} }
...@@ -1029,8 +1070,8 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1029,8 +1070,8 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
bookChannelAdviserIds.addAll(mapBookGroupRobotServeCount.keySet().stream().collect(Collectors.toList())); bookChannelAdviserIds.addAll(mapBookGroupRobotServeCount.keySet().stream().collect(Collectors.toList()));
bookChannelAdviserIds = bookChannelAdviserIds.stream().distinct().collect(Collectors.toList()); bookChannelAdviserIds = bookChannelAdviserIds.stream().distinct().collect(Collectors.toList());
// 处理权益数 // 处理权益数
Map<Long, RightsSettingDto> rightsMap = rightsSettingDAO.listByBookIds(bookIds);
if(rightsMap!=null && !rightsMap.isEmpty()){ if(rightsMap!=null && !rightsMap.isEmpty()){
for (BookGroupServeCountDTO bookGroupServeCountDTO : mapBookGroupServeCount.values()) { for (BookGroupServeCountDTO bookGroupServeCountDTO : mapBookGroupServeCount.values()) {
if(!JoinGroupTypeEnum.XIAORUI.getCode().equals(bookGroupServeCountDTO.getJoinGroupType())){ if(!JoinGroupTypeEnum.XIAORUI.getCode().equals(bookGroupServeCountDTO.getJoinGroupType())){
...@@ -1113,16 +1154,40 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1113,16 +1154,40 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
@Override @Override
public Map<String, BookDataStatisticsDTO> mapBookDataStatistics(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds) { public Map<String, BookDataStatisticsDTO> mapBookDataStatistics(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds) {
if(CollectionUtils.isEmpty(adviserIds) || CollectionUtils.isEmpty(bookIds) || CollectionUtils.isEmpty(channelIds)){
throw new ChannelBizException(ChannelBizException.FILED_NULL, "adviserIds、bookIds、channelIds 参数为空!");
}
Map<String, BookDataStatisticsDTO> resultMap = new HashMap<>(); Map<String, BookDataStatisticsDTO> resultMap = new HashMap<>();
BookDataStatisticsDTO bookDataStatisticsDTO; BookDataStatisticsDTO bookDataStatisticsDTO;
// 获取配置了书刊权益的书 // 获取配置了书刊权益的书
Map<Long, RightsSettingDto> rightsMap = rightsSettingBiz.listByBookIds(bookIds); Future<Map<Long, RightsSettingDto>> rightsMapSubmit = ThreadPoolUtils.OTHER_THREAD_POOL.submit(() -> rightsSettingBiz.listByBookIds(bookIds));
Future<Map<String, BrowseCacheRecordDto>> bookScanAndUvSubmit = ThreadPoolUtils.OTHER_THREAD_POOL.submit(() -> browseRecordConsr.getBookScanAndUv(adviserIds, channelIds, bookIds));
Map<Long, RightsSettingDto> rightsMap = new HashMap<>();
// 获取现代纸书统计数据
Map<String, BrowseCacheRecordDto> bookScanAndUv = new HashMap<>();
try {
rightsMap = rightsMapSubmit.get();
} catch (InterruptedException | ExecutionException e) {
LOGGER.error("获取配置了书刊权益的书错误: {}==", e);
}
try {
bookScanAndUv = bookScanAndUvSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOGGER.error("获取现代纸书统计数据错误: {}==", e);
}
// 根据条件筛选出社群书数据 // 根据条件筛选出社群书数据
List<BookGroupDTO> bookGroupList = bookGroupDao.getDTOByBookIdsAdviserIdsChannelIds(bookIds, adviserIds, channelIds); List<BookGroupDTO> bookGroupList = bookGroupDao.getDTOByBookIdsAdviserIdsChannelIds(bookIds, adviserIds, channelIds);
if(!CollectionUtils.isEmpty(bookGroupList)){ if(!CollectionUtils.isEmpty(bookGroupList)){
List<Long> bookGroupIds = bookGroupList.stream().map(x -> x.getId()).collect(Collectors.toList()); List<Long> bookGroupIds = bookGroupList.stream().map(x -> x.getId()).collect(Collectors.toList());
Map<Long, GroupUserCountDTO> scanCountByGroup = wechatGroupConsr.getScanCountByGroup(bookGroupIds, null); Future<Map<Long, GroupUserCountDTO>> scanCountByGroupSubmit = ThreadPoolUtils.OTHER_THREAD_POOL.submit(() -> wechatGroupConsr.getScanCountByGroup(bookGroupIds, null));
Map<Long, GroupUserCountDTO> scanCountByGroup = new HashMap<>();
try {
scanCountByGroup = scanCountByGroupSubmit.get(ThreadPoolUtils.REMOTE_TIME_OUT, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOGGER.error("获取社群码扫码次数/人数错误: {}==", e);
}
for (BookGroupDTO bookGroupDTO : bookGroupList) { for (BookGroupDTO bookGroupDTO : bookGroupList) {
GroupUserCountDTO groupUserCountDTO = scanCountByGroup.get(bookGroupDTO.getId()); GroupUserCountDTO groupUserCountDTO = scanCountByGroup.get(bookGroupDTO.getId());
...@@ -1142,8 +1207,6 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1142,8 +1207,6 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
resultMap.put(bookDataStatisticsDTO.getBookChannelAdviserId(), bookDataStatisticsDTO); resultMap.put(bookDataStatisticsDTO.getBookChannelAdviserId(), bookDataStatisticsDTO);
} }
} }
// 获取现代纸书统计数据
Map<String, BrowseCacheRecordDto> bookScanAndUv = browseRecordConsr.getBookScanAndUv(adviserIds, channelIds, bookIds);
// 综合 // 综合
for (BrowseCacheRecordDto browseCacheRecordDto : bookScanAndUv.values()) { for (BrowseCacheRecordDto browseCacheRecordDto : bookScanAndUv.values()) {
String bookChannelAdviserId = browseCacheRecordDto.getJournalId() + "_" + browseCacheRecordDto.getChannelId() + "_" + browseCacheRecordDto.getAdviserId(); String bookChannelAdviserId = browseCacheRecordDto.getJournalId() + "_" + browseCacheRecordDto.getChannelId() + "_" + browseCacheRecordDto.getAdviserId();
...@@ -1179,4 +1242,102 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1179,4 +1242,102 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
} }
return bookCount; return bookCount;
} }
@Override
public Map<String, BookQrcodeStatisticsDTO> mapBookQrcodeStatistics(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds) {
Map<String, BookQrcodeStatisticsDTO> resultMap = new HashMap<>();
BookQrcodeStatisticsDTO bookQrcodeStatisticsDTO;
// 社群书统计
List<BookGroupDTO> bookGroupList = bookGroupDao.getDTOByBookIdsAdviserIdsChannelIds(bookIds, adviserIds, channelIds);
if(!CollectionUtils.isEmpty(bookGroupList)){
List<Long> bookGroupIds = bookGroupList.stream().map(x -> x.getId()).collect(Collectors.toList());
Map<Long, GroupUserCountDTO> scanCountByGroup = wechatGroupConsr.getScanCountByGroup(bookGroupIds, null);
for (BookGroupDTO bookGroupDTO : bookGroupList) {
GroupUserCountDTO groupUserCountDTO = scanCountByGroup.get(bookGroupDTO.getId());
bookQrcodeStatisticsDTO = new BookQrcodeStatisticsDTO();
bookQrcodeStatisticsDTO.setBookChannelAdviserId(bookGroupDTO.getBookId()+"_"+bookGroupDTO.getChannelId()+"_"+bookGroupDTO.getCreateUser());
bookQrcodeStatisticsDTO.setAdviserId(bookGroupDTO.getCreateUser());
bookQrcodeStatisticsDTO.setBookId(bookGroupDTO.getBookId());
bookQrcodeStatisticsDTO.setChannelId(bookGroupDTO.getChannelId());
QrcodeStatisticsDTO qrcodeStatisticsDTO = new QrcodeStatisticsDTO();
qrcodeStatisticsDTO.setId(bookGroupDTO.getId());
qrcodeStatisticsDTO.setQrcodeName(bookGroupDTO.getGroupQrcodeName());
qrcodeStatisticsDTO.setQrcodeUrl(bookGroupDTO.getGroupQrcodeUrl());
qrcodeStatisticsDTO.setCounts(0L);
qrcodeStatisticsDTO.setBrowserCounts(0L);
if(groupUserCountDTO != null){
qrcodeStatisticsDTO.setCounts(groupUserCountDTO.getCount().longValue());
qrcodeStatisticsDTO.setBrowserCounts(groupUserCountDTO.getUserCount().longValue());
}
bookQrcodeStatisticsDTO.getQrcodeSceneDtoList().add(qrcodeStatisticsDTO);
resultMap.put(bookQrcodeStatisticsDTO.getBookChannelAdviserId(), bookQrcodeStatisticsDTO);
}
}
// 现代纸书统计
List<QrcodeSceneDto> qrcodeSceneDtos = channelConsr.listQrcodeScene(adviserIds, bookIds, channelIds);
if(CollectionUtils.isEmpty(qrcodeSceneDtos)){
qrcodeSceneDtos = Lists.newArrayList();
}
String bookChannelAdviserId;
for (QrcodeSceneDto qrcodeSceneDto : qrcodeSceneDtos) {
bookChannelAdviserId = qrcodeSceneDto.getAdviserBookId() + "_" + qrcodeSceneDto.getChannelPartyId() + "_" + qrcodeSceneDto.getAdviserId();
bookQrcodeStatisticsDTO = resultMap.get(bookChannelAdviserId);
if(bookQrcodeStatisticsDTO == null){
bookQrcodeStatisticsDTO = new BookQrcodeStatisticsDTO();
bookQrcodeStatisticsDTO.setBookChannelAdviserId(bookChannelAdviserId);
bookQrcodeStatisticsDTO.setAdviserId(qrcodeSceneDto.getAdviserId());
bookQrcodeStatisticsDTO.setBookId(qrcodeSceneDto.getAdviserBookId());
bookQrcodeStatisticsDTO.setChannelId(qrcodeSceneDto.getChannelPartyId());
resultMap.put(bookQrcodeStatisticsDTO.getBookChannelAdviserId(), bookQrcodeStatisticsDTO);
}
QrcodeStatisticsDTO qrcodeStatisticsDTO = new QrcodeStatisticsDTO();
qrcodeStatisticsDTO.setId(qrcodeSceneDto.getSceneId());
qrcodeStatisticsDTO.setQrcodeName(qrcodeSceneDto.getSceneName());
qrcodeStatisticsDTO.setQrcodeUrl(qrcodeSceneDto.getQrcodeUrl());
qrcodeStatisticsDTO.setCounts(qrcodeSceneDto.getCounts());
qrcodeStatisticsDTO.setBrowserCounts(qrcodeSceneDto.getBrowserCounts());
bookQrcodeStatisticsDTO.getQrcodeSceneDtoList().add(qrcodeStatisticsDTO);
}
// 筛选出疑似未印刷的二维码(扫码人数<=20 || 扫码次数<=40)
Iterator<BookQrcodeStatisticsDTO> iterator = resultMap.values().iterator();
while(iterator.hasNext()) {
BookQrcodeStatisticsDTO item = iterator.next();
for (int i = item.getQrcodeSceneDtoList().size() - 1; i >= 0; i--) {
QrcodeStatisticsDTO qrcodeStatisticsDTO = item.getQrcodeSceneDtoList().get(i);
if(qrcodeStatisticsDTO.getBrowserCounts() <= 20 || qrcodeStatisticsDTO.getCounts() <= 40){
continue;
}
item.getQrcodeSceneDtoList().remove(qrcodeStatisticsDTO);
if(item.getQrcodeSceneDtoList().size() == 0){
iterator.remove();
resultMap.remove(item);
}
}
}
return resultMap;
}
@Override
public PageBeanNew<QrcodeStatisticsDTO> getBookQrcodeStatistics(Long adviserId, Long bookId, Long channelId, Integer currentPage, Integer numPerPage) {
if(!NumberUtil.isNumber(adviserId) || !NumberUtil.isNumber(bookId) || !NumberUtil.isNumber(channelId)){
throw new BizException(BizException.PARAM_IS_NULL.getCode(), "参数不能为空");
}
Map<String, BookQrcodeStatisticsDTO> bookQrcodeStatisticsDTOMap = this.mapBookQrcodeStatistics(Lists.newArrayList(adviserId), Lists.newArrayList(bookId), Lists.newArrayList(channelId));
if(MapUtils.isEmpty(bookQrcodeStatisticsDTOMap)){
return new PageBeanNew<>(currentPage, numPerPage, 0, Lists.newArrayList());
}
String bookChannelAdviserId = bookId + "_" + channelId + "_" + adviserId;
BookQrcodeStatisticsDTO bookQrcodeStatisticsDTO = bookQrcodeStatisticsDTOMap.get(bookChannelAdviserId);
List<QrcodeStatisticsDTO> qrcodeSceneDtoList = bookQrcodeStatisticsDTO.getQrcodeSceneDtoList();
if(CollectionUtils.isEmpty(qrcodeSceneDtoList)){
return new PageBeanNew<>(currentPage, numPerPage, 0, Lists.newArrayList());
}
return new PageBeanNew(currentPage, numPerPage, qrcodeSceneDtoList.size(),qrcodeSceneDtoList.stream().skip(currentPage * numPerPage).limit(numPerPage).collect(Collectors.toList()));
}
} }
...@@ -7,6 +7,7 @@ import com.pcloud.book.base.dto.CountDto; ...@@ -7,6 +7,7 @@ import com.pcloud.book.base.dto.CountDto;
import com.pcloud.book.book.dto.BookAdviserDto; import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountDto; import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.BookDataStatisticsDTO; import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO; import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO; import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
...@@ -228,4 +229,8 @@ public interface BookAdviserFacade { ...@@ -228,4 +229,8 @@ public interface BookAdviserFacade {
@ApiOperation("获取书刊统计数据(用户数、扫码量)") @ApiOperation("获取书刊统计数据(用户数、扫码量)")
@PostMapping("mapBookDataStatistics") @PostMapping("mapBookDataStatistics")
ResponseDto<Map<String, BookDataStatisticsDTO>> mapBookDataStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO); ResponseDto<Map<String, BookDataStatisticsDTO>> mapBookDataStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO);
@ApiOperation("获取书刊二维码统计数据")
@PostMapping("mapBookQrcodeStatistics")
ResponseDto<Map<String, BookQrcodeStatisticsDTO>> mapBookQrcodeStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO);
} }
...@@ -8,11 +8,14 @@ import java.util.List; ...@@ -8,11 +8,14 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import com.pcloud.book.book.dto.BookDataStatisticsDTO; import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO; import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO; import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.QrcodeStatisticsDTO;
import com.pcloud.book.book.vo.QrCodeVO; import com.pcloud.book.book.vo.QrCodeVO;
import com.pcloud.channelcenter.qrcode.entity.QrcodeScene; import com.pcloud.channelcenter.qrcode.entity.QrcodeScene;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import io.swagger.annotations.ApiModelProperty;
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.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -224,4 +227,20 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade { ...@@ -224,4 +227,20 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
public ResponseDto<Map<String, BookDataStatisticsDTO>> mapBookDataStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO) { public ResponseDto<Map<String, BookDataStatisticsDTO>> mapBookDataStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO) {
return new ResponseDto<>(bookAdviserBiz.mapBookDataStatistics(mapResourceTotalCountDTO.getAdviserIds(), mapResourceTotalCountDTO.getBookIds(), mapResourceTotalCountDTO.getChannelIds())); return new ResponseDto<>(bookAdviserBiz.mapBookDataStatistics(mapResourceTotalCountDTO.getAdviserIds(), mapResourceTotalCountDTO.getBookIds(), mapResourceTotalCountDTO.getChannelIds()));
} }
@Override
public ResponseDto<Map<String, BookQrcodeStatisticsDTO>> mapBookQrcodeStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO){
return new ResponseDto<>(bookAdviserBiz.mapBookQrcodeStatistics(mapResourceTotalCountDTO.getAdviserIds(), mapResourceTotalCountDTO.getBookIds(), mapResourceTotalCountDTO.getChannelIds()));
}
@ApiModelProperty("分页获取疑似未印刷二维码")
@GetMapping("getBookQrcodeStatistics")
public ResponseDto<PageBeanNew<QrcodeStatisticsDTO>> getBookQrcodeStatistics(@RequestParam("adviserId") Long adviserId,
@RequestParam("bookId") Long bookId,
@RequestParam("channelId") Long channelId,
@RequestParam("currentPage") Integer currentPage,
@RequestParam("numPerPage") Integer numPerPage){
return new ResponseDto<>(bookAdviserBiz.getBookQrcodeStatistics(adviserId, bookId, channelId, currentPage, numPerPage));
}
} }
...@@ -6,6 +6,7 @@ package com.pcloud.book.consumer.user; ...@@ -6,6 +6,7 @@ package com.pcloud.book.consumer.user;
import com.pcloud.channelcenter.base.exceptions.ChannelBizException; import com.pcloud.channelcenter.base.exceptions.ChannelBizException;
import com.pcloud.channelcenter.qrcode.dto.MapResourceCountDTO; import com.pcloud.channelcenter.qrcode.dto.MapResourceCountDTO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO; import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService; import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService;
import com.pcloud.channelcenter.wechat.entity.AccountSetting; import com.pcloud.channelcenter.wechat.entity.AccountSetting;
import com.pcloud.channelcenter.wechat.service.AccountSettingService; import com.pcloud.channelcenter.wechat.service.AccountSettingService;
...@@ -216,4 +217,19 @@ public class ChannelConsr { ...@@ -216,4 +217,19 @@ public class ChannelConsr {
throw new ChannelBizException(ChannelBizException.PARAM_IS_NULL, "channelId 为空"); throw new ChannelBizException(ChannelBizException.PARAM_IS_NULL, "channelId 为空");
} }
} }
/**
* 批量获取现代纸书下所有的二维码
* @param adviserIds
* @param bookIds
* @param channelIds
* @return
*/
public List<QrcodeSceneDto> listQrcodeScene(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds) {
MapResourceCountDTO mapResourceCountDTO = new MapResourceCountDTO();
mapResourceCountDTO.setAdviserIds(adviserIds);
mapResourceCountDTO.setBookIds(bookIds);
mapResourceCountDTO.setChannelIds(channelIds);
return ResponseHandleUtil.parseList(qrcodeSceneService.listQrcodeScene(mapResourceCountDTO), QrcodeSceneDto.class);
}
} }
...@@ -10,6 +10,12 @@ import java.util.concurrent.TimeUnit; ...@@ -10,6 +10,12 @@ import java.util.concurrent.TimeUnit;
public class ThreadPoolUtils { public class ThreadPoolUtils {
/** /**
* 远程调用超时时间(单位:秒)
*/
public static final int REMOTE_TIME_OUT = 5;
/**
* 异步导出线程池 * 异步导出线程池
*/ */
public static final ExecutorService EXPORT_THREAD_POOL = new ThreadPoolExecutor(8, 8, 0L, TimeUnit.SECONDS, public static final ExecutorService EXPORT_THREAD_POOL = new ThreadPoolExecutor(8, 8, 0L, TimeUnit.SECONDS,
......
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