Commit 30b9c818 by 田超

Merge branch 'feature/1004406' into 'master'

feat: [1004406]出版端首页改版

See merge request rays/pcloud-book!1227
parents 99c282d9 80adb554
package com.pcloud.book.book.dto;
import lombok.Data;
@Data
public class AppBookDto {
private Long bookId;
private Long adviserId;
private Long channelId;
private String bookName;
private Long templetId;
private Long secondTempletId;
private Long thirdTempletId;
private String publishName;
private Long publishId;
private Long appId;
private String appType;
}
package com.pcloud.book.book.dto;
import lombok.Data;
import java.util.List;
@Data
public class AppBookRequestDTO {
private String typeCode;
private List<String> sceneCode;
}
......@@ -181,4 +181,7 @@ public interface BookAdviserService {
@ApiOperation("erp获取二维码下面配置了企业微信的二维码")
ResponseEntity<ResponseDto<List<Long>>> getHasWxWorkCode(@RequestBody List<Long> sceneIds);
@GetMapping("getBookIdsByAgentId")
@ApiOperation("根据agentId获取书籍id")
void getBookIdsByAgentId(@RequestParam("agentId") Long agentId);
}
package com.pcloud.book.group.dto;
import lombok.Data;
import java.util.List;
@Data
public class BookGroupScanStatisticsRequestDTO {
private List<Long> bookIds;
private List<Long> channelIds;
private List<Long> adviserIds;
private Integer start;
private Integer end;
}
package com.pcloud.book.group.dto;
import lombok.Data;
@Data
public class BookGroupScanStatisticsRespDTO {
private Long bookId;
private Long channelId;
private Long adviserId;
private Integer scanCount;
private Integer readerCount;
}
......@@ -2,10 +2,11 @@ package com.pcloud.book.group.service;
import com.pcloud.book.group.dto.AltAndCountDTO;
import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupClassifyDTO;
import com.pcloud.book.group.dto.BookGroupCountDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupKeywordResourceDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRespDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRequestDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO;
import com.pcloud.book.group.dto.BookGroupServeDTO;
import com.pcloud.book.group.dto.ErpBookGroupDTO;
......@@ -250,4 +251,8 @@ public interface BookGroupService {
@ApiOperation("通过自有码sceneId查询小程序相关信息")
@PostMapping("getOneBookAppletBySceneIds")
ResponseEntity<ResponseDto<BookAppletSceneDTO>> getOneBookAppletBySceneIds(@RequestBody List<Long> sceneIds);
@ApiOperation("获取社群书的扫码统计信息")
@PostMapping("getBookGroupScanStatistics")
ResponseEntity<ResponseDto<List<BookGroupScanStatisticsRespDTO>>> getBookGroupScanStatistics(@RequestBody BookGroupScanStatisticsRequestDTO reqDTO);
}
......@@ -368,5 +368,13 @@ public interface BookAdviserBiz {
*/
List<Long> getHasWxWorkCode(List<Long> sceneIds);
/**
* 根据agentId获取书籍id
* @param agentId
*/
void getBookIdsByAgentId(Long agentId);
List<Long> getBooksByAgentToken(Long agentId, int index);
BookServeInfo listBookServes4Book(String cursor, Integer limit);
}
......@@ -746,4 +746,6 @@ public interface BookBiz {
Long agentId) throws BizException;
List<BookInfo4ScanCount> fetchBookListByScanCount(List<BookInfo4ScanCountRequestVO> requestVOS);
BookCountsVO getPublishCounts(Long agentId);
}
......@@ -92,6 +92,7 @@ import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.common.constant.CacheConstant;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.RedisKeyConstant;
import com.pcloud.common.core.constant.ProductTypeConstant;
import com.pcloud.common.core.constant.SceneCode;
import com.pcloud.common.core.constant.SendType;
......@@ -118,6 +119,7 @@ import com.pcloud.wechatgroup.group.dto.GroupUserCountDTO;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
......@@ -2466,6 +2468,77 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
}
@Override
@ParamLog("根据agentId获取书籍id")
public void getBookIdsByAgentId(Long agentId) {
if (null == agentId) {
return;
}
List<Long> adviserIds = adviserConsr.getByAgentId(agentId);
if (ListUtils.isEmpty(adviserIds)) {
return;
}
String key = CacheConstant.BOOK + "BOOKIDS4AGENT:" + agentId;
//为空的话从数据库查询并缓存5分钟
if (StringUtil.isEmpty(JedisClusterUtils.get(key))) {
List<ERPPublishNumDTO> erpPublishNumQueryParams = bookAdviserDao.getErpPublishNumQueryParams(adviserIds);
if (ListUtils.isEmpty(erpPublishNumQueryParams)) {
return;
}
Integer expireTime = 60 * 5;
JedisClusterUtils.setJsonList(key, erpPublishNumQueryParams, expireTime);
}
}
@Override
public List<Long> getBooksByAgentToken(Long agentId, int index) {
if (null == agentId) {
return new ArrayList<>();
}
List<Long> result = new ArrayList<>();
String key = CacheConstant.BOOK + "BOOKIDS4AGENT:" + agentId;
if (StringUtil.isEmpty(JedisClusterUtils.get(key))) {
List<Long> adviserIds = adviserConsr.getByAgentId(agentId);
List<ERPPublishNumDTO> erpPublishNumQueryParams = bookAdviserDao.getErpPublishNumQueryParams(adviserIds);
if (ListUtils.isEmpty(erpPublishNumQueryParams)) {
return new ArrayList<>();
}
Integer expireTime = 60 * 5;
JedisClusterUtils.setJsonList(key, erpPublishNumQueryParams, expireTime);
for (ERPPublishNumDTO erpPublishNumQueryParam : erpPublishNumQueryParams) {
result.add(erpPublishNumQueryParam.getBookId());
}
}else{
List<ERPPublishNumDTO> bookList = JedisClusterUtils.getJsonList(key, ERPPublishNumDTO.class);
List<ERPPublishNumDTO> booksByIndex = getBooksByIndex(index, bookList);
for (ERPPublishNumDTO erpPublishNumDTO : booksByIndex) {
result.add(erpPublishNumDTO.getBookId());
}
}
return result;
}
private static List<ERPPublishNumDTO>getBooksByIndex(int index,List<ERPPublishNumDTO>source){
if(source==null){
return new ArrayList<>();
}
List<ERPPublishNumDTO> result = new ArrayList<>();
if((index-1)*500>source.size()){
return result;
}else{
for(int i=index*500;i<(index+1)*500;i++){
if(source.size()>=i) {
result.add(source.get(i));
}else {
break;
}
}
}
return result;
}
@Override
public BookServeInfo listBookServes4Book(String cursor, Integer limit) {
Long lastId = null;
if (StringUtil.isNotBlank(cursor)) lastId = Long.parseLong(JedisClusterUtils.get(cursor));
......
......@@ -8,7 +8,10 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.pcloud.analysisengine.qrcode.dto.BookScanStatistics4OfficialAccountsDTO;
import com.pcloud.analysisengine.qrcode.dto.BookScanStatistics4OfficialAccountsReqDTO;
import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto;
import com.pcloud.analysisengine.qrcode.service.SceneRecordService;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.appcenter.assist.dto.AssistTempletDTO;
import com.pcloud.appcenter.base.dto.AppPriceCacheDTO;
......@@ -58,6 +61,8 @@ import com.pcloud.book.group.dao.BookAppletSceneDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.BookGroupServeDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRequestDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRespDTO;
import com.pcloud.book.group.dto.BookServeDTO;
import com.pcloud.book.group.entity.BookAppletScene;
import com.pcloud.book.group.entity.BookGroup;
......@@ -78,6 +83,7 @@ import com.pcloud.channelcenter.wechat.dto.AdviserBookResourceNumRespDTO;
import com.pcloud.channelcenter.wechat.dto.BookServeParamVO;
import com.pcloud.channelcenter.wechat.dto.MessageDto;
import com.pcloud.channelcenter.wechat.vo.BookServeVO;
import com.pcloud.common.constant.CacheConstant;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.AgentTypeEnum;
import com.pcloud.common.core.constant.SystemCode;
......@@ -99,6 +105,7 @@ import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.SpecificationDto;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.usercenter.party.agent.dto.SaleAgentDTO;
import io.swagger.models.auth.In;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -114,6 +121,7 @@ import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
......@@ -253,6 +261,8 @@ public class BookBizImpl implements BookBiz {
@Autowired
private RightsNowItemDao rightsNowItemDao;
@Autowired
private SceneRecordService sceneRecordService;
/**
* 创建书籍,同时建立与编辑的推广关系
*/
......@@ -3983,4 +3993,90 @@ public class BookBizImpl implements BookBiz {
}
return new ArrayList<>();
}
@Override
public BookCountsVO getPublishCounts(Long agentId) {
String keyOne = CacheConstant.BOOK + "getPublishCounts:" + agentId;
if (JedisClusterUtils.exists(keyOne)) {
return JedisClusterUtils.getJson(keyOne, BookCountsVO.class);
} else {
BookCountsVO bookCountsVO = new BookCountsVO();
bookAdviserBiz.getBookIdsByAgentId(agentId);
String key = CacheConstant.BOOK + "BOOKIDS4AGENT:" + agentId;
List<ERPPublishNumDTO> bookList = JedisClusterUtils.getJsonList(key, ERPPublishNumDTO.class);
if (bookList == null || bookList.size() == 0) {
return new BookCountsVO();
}
List<Long> books = new ArrayList<>();
List<Long> channelIds = new ArrayList<>();
List<Long> adviserIds = new ArrayList<>();
for (ERPPublishNumDTO erpPublishNumDTO : bookList) {
books.add(erpPublishNumDTO.getBookId());
channelIds.add(erpPublishNumDTO.getChannelId());
adviserIds.add(erpPublishNumDTO.getAdviserId());
}
if (books.size() > 0) {
List<Long> advisers = adviserConsr.getByAgentId(agentId);
int fundBookCounts = bookDao.getFundBookCounts(advisers);
bookCountsVO.setFundBookCounts(fundBookCounts);
} else {
bookCountsVO.setFundBookCounts(0);
}
//获取社群码图书扫码量
BookGroupScanStatisticsRequestDTO bookGroupScanStatisticsRequestDTO = new BookGroupScanStatisticsRequestDTO();
bookGroupScanStatisticsRequestDTO.setBookIds(books);
bookGroupScanStatisticsRequestDTO.setAdviserIds(adviserIds);
bookGroupScanStatisticsRequestDTO.setChannelIds(channelIds);
bookGroupScanStatisticsRequestDTO.setStart(200001);
Date now = new Date();
String strDateFormat = "yyyyMM";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
bookGroupScanStatisticsRequestDTO.setEnd(Integer.valueOf(sdf.format(now)));
List<BookGroupScanStatisticsRespDTO> bookGroupScanStatistics = bookGroupBiz.getBookGroupScanStatistics(bookGroupScanStatisticsRequestDTO);
Map<Long, Integer> booksScanCounts = new HashMap<>();
for (BookGroupScanStatisticsRespDTO bookGroupScanStatistic : bookGroupScanStatistics) {
Long bookId = bookGroupScanStatistic.getBookId();
Integer scanCount = bookGroupScanStatistic.getScanCount();
Integer integer = booksScanCounts.get(bookId);
if (integer == null) {
integer = 0;
} else {
integer = integer + scanCount;
}
booksScanCounts.put(bookId, scanCount);
}
BookScanStatistics4OfficialAccountsReqDTO bookScanStatistics4OfficialAccountsReqDTO = new BookScanStatistics4OfficialAccountsReqDTO();
bookScanStatistics4OfficialAccountsReqDTO.setBookIds(books);
bookScanStatistics4OfficialAccountsReqDTO.setAdviserIds(adviserIds);
bookScanStatistics4OfficialAccountsReqDTO.setChannelIds(channelIds);
bookScanStatistics4OfficialAccountsReqDTO.setStart(new Date("2001/01/01 00:00:00"));
bookScanStatistics4OfficialAccountsReqDTO.setEnd(now);
List<BookScanStatistics4OfficialAccountsDTO> bookScanStatistics4OfficialAccountsDTOS = ResponseHandleUtil.parseList(sceneRecordService.listBookScanStatistics4OfficialAccounts(bookScanStatistics4OfficialAccountsReqDTO), BookScanStatistics4OfficialAccountsDTO.class);
for (BookScanStatistics4OfficialAccountsDTO bookGroupScanStatistic : bookScanStatistics4OfficialAccountsDTOS) {
Long bookId = bookGroupScanStatistic.getBookId();
Integer scanCount = bookGroupScanStatistic.getScanCount();
Integer integer = booksScanCounts.get(bookId);
if (integer == null) {
integer = 0;
} else {
integer = integer + scanCount;
}
booksScanCounts.put(bookId, scanCount);
}
int publishCounts = 0;
int noPublishCounts = 0;
for (Long book : books) {
Integer integer = booksScanCounts.get(book);
if (integer == null || integer <= 50) {
noPublishCounts++;
} else {
publishCounts++;
}
}
bookCountsVO.setPublishCounts(publishCounts);
bookCountsVO.setNoPublishCounts(noPublishCounts);
JedisClusterUtils.setJson(keyOne,bookCountsVO,2*3600);
return bookCountsVO;
}
}
}
......@@ -378,4 +378,6 @@ public interface BookDao extends BaseDao<Book> {
List<BookDto> listPageBookMinimunSupport4Platform(Map<String, Object> paramMap);
Integer getBookMinimunSupportCount4Platform(Map<String, Object> paramMap);
int getFundBookCounts(List<Long> advisers);
}
......@@ -447,4 +447,11 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
public Integer getBookMinimunSupportCount4Platform(Map<String, Object> paramMap){
return getSessionTemplate().selectOne(getStatement("getBookMinimunSupportCount4Platform"), paramMap);
}
@Override
public int getFundBookCounts(List<Long> advisers) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("list", advisers);
return getSessionTemplate().selectOne(getStatement("getFundBookCounts"), advisers);
}
}
......@@ -382,6 +382,14 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
return new ResponseDto<>(bookAdviserBiz.getHasWxWorkCode(sceneIds));
}
@PostMapping("getBooksByAgentToken")
public ResponseDto<List<Long>>getBooksByAgentToken(@RequestParam(value = "token") String token,@RequestParam(value = "index") int index){
Long agentId = (Long)SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
List<Long>bookIds = bookAdviserBiz.getBooksByAgentToken(agentId,index);
return new ResponseDto<>(bookIds);
}
@ApiOperation("获取图书及其资源")
@GetMapping("listBookServes4Book")
public ResponseDto<BookServeInfo> listBookServes4Book(@RequestParam(value = "cursor",required = false) String cursor,
......
......@@ -1313,4 +1313,11 @@ public class BookFacadeImpl implements BookFacade {
if (CollUtil.isEmpty(requestVOS)) return new ResponseDto<>();
return new ResponseDto<>(bookBiz.fetchBookListByScanCount(requestVOS));
}
@GetMapping("getPublishCounts")
public ResponseDto<BookCountsVO>getPublishCounts( @RequestHeader("token") String token){
Long agentId = (Long) SessionUtil.getVlaue(token,SessionUtil.PARTY_ID);
BookCountsVO bookCountsVO = bookBiz.getPublishCounts(agentId);
return new ResponseDto<>(bookCountsVO);
}
}
......@@ -201,4 +201,9 @@ public class BookAdviserServiceImpl implements BookAdviserService {
public ResponseEntity<ResponseDto<List<Long>>> getHasWxWorkCode(@RequestBody List<Long> sceneIds) {
return ResponseHandleUtil.toResponse(bookAdviserBiz.getHasWxWorkCode(sceneIds));
}
@Override
public void getBookIdsByAgentId(Long agentId) {
bookAdviserBiz.getBookIdsByAgentId(agentId);
}
}
package com.pcloud.book.book.vo;
import lombok.Data;
@Data
public class BookCountsVO {
private int publishCounts;
private int noPublishCounts;
private int fundBookCounts;
}
......@@ -4,6 +4,7 @@ import com.dcg.coolq.sdk.CoolQSDK;
import com.dcg.coolq.sdk.message.vos.send.PrivateMsgSendVO;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRespDTO;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
......@@ -11,6 +12,8 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.json.JSONUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.group.dto.BookGroupScanStatisticsDTO;
import com.pcloud.wechatgroup.group.dto.BookGroupScanStatisticsReqDTO;
import com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO;
import com.pcloud.wechatgroup.group.dto.GroupRobotDTO;
import com.pcloud.wechatgroup.group.dto.GroupScanUserStatsDTO;
......@@ -52,6 +55,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
......@@ -867,4 +871,13 @@ public class WechatGroupConsr {
}
return map;
}
public List<BookGroupScanStatisticsDTO> getBookGroupScanStatistics(BookGroupScanStatisticsReqDTO reqDTO) {
try {
return Optional.ofNullable(ResponseHandleUtil.parseList(groupMemberService.getBookGroupScanStatistics(reqDTO), BookGroupScanStatisticsDTO.class)).orElse(new ArrayList<>());
} catch (Exception e) {
log.warn("[getBookGroupScanStatistics] 根据编辑列表获取社群书扫码统计信息 失败" + e.getMessage(), e);
return new ArrayList<>();
}
}
}
......@@ -12,6 +12,8 @@ import com.pcloud.book.group.dto.BookGroupCountDTO;
import com.pcloud.book.group.dto.BookGroupCreateDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupKeywordResourceDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRespDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRequestDTO;
import com.pcloud.book.group.dto.BookGroupSceneDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO;
import com.pcloud.book.group.dto.BookGroupStatistic4AgentDTO;
......@@ -61,13 +63,11 @@ import com.pcloud.book.group.vo.UserBookInfoVO;
import com.pcloud.book.group.vo.WxGroupStatisticVO;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.book.skill.entity.PcloudGroupActivity;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.dto.StoreFlowInfoDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.wechatgroup.group.dto.GroupUserCountDTO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
......@@ -1051,4 +1051,6 @@ public interface BookGroupBiz {
* * @param null
*/
List<BookServeDTO> getBookAndBookGroupRaysApps(Long adviserId, Long bookId, Long channelId);
List<BookGroupScanStatisticsRespDTO> getBookGroupScanStatistics(BookGroupScanStatisticsRequestDTO reqDTO);
}
......@@ -3,6 +3,7 @@ package com.pcloud.book.group.biz.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
......@@ -77,6 +78,8 @@ import com.pcloud.book.group.dao.CopyCipherRecordDao;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dao.GroupQrcodeStyleDao;
import com.pcloud.book.group.dao.JoinGroupCipherDao;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRespDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRequestDTO;
import com.pcloud.book.group.dto.HotAppDTO;
import com.pcloud.book.group.mapper.MpServiceMappingMapper;
import com.pcloud.book.group.dao.PushBookGroupUpdateDao;
......@@ -267,6 +270,8 @@ import com.pcloud.settlementcenter.record.dto.ProductStaticUnderAppMapDTO;
import com.pcloud.settlementcenter.record.service.SettlementService;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.videolesson.schedule.service.ScheduleService;
import com.pcloud.wechatgroup.group.dto.BookGroupScanStatisticsDTO;
import com.pcloud.wechatgroup.group.dto.BookGroupScanStatisticsReqDTO;
import com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO;
import com.pcloud.wechatgroup.group.dto.GroupRobotDTO;
import com.pcloud.wechatgroup.group.dto.GroupUserCountDTO;
......@@ -302,7 +307,6 @@ import java.io.File;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
......@@ -311,12 +315,10 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
......@@ -6675,4 +6677,39 @@ public class BookGroupBizImpl implements BookGroupBiz {
return resultList;
}
@Override
public List<BookGroupScanStatisticsRespDTO> getBookGroupScanStatistics(BookGroupScanStatisticsRequestDTO reqDTO) {
if (ObjectUtil.hasEmpty(reqDTO, reqDTO.getBookIds(), reqDTO.getAdviserIds(), reqDTO.getChannelIds(), reqDTO.getStart(), reqDTO.getEnd()))
return new ArrayList<>();
List<BookGroupDTO> bookGroupDTOS = bookGroupDao.listBookGroupIds(reqDTO.getBookIds(), reqDTO.getAdviserIds(), reqDTO.getChannelIds());
if (CollUtil.isEmpty(bookGroupDTOS)) return new ArrayList<>();
List<Long> bookGroupIds = bookGroupDTOS.stream().filter(Objects::nonNull).map(BookGroupDTO::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(bookGroupIds)) return new ArrayList<>();
BookGroupScanStatisticsReqDTO bookGroupScanStatisticsReqDTO = new BookGroupScanStatisticsReqDTO();
bookGroupScanStatisticsReqDTO.setBookGroupIds(bookGroupIds);
bookGroupScanStatisticsReqDTO.setStart(reqDTO.getStart());
bookGroupScanStatisticsReqDTO.setEnd(reqDTO.getEnd());
List<BookGroupScanStatisticsDTO> bookGroupScanStatistics = wechatGroupConsr.getBookGroupScanStatistics(bookGroupScanStatisticsReqDTO);
if (CollUtil.isEmpty(bookGroupScanStatistics)) return new ArrayList<>();
Map<Long, BookGroupScanStatisticsDTO> statisticsDTOMap = bookGroupScanStatistics.stream().filter(x ->
ObjectUtil.isAllNotEmpty(x, x.getBookGroupId())).collect(Collectors.toMap(BookGroupScanStatisticsDTO::getBookGroupId, Function.identity()));
List<BookGroupScanStatisticsRespDTO> list = new ArrayList<>();
for (BookGroupDTO bookGroupDTO : bookGroupDTOS) {
if (ObjectUtil.hasEmpty(bookGroupDTO,bookGroupDTO.getId())) continue;
BookGroupScanStatisticsRespDTO respDTO = new BookGroupScanStatisticsRespDTO();
respDTO.setBookId(bookGroupDTO.getBookId());
respDTO.setAdviserId(bookGroupDTO.getCreateUser());
respDTO.setChannelId(bookGroupDTO.getChannelId());
respDTO.setScanCount(Optional.ofNullable(statisticsDTOMap.get(bookGroupDTO.getId())).map(BookGroupScanStatisticsDTO::getScanCount).orElse(0));
respDTO.setReaderCount(Optional.ofNullable(statisticsDTOMap.get(bookGroupDTO.getId())).map(BookGroupScanStatisticsDTO::getReaderCount).orElse(0));
list.add(respDTO);
}
return list;
}
}
......@@ -383,5 +383,7 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
List<HotAppDTO> listHotAppIncrement();
List<BookGroupDTO> listBookGroupIds(List<Long> bookIds, List<Long> adviserIds, List<Long> channelIds);
List<BookGroupDTO> getDTOByBookIdList(Long bookId, Long channelId, Long adviserId);
}
......@@ -11,7 +11,6 @@ import com.pcloud.book.group.dto.TopAgentBookGroupDTO;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.QrChangeRecord;
import com.pcloud.book.group.vo.BookGroupAnalysisVO;
import com.pcloud.book.group.vo.BookGroupServeCountVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.utils.ListForInSQL;
......@@ -507,6 +506,15 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
}
@Override
public List<BookGroupDTO> listBookGroupIds(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 getSqlSession().selectList(getStatement("listBookGroupIds"), paramMap);
}
@Override
public List<BookGroupDTO> getDTOByBookIdList(Long bookId, Long channelId, Long adviserId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookId", bookId);
......
......@@ -7,6 +7,8 @@ import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupCountDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupKeywordResourceDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRespDTO;
import com.pcloud.book.group.dto.BookGroupScanStatisticsRequestDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO;
import com.pcloud.book.group.dto.BookGroupServeDTO;
import com.pcloud.book.group.dto.ErpBookGroupDTO;
......@@ -34,7 +36,6 @@ import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil;
import java.lang.reflect.InvocationTargetException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -437,4 +438,10 @@ public class BookGroupServiceImpl implements BookGroupService {
BookAppletSceneDTO bookAppletSceneDTO = bookGroupBiz.getOneBookAppletBySceneIds(sceneIds);
return ResponseHandleUtil.toResponse(bookAppletSceneDTO);
}
@Override
@PostMapping("getBookGroupScanStatistics")
public ResponseEntity<ResponseDto<List<BookGroupScanStatisticsRespDTO>>> getBookGroupScanStatistics(@RequestBody BookGroupScanStatisticsRequestDTO reqDTO) {
return ResponseHandleUtil.toResponse(bookGroupBiz.getBookGroupScanStatistics(reqDTO));
}
}
......@@ -2880,4 +2880,38 @@
GROUP BY a.BOOK_ID
) a
</select>
<select id="getFundBookCounts" resultType="int">
SELECT
count(DISTINCT a.book_id)
FROM
BOOK_ADVISER A
INNER JOIN
BOOK B
ON
A.BOOK_ID = B.BOOK_ID AND A.IS_DELETE = 0 AND B.IS_DELETE = 0
AND
A.ADVISER_ID IN
(
<foreach collection="list" separator="," item="item">
#{item}
</foreach>
)
AND A.IS_MAIN_EDITOR = 1
LEFT JOIN
BOOK_TYPE T
ON
B.TYPE_CODE = T.TYPE_CODE
LEFT JOIN
BOOK_FUND BF
ON
BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME> NOW() AND NOW()> BF.START_TIME
WHERE
1=1 and
BF.BOOK_FUND_ID>0
GROUP BY A.BOOK_ID, A.CHANNEL_ID
</select>
</mapper>
......@@ -900,7 +900,7 @@
FROM
book_adviser
WHERE
IS_DELETE = 0 AND ADVISER_ID IN
ADVISER_ID IN
<foreach collection="adviserIds" item="item" close=")" open="(" separator=",">
#{item}
</foreach>
......
......@@ -1274,4 +1274,27 @@
ORDER BY
increment DESC
</select>
<select id="listBookGroupIds" resultType="com.pcloud.book.group.dto.BookGroupDTO" parameterType="map">
SELECT
id,
book_id bookId,
channel_id channelId,
create_user createUser
FROM
book_group
WHERE
book_id IN
<foreach collection="bookIds" open="(" item="item" separator="," close=")">
${item}
</foreach>
AND channel_id IN
<foreach collection="channelIds" open="(" item="item" separator="," close=")">
${item}
</foreach>
AND create_user IN
<foreach collection="adviserIds" open="(" item="item" separator="," close=")">
${item}
</foreach>
</select>
</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