Commit 89d4b009 by daixing

收益管理

parents 496af94c 32ff305e
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.dto;
import java.io.Serializable;
import java.util.List;
/**
* @author 戴兴
* @description TODO
* @date 2019/8/8 20:37
*/
public class ResourceBrowseParamDto implements Serializable {
private Long bookGroupId;
private Long classifyId;
private Long qrcodeId;
private String typeCode;
private List<Long> Ids;
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 getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
public String getTypeCode() {
return typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public List<Long> getIds() {
return Ids;
}
public void setIds(List<Long> ids) {
Ids = ids;
}
@Override
public String toString() {
return "ResourceBrowseParamDto{" +
"bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
", qrcodeId=" + qrcodeId +
", typeCode='" + typeCode + '\'' +
", Ids=" + Ids +
'}';
}
}
\ 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;
......@@ -56,7 +53,13 @@ public interface BookGroupClassifyService {
@PostMapping("filterDeleteId")
ResponseEntity<ResponseDto<List<Long>>> filterDeleteId(@RequestBody List<String >wxGroupIdList);
@ApiOperation("获取用户支付金额")
@GetMapping("getPayPrice")
ResponseEntity<ResponseDto<BigDecimal>> getPayPrice(@RequestParam("qrcodeId") Long qrcodeId, @RequestParam("wxUserId") String wxUserId);
@ApiOperation("获取群分类个数")
@PostMapping("getGroupClassifyCount")
ResponseEntity<ResponseDto<Map<Long, BookClassifyDTO>>> getGroupClassifyCount(@RequestBody List<Long> bookIds);
}
......@@ -3,9 +3,12 @@ package com.pcloud.book.group.service;
import java.util.List;
import java.util.Map;
import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.GroupCipherDTO;
import com.pcloud.book.group.dto.GroupUseDTO;
import com.pcloud.book.group.dto.ResourceBrowseParamDto;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
......@@ -52,6 +55,7 @@ public interface BookGroupService {
@RequestMapping(value = "getBaseInfoBySceneId",method = RequestMethod.GET)
ResponseEntity<ResponseDto<BookGroupDTO>> getBaseInfoBySceneId(@RequestParam("sceneId")Long sceneId) throws BizException;
@ApiOperation("更新个人二维码")
@RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST)
void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException;
......@@ -72,4 +76,9 @@ public interface BookGroupService {
@GetMapping("/getJoinGroupCipher")
ResponseEntity<ResponseDto<GroupCipherDTO>> getJoinGroupCipher(@RequestParam("cipher")String cipher) throws BizException;
@ApiOperation("获取资源浏览数据")
@PostMapping("getResourcesBrowseCount")
ResponseEntity<ResponseDto<Map<Long, Long>>> getResourcesBrowseCount(@RequestBody ResourceBrowseParamDto resourceBrowseParamDto);
}
......@@ -83,6 +83,10 @@ public interface WeixinQrcodeService {
@RequestMapping(value = "getGroupVersionIp", method = RequestMethod.POST)
ResponseEntity<ResponseDto<Map<String, BookWxQrcodeDTO>>> getGroupVersionIp(@RequestBody List<String> wxGroupIds);
@ApiOperation(value = "通过群分类id获取微信群id", httpMethod = "GET")
@RequestMapping(value = "getWxGroupId", method = RequestMethod.GET)
ResponseEntity<ResponseDto<String>> getWxGroupId(@RequestParam("classifyId") Long classifyId);
}
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.GetGroupClassifyIncomeDTO;
import com.pcloud.settlementcenter.record.dto.GetGroupQrcodeIncomeDTO;
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 +109,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 == null?BigDecimal.ZERO:rescourceTotalIncome;
}
@ParamLog(value = "批量获取社群码分类的收益", isBefore = false, isAfterReturn = false)
public Map<Long,BigDecimal> getClassifyIncome(GetGroupClassifyIncomeDTO getGroupClassifyIncomeDTO) throws BizException {
Map<Long,BigDecimal> classifyIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,BigDecimal>>> responseEntityP = bookService.getGroupClassifyIncome(getGroupClassifyIncomeDTO);
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(GetGroupQrcodeIncomeDTO getGroupQrcodeIncomeDTO) throws BizException {
Map<Long,BigDecimal> qrcodeIncome = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,BigDecimal>>> responseEntityP = bookService.getGroupQrcodeIncome(getGroupQrcodeIncomeDTO);
qrcodeIncome = ResponseHandleUtil.parseMap(responseEntityP, Long.class, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("批量获取社群码分类下的微信群收益.[getQrcodeIncome]:" + e.getMessage(), e);
}
return qrcodeIncome;
}
}
......@@ -5,6 +5,9 @@ import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.settlementcenter.record.dto.ProductStaticUnderAppMapDTO;
import com.pcloud.settlementcenter.record.dto.ResourcesStatisticVO;
import com.pcloud.settlementcenter.record.service.BookService;
import com.pcloud.settlementcenter.record.service.SettlementService;
import org.slf4j.Logger;
......@@ -14,9 +17,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 {
......@@ -27,6 +29,8 @@ public class SettlementConsr {
@Autowired
private SettlementService settlementService;
@Autowired
private BookService bookService;
@ParamLog(value = "获取收益", isBefore = false, isAfterReturn = false)
public Map<Long, BigDecimal> getWXGroupQrcodeIncomeByAdviser(List<Long> groupQrcodeIds, Long adviserId) throws BizException {
......@@ -55,4 +59,28 @@ 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;
}
@ParamLog(value = "社群码应用下商品的收益", isBefore = false, isAfterReturn = false)
public Map<Long,List<ResourcesStatisticVO>> getProductStaticUnderApp(ProductStaticUnderAppMapDTO productStaticUnderAppMapDTO) throws BizException {
Map<Long,List<ResourcesStatisticVO>> resourcesStatisticVOS = new HashMap<>();
try {
ResponseEntity<ResponseDto<Map<Long,List<ResourcesStatisticVO>>>> responseEntityP = bookService.getProductStaticUnderAppMap(productStaticUnderAppMapDTO);
resourcesStatisticVOS = ResponseHandleUtil.parseMapList(responseEntityP, Long.class, ResourcesStatisticVO.class);
} catch (Exception e) {
LOGGER.error("社群码应用下商品的收益.[getProductStaticUnderApp]:" + e.getMessage(), e);
}
return resourcesStatisticVOS;
}
}
......@@ -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,6 +124,7 @@ public class TradeConsr {
return amount;
}
@ParamLog("获取用户购买或者参与过的社群码ID")
public List<Long> getBuyBookGroupIdList(Long channelId, Long wechatUserId) throws BizException {
List<Long> results = new ArrayList<>();
......@@ -138,4 +137,46 @@ public class TradeConsr {
return results;
}
@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;
}
@ParamLog("查询社群码下购买应用或作品的总销售额")
public BigDecimal getTotalSale(Long bookGroupId, Long classifyId, Long qrcodeId, String type) throws BizException {
BigDecimal totalSale = BigDecimal.ZERO;
try {
ResponseEntity<ResponseDto<BigDecimal>> responseEntity = orderFormService.getSaleAmount4Group(bookGroupId,classifyId,qrcodeId,type);
totalSale = ResponseHandleUtil.parseResponse(responseEntity, BigDecimal.class);
} catch (Exception e) {
LOGGER.error("查询社区码下购买应用详情:" + e.getMessage(), e);
}
return totalSale;
}
}
......@@ -178,6 +178,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)) {
......
......@@ -2,6 +2,7 @@ package com.pcloud.book.group.biz;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ClassifyKeywordDTO;
......@@ -9,6 +10,11 @@ import com.pcloud.book.group.dto.GroupStoreMyPayDto;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.group.vo.StatisticVO;
import com.pcloud.common.dto.StoreFlowInfoDto;
import com.pcloud.common.exceptions.BizException;
......@@ -322,4 +328,47 @@ public interface BookGroupBiz {
* 获取用户购买或者参与过的社群书信息
*/
PageBeanNew<GroupStoreMyPayDto> getUserBrowseGroup4KnowLedgeMall(Long channelId, Long wechatUserId, Integer currentPage, Integer numPerPage);
/**
* 获取社群码相关数据
*/
BookGroupStatisticsDTO getBookGroupStatisByBookGroupId(Long bookGroupId);
/**
* 收益统计
*/
PageBeanNew<ResourcesStatisticVO> getGroupIncomeStatic(GroupIncomeStaticParamVO groupIncomeStaticParamVO, Long adviserId);
/**
* 社群码浏览趋势图
*/
List<GroupScanTrendVO> getGroupScanTrend(GroupScanTrendParamVO groupScanTrendParamVO, Long adviserId);
/**
* 社群码分类统计
*/
PageBeanNew<GroupStatisticVO> getClassifyStatistic(Long bookGroupId, Long adviserId, Integer currentPage, Integer numPerPage);
/**
* 社群码分类的微信群统计
*/
List<WxGroupStatisticVO> getQrcodeStatistic(Long bookGroupId, Long classifyId, Long adviserId);
/**
* 资源数据统计
*/
TotalRescourceDataVO getTotalRescourceData(Long bookGroupId,Long adviserId, Long classifyId, Long qrcodeId, String type);
/**
* 资源数据导出
*/
Map<String, String> exportRescourceIncomeData(Long bookGroupId,Long adviserId);
/**
* 获取资源浏览数据
*/
Map<Long, Long> getResourcesBrowseCount(ResourceBrowseParamDto resourceBrowseParamDto);
}
package com.pcloud.book.group.biz;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.group.dto.ClassifyLearningReportDto;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.vo.AddClassifyVO;
import com.pcloud.book.group.vo.AdviserClassifyParam;
......@@ -202,6 +196,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);
/**
* 更新是否开启微学习报告
*/
......@@ -224,4 +221,12 @@ public interface BookGroupClassifyBiz {
* 拖动排序
*/
void dragSortClassify(List<Long> classifyIds);
/**
* 埋点记录点击群分类次数
*/
void clickClassify(Long wechatUserId, Long bookGroupId, Long classifyId);
List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId);
}
......@@ -65,6 +65,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
......
......@@ -21,20 +21,7 @@ import com.pcloud.book.group.dao.BookQrcodeUserDao;
import com.pcloud.book.group.dao.JoinGroupCipherDao;
import com.pcloud.book.group.dao.LearningReportBrowseRecordDao;
import com.pcloud.book.group.dao.LearningReportTouchRecordDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.BookWxQrcodeDTO;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.group.dto.ClassifyLearningCountDto;
import com.pcloud.book.group.dto.ClassifyLearningReportDto;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.entity.BookQrcodeUser;
import com.pcloud.book.group.entity.GroupQrcode;
......@@ -194,10 +181,12 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
log.info("[新增分类] : 可用微信群数量:{}个", wechatGroupNum);
throw new BookBizException(BookBizException.PARAM_IS_NULL, "群二维码数量不足,您可以明天再创建群。");
}
}
Integer generation = null;
if (new Integer(2).equals(qrcodeNameAndProId.getJoinGroupType())) {
generation = 3;
}
WeixinQrcodeDTO oneQrcode = weixinQrcodeBiz.getOneQrcode(generation);
if (oneQrcode == null) {
......@@ -957,6 +946,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
......@@ -1054,4 +1052,20 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
bookGroupClassifyDao.dragSortClassify(classifyIds);
}
@Override
public void clickClassify(Long wechatUserId, Long bookGroupId, Long classifyId) {
bookGroupClassifyDao.addClickClassify(wechatUserId,bookGroupId,classifyId);
}
@Override
public List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId) {
List<ListClassifyVO> classifyVOS = bookGroupClassifyDao.getClassifyIngoreDelete(bookGroupId);
if (ListUtils.isEmpty(classifyVOS)){
return new ArrayList<>();
}
return classifyVOS;
}
}
......@@ -243,6 +243,15 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
return pageBeanNew;
}
@Override
public List<ClassifyQrcodeVO> getQrcodeByClassify(Long bookGroupId, Long classifyId) {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeDao.getQrcodeByClassify(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);
}
......@@ -233,6 +233,8 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
* @return
*/
List<ClassifyKeywordDTO> getClassifyStatistics(Long bookId);
Map<Long,BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds);
GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName);
......@@ -241,8 +243,16 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
*/
void updateHasOpenLearningReport(Long classifyId, Boolean hasOpenLearningReport, Long partyId);
/**
* 拖动排序
*/
void dragSortClassify(List<Long> classifyIds);
void addClickClassify(Long wechatUserId, Long bookGroupId, Long classifyId);
Map<Long, ClickClassifyDTO> mapClickClassify(List<Long> classifyIds);
List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId);
}
......@@ -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;
......@@ -204,4 +205,9 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
*/
void updateRiddleOpenStatus(Long qrcodeId, Boolean status);
/**
* 根据分类id获取分类下的群---不分页
*/
List<ClassifyQrcodeVO> getQrcodeByClassify(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,"rescourceId");
}
@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);
}
}
......@@ -197,6 +197,11 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
public List<ClassifyKeywordDTO> getClassifyStatistics(Long bookId) {
return this.getSqlSession().selectList(this.getStatement("getClassifyStatistics"), bookId);
}
@Override
public Map<Long, BookClassifyDTO> getGroupClassifyCount(List<Long> bookIds) {
return this.getSessionTemplate().selectMap(getStatement("getGroupClassifyCount"), bookIds,"bookId");
}
@Override
public GroupClassifyQrcodeDTO getClassifyQrcodeInfoByName(String weixinGroupName) {
......@@ -218,4 +223,25 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
paramMap.put("classifyIds", classifyIds);
this.getSqlSession().update(this.getStatement("dragSortClassify"), paramMap);
}
@Override
public void addClickClassify(Long wechatUserId, Long bookGroupId, Long classifyId) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyId", classifyId);
paramMap.put("wechatUserId", wechatUserId);
paramMap.put("bookGroupId", bookGroupId);
this.getSqlSession().insert(this.getStatement("addClickClassify"), paramMap);
}
@Override
public Map<Long, ClickClassifyDTO> mapClickClassify(List<Long> classifyIds) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("classifyIds", classifyIds);
return this.getSqlSession().selectMap(this.getStatement("mapClickClassify"), paramMap,"classifyId");
}
@Override
public List<ListClassifyVO> getClassifyIngoreDelete(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("getClassifyIngoreDelete"), bookGroupId);
}
}
......@@ -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;
......@@ -197,4 +198,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
getSessionTemplate().update(getStatement("updateRiddleOpenStatus"), map);
}
public List<ClassifyQrcodeVO> getQrcodeByClassify(Long classifyId) {
return this.getSqlSession().selectList(this.getStatement("getQrcodeByClassify"), classifyId);
}
}
......@@ -133,6 +133,11 @@ public class BookGroupDTO extends BaseDto {
private String bookName;
/**
* 编号
*/
private String bookNumber;
private String url;
private Long bookClockInfoId;
......@@ -364,6 +369,7 @@ public class BookGroupDTO extends BaseDto {
this.isShowBookName = isShowBookName;
}
public Integer getJoinGroupType() {
return joinGroupType;
}
......@@ -372,6 +378,14 @@ public class BookGroupDTO extends BaseDto {
this.joinGroupType = joinGroupType;
}
public String getBookNumber() {
return bookNumber;
}
public void setBookNumber(String bookNumber) {
this.bookNumber = bookNumber;
}
@Override
public String toString() {
return "BookGroupDTO{" +
......@@ -399,10 +413,13 @@ public class BookGroupDTO extends BaseDto {
", bookImg='" + bookImg + '\'' +
", isbn='" + isbn + '\'' +
", bookName='" + bookName + '\'' +
", bookNumber='" + bookNumber + '\'' +
", url='" + url + '\'' +
", bookClockInfoId=" + bookClockInfoId +
", isShowBookName=" + isShowBookName +
", joinGroupType=" + joinGroupType +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.group.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/8/22 21:49
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ClickClassifyDTO implements Serializable {
@ApiModelProperty("社群码标识")
private Long bookGroupId;
@ApiModelProperty("分类标识")
private Long classifyId;
@ApiModelProperty("点击次数")
private Long count;
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 getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
@Override
public String toString() {
return "ClickClassifyDTO{" +
"bookGroupId=" + bookGroupId +
", classifyId=" + classifyId +
", count=" + count +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.group.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* @author 戴兴
* @description TODO
* @date 2019/8/8 21:39
*/
public class StatisticsIncomeDto implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4695716936925368521L;
/**
* 应用标识
*/
private Long appId;
/**
* 书刊标识
*/
private Long bookGroupId;
/**
* 应用名称
*/
private String appName;
/**
* 浏览量
*/
private Integer scanCounts;
/**
* 销售量
*/
private Integer saleCounts;
/**
* 销售额
*/
private BigDecimal saleMoney;
/**
* 收益额
*/
private BigDecimal income;
/**
* 商品标识
*/
private Long productId;
/**
* 商品名称
*/
private String productName;
/**
* 收益时间
*/
private String dateTime;
/**
* 子项
*/
private List<StatisticsIncomeDto> itemList;
public Long getAppId() {
return appId;
}
public void setAppId(Long appId) {
this.appId = appId;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public Integer getScanCounts() {
return scanCounts;
}
public void setScanCounts(Integer scanCounts) {
this.scanCounts = scanCounts;
}
public Integer getSaleCounts() {
return saleCounts;
}
public void setSaleCounts(Integer saleCounts) {
this.saleCounts = saleCounts;
}
public BigDecimal getSaleMoney() {
return saleMoney;
}
public void setSaleMoney(BigDecimal saleMoney) {
this.saleMoney = saleMoney;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getDateTime() {
return dateTime;
}
public void setDateTime(String dateTime) {
this.dateTime = dateTime;
}
public List<StatisticsIncomeDto> getItemList() {
return itemList;
}
public void setItemList(List<StatisticsIncomeDto> itemList) {
this.itemList = itemList;
}
@Override
public String toString() {
return "StatisticsIncomeDto{" +
"appId=" + appId +
", bookGroupId=" + bookGroupId +
", appName='" + appName + '\'' +
", scanCounts=" + scanCounts +
", saleCounts=" + saleCounts +
", saleMoney=" + saleMoney +
", income=" + income +
", productId=" + productId +
", productName='" + productName + '\'' +
", dateTime='" + dateTime + '\'' +
", itemList=" + itemList +
'}';
}
}
\ No newline at end of file
......@@ -172,6 +172,7 @@ public interface BookGroupClassifyFacade {
@RequestParam(value = "keyword", required = false) @ApiParam("关键词") String keyword
) throws BizException, PermissionException;
@ApiOperation("拖动排序")
@PostMapping("dragSortClassify")
ResponseDto<?> dragSortClassify(
......@@ -179,4 +180,20 @@ public interface BookGroupClassifyFacade {
@RequestBody List<Long> classifyIds
) throws BizException, PermissionException;
@ApiOperation("埋点记录点击分类次数")
@GetMapping("clickClassify")
ResponseDto<?> clickClassify(
@CookieValue("userinfo") @ApiParam("cookie信息") String userInfo,
@RequestParam("bookGroupId") @ApiParam("社群码id") Long bookGroupId,
@RequestParam("classifyId") @ApiParam("群分类id") Long classifyId) throws BizException, PermissionException;
@ApiOperation("获取所有群分类包括已删除的")
@GetMapping("getClassifyIngoreDelete")
ResponseDto<?> getClassifyIngoreDelete(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestParam("bookGroupId") @ApiParam("社群码id") Long bookGroupId) 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.*;
......@@ -24,6 +26,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.
......@@ -276,6 +280,7 @@ public interface BookGroupFacade {
@RequestHeader("token") String token
) throws BizException, PermissionException, JsonParseException;
@ApiOperation("删除社群码")
@GetMapping("deleteBookGroup")
ResponseDto<?> deleteBookGroup(
......@@ -295,4 +300,70 @@ public interface BookGroupFacade {
ResponseDto<?> getAllLargeTemplet(
@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"),
@ApiImplicitParam(name = "currentPage", value = "currentPage", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "numPerPage", required = true, dataType = "Integer", paramType = "query")
})
@RequestMapping(value ="getClassifyStatistic",method = RequestMethod.GET)
public ResponseDto<?> getClassifyStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "currentPage",required = true) Integer currentPage,
@RequestParam(value = "numPerPage",required = true) Integer numPerPage) 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<?> 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")
})
@RequestMapping(value ="exportRescourceIncomeData",method = RequestMethod.GET)
public ResponseDto<?> exportRescourceIncomeData(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId) 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"),
......
......@@ -184,6 +184,7 @@ public class BookGroupClassifyFacadeImpl implements BookGroupClassifyFacade {
return new ResponseDto<>(bookGroupClassifyBiz.listClassifyForLearningReport(currentPage,numPerPage,keyword,partyId));
}
@ApiOperation("拖动排序")
@PostMapping("dragSortClassify")
@Override
......@@ -196,4 +197,23 @@ public class BookGroupClassifyFacadeImpl implements BookGroupClassifyFacade {
return new ResponseDto<>();
}
@Override
@GetMapping("clickClassify")
public ResponseDto<?> clickClassify(@CookieValue("userInfo") String userInfo, @RequestParam("bookGroupId") Long bookGroupId,
@RequestParam("classifyId") Long classifyId) throws BizException, PermissionException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
bookGroupClassifyBiz.clickClassify(wechatUserId,bookGroupId,classifyId);
return new ResponseDto<>();
}
@Override
@GetMapping("getClassifyIngoreDelete")
public ResponseDto<?> getClassifyIngoreDelete(@RequestHeader("token") String token, @RequestParam("bookGroupId") Long bookGroupId) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
List<ListClassifyVO> classifyVOS = bookGroupClassifyBiz.getClassifyIngoreDelete(bookGroupId);
return new ResponseDto<>(classifyVOS);
}
}
......@@ -17,7 +17,6 @@ import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie;
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.*;
......@@ -32,6 +31,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;
......@@ -397,6 +397,7 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
return new ResponseDto<>(bookGroupBiz.getIsShowBookName(partyId));
}
@ApiOperation("删除社群码")
@GetMapping("deleteBookGroup")
@Override
......@@ -433,4 +434,75 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
return new ResponseDto<>(bookGroupBiz.getAllLargTemplet());
}
@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<?> getClassifyStatistic(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId,
@RequestParam(value = "currentPage",required = true) Integer currentPage,
@RequestParam(value = "numPerPage",required = true) Integer numPerPage) throws BizException, PermissionException {
Map<String, Object> map = SessionUtil.getToken4Redis(token);
Long adviserId = (Long) map.get(SessionUtil.PARTY_ID);
PageBeanNew<GroupStatisticVO> groupQrcodeStatistic = bookGroupBiz.getClassifyStatistic(bookGroupId, adviserId,currentPage,numPerPage);
return new ResponseDto<>(groupQrcodeStatistic);
}
@Override
@RequestMapping(value ="getQrcodeStatistic",method = RequestMethod.GET)
public ResponseDto<?> 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 ="exportRescourceIncomeData",method = RequestMethod.GET)
public ResponseDto<?> exportRescourceIncomeData(@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);
Map<String, String> resultMap = bookGroupBiz.exportRescourceIncomeData(bookGroupId, adviserId);
return new ResponseDto<>(resultMap);
}
}
......@@ -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)
......
......@@ -96,4 +96,11 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService {
public ResponseEntity<ResponseDto<BigDecimal>> getPayPrice(@RequestParam("qrcodeId") Long qrcodeId, @RequestParam("wxUserId") String wxUserId) {
return ResponseHandleUtil.toResponse(bookGroupClassifyBiz.getPayPrice(qrcodeId, wxUserId));
}
@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);
}
}
......@@ -3,11 +3,12 @@ package com.pcloud.book.group.service.impl;
import java.util.List;
import java.util.Map;
import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.GroupCipherDTO;
import com.pcloud.book.group.dto.GroupUseDTO;
import io.swagger.annotations.ApiOperation;
import com.pcloud.book.group.dto.ResourceBrowseParamDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
......@@ -88,6 +89,7 @@ public class BookGroupServiceImpl implements BookGroupService {
}
@Override
@RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST)
public void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException {
......@@ -131,4 +133,16 @@ public class BookGroupServiceImpl implements BookGroupService {
return ResponseHandleUtil.toResponse(bookGroupBiz.getJoinGroupCipher(cipher));
}
/**
* @description 获取资源浏览数据
* @author 戴兴
* @date 2019/8/8 20:45
*/
@Override
@PostMapping("getResourcesBrowseCount")
public ResponseEntity<ResponseDto<Map<Long, Long>>> getResourcesBrowseCount(@RequestBody ResourceBrowseParamDto resourceBrowseParamDto) {
return ResponseHandleUtil.toResponse(bookGroupBiz.getResourcesBrowseCount(resourceBrowseParamDto));
}
}
package com.pcloud.book.group.service.impl;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.biz.WeixinQrcodeBiz;
import com.pcloud.book.group.dto.BookWxQrcodeDTO;
import com.pcloud.book.group.dto.SyncWeixinGroupIdDTO;
......@@ -7,8 +8,10 @@ import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.dto.WeixinQrcodeCountDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.service.WeixinQrcodeService;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -35,6 +38,8 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService {
@Autowired
private WeixinQrcodeBiz weixinQrcodeBiz;
@Autowired
private GroupQrcodeBiz groupQrcodeBiz;
@Override
@GetMapping("tenQuartz")
......@@ -117,4 +122,15 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService {
return ResponseHandleUtil.toResponse(weixinQrcodeBiz.getGroupVersion(wxGroupIds));
}
@Override
@RequestMapping(value = "getWxGroupId", method = RequestMethod.GET)
public ResponseEntity<ResponseDto<String>> getWxGroupId(@RequestParam("classifyId") Long classifyId) {
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeBiz.getQrcodeByClassify(null, classifyId);
String wxGroupId = null;
if (!ListUtils.isEmpty(qrcodeByClassify)){
wxGroupId = qrcodeByClassify.get(0).getWeixinGroupId();
}
return ResponseHandleUtil.toResponse(wxGroupId);
}
}
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.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/25 19:57
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GroupScanTrendParamVO implements Serializable {
private Long bookGroupId;
private Long classifyId;
private Long wxGroupId;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date startDate;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
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;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
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 BigDecimal price;
@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;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
@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.classify_id = #{classifyId}
</if>
<if test="qrcodeId!=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.classify_id = #{classifyId}
</if>
<if test="qrcodeId!=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.classify_id = #{classifyId}
</if>
<if test="qrcodeId!=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
......@@ -854,6 +856,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
......@@ -863,6 +875,24 @@
where id=#{classifyId}
</update>
<insert id="addClickClassify" parameterType="map">
insert into book_group_classify_click(book_group_id, classify_id,create_user, create_time)
values(#{bookGroupId},#{classifyId},#{wechatUserId},now())
</insert>
<select id="mapClickClassify" parameterType="map" resultType="com.pcloud.book.group.dto.ClickClassifyDTO">
select classify_id classifyId, count(1) count from book_group_classify_click
where classify_id in
<foreach collection="classifyIds" open="(" close=")" separator="," item="id">
#{id}
</foreach>
group by classify_id
</select>
<select id="getClassifyIngoreDelete" parameterType="long" resultType="com.pcloud.book.group.vo.ListClassifyVO">
select id,classify from book_group_classify where book_group_id = #{bookGroupId}
</select>
<!--获取群分类学习报告相关列表-->
<select id="listClassifyForLearningReport" parameterType="map" resultType="com.pcloud.book.group.dto.ClassifyLearningReportDto">
SELECT
......@@ -894,6 +924,7 @@
order by c.id desc
</select>
<!--拖动排序-->
<update id="dragSortClassify" parameterType="map">
update book_group_classify
......@@ -908,4 +939,12 @@
#{classifyId}
</foreach>
</update>
<select id="pageClassify" parameterType="map" resultType="com.pcloud.book.group.vo.GroupStatisticVO">
select bgc.id classifyId, bgc.classify classifyName, bgc.price price,sum(user_number) groupPersonCount, bgc.create_time createdTime
from book_group_classify bgc left join book_group_qrcode bgq on bgc.id = bgq.classify_id
where book_group_id = #{bookGroupId}
group by bgc.id
</select>
</mapper>
\ No newline at end of file
......@@ -88,7 +88,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
......@@ -500,6 +501,7 @@
</foreach>
</select>
<select id="listPageRiddle" parameterType="map" resultType="com.pcloud.book.riddle.dto.GroupRiddleDTO">
SELECT
q.group_name AS groupName,
......@@ -541,4 +543,10 @@
id = #{qrcodeId}
</update>
<select id="getQrcodeByClassify" parameterType="long" resultType="com.pcloud.book.group.vo.ClassifyQrcodeVO">
select id, classify_id classifyId, group_name groupName, user_number userNumber, weixin_group_id weixinGroupId, create_time createdTime
from book_group_qrcode where classify_id = #{classifyId}
</select>
</mapper>
\ No newline at end of file
......@@ -50,6 +50,10 @@
<pcloud-common-core.version>2.1.0-SNAPSHOT</pcloud-common-core.version>
<wxgroup-sdk.version>1.0.0-SNAPSHOT</wxgroup-sdk.version>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- UAT -->
......@@ -64,9 +68,7 @@
<wxgroup-sdk.version>1.0.0-RELEASE</wxgroup-sdk.version>
</properties>
<!-- 设置默认环境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 压测环境 -->
......@@ -104,8 +106,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.1.0-SNAPSHOT</pcloud-facade-book.version>
<pcloud-service-book.version>2.1.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 +115,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.1.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.1.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.1.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