Commit a0a6cb6a by 田超

Merge branch 'fixbug/1031444' into 'master'

bug: [1031444] 小蓝书统计-统一书刊统计

See merge request rays/pcloud-book!1443
parents 8c72979a 36c8511d
......@@ -229,6 +229,12 @@
</dependency>
<dependency>
<groupId>com.pcloud.data</groupId>
<artifactId>pcloud-data-api</artifactId>
<version>${pcloud-facade3.version}</version>
</dependency>
<dependency>
<groupId>fakepath</groupId>
<artifactId>jbarcode</artifactId>
<version>0.2.8</version>
......
......@@ -906,7 +906,7 @@ public class BookBizImpl implements BookBiz {
}
// 填充渠道基础信息
bookSet.setChannelInfoList(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList(), adviserId);
// 填充模板信息
bookSet.setTemplateName(pageBean.getRecordList());
// 设置是否被冻结
......@@ -939,7 +939,7 @@ public class BookBizImpl implements BookBiz {
if (!ListUtils.isEmpty(bookDtos)) {
// 填充渠道基础信息
bookSet.setChannelInfoList(Lists.newArrayList(bookDtos));
bookSet.setBookSvUvPv4Object(Lists.newArrayList(bookDtos));
bookSet.setBookSvUvPv4Object(Lists.newArrayList(bookDtos), adviserId);
// 填充模板信息
bookSet.setTemplateName(Lists.newArrayList(bookDtos));
// 设置是否被冻结
......@@ -970,7 +970,7 @@ public class BookBizImpl implements BookBiz {
// 填充渠道基础信息
bookSet.setPageDetailInfo4Wechat(pageBean.getRecordList(), adviserId);
// 设置图书扫码量读者量浏览量
bookSet.setBookSvUvPv4Object(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList(), adviserId);
// 填充模板信息
bookSet.setTemplateName(pageBean.getRecordList());
// 设置冻结状态
......@@ -1195,7 +1195,7 @@ public class BookBizImpl implements BookBiz {
// 设置是否加入书架
bookSet.setIsHaveAddBookcase(pageBean.getRecordList(), wechatUserId);
// 设置图书扫码量读者量浏览量
bookSet.setBookSvUvPv4Object(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList(), null);
// 设置模板名称(图书类型)
bookSet.setTemplateName(pageBean.getRecordList());
return pageBean;
......@@ -1235,7 +1235,7 @@ public class BookBizImpl implements BookBiz {
// 填充渠道基础信息
bookSet.setChannelInfoList(books);
// 设置图书扫码量读者量浏览量
bookSet.setBookSvUvPv4Object(books);
bookSet.setBookSvUvPv4Object(books, adviserId);
// 设置模板名称(图书类型)
bookSet.setTemplateName(books);
return books;
......@@ -1263,7 +1263,7 @@ public class BookBizImpl implements BookBiz {
// 设置模板名称(图书类型)
bookSet.setTemplateName(pageBean.getRecordList());
// 设置图书扫码量读者量浏览量
bookSet.setBookSvUvPv4Object(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList(), adviserId);
// 设置基金状态
bookSet.setFreezeStatus(pageBean.getRecordList());
return pageBean;
......@@ -1291,7 +1291,7 @@ public class BookBizImpl implements BookBiz {
// 设置编辑名称
bookSet.setAdviserName4BookDto(pageBean.getRecordList());
// 设置图书扫码量读者量浏览量
bookSet.setBookSvUvPv4Object(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList(), null);
// 设置冻结状态
bookSet.setFreezeStatus(pageBean.getRecordList());
// 设置模板名称(图书类型)
......@@ -1381,7 +1381,7 @@ public class BookBizImpl implements BookBiz {
// 填充渠道基础信息
bookSet.setChannelInfoList(pageBean.getRecordList());
// 设置图书扫码量读者量浏览量
bookSet.setBookSvUvPv4Object(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList(), adviserId);
// 设置图书类型
bookSet.setTemplateName(pageBean.getRecordList());
return pageBean;
......@@ -1479,7 +1479,7 @@ public class BookBizImpl implements BookBiz {
// 设置编辑名称,手机号
bookSet.setAdviserInfo4BookDto(pageBean.getRecordList());
// 设置图书读者量、扫码量、浏览量
bookSet.setBookSvUvPv4Object(pageBean.getRecordList());
bookSet.setBookSvUvPv4Object(pageBean.getRecordList(), null);
// 设置书刊分类
bookSet.setTemplateNameNew(pageBean.getRecordList());
// 设置运营平台名称
......@@ -1560,7 +1560,7 @@ public class BookBizImpl implements BookBiz {
// 设置编辑名称
bookSet.setAdviserName4BookDto(partPlatformBook);
// 设置图书读者量、扫码量、浏览量
bookSet.setBookSvUvPv4Object(partPlatformBook);
bookSet.setBookSvUvPv4Object(partPlatformBook, null);
// 设置书刊分类
bookSet.setTemplateName(partPlatformBook);
// 设置运营平台名称
......@@ -1579,7 +1579,7 @@ public class BookBizImpl implements BookBiz {
// 设置编辑名称
bookSet.setAdviserName4BookDto(partPlatformBook);
// 设置图书读者量、扫码量、浏览量
bookSet.setBookSvUvPv4Object(partPlatformBook);
bookSet.setBookSvUvPv4Object(partPlatformBook, null);
// 设置书刊分类
bookSet.setTemplateName(partPlatformBook);
// 设置运营平台名称
......
......@@ -3,6 +3,7 @@
*/
package com.pcloud.book.book.set;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.alibaba.fastjson.JSONObject;
......@@ -40,8 +41,10 @@ import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.app.AssistTempletConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.common.CommonConsr;
import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.consumer.data.DataConsr;
import com.pcloud.book.consumer.erp.ErpConsr;
import com.pcloud.book.consumer.message.MessageConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
......@@ -79,7 +82,10 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.number.AmountUtil;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.commoncenter.whitelist.entity.AdviserWhitelist;
import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.pcloud.data.domain.enums.YesNoEnum;
import com.pcloud.data.domain.vo.AllAdviserBookStatisVO;
import com.pcloud.labelcenter.label.service.LabelService;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductTypeDto;
......@@ -198,6 +204,10 @@ public class BookSet {
private ResourcePageBiz resourcePageBiz;
@Autowired
private ErpConsr erpConsr;
@Autowired
private DataConsr dataConsr;
@Autowired
private CommonConsr commonConsr;
/**
* 检验书号是否合法,包括ISSN,ISBN,CSSN
......@@ -1306,7 +1316,7 @@ public class BookSet {
* @param bookList
*/
@ParamLog(value = "设置图书读者量、扫码量、浏览量", isBefore = false)
public void setBookSvUvPv4Object(List<Object> bookList) {
public void setBookSvUvPv4Object(List<Object> bookList, Long adviserId) {
if (ListUtils.isEmpty(bookList)) {
return;
}
......@@ -1322,19 +1332,40 @@ public class BookSet {
List<Long> channelIds = Lists.newArrayList(channelIdsMap.values());
List<Long> adviserIds = Lists.newArrayList(adviserIdsMap.values());
List<Long> bookIds = Lists.newArrayList(bookIdsMap.values());
Map<String, BrowseCacheRecordDto> bookScanAndUv = browseRecordConsr.getBookScanAndUv(adviserIds, channelIds,
bookIds);
if (bookScanAndUv == null) {
return;
}
for (Object object : bookList) {
BookDto bookDto = (BookDto) object;
String key = bookDto.getBookId() + "-" + bookDto.getAdviserId() + "-" + bookDto.getChannelId();
BrowseCacheRecordDto browseCacheRecordDto = bookScanAndUv.get(key);
if (browseCacheRecordDto != null) {
bookDto.setBrowseCounts(browseCacheRecordDto.getBrowseCounts());
bookDto.setBrowserCounts(browseCacheRecordDto.getBrowserCounts());
bookDto.setScanCount(browseCacheRecordDto.getScanCount());
AdviserWhitelist adviserWhitelist = commonConsr.getByAdviserId(adviserId);
if(ObjectUtil.equal(YesNoEnum.YES.value, adviserWhitelist.getEnableNewDataStatistics())){
// 开启了新版统计
Map<String, AllAdviserBookStatisVO> bookStatisMap = dataConsr.getBookStatisByBookIds(bookIds, adviserIds, channelIds);
if (CollUtil.isEmpty(bookStatisMap)) {
return;
}
for (Object object : bookList) {
BookDto bookDto = (BookDto) object;
String key = bookDto.getBookId() + "-" + bookDto.getAdviserId() + "-" + bookDto.getChannelId();
AllAdviserBookStatisVO vo = bookStatisMap.get(key);
if (vo != null) {
bookDto.setBrowseCounts(vo.getBrowses());
bookDto.setBrowserCounts(vo.getReader());
bookDto.setScanCount(vo.getScans());
}
}
} else{
// 旧版统计
Map<String, BrowseCacheRecordDto> bookScanAndUv = browseRecordConsr.getBookScanAndUv(adviserIds, channelIds,
bookIds);
if (bookScanAndUv == null) {
return;
}
for (Object object : bookList) {
BookDto bookDto = (BookDto) object;
String key = bookDto.getBookId() + "-" + bookDto.getAdviserId() + "-" + bookDto.getChannelId();
BrowseCacheRecordDto browseCacheRecordDto = bookScanAndUv.get(key);
if (browseCacheRecordDto != null) {
bookDto.setBrowseCounts(browseCacheRecordDto.getBrowseCounts());
bookDto.setBrowserCounts(browseCacheRecordDto.getBrowserCounts());
bookDto.setScanCount(browseCacheRecordDto.getScanCount());
}
}
}
}
......
package com.pcloud.book.consumer.common;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.commoncenter.whitelist.entity.AdviserWhitelist;
import com.pcloud.commoncenter.whitelist.service.AdviserWhitelistService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
@Component
public class CommonConsr {
private static final Logger LOGGER = LoggerFactory.getLogger(CommonConsr.class);
@Autowired
private AdviserWhitelistService adviserWhitelistService;
/**
* 是否开启了新版数据统计
*/
public AdviserWhitelist getByAdviserId(Long adviserId) {
try {
ResponseEntity<ResponseDto<AdviserWhitelist>> response = adviserWhitelistService.getByAdviserId(adviserId);
AdviserWhitelist adviserWhitelist = ResponseHandleUtil.parseResponse(response, AdviserWhitelist.class);
return adviserWhitelist;
} catch (Exception e) {
LOGGER.error("Excel导出失败[exportService.exportExcel]>>>>>" + e.getMessage(), e);
}
return new AdviserWhitelist();
}
}
package com.pcloud.book.consumer.data;
import cn.hutool.core.collection.CollUtil;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.data.domain.dto.BookStatisParamDTO;
import com.pcloud.data.domain.vo.AllAdviserBookStatisVO;
import com.pcloud.data.domain.vo.AllAdviserWorksStatisVO;
import com.pcloud.data.domain.vo.AllQrcodeWorksStatisVO;
import com.pcloud.data.domain.vo.CalDataOverviewVO;
import com.pcloud.data.domain.vo.CalQrcodeTargetVO;
import com.pcloud.data.domain.vo.CalScanHourTrendTargetVO;
import com.pcloud.data.domain.vo.CalUserInfoCityVO;
import com.pcloud.data.domain.vo.CalUserInfoProvinceVO;
import com.pcloud.data.domain.vo.CalUserInfoSexVO;
import com.pcloud.data.domain.vo.DailyQrcodeSummaryVO;
import com.pcloud.data.domain.vo.MidUserInfoMergeVO;
import com.pcloud.data.provider.BookStatisService;
import com.pcloud.data.provider.CalGroupTrackTargetService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName com.pcloud.analysisengine.consumer.data.DataService
* @Author zhuyajie
* @Description 行为轨迹
* @Date 2021/9/30 17:50
* @Version 1.0
**/
@Slf4j
@Component
public class DataConsr {
private static final Logger LOGGER = LoggerFactory.getLogger(DataConsr.class);
@Autowired
private BookStatisService bookStatisService;
@Autowired
private CalGroupTrackTargetService calGroupTrackTargetService;
/**
* 获取书刊统计信息(书刊总收益、二维码数量、扫码量、扫码人、浏览量)
*/
public AllAdviserBookStatisVO getBookStatisByBookId(Long bookId, Long adviserId, Long channelId){
try {
ResponseEntity<ResponseDto<AllAdviserBookStatisVO>> responseEntity = bookStatisService.getBookStatisByBookId(bookId, adviserId, channelId);
return ResponseHandleUtil.parseResponse(responseEntity, AllAdviserBookStatisVO.class);
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getBookStatisByBookId] 失败", e);
}
return null;
}
/**
* 获取书刊统计信息(书刊总收益、二维码数量、扫码量、扫码人、浏览量)
*/
public Map<String, AllAdviserBookStatisVO> getBookStatisByBookIds(List<Long> bookIds, List<Long> adviserIds, List<Long> channelIds){
try {
BookStatisParamDTO paramDTO = new BookStatisParamDTO();
paramDTO.setBookIds(bookIds);
paramDTO.setAdviserIds(adviserIds);
paramDTO.setChannelIds(channelIds);
ResponseEntity<ResponseDto<Map<String, AllAdviserBookStatisVO>>> responseEntity = bookStatisService.getBookStatisByBookIds(paramDTO);
return ResponseHandleUtil.parseMap(responseEntity, String.class, AllAdviserBookStatisVO.class);
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getBookStatisByBookId] 失败", e);
}
return new HashMap<>();
}
/**
* 二维码统计(二维码扫码量、浏览量、读者量、平均浏览时长、销售额、购买次数)
*/
public CalQrcodeTargetVO getQrcodeStatisByQrcodeId(Long bookId, Long qrcodeId, Long adviserId, Long channelId){
try {
ResponseEntity<ResponseDto<CalQrcodeTargetVO>> responseEntity = bookStatisService.getQrcodeStatisByQrcodeId(bookId, qrcodeId, adviserId, channelId);
return ResponseHandleUtil.parseResponse(responseEntity, CalQrcodeTargetVO.class);
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeStatisByQrcodeId] 失败", e);
}
return null;
}
/**
* 获取二维码下用户扫码地区分布图
*/
public List<MidUserInfoMergeVO> getQrcodeScanUserAreaList(Long bookId, Long adviserId, Long channelId, Long qrcodeId, Integer currentPage, Integer numPerPage){
try {
ResponseEntity<ResponseDto<List<MidUserInfoMergeVO>>> responseEntity = bookStatisService.getQrcodeScanUserAreaList(bookId, adviserId, channelId, qrcodeId, currentPage, numPerPage);
List<MidUserInfoMergeVO> list = ResponseHandleUtil.parseList(responseEntity, MidUserInfoMergeVO.class);
return list != null ? list : CollUtil.toList();
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeScanUserAreaList] 失败", e);
}
return CollUtil.toList();
}
/**
* 获取二维码下用户省份分布图
*/
public List<CalUserInfoProvinceVO> getQrcodeUserProvinceTop5(Long bookId, Long adviserId, Long channelId, Long qrcodeId, Integer top, Integer loadCity){
try {
ResponseEntity<ResponseDto<List<CalUserInfoProvinceVO>>> responseEntity = bookStatisService.getQrcodeUserProvinceTop5(bookId, adviserId, channelId, qrcodeId, top, loadCity);
List<CalUserInfoProvinceVO> list = ResponseHandleUtil.parseList(responseEntity, CalUserInfoProvinceVO.class);
return list != null ? list : CollUtil.toList();
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeUserProvinceTop5] 失败", e);
}
return CollUtil.toList();
}
/**
* 获取二维码下用户城市分布图
*/
public List<CalUserInfoCityVO> getQrcodeUserCityTop5(Long bookId, Long adviserId, Long channelId, Long qrcodeId, String province, Integer top){
try {
ResponseEntity<ResponseDto<List<CalUserInfoCityVO>>> responseEntity = bookStatisService.getQrcodeUserCityTop5(bookId, adviserId, channelId, qrcodeId, province, top);
List<CalUserInfoCityVO> list = ResponseHandleUtil.parseList(responseEntity, CalUserInfoCityVO.class);
return list != null ? list : CollUtil.toList();
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeUserCityTop5] 失败", e);
}
return CollUtil.toList();
}
/**
* 获取二维码下用户城市分布图
*/
public CalUserInfoSexVO getQrcodeUserSex(Long bookId, Long adviserId, Long channelId, Long qrcodeId){
try {
ResponseEntity<ResponseDto<CalUserInfoSexVO>> responseEntity = bookStatisService.getQrcodeUserSex(bookId, adviserId, channelId, qrcodeId);
return ResponseHandleUtil.parseResponse(responseEntity, CalUserInfoSexVO.class);
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeUserSex] 失败", e);
}
return null;
}
/**
* 获取二维码访问趋势
*/
public List<DailyQrcodeSummaryVO> getQrcodeScanUserChart(Long bookId, Long adviserId, Long channelId, Long qrcodeId, String beginDate, String endDate){
try {
ResponseEntity<ResponseDto<List<DailyQrcodeSummaryVO>>> responseEntity = bookStatisService.getQrcodeScanUserChart(bookId, adviserId, channelId, qrcodeId, beginDate, endDate);
List<DailyQrcodeSummaryVO> list = ResponseHandleUtil.parseList(responseEntity, DailyQrcodeSummaryVO.class);
return list != null ? list : CollUtil.toList();
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeScanUserChart] 失败", e);
}
return CollUtil.toList();
}
/**
* 获取二维码24小时访问趋势
*/
public List<CalScanHourTrendTargetVO> getQrcodeScanUser24HourChart(Long bookId, Long adviserId, Long channelId, Long qrcodeId){
try {
ResponseEntity<ResponseDto<List<CalScanHourTrendTargetVO>>> responseEntity = bookStatisService.getQrcodeScanUser24HourChart(bookId, adviserId, channelId, qrcodeId);
List<CalScanHourTrendTargetVO> list = ResponseHandleUtil.parseList(responseEntity, CalScanHourTrendTargetVO.class);
return list != null ? list : CollUtil.toList();
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeScanUser24HourChart] 失败", e);
}
return CollUtil.toList();
}
/**
* 获取二维码下资源访问趋势(浏览量、浏览人数、人均浏览时长)
*/
public List<AllQrcodeWorksStatisVO> getQrcodeServeStatisChart(Long bookId, Long adviserId, Long channelId, Long qrcodeId, Long typeId, String typeCode, String beginDate, String endDate ){
try {
ResponseEntity<ResponseDto<List<AllQrcodeWorksStatisVO>>> responseEntity = bookStatisService.getQrcodeServeStatisChart(bookId, adviserId, channelId, qrcodeId, typeId, typeCode, beginDate, endDate);
List<AllQrcodeWorksStatisVO> list = ResponseHandleUtil.parseList(responseEntity, AllQrcodeWorksStatisVO.class);
return list != null ? list : CollUtil.toList();
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getQrcodeServeStatisChart] 失败", e);
}
return CollUtil.toList();
}
/**
* 编辑应用排行统计(应用浏览量、读者量)
*/
public List<AllAdviserWorksStatisVO> getAdviserAppStatis(Long adviserId){
try {
ResponseEntity<ResponseDto<List<AllAdviserWorksStatisVO>>> responseEntity = bookStatisService.getAdviserAppStatis(adviserId);
List<AllAdviserWorksStatisVO> list = ResponseHandleUtil.parseList(responseEntity, AllAdviserWorksStatisVO.class);
return list != null ? list : CollUtil.toList();
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getAdviserAppStatis] 失败", e);
}
return CollUtil.toList();
}
/**
* 获取今日数据概览
*/
public CalDataOverviewVO getTodayDataView(Long adviserId){
try {
ResponseEntity<ResponseDto<CalDataOverviewVO>> responseEntity = bookStatisService.getTodayDataView(adviserId);
return ResponseHandleUtil.parseResponse(responseEntity, CalDataOverviewVO.class);
} catch (Exception e){
LOGGER.warn("调用数据统计接口 [DataConsr.getTodayDataView] 失败", e);
}
return null;
}
}
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