Commit 04ff7ca9 by lili

版权保护V1.2

parent 4a493dd9
...@@ -131,6 +131,13 @@ ...@@ -131,6 +131,13 @@
<artifactId>pcloud-facade-contentcenter</artifactId> <artifactId>pcloud-facade-contentcenter</artifactId>
<version>${pcloud-facade-contentcenter.version}</version> <version>${pcloud-facade-contentcenter.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.pcloud.facade</groupId>
<artifactId>pcloud-facade-readercenter</artifactId>
<version>${pcloud-facade-readercenter.version}</version>
</dependency>
<dependency> <dependency>
<groupId>fakepath</groupId> <groupId>fakepath</groupId>
<artifactId>jbarcode</artifactId> <artifactId>jbarcode</artifactId>
......
package com.pcloud.book.consumer.reader;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.readercenter.wechat.entity.WechatUser;
import com.pcloud.readercenter.wechat.service.WechatUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author lily
* @date 2018/12/26 16:49
*/
@Component("readerConsr")
public class ReaderConsr {
/**
* logger
*/
private static final Logger LOGGER = LoggerFactory.getLogger(ReaderConsr.class);
@Autowired
private WechatUserService wechatUserService;
public WechatUser getWechatUser(Long wechatUserId) throws BizException {
if (wechatUserId == null) {
return null;
}
try {
return ResponseHandleUtil.parseResponse(wechatUserService.getWechatUser(wechatUserId), WechatUser.class);
} catch (Exception e) {
LOGGER.error("获取微信用户信息失败[wechatUserService.getWechatUser]:" + e.getMessage(), e);
}
return null;
}
}
...@@ -3,6 +3,7 @@ package com.pcloud.book.copyright.biz; ...@@ -3,6 +3,7 @@ package com.pcloud.book.copyright.biz;
import com.pcloud.book.copyright.entity.BookAuthUser; import com.pcloud.book.copyright.entity.BookAuthUser;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.BookClickBuyRecordParam; import com.pcloud.book.copyright.vo.BookClickBuyRecordParam;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
import com.pcloud.book.copyright.vo.SixMonthCountVO; import com.pcloud.book.copyright.vo.SixMonthCountVO;
import com.pcloud.book.copyright.vo.ThirtyDayCountVO; import com.pcloud.book.copyright.vo.ThirtyDayCountVO;
...@@ -26,12 +27,12 @@ public interface BookAuthUserBiz { ...@@ -26,12 +27,12 @@ public interface BookAuthUserBiz {
/** /**
* 最近30天趋势图 * 最近30天趋势图
*/ */
List<ThirtyDayCountVO> listThirtyDay(Long bookId, Long channelId, Long adviserId); List<ThirtyDayCountVO> listThirtyDay(Long bookId, Long channelId, Long adviserId, String province);
/** /**
* 最近6个月趋势图 * 最近6个月趋势图
*/ */
List<SixMonthCountVO> listSixMonth(Long bookId, Long channelId, Long adviserId); List<SixMonthCountVO> listSixMonth(Long bookId, Long channelId, Long adviserId, String province);
/** /**
* 新增用户授权记录 * 新增用户授权记录
...@@ -53,4 +54,8 @@ public interface BookAuthUserBiz { ...@@ -53,4 +54,8 @@ public interface BookAuthUserBiz {
*/ */
void insertClickBuyRecord(BookClickBuyRecordParam bookClickBuyRecordParam, Long channelId, Long wechatUserId); void insertClickBuyRecord(BookClickBuyRecordParam bookClickBuyRecordParam, Long channelId, Long wechatUserId);
/**
* 省份排名前10
*/
List<ProvinceTop10VO> listTop10ByBook(Long bookId, Long channelId, Long adviserId, Integer type);
} }
package com.pcloud.book.copyright.biz.impl; package com.pcloud.book.copyright.biz.impl;
import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr; import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.copyright.biz.BookAuthCodeBiz; import com.pcloud.book.copyright.biz.BookAuthCodeBiz;
import com.pcloud.book.copyright.biz.BookAuthInfoBiz; import com.pcloud.book.copyright.biz.BookAuthInfoBiz;
import com.pcloud.book.copyright.biz.BookAuthServeBiz; import com.pcloud.book.copyright.biz.BookAuthServeBiz;
import com.pcloud.book.copyright.biz.BookAuthUserBiz; import com.pcloud.book.copyright.biz.BookAuthUserBiz;
import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.copyright.dao.BookAuthCodeDao; import com.pcloud.book.copyright.dao.BookAuthCodeDao;
import com.pcloud.book.copyright.entity.BookAuthCode; import com.pcloud.book.copyright.entity.BookAuthCode;
import com.pcloud.book.copyright.entity.BookAuthUser; import com.pcloud.book.copyright.entity.BookAuthUser;
...@@ -14,7 +15,8 @@ import com.pcloud.book.copyright.vo.BookAuthInfoVO; ...@@ -14,7 +15,8 @@ import com.pcloud.book.copyright.vo.BookAuthInfoVO;
import com.pcloud.book.copyright.vo.CheckCodeParam; import com.pcloud.book.copyright.vo.CheckCodeParam;
import com.pcloud.book.copyright.vo.CheckIsAuthServeParam; import com.pcloud.book.copyright.vo.CheckIsAuthServeParam;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import io.swagger.annotations.ApiModelProperty; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.wechat.entity.WechatUser;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -44,6 +46,8 @@ public class BookAuthCodeBizImpl implements BookAuthCodeBiz { ...@@ -44,6 +46,8 @@ public class BookAuthCodeBizImpl implements BookAuthCodeBiz {
private BookAuthServeBiz bookAuthServeBiz; private BookAuthServeBiz bookAuthServeBiz;
@Autowired @Autowired
private QrcodeSceneConsr qrcodeSceneConsr; private QrcodeSceneConsr qrcodeSceneConsr;
@Autowired
private ReaderConsr readerConsr;
@Override @Override
@ParamLog(value = "批量插入授权码",isBefore = false) @ParamLog(value = "批量插入授权码",isBefore = false)
public void insert(List<BookAuthCode> bookAuthCodes) { public void insert(List<BookAuthCode> bookAuthCodes) {
...@@ -138,6 +142,9 @@ public class BookAuthCodeBizImpl implements BookAuthCodeBiz { ...@@ -138,6 +142,9 @@ public class BookAuthCodeBizImpl implements BookAuthCodeBiz {
bookAuthUser.setAdviserId(adviserId); bookAuthUser.setAdviserId(adviserId);
bookAuthUser.setWechatUserId(wechatUserId); bookAuthUser.setWechatUserId(wechatUserId);
bookAuthUser.setAuthCode(BookStatusEnum.AuthCodeTypeEnum.BY_CODE.value); bookAuthUser.setAuthCode(BookStatusEnum.AuthCodeTypeEnum.BY_CODE.value);
WechatUser wechatUser = readerConsr.getWechatUser(wechatUserId);
bookAuthUser.setProvince(wechatUser == null || StringUtil.isEmpty(wechatUser.getWechatUserProvince()) ? "未知" : wechatUser.getWechatUserProvince());
bookAuthUser.setCity(wechatUser == null || StringUtil.isEmpty(wechatUser.getWechatUserCity()) ? "未知" : wechatUser.getWechatUserCity());
bookAuthUserBiz.insert(bookAuthUser); bookAuthUserBiz.insert(bookAuthUser);
} }
......
...@@ -4,6 +4,7 @@ import com.pcloud.book.base.enums.BookStatusEnum; ...@@ -4,6 +4,7 @@ import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.consumer.message.TemplateConsr; import com.pcloud.book.consumer.message.TemplateConsr;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.copyright.biz.BookAuthOrderBiz; import com.pcloud.book.copyright.biz.BookAuthOrderBiz;
import com.pcloud.book.copyright.biz.BookAuthUserBiz; import com.pcloud.book.copyright.biz.BookAuthUserBiz;
import com.pcloud.book.copyright.dao.BookAuthOrderDao; import com.pcloud.book.copyright.dao.BookAuthOrderDao;
...@@ -14,6 +15,7 @@ import com.pcloud.common.core.constant.SceneCode; ...@@ -14,6 +15,7 @@ import com.pcloud.common.core.constant.SceneCode;
import com.pcloud.common.core.constant.SendType; import com.pcloud.common.core.constant.SendType;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.facade.tradecenter.entity.Genuine; import com.pcloud.facade.tradecenter.entity.Genuine;
import com.pcloud.readercenter.wechat.entity.WechatUser;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -37,6 +39,8 @@ public class BookAuthOrderBizImpl implements BookAuthOrderBiz { ...@@ -37,6 +39,8 @@ public class BookAuthOrderBizImpl implements BookAuthOrderBiz {
private TemplateConsr templateConsr; private TemplateConsr templateConsr;
@Autowired @Autowired
private BookBiz bookBiz; private BookBiz bookBiz;
@Autowired
private ReaderConsr readerConsr;
@Override @Override
@ParamLog("新增授权金购买订单") @ParamLog("新增授权金购买订单")
...@@ -53,6 +57,9 @@ public class BookAuthOrderBizImpl implements BookAuthOrderBiz { ...@@ -53,6 +57,9 @@ public class BookAuthOrderBizImpl implements BookAuthOrderBiz {
BookAuthUser bookAuthUser = new BookAuthUser(); BookAuthUser bookAuthUser = new BookAuthUser();
BeanUtils.copyProperties(bookAuthOrder, bookAuthUser); BeanUtils.copyProperties(bookAuthOrder, bookAuthUser);
bookAuthUser.setAuthCode(BookStatusEnum.AuthCodeTypeEnum.BY_PAY.value); bookAuthUser.setAuthCode(BookStatusEnum.AuthCodeTypeEnum.BY_PAY.value);
WechatUser wechatUser = readerConsr.getWechatUser(genuine.getWechatUserId());
bookAuthUser.setProvince(wechatUser == null || StringUtil.isEmpty(wechatUser.getWechatUserProvince()) ? "未知" : wechatUser.getWechatUserProvince());
bookAuthUser.setCity(wechatUser == null || StringUtil.isEmpty(wechatUser.getWechatUserCity()) ? "未知" : wechatUser.getWechatUserCity());
bookAuthUserBiz.insert(bookAuthUser); bookAuthUserBiz.insert(bookAuthUser);
BookDto bookDto = bookBiz.getBaseById(genuine.getBookId()); BookDto bookDto = bookBiz.getBaseById(genuine.getBookId());
//发送模板消息 //发送模板消息
...@@ -62,7 +69,6 @@ public class BookAuthOrderBizImpl implements BookAuthOrderBiz { ...@@ -62,7 +69,6 @@ public class BookAuthOrderBizImpl implements BookAuthOrderBiz {
paramMap.put("orderProductName", bookDto == null ? "" : StringUtil.addBracket(bookDto.getBookName()) + "正版授权费"); paramMap.put("orderProductName", bookDto == null ? "" : StringUtil.addBracket(bookDto.getBookName()) + "正版授权费");
paramMap.put("Remark", "支持正版图书,享受专属资源"); paramMap.put("Remark", "支持正版图书,享受专属资源");
String url = "/C" + genuine.getChannelId() + "/qrcode/" + genuine.getSceneId() + "?adviserId=" + genuine.getAdviserId() + "&sceneId=" + genuine.getSceneId() + "&source_type=QRCODE"; String url = "/C" + genuine.getChannelId() + "/qrcode/" + genuine.getSceneId() + "?adviserId=" + genuine.getAdviserId() + "&sceneId=" + genuine.getSceneId() + "&source_type=QRCODE";
templateConsr.sendOperate(SceneCode.PAY_SUCCESS_SCENE.value, genuine.getChannelId(), genuine.getWechatUserId(), url, paramMap, SendType.SEND_BY_WECHAT_USER_ID.value, false); templateConsr.sendOperate(SceneCode.PAY_SUCCESS_SCENE.value, genuine.getChannelId(), genuine.getWechatUserId(), url, paramMap, SendType.SEND_BY_WECHAT_USER_ID.value, false);
} }
} }
...@@ -10,10 +10,12 @@ import com.pcloud.book.copyright.entity.BookClickBuyRecord; ...@@ -10,10 +10,12 @@ import com.pcloud.book.copyright.entity.BookClickBuyRecord;
import com.pcloud.book.copyright.tools.CopyrightTools; import com.pcloud.book.copyright.tools.CopyrightTools;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.BookClickBuyRecordParam; import com.pcloud.book.copyright.vo.BookClickBuyRecordParam;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
import com.pcloud.book.copyright.vo.SixMonthCountVO; import com.pcloud.book.copyright.vo.SixMonthCountVO;
import com.pcloud.book.copyright.vo.ThirtyDayCountVO; import com.pcloud.book.copyright.vo.ThirtyDayCountVO;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -43,7 +45,7 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -43,7 +45,7 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(4); private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(4);
@ParamLog("获取授权用户数量") @ParamLog(value = "获取授权用户数量")
@Override @Override
public BookAuthCodeUserVO getAuthUserCount(Long bookId, Long channelId, Long adviserId) { public BookAuthCodeUserVO getAuthUserCount(Long bookId, Long channelId, Long adviserId) {
if (bookId == null || channelId == null || adviserId == null) { if (bookId == null || channelId == null || adviserId == null) {
...@@ -73,7 +75,7 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -73,7 +75,7 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
} }
@Override @Override
public List<ThirtyDayCountVO> listThirtyDay(Long bookId, Long channelId, Long adviserId) { public List<ThirtyDayCountVO> listThirtyDay(Long bookId, Long channelId, Long adviserId, String province) {
DateDTO date = CopyrightTools.getDateByType(30L); DateDTO date = CopyrightTools.getDateByType(30L);
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("startDate", date.getStartTime()); paramMap.put("startDate", date.getStartTime());
...@@ -81,6 +83,7 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -81,6 +83,7 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
paramMap.put("bookId", bookId); paramMap.put("bookId", bookId);
paramMap.put("channelId", channelId); paramMap.put("channelId", channelId);
paramMap.put("adviserId", adviserId); paramMap.put("adviserId", adviserId);
paramMap.put("province", province);
List<ThirtyDayCountVO> thirtyDayCountVOS = bookAuthUserDao.listThirtyDay(paramMap); List<ThirtyDayCountVO> thirtyDayCountVOS = bookAuthUserDao.listThirtyDay(paramMap);
setZoreRecord(thirtyDayCountVOS, date.getStartTime(), date.getEndTime()); setZoreRecord(thirtyDayCountVOS, date.getStartTime(), date.getEndTime());
return thirtyDayCountVOS; return thirtyDayCountVOS;
...@@ -115,11 +118,12 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -115,11 +118,12 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
} }
@Override @Override
public List<SixMonthCountVO> listSixMonth(Long bookId, Long channelId, Long adviserId) { public List<SixMonthCountVO> listSixMonth(Long bookId, Long channelId, Long adviserId, String province) {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookId", bookId); paramMap.put("bookId", bookId);
paramMap.put("channelId", channelId); paramMap.put("channelId", channelId);
paramMap.put("adviserId", adviserId); paramMap.put("adviserId", adviserId);
paramMap.put("province", province);
paramMap.put("months", CopyrightTools.getLast6Months()); paramMap.put("months", CopyrightTools.getLast6Months());
List<SixMonthCountVO> sixMonthCountVOS = bookAuthUserDao.listSixMonth(paramMap); List<SixMonthCountVO> sixMonthCountVOS = bookAuthUserDao.listSixMonth(paramMap);
setZoreRecord(sixMonthCountVOS); setZoreRecord(sixMonthCountVOS);
...@@ -151,18 +155,43 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz { ...@@ -151,18 +155,43 @@ public class BookAuthUserBizImpl implements BookAuthUserBiz {
@Override @Override
@ParamLog("新增点击购买链接记录") @ParamLog("新增点击购买链接记录")
public void insertClickBuyRecord(BookClickBuyRecordParam bookClickBuyRecordParam, Long channelId, Long wechatUserId) { public void insertClickBuyRecord(BookClickBuyRecordParam bookClickBuyRecordParam, Long channelId, Long wechatUserId) {
EXECUTOR_SERVICE.execute(()->{ EXECUTOR_SERVICE.execute(() -> {
try{ try {
BookClickBuyRecord bookClickBuyRecord = new BookClickBuyRecord(); BookClickBuyRecord bookClickBuyRecord = new BookClickBuyRecord();
bookClickBuyRecord.setChannelId(channelId); bookClickBuyRecord.setChannelId(channelId);
bookClickBuyRecord.setWechatUserId(wechatUserId); bookClickBuyRecord.setWechatUserId(wechatUserId);
BeanUtils.copyProperties(bookClickBuyRecordParam, bookClickBuyRecord); BeanUtils.copyProperties(bookClickBuyRecordParam, bookClickBuyRecord);
bookClickBuyRecordDao.insert(bookClickBuyRecord); bookClickBuyRecordDao.insert(bookClickBuyRecord);
}catch (Exception e){ } catch (Exception e) {
LOGGER.error("新增点击购买链接记录"+bookClickBuyRecordParam); LOGGER.error("新增点击购买链接记录" + bookClickBuyRecordParam);
} }
}); });
}
@Override
@ParamLog("省份排名前10")
public List<ProvinceTop10VO> listTop10ByBook(Long bookId, Long channelId, Long adviserId, Integer type) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookId", bookId);
paramMap.put("channelId", channelId);
paramMap.put("adviserId", adviserId);
if (type != null && type == 0) {
DateDTO date = CopyrightTools.getDateByType(30L);
paramMap.put("startDate", date.getStartTime());
paramMap.put("endDate", date.getEndTime());
}else if(type != null && type == 1){
paramMap.put("months", CopyrightTools.getLast6Months());
}
List<ProvinceTop10VO> top10ByBook = bookAuthUserDao.listTop10ByBook(paramMap);
if (!ListUtils.isEmpty(top10ByBook)) {
for (ProvinceTop10VO provinceTop10VO : top10ByBook) {
if (provinceTop10VO.getTotalCount() != null && provinceTop10VO.getPayUserCount() != null) {
provinceTop10VO.setCodeUserCount(provinceTop10VO.getTotalCount() - provinceTop10VO.getPayUserCount());
}
}
}
return top10ByBook;
} }
/** /**
......
...@@ -2,6 +2,7 @@ package com.pcloud.book.copyright.dao; ...@@ -2,6 +2,7 @@ package com.pcloud.book.copyright.dao;
import com.pcloud.book.copyright.entity.BookAuthUser; import com.pcloud.book.copyright.entity.BookAuthUser;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
import com.pcloud.book.copyright.vo.SixMonthCountVO; import com.pcloud.book.copyright.vo.SixMonthCountVO;
import com.pcloud.book.copyright.vo.ThirtyDayCountVO; import com.pcloud.book.copyright.vo.ThirtyDayCountVO;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -44,4 +45,9 @@ public interface BookAuthUserDao extends BaseDao<BookAuthUser> { ...@@ -44,4 +45,9 @@ public interface BookAuthUserDao extends BaseDao<BookAuthUser> {
* 获取总的授权用户数据 * 获取总的授权用户数据
*/ */
BookAuthCodeUserVO getAuthUserTotalCount(List<Long> adviserIds); BookAuthCodeUserVO getAuthUserTotalCount(List<Long> adviserIds);
/**
* 获取top10的图书
*/
List<ProvinceTop10VO> listTop10ByBook(Map<String, Object> paramMap);
} }
...@@ -3,6 +3,7 @@ package com.pcloud.book.copyright.dao.impl; ...@@ -3,6 +3,7 @@ package com.pcloud.book.copyright.dao.impl;
import com.pcloud.book.copyright.dao.BookAuthUserDao; import com.pcloud.book.copyright.dao.BookAuthUserDao;
import com.pcloud.book.copyright.entity.BookAuthUser; import com.pcloud.book.copyright.entity.BookAuthUser;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
import com.pcloud.book.copyright.vo.SixMonthCountVO; import com.pcloud.book.copyright.vo.SixMonthCountVO;
import com.pcloud.book.copyright.vo.ThirtyDayCountVO; import com.pcloud.book.copyright.vo.ThirtyDayCountVO;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -69,4 +70,9 @@ public class BookAuthUserDaoImpl extends BaseDaoImpl<BookAuthUser> implements Bo ...@@ -69,4 +70,9 @@ public class BookAuthUserDaoImpl extends BaseDaoImpl<BookAuthUser> implements Bo
return this.getSqlSession().selectOne(this.getStatement("getAuthUserTotalCount"), adviserIds); return this.getSqlSession().selectOne(this.getStatement("getAuthUserTotalCount"), adviserIds);
} }
@Override
public List<ProvinceTop10VO> listTop10ByBook(Map<String, Object> paramMap) {
return this.getSqlSession().selectList(this.getStatement("listTop10ByBook"), paramMap);
}
} }
...@@ -33,6 +33,12 @@ public class BookAuthUser extends BaseEntity { ...@@ -33,6 +33,12 @@ public class BookAuthUser extends BaseEntity {
@ApiModelProperty("月份") @ApiModelProperty("月份")
private String months; private String months;
@ApiModelProperty("省份")
private String province;
@ApiModelProperty("城市")
private String city;
@ApiModelProperty("创建时间带时分秒") @ApiModelProperty("创建时间带时分秒")
private Date createdTime; private Date createdTime;
...@@ -146,6 +152,22 @@ public class BookAuthUser extends BaseEntity { ...@@ -146,6 +152,22 @@ public class BookAuthUser extends BaseEntity {
isAuthCode = authCode; isAuthCode = authCode;
} }
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override @Override
public String toString() { public String toString() {
return "BookAuthUser{" + return "BookAuthUser{" +
...@@ -156,6 +178,8 @@ public class BookAuthUser extends BaseEntity { ...@@ -156,6 +178,8 @@ public class BookAuthUser extends BaseEntity {
", wechatUserId=" + wechatUserId + ", wechatUserId=" + wechatUserId +
", isAuthCode=" + isAuthCode + ", isAuthCode=" + isAuthCode +
", months='" + months + '\'' + ", months='" + months + '\'' +
", province='" + province + '\'' +
", city='" + city + '\'' +
", createdTime=" + createdTime + ", createdTime=" + createdTime +
", createdUser=" + createdUser + ", createdUser=" + createdUser +
", createdDate=" + createdDate + ", createdDate=" + createdDate +
......
...@@ -2,6 +2,7 @@ package com.pcloud.book.copyright.facade; ...@@ -2,6 +2,7 @@ package com.pcloud.book.copyright.facade;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.BookClickBuyRecordParam; import com.pcloud.book.copyright.vo.BookClickBuyRecordParam;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
import com.pcloud.book.copyright.vo.SixMonthCountVO; import com.pcloud.book.copyright.vo.SixMonthCountVO;
import com.pcloud.book.copyright.vo.ThirtyDayCountVO; import com.pcloud.book.copyright.vo.ThirtyDayCountVO;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -33,13 +34,18 @@ public interface BookAuthUserFacade { ...@@ -33,13 +34,18 @@ public interface BookAuthUserFacade {
@ApiOperation(value = "获取30天趋势图", httpMethod = "GET") @ApiOperation(value = "获取30天趋势图", httpMethod = "GET")
@RequestMapping(value = "listThirtyDay", method = RequestMethod.GET) @RequestMapping(value = "listThirtyDay", method = RequestMethod.GET)
ResponseDto<List<ThirtyDayCountVO>> listThirtyDay(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId) ResponseDto<List<ThirtyDayCountVO>> listThirtyDay(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId, @RequestParam(value = "province", required = false) String province)
throws PermissionException, BizException; throws PermissionException, BizException;
@ApiOperation(value = "6个月趋势图", httpMethod = "GET") @ApiOperation(value = "6个月趋势图", httpMethod = "GET")
@RequestMapping(value = "listSixMonth", method = RequestMethod.GET) @RequestMapping(value = "listSixMonth", method = RequestMethod.GET)
ResponseDto<List<SixMonthCountVO>> listSixMonth(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId) ResponseDto<List<SixMonthCountVO>> listSixMonth(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId, @RequestParam(value = "province", required = false) String province)
throws PermissionException, BizException;
@ApiOperation(value = "省份排名前10(6个月/30天)", httpMethod = "GET")
@RequestMapping(value = "listTop10ByBook", method = RequestMethod.GET)
ResponseDto<List<ProvinceTop10VO>> listTop10ByBook(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId, @RequestParam(value = "type", required = false) Integer type)
throws PermissionException, BizException; throws PermissionException, BizException;
......
...@@ -4,6 +4,7 @@ import com.pcloud.book.copyright.biz.BookAuthUserBiz; ...@@ -4,6 +4,7 @@ import com.pcloud.book.copyright.biz.BookAuthUserBiz;
import com.pcloud.book.copyright.facade.BookAuthUserFacade; import com.pcloud.book.copyright.facade.BookAuthUserFacade;
import com.pcloud.book.copyright.vo.BookAuthCodeUserVO; import com.pcloud.book.copyright.vo.BookAuthCodeUserVO;
import com.pcloud.book.copyright.vo.BookClickBuyRecordParam; import com.pcloud.book.copyright.vo.BookClickBuyRecordParam;
import com.pcloud.book.copyright.vo.ProvinceTop10VO;
import com.pcloud.book.copyright.vo.SixMonthCountVO; import com.pcloud.book.copyright.vo.SixMonthCountVO;
import com.pcloud.book.copyright.vo.ThirtyDayCountVO; import com.pcloud.book.copyright.vo.ThirtyDayCountVO;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -45,21 +46,31 @@ public class BookAuthUserFacadeImpl implements BookAuthUserFacade { ...@@ -45,21 +46,31 @@ public class BookAuthUserFacadeImpl implements BookAuthUserFacade {
@Override @Override
@RequestMapping(value = "listThirtyDay", method = RequestMethod.GET) @RequestMapping(value = "listThirtyDay", method = RequestMethod.GET)
public ResponseDto<List<ThirtyDayCountVO>> listThirtyDay(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId) throws PermissionException, BizException { public ResponseDto<List<ThirtyDayCountVO>> listThirtyDay(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId
, @RequestParam(value = "province", required = false) String province) throws PermissionException, BizException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID); Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
List<ThirtyDayCountVO> thirtyDayCountVOS = bookAuthUserBiz.listThirtyDay(bookId, channelId, adviserId); List<ThirtyDayCountVO> thirtyDayCountVOS = bookAuthUserBiz.listThirtyDay(bookId, channelId, adviserId, province);
return new ResponseDto<>(thirtyDayCountVOS); return new ResponseDto<>(thirtyDayCountVOS);
} }
@Override @Override
@RequestMapping(value = "listSixMonth", method = RequestMethod.GET) @RequestMapping(value = "listSixMonth", method = RequestMethod.GET)
public ResponseDto<List<SixMonthCountVO>> listSixMonth(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId) public ResponseDto<List<SixMonthCountVO>> listSixMonth(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId
, @RequestParam(value = "province", required = false) String province)
throws PermissionException, BizException{ throws PermissionException, BizException{
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID); Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
List<SixMonthCountVO> sixMonthCountVOS = bookAuthUserBiz.listSixMonth(bookId, channelId, adviserId); List<SixMonthCountVO> sixMonthCountVOS = bookAuthUserBiz.listSixMonth(bookId, channelId, adviserId, province);
return new ResponseDto<>(sixMonthCountVOS); return new ResponseDto<>(sixMonthCountVOS);
} }
@Override
@RequestMapping(value = "listTop10ByBook", method = RequestMethod.GET)
public ResponseDto<List<ProvinceTop10VO>> listTop10ByBook(@RequestHeader("token") String token, @RequestParam("bookId") Long bookId, @RequestParam("channelId") Long channelId, @RequestParam(value = "type", required = false) Integer type) throws PermissionException, BizException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
List<ProvinceTop10VO> provinceTop10VOS = bookAuthUserBiz.listTop10ByBook(bookId, channelId, adviserId, type);
return new ResponseDto<>(provinceTop10VOS);
}
@PostMapping("insertClickBuyRecord") @PostMapping("insertClickBuyRecord")
public ResponseDto<?> insertClickBuyRecord(@CookieValue("userInfo") String userInfo, @RequestBody BookClickBuyRecordParam bookClickBuyRecordParam) public ResponseDto<?> insertClickBuyRecord(@CookieValue("userInfo") String userInfo, @RequestBody BookClickBuyRecordParam bookClickBuyRecordParam)
throws BizException{ throws BizException{
......
package com.pcloud.book.copyright.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* @author lily
* @date 2018/12/26 10:21
*/
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ProvinceTop10VO implements Serializable {
@ApiModelProperty("省份")
private String province;
@ApiModelProperty("激活人数")
private Integer totalCount;
@ApiModelProperty("授权码用户书")
private Integer codeUserCount;
@ApiModelProperty("授权金用户数")
private Integer payUserCount;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getCodeUserCount() {
return codeUserCount;
}
public void setCodeUserCount(Integer codeUserCount) {
this.codeUserCount = codeUserCount;
}
public Integer getPayUserCount() {
return payUserCount;
}
public void setPayUserCount(Integer payUserCount) {
this.payUserCount = payUserCount;
}
@Override
public String toString() {
return "ProvinceTop10VO{" +
"province='" + province + '\'' +
", totalCount=" + totalCount +
", codeUserCount=" + codeUserCount +
", payUserCount=" + payUserCount +
'}';
}
}
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
<insert id="insert" useGeneratedKeys="true" parameterType="bookAuthUser"> <insert id="insert" useGeneratedKeys="true" parameterType="bookAuthUser">
INSERT INTO BOOK_AUTH_USER( INSERT INTO BOOK_AUTH_USER(
BOOK_ID, CHANNEL_ID,ADVISER_ID,WECHAT_USER_ID,MONTHS,IS_AUTH_CODE, CREATED_DATE,CREATED_USER, CREATED_TIME) BOOK_ID, CHANNEL_ID,ADVISER_ID,WECHAT_USER_ID,MONTHS,province,city,IS_AUTH_CODE, CREATED_DATE,CREATED_USER, CREATED_TIME)
VALUES VALUES
(#{bookId,jdbcType=BIGINT}, #{channelId,jdbcType=BIGINT}, #{adviserId,jdbcType=BIGINT}, (#{bookId,jdbcType=BIGINT}, #{channelId,jdbcType=BIGINT}, #{adviserId,jdbcType=BIGINT},
#{wechatUserId}, #{months}, #{isAuthCode},NOW(), #{adviserId}, NOW()) #{wechatUserId}, #{months}, #{province}, #{city}, #{isAuthCode},NOW(), #{adviserId}, NOW())
</insert> </insert>
<select id="getAuthUserCount" resultType="bookAuthCodeUserVO" parameterType="map"> <select id="getAuthUserCount" resultType="bookAuthCodeUserVO" parameterType="map">
...@@ -73,15 +73,18 @@ ...@@ -73,15 +73,18 @@
AND AND
ADVISER_ID = #{adviserId, jdbcType=BIGINT} ADVISER_ID = #{adviserId, jdbcType=BIGINT}
AND created_date <![CDATA[ > ]]> #{startDate} AND created_date <![CDATA[ < ]]> #{endDate} AND created_date <![CDATA[ > ]]> #{startDate} AND created_date <![CDATA[ < ]]> #{endDate}
<if test="province!=null">
AND PROVINCE = #{province}
</if>
GROUP BY created_date GROUP BY created_date
</select> </select>
<select id="listSixMonth" resultType="sixMonthCountVO" parameterType="map"> <select id="listTop10ByBook" resultType="provinceTop10VO" parameterType="map">
SELECT SELECT
COUNT(1) totalCount, COUNT(1) totalCount,
IFNULL(SUM(is_auth_code),0) payUserCount, IFNULL(SUM(is_auth_code),0) payUserCount,
months as date province
FROM FROM
BOOK_AUTH_USER BOOK_AUTH_USER
WHERE WHERE
...@@ -90,11 +93,16 @@ ...@@ -90,11 +93,16 @@
CHANNEL_ID = #{channelId, jdbcType=BIGINT} CHANNEL_ID = #{channelId, jdbcType=BIGINT}
AND AND
ADVISER_ID = #{adviserId, jdbcType=BIGINT} ADVISER_ID = #{adviserId, jdbcType=BIGINT}
<if test="months!=null">
AND months in AND months in
<foreach collection="months" item="item" open="(" separator="," close=")"> <foreach collection="months" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
GROUP BY months </if>
<if test="startDate!=null">
AND created_date <![CDATA[ > ]]> #{startDate} AND created_date <![CDATA[ < ]]> #{endDate}
</if>
GROUP BY province order by totalCount desc limit 10
</select> </select>
<select id="getAuthUserTotalCount" resultType="bookAuthCodeUserVO" parameterType="list" > <select id="getAuthUserTotalCount" resultType="bookAuthCodeUserVO" parameterType="list" >
...@@ -111,4 +119,28 @@ ...@@ -111,4 +119,28 @@
</if> </if>
</select> </select>
<select id="listSixMonth" resultType="sixMonthCountVO" parameterType="map">
SELECT
COUNT(1) totalCount,
IFNULL(SUM(is_auth_code),0) payUserCount,
months as date
FROM
BOOK_AUTH_USER
WHERE
BOOK_ID = #{bookId, jdbcType=BIGINT}
AND
CHANNEL_ID = #{channelId, jdbcType=BIGINT}
AND
ADVISER_ID = #{adviserId, jdbcType=BIGINT}
AND months in
<foreach collection="months" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="province!=null">
AND PROVINCE = #{province}
</if>
GROUP BY months
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -116,7 +116,8 @@ ...@@ -116,7 +116,8 @@
<pcloud-facade-raystask.version>2.1.0-RELEASE</pcloud-facade-raystask.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-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-RELEASE</pcloud-facade-tradecenter.version>
</properties> <pcloud-facade-readercenter.version>2.1.0-RELEASE</pcloud-facade-readercenter.version>
</properties>
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
......
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