Commit 316d3bc9 by daixing

1000884编辑端首页、收益管理,加上微信群相关

parent 84344081
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 16:07
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BookClassifyDTO implements Serializable {
private Long bookId;
private Long bookGroupId;
private Long classifyCount;
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getClassifyCount() {
return classifyCount;
}
public void setClassifyCount(Long classifyCount) {
this.classifyCount = classifyCount;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
@Override
public String toString() {
return "BookClassifyDTO{" +
"bookId=" + bookId +
", bookGroupId=" + bookGroupId +
", classifyCount=" + classifyCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 16:29
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BookGroupStatisticsDTO implements Serializable {
/**
* 群分类数
*/
private Long classifyCount;
/**
* 微信群数
*/
private Long wxGroupCount;
/**
* 当前群人数
*/
private Long groupPersonNum;
/**
* 推广应用次数
*/
private Long promAppCount;
/**
* 推广作品次数
*/
private Long promProductCount;
public Long getClassifyCount() {
return classifyCount;
}
public void setClassifyCount(Long classifyCount) {
this.classifyCount = classifyCount;
}
public Long getWxGroupCount() {
return wxGroupCount;
}
public void setWxGroupCount(Long wxGroupCount) {
this.wxGroupCount = wxGroupCount;
}
public Long getGroupPersonNum() {
return groupPersonNum;
}
public void setGroupPersonNum(Long groupPersonNum) {
this.groupPersonNum = groupPersonNum;
}
public Long getPromAppCount() {
return promAppCount;
}
public void setPromAppCount(Long promAppCount) {
this.promAppCount = promAppCount;
}
public Long getPromProductCount() {
return promProductCount;
}
public void setPromProductCount(Long promProductCount) {
this.promProductCount = promProductCount;
}
@Override
public String toString() {
return "BookGroupStatisticsDTO{" +
"classifyCount=" + classifyCount +
", wxGroupCount=" + wxGroupCount +
", groupPersonNum=" + groupPersonNum +
", promAppCount=" + promAppCount +
", promProductCount=" + promProductCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.service;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.common.dto.ResponseDto;
import org.springframework.cloud.netflix.feign.FeignClient;
......@@ -54,4 +51,8 @@ public interface BookGroupClassifyService {
@ApiOperation("过滤被删除的群分类、群二维码")
@PostMapping("filterDeleteId")
ResponseEntity<ResponseDto<List<Long>>> filterDeleteId(@RequestBody List<String >wxGroupIdList);
@ApiOperation("获取群分类个数")
@PostMapping("getGroupClassifyCount")
ResponseEntity<ResponseDto<Map<Long, BookClassifyDTO>>> getGroupClassifyCount(@RequestBody List<Long> bookIds);
}
package com.pcloud.book.consumer.settlement;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.settlementcenter.record.dto.GroupRescourceIncomeParamDTO;
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 com.pcloud.book.base.exception.BookBizException;
......@@ -102,4 +107,52 @@ public class BookConsr {
LOGGER.info("【书刊-结算(消)】批量获取书刊总收益,<END>");
return resultMap;
}
@ParamLog(value = "批量获取社群码下资源的收益", isBefore = false, isAfterReturn = false)
public Map<Long, BigDecimal> getRescourceIncome(GroupRescourceIncomeParamDTO groupRescourceIncomeParamDTO) throws BizException {
Map<Long, BigDecimal> rescourceIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long, BigDecimal>>> responseEntityP = bookService.getGroupRescourceIncome(groupRescourceIncomeParamDTO);
rescourceIncome = ResponseHandleUtil.parseMap(responseEntityP, Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码下资源的收益.[getRescourceIncome]:" + e.getMessage(), e);
}
return rescourceIncome;
}
@ParamLog(value = "批量获取社群码下资源的总收益", isBefore = false, isAfterReturn = false)
public BigDecimal getRescourceTotalIncome(GroupRescourceIncomeParamDTO groupRescourceIncomeParamDTO) throws BizException {
BigDecimal rescourceTotalIncome = new BigDecimal(0);
try {
ResponseEntity<ResponseDto<BigDecimal>> responseEntityP = bookService.getGroupRescourceTotalIncome(groupRescourceIncomeParamDTO);
rescourceTotalIncome = ResponseHandleUtil.parseResponse(responseEntityP, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码下资源的总收益.[getRescourceTotalIncome]:" + e.getMessage(), e);
}
return rescourceTotalIncome;
}
@ParamLog(value = "批量获取社群码分类的收益", isBefore = false, isAfterReturn = false)
public Map<Long,BigDecimal> getClassifyIncome(List<Long> classifyIds) throws BizException {
Map<Long,BigDecimal> classifyIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,BigDecimal>>> responseEntityP = bookService.getGroupClassifyIncome(classifyIds);
classifyIncome = ResponseHandleUtil.parseMap(responseEntityP, Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码分类的收益.[getClassifyIncome]:" + e.getMessage(), e);
}
return classifyIncome;
}
@ParamLog(value = "批量获取社群码分类下的微信群收益", isBefore = false, isAfterReturn = false)
public Map<Long,BigDecimal> getQrcodeIncome(List<Long> qrcodeIds) throws BizException {
Map<Long,BigDecimal> qrcodeIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,BigDecimal>>> responseEntityP = bookService.getGroupQrcodeIncome(qrcodeIds);
qrcodeIncome = ResponseHandleUtil.parseMap(responseEntityP, Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码分类下的微信群收益.[getQrcodeIncome]:" + e.getMessage(), e);
}
return qrcodeIncome;
}
}
......@@ -14,9 +14,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@Component("settlementConsr")
public class SettlementConsr {
......@@ -55,4 +54,16 @@ public class SettlementConsr {
}
return map;
}
@ParamLog(value = "获取日期列表", isBefore = false, isAfterReturn = false)
public List<Date> getDateList(Integer dayNum,Date startDate, Date endDate) throws BizException {
List<Date> dateList = new ArrayList<>();
try {
ResponseEntity<ResponseDto<List<Date>>> responseEntityP = settlementService.getDateList(dayNum,startDate,endDate);
dateList = ResponseHandleUtil.parseList(responseEntityP, Date.class);
} catch (Exception e) {
LOGGER.error("获取日期列表.[getDateList]:" + e.getMessage(), e);
}
return dateList;
}
}
......@@ -7,6 +7,7 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.facade.tradecenter.dto.*;
import com.pcloud.facade.tradecenter.service.OrderFormService;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -14,10 +15,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @Author:lili
......@@ -126,4 +124,34 @@ public class TradeConsr {
return amount;
}
@ParamLog("获取社群码下的应用作品购买量")
public List<ClassifyPayDetailDto> getGroupBuyCount(Long bookGroupId, Long classifyId, Long qrcodeId, Date startDate, Date endDate) throws BizException{
List<ClassifyPayDetailDto> classifyPayDetailDtos = new ArrayList<>();
try {
ResponseEntity<ResponseDto<List<ClassifyPayDetailDto>>> responseEntity = orderFormService.getSaleVolume(startDate,endDate,bookGroupId,classifyId,qrcodeId);
classifyPayDetailDtos = ResponseHandleUtil.parseListResponse(responseEntity, ClassifyPayDetailDto.class);
} catch (Exception e) {
LOGGER.error("获取社群码下的应用作品购买量:" + e.getMessage(), e);
}
if (ListUtils.isEmpty(classifyPayDetailDtos)) {
classifyPayDetailDtos = new ArrayList<>();
}
return classifyPayDetailDtos;
}
@ParamLog("查询社区码下购买应用详情")
public Map<Long, GroupMoneyDto> getSaleDetail4Group(GroupIncomeSearchDto groupIncomeSearchDto) throws BizException {
Map<Long, GroupMoneyDto> groupMoneyDtoMap = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long, GroupMoneyDto>>> responseEntity = orderFormService.getSaleDetail4Group(groupIncomeSearchDto);
groupMoneyDtoMap = ResponseHandleUtil.parseMap(responseEntity, Long.class, GroupMoneyDto.class);
} catch (Exception e) {
LOGGER.error("查询社区码下购买应用详情:" + e.getMessage(), e);
}
if (MapUtils.isEmpty(groupMoneyDtoMap)) {
groupMoneyDtoMap = new HashMap<>();
}
return groupMoneyDtoMap;
}
}
......@@ -134,6 +134,19 @@ public class WechatGroupConsr {
return null;
}
@ParamLog(value = "群分类累计进群人数与今日进群人数", isBefore = false, isAfterReturn = false)
public Map<Long, Long> getclassifyMemberCount(List<Long> classifyIds) throws BizException {
if (ListUtils.isEmpty(classifyIds)) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(groupMemberService.mapGroupClassifyStatisInfo(classifyIds), Long.class, Long.class);
} catch (Exception e) {
log.error("群分类累计进群人数与今日进群人数.[getclassifyMemberCount]:" + e.getMessage(), e);
}
return null;
}
@ParamLog(value = "活跃人数与总发言数", isBefore = false, isAfterReturn = false)
public Map<Long, GroupChatCountDTO> getChatCountByGroup(List<Long> groupQrcodeIds, Long bookGroupId) throws BizException {
if (ListUtils.isEmpty(groupQrcodeIds)) {
......
package com.pcloud.book.group.biz;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyKeywordDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
......@@ -245,4 +246,44 @@ public interface BookGroupBiz {
* 获取是否显示书名
*/
Boolean getIsShowBookName(Long partyId);
/**
* 获取社群码相关数据
*/
BookGroupStatisticsDTO getBookGroupStatisByBookGroupId(Long bookGroupId);
/**
* 收益统计
*/
PageBeanNew<ResourcesStatisticVO> getGroupIncomeStatic(GroupIncomeStaticParamVO groupIncomeStaticParamVO, Long adviserId);
/**
* 社群码浏览趋势图
*/
List<GroupScanTrendVO> getGroupScanTrend(GroupScanTrendParamVO groupScanTrendParamVO, Long adviserId);
/**
* 社群码分类统计
*/
List<GroupStatisticVO> getClassifyStatistic(Long bookGroupId, Long adviserId);
/**
* 社群码分类的微信群统计
*/
List<WxGroupStatisticVO> getQrcodeStatistic(Long bookGroupId, Long classifyId, Long adviserId);
/**
* 资源数据统计
*/
TotalRescourceDataVO getTotalRescourceData(Long bookGroupId,Long adviserId, Long classifyId, Long qrcodeId, String type);
/**
* 资源数据导出
*/
void exportRescourceData(Long bookGroupId,Long adviserId, Long classifyId, Long qrcodeId, String type);
}
......@@ -169,6 +169,9 @@ public interface BookGroupClassifyBiz {
PageBeanNew<ClassifyDTO> listSimpleBookGroupClassify4Adviser(Long adviserId, BookGroupClassify bookGroupClassify, PageParam pageParam);
PageBeanNew<AdviserClassifyVO> listAdviserClassify(Long adviserId, AdviserClassifyParam adviserClassifyParam);
Map<Long,BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds);
/**
* 更新是否开启微学习报告
*/
......@@ -178,5 +181,4 @@ public interface BookGroupClassifyBiz {
* 获取群分类学习报告相关列表
*/
PageBeanNew<ClassifyLearningReportDto> listClassifyForLearningReport(Integer currentPage, Integer numPerPage, String keyword, Long partyId);
}
......@@ -64,6 +64,13 @@ public interface GroupQrcodeBiz {
PageBeanNew<ClassifyQrcodeVO> listQrcodeByClassify(ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO);
/**
* @description 获取社群码类别下的群---不分页
* @author 戴兴
* @date 2019/7/28 15:59
*/
List<ClassifyQrcodeVO> getQrcodeByClassify(Long bookGroupId, Long classifyId);
/**
* @Author:lili
* @Desr:修改微信群名称
* @Date:2019/4/1 11:22
......
......@@ -14,22 +14,21 @@ import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
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.SettlementConsr;
import com.pcloud.book.consumer.trade.TradeConsr;
import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.dao.AppClickRecordDao;
import com.pcloud.book.group.dao.AppTouchRecordDao;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.ClassifyKeywordDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.keywords.dao.BookKeywordDao;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.keywords.vo.ListKeywordVO;
......@@ -54,9 +53,7 @@ import com.pcloud.common.utils.QrcodeUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.common.utils.zip.CompressUtils;
import com.pcloud.facade.tradecenter.dto.GroupMoneyDto;
import com.pcloud.facade.tradecenter.dto.SpeWechatGroupDto;
import com.pcloud.facade.tradecenter.dto.WechatGroupDto;
import com.pcloud.facade.tradecenter.dto.*;
import com.pcloud.labelcenter.label.service.LabelService;
import com.pcloud.liveapp.live.dto.ProductIdSearchDto;
import com.pcloud.liveapp.live.service.TimeTableService;
......@@ -67,8 +64,10 @@ import com.pcloud.resourcecenter.product.dto.SpecificationDto;
import com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO;
import com.pcloud.resourcecenter.product.entity.Product;
import com.pcloud.resourcecenter.product.service.ProductService;
import com.pcloud.settlementcenter.record.dto.GroupRescourceIncomeParamDTO;
import com.pcloud.settlementcenter.record.service.SettlementService;
import com.pcloud.videolesson.schedule.service.ScheduleService;
import com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO;
import com.pcloud.wechatgroup.group.service.GroupMemberService;
import org.apache.commons.collections.MapUtils;
......@@ -154,6 +153,12 @@ public class BookGroupBizImpl implements BookGroupBiz {
private TimeTableService timeTableService;
@Autowired
private AppPriceCacheService appPriceCacheService;
@Autowired
private BookConsr bookConsr;
@Autowired
private GroupQrcodeBiz groupQrcodeBiz;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Override
......@@ -1058,4 +1063,256 @@ public class BookGroupBizImpl implements BookGroupBiz {
return bookGroupDao.getIsShowBookName(partyId);
}
@Override
public BookGroupStatisticsDTO getBookGroupStatisByBookGroupId(Long bookGroupId) {
Map<Long, BookGroupStatisticDTO> bookGroupStatisticMap = bookGroupClassifyBiz.getBookGroupStatistic(Arrays.asList(bookGroupId));
BookGroupStatisticsDTO bookGroupStatisticsDTO = new BookGroupStatisticsDTO();
Long appCount = appTouchRecordDao.getCountByBokkGroupId(bookGroupId, "APP");
Long productCount = appTouchRecordDao.getCountByBokkGroupId(bookGroupId, "PRODUCT");
if (MapUtils.isEmpty(bookGroupStatisticMap)){
bookGroupStatisticsDTO.setClassifyCount(0L);
bookGroupStatisticsDTO.setGroupPersonNum(0L);
bookGroupStatisticsDTO.setWxGroupCount(0L);
bookGroupStatisticsDTO.setPromAppCount(appCount);
bookGroupStatisticsDTO.setPromProductCount(productCount);
return bookGroupStatisticsDTO;
}
bookGroupStatisticsDTO.setClassifyCount(bookGroupStatisticMap.get(bookGroupId).getClassifyCount().longValue());
bookGroupStatisticsDTO.setGroupPersonNum(bookGroupStatisticMap.get(bookGroupId).getUserNumber().longValue());
bookGroupStatisticsDTO.setWxGroupCount(bookGroupStatisticMap.get(bookGroupId).getGroupNumber().longValue());
bookGroupStatisticsDTO.setPromAppCount(appCount);
bookGroupStatisticsDTO.setPromProductCount(productCount);
return bookGroupStatisticsDTO;
}
@Override
public PageBeanNew<ResourcesStatisticVO> getGroupIncomeStatic(GroupIncomeStaticParamVO groupIncomeStaticParamVO, Long adviserId) {
Long bookGroupId = groupIncomeStaticParamVO.getBookGroupId();
Integer currentPage = groupIncomeStaticParamVO.getCurrentPage();
Integer numPerPage = groupIncomeStaticParamVO.getNumPerPage();
String type = groupIncomeStaticParamVO.getType();
Long classifyId = groupIncomeStaticParamVO.getClassifyId();
Long wxGroupId = groupIncomeStaticParamVO.getWxGroupId();
if (currentPage==null||currentPage<0||numPerPage==null||numPerPage<=0){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"分页参数错误!");
}
if (bookGroupId==null){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"社群码id不能为空!");
}
if (type==null){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"类型不能为空");
}
PageParam pageParam = new PageParam(currentPage, numPerPage);
Map<String, Object> map = new HashMap<>();
map.put("bookGroupId", bookGroupId);
map.put("type", type);
if (null != classifyId){
map.put("classifyId", classifyId);
}
if (null != wxGroupId){
map.put("qrcodeId", wxGroupId);
}
PageBeanNew<ResourcesStatisticVO> pageBeanNew = appClickRecordDao.listPageNew(pageParam, map, "getClickStatistics");
List<ResourcesStatisticVO> recordList = pageBeanNew.getRecordList();
if (ListUtils.isEmpty(recordList)){
return pageBeanNew;
}
//填充数据
setInfo(recordList,bookGroupId,classifyId,wxGroupId,type);
return pageBeanNew;
}
void setInfo(List<ResourcesStatisticVO> recordList,Long bookGroupId,Long classifyId, Long qrcodeId, String type){
List<Long> rescourceIds = recordList.stream().map(ResourcesStatisticVO::getRescourceId).collect(Collectors.toList());
// map.put("rescourceIds",rescourceIds);
GroupRescourceIncomeParamDTO groupRescourceIncomeParamDTO = new GroupRescourceIncomeParamDTO();
groupRescourceIncomeParamDTO.setBookGroupId(bookGroupId);
groupRescourceIncomeParamDTO.setClassifyId(classifyId);
groupRescourceIncomeParamDTO.setQrcodeId(qrcodeId);
groupRescourceIncomeParamDTO.setType(type);
groupRescourceIncomeParamDTO.setRescourceIds(rescourceIds);
Map<Long, BigDecimal> rescourceIncome = bookConsr.getRescourceIncome(groupRescourceIncomeParamDTO);
GroupIncomeSearchDto groupIncomeSearchDto = new GroupIncomeSearchDto();
groupIncomeSearchDto.setBookGroupId(bookGroupId);
groupIncomeSearchDto.setClassifyId(classifyId);
groupIncomeSearchDto.setIds(rescourceIds);
groupIncomeSearchDto.setQrcodeId(qrcodeId);
groupIncomeSearchDto.setTypeCode(type);
Map<Long, GroupMoneyDto> saleDetail4Group = tradeConsr.getSaleDetail4Group(groupIncomeSearchDto);
Map<Long, AppDto> appDtoMap;
Map<Long, ProductDto> productDtoMap;
if ("APP".equals(type)){
appDtoMap = appConsr.mapByIds(rescourceIds);
recordList.forEach(e ->{
if (!MapUtils.isEmpty(appDtoMap) && null != appDtoMap.get(e.getRescourceId())){
e.setRescourceName(appDtoMap.get(e.getRescourceId()).getTitle());
}
if (!MapUtils.isEmpty(saleDetail4Group) && null != saleDetail4Group.get(e.getRescourceId())){
e.setSaleCount(saleDetail4Group.get(e.getRescourceId()).getSaleCount());
e.setTotalSale(new BigDecimal(saleDetail4Group.get(e.getRescourceId()).getSaleMoney()));
}else {
e.setSaleCount(0L);
e.setTotalSale(BigDecimal.ZERO);
}
e.setType("APP");
e.setTotalIncome(rescourceIncome.get(e.getRescourceId()));
});
}else {
productDtoMap = productConsr.getProBasesByIds(rescourceIds);
recordList.forEach(e ->{
if (!MapUtils.isEmpty(productDtoMap) && null != productDtoMap.get(e.getRescourceId())){
e.setRescourceName(productDtoMap.get(e.getRescourceId()).getProductName());
}
e.setType("PRODUCT");
e.setTotalIncome(rescourceIncome.get(e.getRescourceId()));
if (!MapUtils.isEmpty(saleDetail4Group) && null != saleDetail4Group.get(e.getRescourceId())){
e.setSaleCount(saleDetail4Group.get(e.getRescourceId()).getSaleCount());
e.setTotalSale(new BigDecimal(saleDetail4Group.get(e.getRescourceId()).getSaleMoney()));
}else {
e.setSaleCount(0L);
e.setTotalSale(BigDecimal.ZERO);
}
});
}
}
@Override
public List<GroupScanTrendVO> getGroupScanTrend(GroupScanTrendParamVO groupScanTrendParamVO, Long adviserId) {
Integer dayNum = groupScanTrendParamVO.getDayNum();
if (dayNum == null) {
groupScanTrendParamVO.setDayNum(30);
dayNum = 30;
}
Date startDate = groupScanTrendParamVO.getStartDate();
Date endDate = groupScanTrendParamVO.getEndDate();
Long bookGroupId = groupScanTrendParamVO.getBookGroupId();
Long classifyId = groupScanTrendParamVO.getClassifyId();
Long wxGroupId = groupScanTrendParamVO.getWxGroupId();
List<Date> dateList = settlementConsr.getDateList(dayNum, startDate, endDate);
List<GroupScanTrendVO> groupScanTrendVOS = appClickRecordDao.getClickTrend(groupScanTrendParamVO);
List<Date> collect = groupScanTrendVOS.stream().map(GroupScanTrendVO::getDate).collect(Collectors.toList());
List<ClassifyPayDetailDto> groupBuyCount = tradeConsr.getGroupBuyCount(bookGroupId, classifyId, wxGroupId, startDate, endDate);
List<String> tradeDate = groupBuyCount.stream().map(ClassifyPayDetailDto::getDivideDate).collect(Collectors.toList());
if (dateList.size() > groupScanTrendVOS.size()) {
dateList.forEach(e -> {
if (!collect.contains(e)) {
GroupScanTrendVO groupScanTrendVO = new GroupScanTrendVO();
groupScanTrendVO.setDate(e);
groupScanTrendVO.setScanCount(0L);
groupScanTrendVOS.add(groupScanTrendVO);
}
});
}
if (ListUtils.isEmpty(groupBuyCount)){
groupScanTrendVOS.forEach( e -> e.setBuyCount(0L));
}else {
groupScanTrendVOS.forEach(e -> {
for (ClassifyPayDetailDto classifyPayDetailDto : groupBuyCount) {
if (DateUtils.formatDate(e.getDate()).equals(classifyPayDetailDto.getDivideDate())) {
e.setBuyCount(classifyPayDetailDto.getBuyCount());
} else {
e.setBuyCount(0L);
}
}
});
}
return groupScanTrendVOS;
}
@Override
public List<GroupStatisticVO> getClassifyStatistic(Long bookGroupId, Long adviserId) {
List<ListClassifyVO> listClassifyVOS = bookGroupClassifyBiz.listAllClassify(bookGroupId);
if (ListUtils.isEmpty(listClassifyVOS)){
return new ArrayList<>();
}
List<Long> classifyIds = listClassifyVOS.stream().map(ListClassifyVO::getId).collect(Collectors.toList());
Map<Long, BigDecimal> classifyIncome = bookConsr.getClassifyIncome(classifyIds);
List<GroupStatisticVO> groupStatisticVOS = new ArrayList<>();
Map<Long, Long> mapMemberCount = wechatGroupConsr.getclassifyMemberCount(classifyIds);
listClassifyVOS.forEach(e ->{
GroupStatisticVO groupStatisticVO = new GroupStatisticVO();
groupStatisticVO.setClassifyId(e.getId());
groupStatisticVO.setClassifyName(e.getClassify());
groupStatisticVO.setCreatedTime(e.getCreatedTime());
if (BigDecimal.ZERO.compareTo(e.getPrice()) ==0){
groupStatisticVO.setIsFree(1);
}else {
groupStatisticVO.setIsFree(0);
}
groupStatisticVO.setGroupPersonCount(e.getUserNumberTotal().longValue());
if (!MapUtils.isEmpty(classifyIncome)){
groupStatisticVO.setIncome(classifyIncome.get(e.getId()));
}else {
groupStatisticVO.setIncome(BigDecimal.ZERO);
}
if (!MapUtils.isEmpty(mapMemberCount)){
groupStatisticVO.setInGroupPersonCount(mapMemberCount.get(e.getId()));
}else {
groupStatisticVO.setInGroupPersonCount(0L);
}
groupStatisticVOS.add(groupStatisticVO);
});
return groupStatisticVOS;
}
@Override
public List<WxGroupStatisticVO> getQrcodeStatistic(Long bookGroupId, Long classifyId, Long adviserId) {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeBiz.getQrcodeByClassify(bookGroupId, classifyId);
if (ListUtils.isEmpty(qrcodeByClassify)){
return new ArrayList<>();
}
List<Long> qrcodeIds = qrcodeByClassify.stream().map(ClassifyQrcodeVO::getId).collect(Collectors.toList());
List<String> wxGroupIds = qrcodeByClassify.stream().map(ClassifyQrcodeVO::getWeixinGroupId).collect(Collectors.toList());
Map<Long, BigDecimal> qrcodeIncome = bookConsr.getQrcodeIncome(qrcodeIds);
Map<String, GroupMemberStatisDTO> groupMemberStatisDTOMap = wechatGroupConsr.listGroupMemberStatisInfo(wxGroupIds);
List<WxGroupStatisticVO> wxGroupStatisticVOS = new ArrayList<>();
qrcodeByClassify.forEach(e ->{
WxGroupStatisticVO wxGroupStatisticVO = new WxGroupStatisticVO();
wxGroupStatisticVO.setCreatedTime(e.getCreatedTime());
wxGroupStatisticVO.setGroupPersonCount(e.getUserNumber().longValue());
if (MapUtils.isEmpty(qrcodeIncome)){
wxGroupStatisticVO.setIncome(BigDecimal.ZERO);
}else {
wxGroupStatisticVO.setIncome(qrcodeIncome.get(e.getId()));
}
if (MapUtils.isEmpty(groupMemberStatisDTOMap)){
wxGroupStatisticVO.setInGroupPersonCount(0L);
}else {
wxGroupStatisticVO.setInGroupPersonCount(groupMemberStatisDTOMap.get(e.getWeixinGroupId()).getJoinCount().longValue());
}
wxGroupStatisticVO.setQrcodeId(e.getId());
wxGroupStatisticVO.setWxGroupName(e.getGroupName());
wxGroupStatisticVOS.add(wxGroupStatisticVO);
});
return wxGroupStatisticVOS;
}
@Override
public TotalRescourceDataVO getTotalRescourceData(Long bookGroupId, Long adviserId, Long classifyId, Long qrcodeId, String type) {
TotalRescourceDataVO totalRescourceDataVO = new TotalRescourceDataVO();
List<Long> rescourceIds = appClickRecordDao.getRescourceIds(bookGroupId, classifyId, qrcodeId, type);
Long rescourceTotalClick = appClickRecordDao.getRescourceTotalClick(bookGroupId, classifyId, qrcodeId, type);
totalRescourceDataVO.setClickCount(rescourceTotalClick);
GroupRescourceIncomeParamDTO groupRescourceIncomeParamDTO = new GroupRescourceIncomeParamDTO();
groupRescourceIncomeParamDTO.setBookGroupId(bookGroupId);
groupRescourceIncomeParamDTO.setClassifyId(classifyId);
groupRescourceIncomeParamDTO.setQrcodeId(qrcodeId);
groupRescourceIncomeParamDTO.setType(type);
groupRescourceIncomeParamDTO.setRescourceIds(rescourceIds);
BigDecimal rescourceTotalIncome = bookConsr.getRescourceTotalIncome(groupRescourceIncomeParamDTO);
totalRescourceDataVO.setTotalIncome(rescourceTotalIncome == null?BigDecimal.ZERO:rescourceTotalIncome);
return totalRescourceDataVO;
}
@Override
public void exportRescourceData(Long bookGroupId, Long adviserId, Long classifyId, Long qrcodeId, String type) {
List<ResourcesStatisticVO> clickStatistics = appClickRecordDao.getClickStatistics(bookGroupId, classifyId, qrcodeId, type);
setInfo(clickStatistics,bookGroupId,classifyId,qrcodeId,type);
}
}
......@@ -882,6 +882,15 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
return pageBeanNew;
}
@Override
public Map<Long, BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds) {
if (!ListUtils.isEmpty(bookIds)){
return bookGroupClassifyDao.getGroupClassifyCount(bookIds);
}else {
return new HashMap<>();
}
}
@Transactional(rollbackFor = Exception.class)
@ParamLog("更新是否开启微学习报告")
@Override
......
......@@ -168,6 +168,15 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
return pageBeanNew;
}
@Override
public List<ClassifyQrcodeVO> getQrcodeByClassify(Long bookGroupId, Long classifyId) {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeDao.getQrcodeByClassify(bookGroupId, classifyId);
if (ListUtils.isEmpty(qrcodeByClassify)){
return new ArrayList<>();
}
return qrcodeByClassify;
}
@ParamLog(value = "设置关键词次数", isBefore = false)
private void setKeywordCount(List<ClassifyQrcodeVO> classifyQrcodeVOS) {
if (ListUtils.isEmpty(classifyQrcodeVOS)) {
......
......@@ -3,9 +3,14 @@ package com.pcloud.book.group.dao;
import com.pcloud.book.group.dto.AppClickDTO;
import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.entity.AppClickRecord;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
import com.pcloud.book.group.vo.ResourceClickVO;
import com.pcloud.book.group.vo.ResourcesStatisticVO;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
public interface AppClickRecordDao extends BaseDao<AppClickRecord> {
/**
......@@ -17,4 +22,29 @@ public interface AppClickRecordDao extends BaseDao<AppClickRecord> {
* 获取最近点击
*/
List<AppClickDTO> getRecentlyClick(Long wechatUserId, Long qrcodeId, Integer top);
/**
* 获取资源点击趋势
*/
List<GroupScanTrendVO> getClickTrend(GroupScanTrendParamVO groupScanTrendParamVO);
/**
* 获取资源点击次数
*/
Map<Long, ResourceClickVO> getResourceClick(Map<String,Object> map);
/**
* 获取资源点击总数
*/
Long getRescourceTotalClick(Long bookGroupId,Long classifyId,Long qrcodeId,String type);
/**
* 获取资源id
*/
List<Long> getRescourceIds(Long bookGroupId,Long classifyId,Long qrcodeId,String type);
/**
* 获取资源点击数
*/
List<ResourcesStatisticVO> getClickStatistics(Long bookGroupId,Long classifyId,Long qrcodeId,String type);
}
......@@ -4,4 +4,6 @@ import com.pcloud.book.group.entity.AppTouchRecord;
import com.pcloud.common.core.dao.BaseDao;
public interface AppTouchRecordDao extends BaseDao<AppTouchRecord> {
Long getCountByBokkGroupId(Long bookGroupId, String type);
}
......@@ -229,6 +229,8 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
*/
List<ClassifyKeywordDTO> getClassifyStatistics(Long bookId);
Map<Long,BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds);
GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName);
/**
......
......@@ -3,6 +3,7 @@ package com.pcloud.book.group.dao;
import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO;
import com.pcloud.common.core.dao.BaseDao;
......@@ -196,4 +197,9 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
* 根据分类id集合查询
*/
List<GroupQrcodeFoAdDTO> GroupQrcodeFoAdDTOSByClassifyIds(List<Long> classifyIds);
/**
* 根据分类id获取分类下的群---不分页
*/
List<ClassifyQrcodeVO> getQrcodeByClassify(Long bookGroupId, Long classifyId);
}
......@@ -4,6 +4,10 @@ import com.pcloud.book.group.dao.AppClickRecordDao;
import com.pcloud.book.group.dto.AppClickDTO;
import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.entity.AppClickRecord;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
import com.pcloud.book.group.vo.ResourceClickVO;
import com.pcloud.book.group.vo.ResourcesStatisticVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
......@@ -35,4 +39,44 @@ public class AppClickRecordDaoImpl extends BaseDaoImpl<AppClickRecord> implement
map.put("top", top);
return this.getSqlSession().selectList(this.getStatement("getRecentlyClick"), map);
}
@Override
public List<GroupScanTrendVO> getClickTrend(GroupScanTrendParamVO groupScanTrendParamVO) {
return this.getSqlSession().selectList(this.getStatement("getClickTrend"), groupScanTrendParamVO);
}
@Override
public Map<Long, ResourceClickVO> getResourceClick(Map<String, Object> map) {
return this.getSqlSession().selectMap(this.getStatement("getResourceClick"), map,"resourceId");
}
@Override
public Long getRescourceTotalClick(Long bookGroupId, Long classifyId, Long qrcodeId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("qrcodeId", qrcodeId);
map.put("bookGroupId", bookGroupId);
map.put("classifyId", classifyId);
map.put("type", type);
return this.getSqlSession().selectOne(this.getStatement("getRescourceTotalClick"), map);
}
@Override
public List<Long> getRescourceIds(Long bookGroupId, Long classifyId, Long qrcodeId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("qrcodeId", qrcodeId);
map.put("bookGroupId", bookGroupId);
map.put("classifyId", classifyId);
map.put("type", type);
return this.getSqlSession().selectList(this.getStatement("getRescourceIds"), map);
}
@Override
public List<ResourcesStatisticVO> getClickStatistics(Long bookGroupId, Long classifyId, Long qrcodeId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("qrcodeId", qrcodeId);
map.put("bookGroupId", bookGroupId);
map.put("classifyId", classifyId);
map.put("type", type);
return this.getSqlSession().selectList(this.getStatement("getClickStatistics"), map);
}
}
......@@ -5,6 +5,9 @@ import com.pcloud.book.group.entity.AppTouchRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* @Description
* @Author ruansiyuan
......@@ -12,4 +15,13 @@ import org.springframework.stereotype.Component;
**/
@Component("appTouchRecordDao")
public class AppTouchRecordDaoImpl extends BaseDaoImpl<AppTouchRecord> implements AppTouchRecordDao {
@Override
public Long getCountByBokkGroupId(Long bookGroupId, String type) {
Map<String, Object> map = new HashMap<>();
map.put("bookGroupId",bookGroupId);
map.put("type",type);
return this.getSqlSession().selectOne(this.getStatement("getCountByBokkGroupId"), map);
}
}
......@@ -194,6 +194,11 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
}
@Override
public Map<Long, BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds) {
return this.getSessionTemplate().selectMap(getStatement("getGroupClassifyCount"), bookIds,"bookId");
}
@Override
public GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName) {
return this.getSessionTemplate().selectOne(getStatement("getClassifyQrcodeInfoByName"), weixinGroupName);
}
......
......@@ -6,6 +6,7 @@ import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
......@@ -188,4 +189,13 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
public List<GroupQrcodeFoAdDTO> GroupQrcodeFoAdDTOSByClassifyIds(List<Long> classifyIds) {
return this.getSqlSession().selectList(this.getStatement("GroupQrcodeFoAdDTOSByClassifyIds"), classifyIds);
}
@Override
public List<ClassifyQrcodeVO> getQrcodeByClassify(Long bookGroupId, Long classifyId) {
Map<String, Object> map = new HashMap<>();
map.put("bookGroupId", bookGroupId);
map.put("classifyId", classifyId);
map.put("changeNumber", 0);
return this.getSqlSession().selectList(this.getStatement("listQrcodeByClassify"), map);
}
}
......@@ -172,4 +172,6 @@ public interface BookGroupClassifyFacade {
@RequestParam(value = "keyword", required = false) @ApiParam("关键词") String keyword
) throws BizException, PermissionException;
}
package com.pcloud.book.group.facade;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.vo.*;
import com.pcloud.common.page.PageBeanNew;
import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -21,6 +23,8 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* Description 社群书群二维码接口
* Created by PENG on 2019/4/17.
......@@ -251,4 +255,69 @@ public interface BookGroupFacade {
@RequestHeader("token") String token
) throws BizException, PermissionException, JsonParseException;
@ApiOperation("获取社群书数据")
@RequestMapping(value = "getBookGroupStatisByBookGroupId",method = RequestMethod.GET)
ResponseDto<?> getBookGroupStatisByBookGroupId(@RequestParam("bookGroupId")Long bookGroupId) throws BizException;
@ApiOperation(value = "收益统计--pc", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "groupIncomeStaticParamVO", value = "GroupIncomeStaticParamVO", required = true, dataType = "GroupIncomeStaticParamVO", paramType = "body")
})
@RequestMapping(value ="getGroupIncomeStatic",method = RequestMethod.POST)
public ResponseDto<PageBeanNew<ResourcesStatisticVO>> getGroupIncomeStatic(@RequestHeader("token") String token,
@RequestBody GroupIncomeStaticParamVO groupIncomeStaticParamVO) throws BizException, PermissionException;
@ApiOperation(value = "社群码浏览趋势图--pc", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "groupScanTrendParamVO", value = "GroupScanTrendParamVO", required = true, dataType = "GroupScanTrendParamVO", paramType = "body")
})
@RequestMapping(value ="getGroupScanTrend",method = RequestMethod.POST)
public ResponseDto<List<GroupScanTrendVO>> getGroupScanTrend(@RequestHeader("token") String token,
@RequestBody GroupScanTrendParamVO groupScanTrendParamVO) throws BizException, PermissionException;
@ApiOperation(value = "社群码分类统计--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query")
})
@RequestMapping(value ="getClassifyStatistic",method = RequestMethod.GET)
public ResponseDto<List<GroupStatisticVO>> getClassifyStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId) throws BizException, PermissionException;
@ApiOperation(value = "社群码分类下的微信群统计--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "classifyId", value = "classifyId", required = true, dataType = "Long", paramType = "query")
})
@RequestMapping(value ="getQrcodeStatistic",method = RequestMethod.GET)
public ResponseDto<List<WxGroupStatisticVO>> getQrcodeStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws BizException, PermissionException;
@ApiOperation(value = "资源数据统计--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "classifyId",value = "classifyId",required = false,dataType = "Long",paramType = "query"),
@ApiImplicitParam(name = "qrcodeId",value = "qrcodeId",required = false,dataType = "Long",paramType = "query"),
@ApiImplicitParam(name = "type",value = "type",required = true,dataType = "String",paramType = "query")
})
@RequestMapping(value ="getTotalRescourceData",method = RequestMethod.GET)
public ResponseDto<?> getTotalRescourceData(@RequestHeader("token") String token, @RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "classifyId",required = false) Long classifyId, @RequestParam(value = "qrcodeId",required = false) Long qrcodeId,
@RequestParam("type") String type) throws BizException, PermissionException;
@ApiOperation(value = "社群码资源收益数据导出--pc", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "classifyId",value = "classifyId",required = false,dataType = "Long",paramType = "query"),
@ApiImplicitParam(name = "qrcodeId",value = "qrcodeId",required = false,dataType = "Long",paramType = "query"),
@ApiImplicitParam(name = "type",value = "type",required = true,dataType = "String",paramType = "query")
})
@RequestMapping(value ="exportRescourceData",method = RequestMethod.GET)
public ResponseDto<?> exportRescourceData(@RequestHeader("token") String token, @RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "classifyId",required = false) Long classifyId, @RequestParam(value = "qrcodeId",required = false) Long qrcodeId,
@RequestParam("type") String type) throws BizException, PermissionException;
}
......@@ -35,6 +35,15 @@ public interface GroupQrcodeFacade {
@RequestMapping(value = "listQrcodeByClassify", method = RequestMethod.POST)
ResponseDto<PageBeanNew> listQrcodeByClassify(@RequestHeader("token") String token, @RequestBody ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO) throws PermissionException;
@ApiOperation(value = "根据分类获取分类下二维码----不分页", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "classifyId", value = "classifyId", dataType = "Long", paramType = "query")
})
@RequestMapping(value = "getQrcodeByClassify", method = RequestMethod.GET)
ResponseDto<?> getQrcodeByClassify(@RequestHeader("token") String token, @RequestParam("bookGroupId") Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws PermissionException;
@ApiOperation(value = "修改微信群名称", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", dataType = "String", paramType = "header"),
......
......@@ -6,15 +6,15 @@ import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.facade.BookGroupFacade;
import com.pcloud.book.group.vo.UpdateRankTypeVO;
import com.pcloud.book.group.vo.*;
import com.pcloud.common.dto.ResponseDto;
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.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.string.StringUtil;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -27,6 +27,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.swagger.annotations.ApiOperation;
......@@ -371,4 +372,73 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
Long partyId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(bookGroupBiz.getIsShowBookName(partyId));
}
@Override
@RequestMapping(value = "getBookGroupStatisByBookGroupId",method = RequestMethod.GET)
public ResponseDto<?> getBookGroupStatisByBookGroupId(@RequestParam("bookGroupId")Long bookGroupId) throws BizException {
return new ResponseDto<>(bookGroupBiz.getBookGroupStatisByBookGroupId(bookGroupId));
}
@Override
@RequestMapping(value ="getGroupIncomeStatic",method = RequestMethod.POST)
public ResponseDto<PageBeanNew<ResourcesStatisticVO>> getGroupIncomeStatic(@RequestHeader("token") String token,
@RequestBody GroupIncomeStaticParamVO groupIncomeStaticParamVO) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
PageBeanNew<ResourcesStatisticVO> groupIncomeStatic = bookGroupBiz.getGroupIncomeStatic(groupIncomeStaticParamVO, adviserId);
return new ResponseDto<>(groupIncomeStatic);
}
@Override
@RequestMapping(value ="getGroupScanTrend",method = RequestMethod.POST)
public ResponseDto<List<GroupScanTrendVO>> getGroupScanTrend(@RequestHeader("token") String token,
@RequestBody GroupScanTrendParamVO groupScanTrendParamVO) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
List<GroupScanTrendVO> groupScanTrend = bookGroupBiz.getGroupScanTrend(groupScanTrendParamVO, adviserId);
return new ResponseDto<>(groupScanTrend);
}
@Override
@RequestMapping(value ="getClassifyStatistic",method = RequestMethod.GET)
public ResponseDto<List<GroupStatisticVO>> getClassifyStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
List<GroupStatisticVO> groupQrcodeStatistic = bookGroupBiz.getClassifyStatistic(bookGroupId, adviserId);
return new ResponseDto<>(groupQrcodeStatistic);
}
@Override
@RequestMapping(value ="getQrcodeStatistic",method = RequestMethod.GET)
public ResponseDto<List<WxGroupStatisticVO>> getQrcodeStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
List<WxGroupStatisticVO> qrcodeStatistic = bookGroupBiz.getQrcodeStatistic(bookGroupId, classifyId, adviserId);
return new ResponseDto<>(qrcodeStatistic);
}
@Override
@RequestMapping(value ="getTotalRescourceData",method = RequestMethod.GET)
public ResponseDto<?> getTotalRescourceData(@RequestHeader("token") String token, @RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "classifyId",required = false) Long classifyId, @RequestParam(value = "qrcodeId",required = false) Long qrcodeId,
@RequestParam("type") String type) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
TotalRescourceDataVO totalRescourceData = bookGroupBiz.getTotalRescourceData(bookGroupId, adviserId, classifyId, qrcodeId, type);
return new ResponseDto<>(totalRescourceData);
}
@Override
@RequestMapping(value ="exportRescourceData",method = RequestMethod.GET)
public ResponseDto<?> exportRescourceData(@RequestHeader("token") String token, @RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "classifyId",required = false) Long classifyId, @RequestParam(value = "qrcodeId",required = false) Long qrcodeId,
@RequestParam("type") String type) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
bookGroupBiz.exportRescourceData(bookGroupId, adviserId, classifyId, qrcodeId, type);
return new ResponseDto<>();
}
}
......@@ -36,6 +36,8 @@ import java.util.Optional;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @author lily
* @date 2019/4/19 15:36
......@@ -73,6 +75,14 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade {
}
@Override
@RequestMapping(value = "getQrcodeByClassify", method = RequestMethod.GET)
public ResponseDto<?> getQrcodeByClassify(@RequestHeader("token") String token, @RequestParam("bookGroupId") Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws PermissionException {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeBiz.getQrcodeByClassify(bookGroupId, classifyId);
return new ResponseDto<>(qrcodeByClassify);
}
@Override
@PostMapping("modifyWechatGroupName")
@ApiOperation("修改微信群名称")
public ResponseDto<?> modifyWechatGroupName(@RequestHeader("token") String token, @RequestBody WechatGroupNameVO wechatGroupNameVO)
......
......@@ -2,10 +2,7 @@ package com.pcloud.book.group.service.impl;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.service.BookGroupClassifyService;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.ResponseHandleUtil;
......@@ -88,4 +85,11 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService {
List<Long>qrcodeIds = groupQrcodeBiz.filterDeleteId(wxGroupIdList);
return ResponseHandleUtil.toResponse(qrcodeIds);
}
@Override
@PostMapping("getGroupClassifyCount")
public ResponseEntity<ResponseDto<Map<Long, BookClassifyDTO>>> getGroupClassifyCount(@RequestBody List<Long> bookIds) {
Map<Long, BookClassifyDTO> groupClassifyCount = bookGroupClassifyBiz.getGroupClassifyCount(bookIds);
return ResponseHandleUtil.toResponse(groupClassifyCount);
}
}
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
......@@ -44,6 +46,13 @@ public class ClassifyQrcodeVO implements Serializable {
@ApiModelProperty("关键词识别次数")
private Integer keywordCount;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("关键词识别次数")
private Date createdTime;
public String getWeixinGroupId() {
return weixinGroupId;
}
......@@ -124,6 +133,18 @@ public class ClassifyQrcodeVO implements Serializable {
this.keywordCount = keywordCount;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "ClassifyQrcodeVO{" +
......@@ -136,7 +157,8 @@ public class ClassifyQrcodeVO implements Serializable {
", quitRate=" + quitRate +
", weixinQrcodeId=" + weixinQrcodeId +
", weixinGroupId='" + weixinGroupId + '\'' +
", keywordCount='" + keywordCount + '\'' +
", keywordCount=" + keywordCount +
", createdTime=" + createdTime +
'}';
}
}
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 19:35
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GroupIncomeStaticParamVO implements Serializable {
private Long bookGroupId;
private Integer currentPage;
private Integer numPerPage;
private String type;
private Long classifyId;
private Long wxGroupId;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(Integer numPerPage) {
this.numPerPage = numPerPage;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getWxGroupId() {
return wxGroupId;
}
public void setWxGroupId(Long wxGroupId) {
this.wxGroupId = wxGroupId;
}
@Override
public String toString() {
return "GroupIncomeStaticParamVO{" +
"bookGroupId=" + bookGroupId +
", currentPage=" + currentPage +
", numPerPage=" + numPerPage +
", type=" + type +
", classifyId=" + classifyId +
", wxGroupId=" + wxGroupId +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import java.util.Date;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 19:57
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GroupScanTrendParamVO implements Serializable {
private Long bookGroupId;
private Long classifyId;
private Long wxGroupId;
private Date startDate;
private Date endDate;
private Integer dayNum;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getWxGroupId() {
return wxGroupId;
}
public void setWxGroupId(Long wxGroupId) {
this.wxGroupId = wxGroupId;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Integer getDayNum() {
return dayNum;
}
public void setDayNum(Integer dayNum) {
this.dayNum = dayNum;
}
@Override
public String toString() {
return "GroupScanTrendParamVO{" +
"bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
", wxGroupId=" + wxGroupId +
", startDate=" + startDate +
", endDate=" + endDate +
", dayNum=" + dayNum +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import java.util.Date;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/26 9:05
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GroupScanTrendVO implements Serializable {
@JsonFormat(
pattern = "yyyy-MM-dd",
timezone = "GMT+8"
)
private Date date;
private Long buyCount;
private Long scanCount;
@JsonFormat(
pattern = "yyyy-MM-dd",
timezone = "GMT+8"
)
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Long getBuyCount() {
return buyCount;
}
public void setBuyCount(Long buyCount) {
this.buyCount = buyCount;
}
public Long getScanCount() {
return scanCount;
}
public void setScanCount(Long scanCount) {
this.scanCount = scanCount;
}
@Override
public String toString() {
return "GroupScanTrendVO{" +
"date=" + date +
", buyCount=" + buyCount +
", scanCount=" + scanCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/28 15:45
*/
public class GroupStatisticVO implements Serializable {
@ApiModelProperty("分类唯一标识")
private Long classifyId;
@ApiModelProperty("分类名称")
private String classifyName;
@ApiModelProperty("是否免费,1-免费 0-收费")
private Integer isFree;
@ApiModelProperty("点击人数")
private Long clickCount;
@ApiModelProperty("累计进群人数")
private Long inGroupPersonCount;
@ApiModelProperty("当前群人数")
private Long groupPersonCount;
@ApiModelProperty("收益")
private BigDecimal income;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createdTime;
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public String getClassifyName() {
return classifyName;
}
public void setClassifyName(String classifyName) {
this.classifyName = classifyName;
}
public Integer getIsFree() {
return isFree;
}
public void setIsFree(Integer isFree) {
this.isFree = isFree;
}
public Long getClickCount() {
return clickCount;
}
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
public Long getInGroupPersonCount() {
return inGroupPersonCount;
}
public void setInGroupPersonCount(Long inGroupPersonCount) {
this.inGroupPersonCount = inGroupPersonCount;
}
public Long getGroupPersonCount() {
return groupPersonCount;
}
public void setGroupPersonCount(Long groupPersonCount) {
this.groupPersonCount = groupPersonCount;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "GroupStatisticVO{" +
"classifyId=" + classifyId +
", classifyName=" + classifyName +
", isFree=" + isFree +
", clickCount=" + clickCount +
", inGroupPersonCount=" + inGroupPersonCount +
", groupPersonCount=" + groupPersonCount +
", income=" + income +
", createdTime=" + createdTime +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -42,6 +44,13 @@ public class ListClassifyVO implements Serializable {
@ApiModelProperty("排序")
private Integer rank;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
@ApiModelProperty("创建时间")
private Date createdTime;
public Integer getRank() {
return rank;
}
......@@ -114,9 +123,21 @@ public class ListClassifyVO implements Serializable {
this.qrcodeNumber = qrcodeNumber;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "ClassifyNameVO{" +
return "ListClassifyVO{" +
"id=" + id +
", classify='" + classify + '\'' +
", classifyIntroduce='" + classifyIntroduce + '\'' +
......@@ -125,6 +146,7 @@ public class ListClassifyVO implements Serializable {
", qrcodeNumber=" + qrcodeNumber +
", userNumberTotal=" + userNumberTotal +
", rank=" + rank +
", createdTime=" + createdTime +
'}';
}
}
package com.pcloud.book.group.vo;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/27 17:19
*/
public class ResourceClickVO implements Serializable {
private Long rescourceId;
private Long clickCount;
public Long getRescourceId() {
return rescourceId;
}
public void setRescourceId(Long rescourceId) {
this.rescourceId = rescourceId;
}
public Long getClickCount() {
return clickCount;
}
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
@Override
public String toString() {
return "ResourceClickVO{" +
"rescourceId=" + rescourceId +
", clickCount=" + clickCount +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/25 19:01
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResourcesStatisticVO implements Serializable {
private Long rescourceId;
private String rescourceName;
private String type;
private Long browseCount;
private Long saleCount;
private BigDecimal totalSale;
private BigDecimal totalIncome;
public Long getRescourceId() {
return rescourceId;
}
public void setRescourceId(Long rescourceId) {
this.rescourceId = rescourceId;
}
public String getRescourceName() {
return rescourceName;
}
public void setRescourceName(String rescourceName) {
this.rescourceName = rescourceName;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Long getBrowseCount() {
return browseCount;
}
public void setBrowseCount(Long browseCount) {
this.browseCount = browseCount;
}
public Long getSaleCount() {
return saleCount;
}
public void setSaleCount(Long saleCount) {
this.saleCount = saleCount;
}
public BigDecimal getTotalSale() {
return totalSale;
}
public void setTotalSale(BigDecimal totalSale) {
this.totalSale = totalSale;
}
public BigDecimal getTotalIncome() {
return totalIncome;
}
public void setTotalIncome(BigDecimal totalIncome) {
this.totalIncome = totalIncome;
}
@Override
public String toString() {
return "ResourcesStatisticVO{" +
"rescourceId='" + rescourceId + '\'' +
", rescourceName=" + rescourceName +
", type='" + type + '\'' +
", browseCount=" + browseCount +
", saleCount=" + saleCount +
", totalSale=" + totalSale +
", totalIncome=" + totalIncome +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/28 16:16
*/
public class TotalRescourceDataVO implements Serializable {
private Long clickCount;
private BigDecimal totalSale;
private BigDecimal totalIncome;
public Long getClickCount() {
return clickCount;
}
public void setClickCount(Long clickCount) {
this.clickCount = clickCount;
}
public BigDecimal getTotalSale() {
return totalSale;
}
public void setTotalSale(BigDecimal totalSale) {
this.totalSale = totalSale;
}
public BigDecimal getTotalIncome() {
return totalIncome;
}
public void setTotalIncome(BigDecimal totalIncome) {
this.totalIncome = totalIncome;
}
@Override
public String toString() {
return "TotalRescourceDataVO{" +
"clickCount=" + clickCount +
", totalSale=" + totalSale +
", totalIncome=" + totalIncome +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author 戴兴
* @description TODO
* @date 2019/7/28 15:47
*/
public class WxGroupStatisticVO implements Serializable {
private Long qrcodeId;
private String wxGroupName;
private Long inGroupPersonCount;
private Long groupPersonCount;
private BigDecimal income;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createdTime;
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
public String getWxGroupName() {
return wxGroupName;
}
public void setWxGroupName(String wxGroupName) {
this.wxGroupName = wxGroupName;
}
public Long getInGroupPersonCount() {
return inGroupPersonCount;
}
public void setInGroupPersonCount(Long inGroupPersonCount) {
this.inGroupPersonCount = inGroupPersonCount;
}
public Long getGroupPersonCount() {
return groupPersonCount;
}
public void setGroupPersonCount(Long groupPersonCount) {
this.groupPersonCount = groupPersonCount;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "WxGroupStatisticVO{" +
"qrcodeId=" + qrcodeId +
", wxGroupName='" + wxGroupName + '\'' +
", inGroupPersonCount=" + inGroupPersonCount +
", groupPersonCount=" + groupPersonCount +
", income=" + income +
", createdTime=" + createdTime +
'}';
}
}
\ No newline at end of file
......@@ -65,6 +65,18 @@
t.serve_id
</select>
<select id="getClickStatistics" parameterType="map" resultType="com.pcloud.book.group.vo.ResourcesStatisticVO">
select serve_id rescourceId, count(1) browseCount from app_click_record
where book_group_id = #{bookGroupId} and serve_type = #{type}
<if test="classifyId != null">
and classify_id = #{classifyId}
</if>
<if test="qrcodeId!=null">
AND qrcode_id = #{qrcodeId}
</if>
group by serve_id
</select>
<!--获取最近点击-->
<select id="getRecentlyClick" parameterType="map" resultType="com.pcloud.book.group.dto.AppClickDTO">
select
......@@ -81,4 +93,81 @@
order by create_time desc
limit #{top}
</select>
<select id="getClickTrend" parameterType="com.pcloud.book.group.vo.GroupScanTrendParamVO" resultType="com.pcloud.book.group.vo.GroupScanTrendVO">
select DATE_FORMAT(create_time, '%Y-%m-%d') date, count(1) scanCount from app_click_record
where book_group_id = #{bookGroupId}
<if test="classifyId != null">
and classify_id = #{classifyId}
</if>
<if test="wxGroupId != null">
and qrcode_id = #{wxGroupId}
</if>
and create_time &gt;=
<if test="startDate == null">
DATE_FORMAT(SUBDATE(NOW(), INTERVAL #{dayNum} DAY),'%Y-%m-%d')
AND create_time &lt; DATE_FORMAT(now(), '%Y-%m-%d')
</if>
<if test="startDate != null">
DATE_FORMAT(#{startDate},'%Y-%m-%d')
AND create_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
</if>
GROUP BY date
order by date
</select>
<select id="getResourceClick" parameterType="map" resultType="com.pcloud.book.group.vo.ResourceClickVO">
SELECT
t.serve_id rescourceId,
count(1) clickCount
FROM
app_click_record t
WHERE
t.serve_id IN
<foreach collection="rescourceIds" index="index" item="item" close=")" open="(" separator=",">
#{item}
</foreach>
<if test="bookGroupId!=null">
AND t.book_group_id = #{bookGroupId}
</if>
<if test="classifyId!=null">
AND t.qrcode_id = #{qrcodeId}
</if>
<if test="classifyId!=null">
AND t.qrcode_id = #{qrcodeId}
</if>
<if test="type!=null">
AND t.serve_type = #{type}
</if>
GROUP BY
t.serve_id
</select>
<select id="getRescourceTotalClick" parameterType="map" resultType="long">
select count(1) FROM app_click_record t
WHERE t.book_group_id = #{bookGroupId}
<if test="classifyId!=null">
AND t.qrcode_id = #{qrcodeId}
</if>
<if test="classifyId!=null">
AND t.qrcode_id = #{qrcodeId}
</if>
<if test="type!=null">
AND t.serve_type = #{type}
</if>
</select>
<select id="getRescourceIds" parameterType="map" resultType="long">
select t.serve_id FROM app_click_record t
WHERE t.book_group_id = #{bookGroupId}
<if test="classifyId!=null">
AND t.qrcode_id = #{qrcodeId}
</if>
<if test="classifyId!=null">
AND t.qrcode_id = #{qrcodeId}
</if>
<if test="type!=null">
AND t.serve_type = #{type}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -62,4 +62,8 @@
t.serve_id
order by t.create_time desc
</select>
<select id="getCountByBokkGroupId" parameterType="map" resultType="long">
select count(1) from app_touch_record where book_group_id =#{bookGroupId} and serve_type = #{type}
</select>
</mapper>
\ No newline at end of file
......@@ -191,7 +191,8 @@
classify_introduce classifyIntroduce,
price,
change_number changeNumber,
rank
rank,
create_time createdTime
from
book_group_classify
where
......@@ -207,7 +208,8 @@
change_number changeNumber,
rank,
count(1) qrcodeNumber,
SUM(user_number) userNumberTotal
SUM(user_number) userNumberTotal,
c.create_time createdTime
from
book_group_classify c join book_group_qrcode q on c.id = q.classify_id
where
......@@ -784,6 +786,16 @@
book_group_classify c join book_group_qrcode q on c.id = q.classify_id
and q.group_name = #{_parameter} limit 1
</select>
<select id="getGroupClassifyCount" parameterType="list" resultType="map">
select book_id bookId, count(1) classifyCount, book_group_id bookGroupId from book_group_classify
where is_delete = 0 and book_id in
<foreach collection="list" open="(" close=")" separator="," item="item">
#{item}
</foreach>
group by book_id
</select>
<!--更新是否开启学习报告-->
<update id="updateHasOpenLearningReport" parameterType="map">
update book_group_classify set
......
......@@ -87,7 +87,8 @@
<select id="listQrcodeByClassify" resultType="ClassifyQrcodeVO" parameterType="map">
SELECT
id, weixin_qrcode_id weixinQrcodeId, weixin_group_id weixinGroupId, group_name groupName, classify_id classifyId, qrcode_url qrcodeUrl, user_number userNumber, ${changeNumber} changeNumber
id, weixin_qrcode_id weixinQrcodeId, weixin_group_id weixinGroupId, group_name groupName, classify_id classifyId,
qrcode_url qrcodeUrl, user_number userNumber, ${changeNumber} changeNumber, create_time createdTime
FROM
book_group_qrcode
WHERE
......
......@@ -104,8 +104,8 @@
<spring-cloud.version>Dalston.SR1</spring-cloud.version>
<pcloud-common-web.version>2.1.0-RELEASE</pcloud-common-web.version>
<!-- book -->
<pcloud-facade-book.version>2.1.0-RELEASE</pcloud-facade-book.version>
<pcloud-service-book.version>2.1.0-RELEASE</pcloud-service-book.version>
<pcloud-facade-book.version>2.0.0-SNAPSHOT</pcloud-facade-book.version>
<pcloud-service-book.version>2.0.0-SNAPSHOT</pcloud-service-book.version>
<pcloud-facade-usercenter.version>2.1.0-RELEASE</pcloud-facade-usercenter.version>
<pcloud-facade-channelcenter.version>2.1.0-RELEASE</pcloud-facade-channelcenter.version>
......@@ -113,17 +113,17 @@
<pcloud-facade-analysisengine.version>2.1.0-RELEASE</pcloud-facade-analysisengine.version>
<pcloud-facade-quartz.version>2.1.0-RELEASE</pcloud-facade-quartz.version>
<pcloud-facade-appcenter.version>2.1.0-RELEASE</pcloud-facade-appcenter.version>
<pcloud-facade-settlement.version>2.1.0-RELEASE</pcloud-facade-settlement.version>
<pcloud-facade-settlement.version>2.0.0-SNAPSHOT</pcloud-facade-settlement.version>
<pcloud-facade-message.version>2.1.0-RELEASE</pcloud-facade-message.version>
<pcloud-facade-commoncenter.version>2.1.0-RELEASE</pcloud-facade-commoncenter.version>
<pcloud-facade-comment.version>2.1.0-RELEASE</pcloud-facade-comment.version>
<pcloud-facade-voicemessage.version>2.1.0-RELEASE</pcloud-facade-voicemessage.version>
<pcloud-facade-raystask.version>2.1.0-RELEASE</pcloud-facade-raystask.version>
<pcloud-facade-contentcenter.version>2.1.0-SNAPSHOT</pcloud-facade-contentcenter.version>
<pcloud-facade-tradecenter.version>2.1.0-RELEASE</pcloud-facade-tradecenter.version>
<pcloud-facade-tradecenter.version>2.0.0-SNAPSHOT</pcloud-facade-tradecenter.version>
<pcloud-facade-readercenter.version>2.1.0-RELEASE</pcloud-facade-readercenter.version>
<pcloud-facade-labelcenter.version>2.1.0-RELEASE</pcloud-facade-labelcenter.version>
<pcloud-facade-wechatgroup.version>2.1.0-RELEASE</pcloud-facade-wechatgroup.version>
<pcloud-facade-wechatgroup.version>2.0.0-SNAPSHOT</pcloud-facade-wechatgroup.version>
<pcloud-facade-promotion.version>2.1.0-RELEASE</pcloud-facade-promotion.version>
<pcloud-facade-audioapp.version>2.1.0-RELEASE</pcloud-facade-audioapp.version>
<pcloud-facade-videolesson.version>2.1.0-RELEASE</pcloud-facade-videolesson.version>
......
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