Commit 6d5e5386 by 田超

Merge branch 'feature/1003402' into 'master'

feat: [1003402]近期关键节点数据与告警数据导出

See merge request rays/pcloud-book!872
parents a35bca8a 4738d2f4
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class BookDataStatisticsDTO {
private String bookChannelAdviserId;
@ApiModelProperty("图书标识")
private Long bookId;
@ApiModelProperty("运营标识")
private Long channelId;
@ApiModelProperty("编辑id")
private Long adviserId;
@ApiModelProperty("扫码量")
private Long scanCount = 0L;
@ApiModelProperty("用户量")
private Long userCount = 0L;
@ApiModelProperty("书刊类型")
private String bookCategory;
}
......@@ -223,4 +223,13 @@ public interface BookAdviserBiz {
* @return
*/
Map<String, BookResourceStatisticsDTO> mapResourceTotalCount(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds);
/**
* 获取书刊统计数据(用户数、扫码量)【现代纸书和社群书的总和】
* @param adviserIds
* @param bookIds
* @param channelIds
* @return
*/
Map<String, BookDataStatisticsDTO> mapBookDataStatistics(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds);
}
......@@ -9,11 +9,15 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto;
import com.pcloud.book.book.biz.BookFundBiz;
import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.BookRightsSettingDTO;
import com.pcloud.book.book.vo.QrCodeVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
......@@ -25,6 +29,7 @@ import com.pcloud.channelcenter.base.exceptions.ChannelBizException;
import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.wechatgroup.group.dto.GroupUserCountDTO;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -134,6 +139,11 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
@Autowired
private BookFundBiz bookFundBiz;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Autowired
private BrowseRecordConsr browseRecordConsr;
@Override
public List<BookDto> listByAdviserId(Long adviserId) {
......@@ -1055,4 +1065,55 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
}
return mapBookResourceStatistics;
}
@Override
public Map<String, BookDataStatisticsDTO> mapBookDataStatistics(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds) {
Map<String, BookDataStatisticsDTO> resultMap = new HashMap<>();
BookDataStatisticsDTO bookDataStatisticsDTO;
// 获取社群统计数据
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());
bookDataStatisticsDTO = new BookDataStatisticsDTO();
bookDataStatisticsDTO.setBookChannelAdviserId(bookGroupDTO.getBookId()+"_"+bookGroupDTO.getChannelId()+"_"+bookGroupDTO.getCreateUser());
bookDataStatisticsDTO.setAdviserId(bookGroupDTO.getCreateUser());
bookDataStatisticsDTO.setBookId(bookGroupDTO.getBookId());
bookDataStatisticsDTO.setChannelId(bookGroupDTO.getChannelId());
if(groupUserCountDTO != null){
bookDataStatisticsDTO.setScanCount(groupUserCountDTO.getCount().longValue());
bookDataStatisticsDTO.setUserCount(groupUserCountDTO.getUserCount().longValue());
}
bookDataStatisticsDTO.setBookCategory("社群书");
resultMap.put(bookDataStatisticsDTO.getBookChannelAdviserId(), bookDataStatisticsDTO);
}
}
// 获取现代纸书统计数据
Map<String, BrowseCacheRecordDto> bookScanAndUv = browseRecordConsr.getBookScanAndUv(adviserIds, channelIds, bookIds);
// 综合
for (BrowseCacheRecordDto browseCacheRecordDto : bookScanAndUv.values()) {
String bookChannelAdviserId = browseCacheRecordDto.getJournalId() + "_" + browseCacheRecordDto.getChannelId() + "_" + browseCacheRecordDto.getAdviserId();
bookDataStatisticsDTO = resultMap.get(bookChannelAdviserId);
if(bookDataStatisticsDTO != null){
bookDataStatisticsDTO.setScanCount(bookDataStatisticsDTO.getScanCount() + browseCacheRecordDto.getScanCount());
bookDataStatisticsDTO.setUserCount(bookDataStatisticsDTO.getUserCount() + browseCacheRecordDto.getBrowserCounts());
bookDataStatisticsDTO.setBookCategory("现代纸书、社群书");
continue;
}
bookDataStatisticsDTO = new BookDataStatisticsDTO();
bookDataStatisticsDTO.setBookChannelAdviserId(bookChannelAdviserId);
bookDataStatisticsDTO.setAdviserId(browseCacheRecordDto.getAdviserId());
bookDataStatisticsDTO.setBookId(browseCacheRecordDto.getJournalId());
bookDataStatisticsDTO.setChannelId(browseCacheRecordDto.getChannelId());
bookDataStatisticsDTO.setScanCount(browseCacheRecordDto.getCount());
bookDataStatisticsDTO.setUserCount(browseCacheRecordDto.getBrowseCounts());
bookDataStatisticsDTO.setBookCategory("现代纸书");
resultMap.put(bookDataStatisticsDTO.getBookChannelAdviserId(), bookDataStatisticsDTO);
}
return resultMap;
}
}
......@@ -6,6 +6,7 @@ package com.pcloud.book.book.facade;
import com.pcloud.book.base.dto.CountDto;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.entity.BookAdviser;
......@@ -223,4 +224,8 @@ public interface BookAdviserFacade {
@ApiOperation("获取书下资源总数(包括现代纸书、1V1、小睿、社群码)")
@PostMapping("mapResourceTotalCount")
ResponseDto<Map<String, BookResourceStatisticsDTO>> mapResourceTotalCount(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO);
@ApiOperation("获取书刊统计数据(用户数、扫码量)")
@PostMapping("mapBookDataStatistics")
ResponseDto<Map<String, BookDataStatisticsDTO>> mapBookDataStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO);
}
......@@ -7,6 +7,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.vo.QrCodeVO;
......@@ -218,4 +219,9 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
public ResponseDto<Map<String, BookResourceStatisticsDTO>> mapResourceTotalCount(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO) {
return new ResponseDto<>(bookAdviserBiz.mapResourceTotalCount(mapResourceTotalCountDTO.getAdviserIds(), mapResourceTotalCountDTO.getBookIds(), mapResourceTotalCountDTO.getChannelIds()));
}
@Override
public ResponseDto<Map<String, BookDataStatisticsDTO>> mapBookDataStatistics(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO) {
return new ResponseDto<>(bookAdviserBiz.mapBookDataStatistics(mapResourceTotalCountDTO.getAdviserIds(), mapResourceTotalCountDTO.getBookIds(), mapResourceTotalCountDTO.getChannelIds()));
}
}
......@@ -57,6 +57,8 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
*/
List<BookGroupDTO> getDTOByBookIdsAnsAdviserIds(List<Long> bookIds, List<Long> adviserIds);
List<BookGroupDTO> getDTOByBookIdsAdviserIdsChannelIds(List<Long> bookIds, List<Long> adviserIds, List<Long> channelIds);
/**
* 根据书刊ID删除
* @param bookId 书刊ID
......
......@@ -70,6 +70,15 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
return super.getSqlSession().selectList(getStatement("getDTOByBookIdsAnsAdviserIds"),paramMap);
}
@Override
public List<BookGroupDTO> getDTOByBookIdsAdviserIdsChannelIds(List<Long> bookIds, List<Long> adviserIds, List<Long> channelIds) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookIds",bookIds);
paramMap.put("adviserIds",adviserIds);
paramMap.put("channelIds",channelIds);
return super.getSqlSession().selectList(getStatement("getDTOByBookIdsAdviserIdsChannelIds"),paramMap);
}
/**
* 根据书刊ID删除
*/
......
......@@ -144,6 +144,24 @@
</foreach>
</select>
<select id="getDTOByBookIdsAdviserIdsChannelIds" resultMap="BookGroupDTO" parameterType="map">
select
<include refid="Base_Column_List"/>
from book_group
where book_id in
<foreach collection="bookIds" open="(" close=")" item="item" separator=",">
${item}
</foreach>
and create_user in
<foreach collection="adviserIds" open="(" close=")" item="item" separator=",">
${item}
</foreach>
and channel_id in
<foreach collection="channelIds" open="(" close=")" item="item" separator=",">
${item}
</foreach>
</select>
<select id="getBookGroupCount" resultType="Integer" parameterType="Long">
SELECT
COUNT(DISTINCT G.id)
......
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