Commit 536594d4 by gaopeng

平台端广告位管理

parent a0a95455
...@@ -3,13 +3,12 @@ ...@@ -3,13 +3,12 @@
*/ */
package com.pcloud.book.book.dto; package com.pcloud.book.book.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
/** /**
* @描述:书籍实体DTO * @描述:书籍实体DTO
...@@ -401,6 +400,42 @@ public class BookDto extends BaseDto { ...@@ -401,6 +400,42 @@ public class BookDto extends BaseDto {
@ApiModelProperty("图书状态") @ApiModelProperty("图书状态")
private Integer bookStatus; private Integer bookStatus;
/**
* 是否开启广告位权限
*/
private Boolean isOpen;
/**
* 出版ID
*/
private Long agentId;
/**
* 出版社名称
*/
private String agentName;
/**
* 投放时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date distributionTime;
/**
* 曝光量
*/
private Long exposureNum;
/**
* 点击量
*/
private Long clickNum;
/**
* 公众号名称
*/
private String officialAccountsName;
public String getQrRemark() { public String getQrRemark() {
return qrRemark; return qrRemark;
} }
...@@ -441,9 +476,13 @@ public class BookDto extends BaseDto { ...@@ -441,9 +476,13 @@ public class BookDto extends BaseDto {
this.location = location; this.location = location;
} }
public String getTransferor() { return transferor; } public String getTransferor() {
return transferor;
}
public void setTransferor(String transferor) { this.transferor = transferor; } public void setTransferor(String transferor) {
this.transferor = transferor;
}
public Long getNoAuditNum() { public Long getNoAuditNum() {
return noAuditNum; return noAuditNum;
...@@ -1017,6 +1056,62 @@ public class BookDto extends BaseDto { ...@@ -1017,6 +1056,62 @@ public class BookDto extends BaseDto {
this.bookStatus = bookStatus; this.bookStatus = bookStatus;
} }
public Boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(Boolean isOpen) {
this.isOpen = isOpen;
}
public Long getAgentId() {
return agentId;
}
public void setAgentId(Long agentId) {
this.agentId = agentId;
}
public String getAgentName() {
return agentName;
}
public void setAgentName(String agentName) {
this.agentName = agentName;
}
public Date getDistributionTime() {
return distributionTime;
}
public void setDistributionTime(Date distributionTime) {
this.distributionTime = distributionTime;
}
public Long getExposureNum() {
return exposureNum;
}
public void setExposureNum(Long exposureNum) {
this.exposureNum = exposureNum;
}
public Long getClickNum() {
return clickNum;
}
public void setClickNum(Long clickNum) {
this.clickNum = clickNum;
}
public String getOfficialAccountsName() {
return officialAccountsName;
}
public void setOfficialAccountsName(String officialAccountsName) {
this.officialAccountsName = officialAccountsName;
}
@Override @Override
public String toString() { public String toString() {
return "BookDto{" + return "BookDto{" +
...@@ -1097,6 +1192,13 @@ public class BookDto extends BaseDto { ...@@ -1097,6 +1192,13 @@ public class BookDto extends BaseDto {
", sceneName='" + sceneName + '\'' + ", sceneName='" + sceneName + '\'' +
", qrRemark='" + qrRemark + '\'' + ", qrRemark='" + qrRemark + '\'' +
", bookStatus=" + bookStatus + ", bookStatus=" + bookStatus +
", isOpen=" + isOpen +
", agentId=" + agentId +
", agentName='" + agentName + '\'' +
", distributionTime=" + distributionTime +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", officialAccountsName='" + officialAccountsName + '\'' +
'}'; '}';
} }
} }
package com.pcloud.book.advertising.biz;
import java.util.List;
import java.util.Map;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam;
/**
* Description 广告位业务逻辑层接口
* @author PENG
* @date 2019/2/28
*/
public interface AdvertisingSpaceBiz {
/**
* 创建广告位
* @param advertisingSpace 广告位实体
* @return
* @throws BizException
*/
Long create(AdvertisingSpace advertisingSpace) throws BizException;
/**
* 修改广告位
* @param advertisingSpace 广告位实体
* @return
* @throws BizException
*/
void update(AdvertisingSpace advertisingSpace) throws BizException;
/**
* 停用广告位
* @param advertisingSpace 广告位实体
* @throws BizException
*/
void stop(AdvertisingSpace advertisingSpace) throws BizException;
/**
* 删除广告位
* @param advertisingSpace 广告位实体
* @throws BizException
*/
void delete(AdvertisingSpace advertisingSpace) throws BizException;
/**
* 获取广告位信息
* @param adId 广告位ID
* @return
* @throws BizException
*/
AdvertisingSpaceDTO get(Long adId) throws BizException;
/**
* 投放书刊
* @param book 广告位书刊实体
* @return
* @throws BizException
*/
void distributeBook(AdvertisingDistributionBook book) throws BizException;
/**
* 获取出版社书刊权限
* @param agentId 出版社ID
* @return
* @throws BizException
*/
Boolean getAgentPermission(Long agentId) throws BizException;
/**
* 设置出版社书刊权限
* @param agentPermission 广告位出版权限实体
* @throws BizException
*/
void setAgentPermission(AdvertisingAgentPermission agentPermission) throws BizException;
/**
* 设置编辑书刊权限
* @param adviserPermission 广告位编辑权限实体
* @throws BizException
*/
void setAdviserPermission(AdvertisingAdviserPermission adviserPermission) throws BizException;
/**
* 编辑端获取书刊列表
* @param paramMap 参数Map
* @param pageParam 分页参数
* @param adviserId 编辑ID
* @return
* @throws BizException
*/
PageBean listBook4Adviser(Map<String, Object> paramMap, PageParam pageParam, Long adviserId) throws BizException;
/**
* 平台端获取某编辑书刊列表
* @param paramMap 参数Map
* @param pageParam 分页参数
* @param adviserId 编辑ID
* @return
* @throws BizException
*/
PageBean listBook4Platform(Map<String, Object> paramMap, PageParam pageParam, Long adviserId) throws BizException;
/**
* 获取广告位投放书刊列表
* @param adId 广告位ID
* @param name 书刊名称
* @param pageParam 分页参数
* @return
* @throws BizException
*/
PageBean distributionBookList(Long adId, String name, PageParam pageParam) throws BizException;
/**
* 获取广告位投放作品/应用数据统计
* @param adId 广告位ID
* @param pageParam 分页参数
* @return
* @throws BizException
*/
PageBean distributionAppStatics(Long adId, PageParam pageParam) throws BizException;
/**
* 获取广告位投放时间统计
* @param adId 广告位ID
* @param day 天数
* @return
* @throws BizException
*/
List<Object> distributionDateStatics(Long adId, Integer day) throws BizException;
/**
* 获取广告位列表
* @param name 名称
* @param pageParam 分页参数
* @return
* @throws BizException
*/
PageBean list(String name, PageParam pageParam) throws BizException;
/**
* 客户端获取书刊配置的广告位信息
* @param sceneId 二维码ID
* @param adviserId 编辑ID
* @param channelId 运营ID
* @return
* @throws BizException
*/
AdvertisingSpaceDTO get4Wechat(Long sceneId, Long adviserId, Long channelId) throws BizException;
/**
* 曝光量埋点
* @param advertisingExposureRecord 广告位曝光实体
* @throws BizException
*/
void addExposureTrack(AdvertisingExposureRecord advertisingExposureRecord) throws BizException;
/**
* 点击量埋点
* @param advertisingClickRecord 广告位点击实体
* @throws BizException
*/
void addClickTrack(AdvertisingClickRecord advertisingClickRecord) throws BizException;
}
package com.pcloud.book.advertising.biz.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
import com.pcloud.book.advertising.dao.AdvertisingAdviserPermissionDao;
import com.pcloud.book.advertising.dao.AdvertisingAgentPermissionDao;
import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao;
import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao;
import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao;
import com.pcloud.book.advertising.dao.AdvertisingSpaceDao;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.dto.DistributionAppDTO;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.enums.AdPositionEnum;
import com.pcloud.book.advertising.enums.AdSourceEnum;
import com.pcloud.book.advertising.enums.DistributionTypeEnum;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.resourcecenter.product.dto.Product4BookDTO;
/**
* Description 广告位业务逻辑层接口实现类
* @author PENG
* @date 2019/2/28
*/
@Component("advertisingSpaceBiz")
public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
@Autowired
private AdvertisingSpaceDao advertisingSpaceDao;
@Autowired
private AdviserConsr adviserConsr;
@Autowired
private AdvertisingDistributionBookDao advertisingDistributionBookDao;
@Autowired
private BookBiz bookBiz;
@Autowired
private AdvertisingAgentPermissionDao advertisingAgentPermissionDao;
@Autowired
private BookDao bookDao;
@Autowired
private BookSet bookSet;
@Autowired
private AdvertisingAdviserPermissionDao advertisingAdviserPermissionDao;
@Autowired
private QrcodeSceneService qrcodeSceneService;
@Autowired
private ChannelConsr channelConsr;
@Autowired
private AdvertisingExposureRecordDao advertisingExposureRecordDao;
@Autowired
private AdvertisingClickRecordDao advertisingClickRecordDao;
@Autowired
private ProductConsr productConsr;
@Autowired
private AppConsr appConsr;
/**
* 创建广告位
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ParamLog("创建广告位")
public Long create(AdvertisingSpace advertisingSpace) throws BizException {
if (null == advertisingSpace.getAdName() || null == advertisingSpace.getAdPosition()
|| null == advertisingSpace.getAdSource() || null == advertisingSpace.getAdLink()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
if (!AdPositionEnum.checkCodeExist(advertisingSpace.getAdPosition())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}
if (!ArrayUtils.contains(AdSourceEnum.AD_SOURCE_GATHER, advertisingSpace.getAdSource())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告来源选择有误!");
}
advertisingSpace.setDistributionType(DistributionTypeEnum.SIGN_BOOK.value);
advertisingSpace.setIsOpen(true);
advertisingSpaceDao.insert(advertisingSpace);
return advertisingSpace.getId();
}
/**
* 修改广告位
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ParamLog(value = "修改广告位", isAfterReturn = false)
public void update(AdvertisingSpace advertisingSpace) throws BizException {
if (null == advertisingSpace.getId() || null == advertisingSpace.getAdName() || null == advertisingSpace.getAdPosition()
|| null == advertisingSpace.getAdSource() || null == advertisingSpace.getAdLink()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
if (!AdPositionEnum.checkCodeExist(advertisingSpace.getAdPosition())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}
if (!ArrayUtils.contains(AdSourceEnum.AD_SOURCE_GATHER, advertisingSpace.getAdSource())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告来源选择有误!");
}
AdvertisingSpace space = advertisingSpaceDao.getById(advertisingSpace.getId());
if (null == space) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不存在或已删除!");
}
advertisingSpaceDao.update(advertisingSpace);
}
/**
* 停用广告位
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ParamLog(value = "停用广告位", isAfterReturn = false)
public void stop(AdvertisingSpace advertisingSpace) throws BizException {
if (null == advertisingSpace.getId()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
AdvertisingSpace space = advertisingSpaceDao.getById(advertisingSpace.getId());
if (null == space) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不存在或已删除!");
}
if (!space.getIsOpen()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位已停用!");
}
advertisingSpace.setIsOpen(false);
advertisingSpaceDao.update(advertisingSpace);
}
/**
* 删除广告位
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ParamLog(value = "删除广告位", isAfterReturn = false)
public void delete(AdvertisingSpace advertisingSpace) throws BizException {
if (null == advertisingSpace.getId()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
AdvertisingSpace space = advertisingSpaceDao.getById(advertisingSpace.getId());
if (null == space) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不存在或已删除!");
}
if (DistributionTypeEnum.NO_SIGN_BOOK.value.equals(space.getDistributionType())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不能删除!");
} else {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", advertisingSpace.getId());
Boolean hasBook = (Boolean) advertisingDistributionBookDao.getBy(paramMap, "checkAdSpaceHasBook");
if (null != hasBook && hasBook) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不能删除!");
}
}
advertisingSpaceDao.deleteById(advertisingSpace.getId());
}
/**
* 获取广告位信息
*/
@Override
@ParamLog(value = "获取广告位信息")
public AdvertisingSpaceDTO get(Long adId) throws BizException {
return advertisingSpaceDao.getDTOById(adId);
}
/**
* 投放书刊
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ParamLog(value = "投放书刊", isAfterReturn = false)
public void distributeBook(AdvertisingDistributionBook book) throws BizException {
if (null == book.getAdId() || null == book.getDistributionType()
|| !ArrayUtils.contains(DistributionTypeEnum.DISTRIBUTION_TYPE_GATHER, book.getDistributionType())
|| (DistributionTypeEnum.SIGN_BOOK.value.equals(book.getDistributionType()) && (ListUtils.isEmpty(book.getBooks()) || null == book.getAdviserId()))) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
if (DistributionTypeEnum.NO_SIGN_BOOK.value.equals(book.getDistributionType())) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", book.getAdId());
AdvertisingSpaceDTO spaceDTO = (AdvertisingSpaceDTO) advertisingSpaceDao.getBy(paramMap, "getNoSignBookAd");
if (null != spaceDTO) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "只能创建一个不指定书刊的广告位!");
}
}
AdvertisingSpace space = new AdvertisingSpace();
space.setId(book.getAdId());
space.setDistributionType(book.getDistributionType());
advertisingSpaceDao.update(space);
if (DistributionTypeEnum.SIGN_BOOK.value.equals(book.getDistributionType())) {
boolean paramError = book.getBooks().stream().anyMatch(bookAdviser -> null == bookAdviser.getBookId() || null == bookAdviser.getChannelId());
if (paramError) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
List<Long> bookIds = book.getBooks().stream().map(BookAdviser::getBookId).collect(Collectors.toList());
List<Long> existIds = advertisingDistributionBookDao.checkBookIdExist(bookIds);
if (!ListUtils.isEmpty(existIds)) {
Long bookId = existIds.get(0);
BookDto bookDto = bookBiz.getBaseById(bookId);
throw new BookBizException(BookBizException.PARAM_IS_ERROR, StringUtil.addBracket(bookDto.getBookName()) + "等" + existIds.size() + "本书已投放广告位!");
}
List<AdvertisingDistributionBook> list = new ArrayList<>();
Long agentId = adviserConsr.getAgentIdByAdviser(book.getAdviserId());
for (BookAdviser bookAdviser : book.getBooks()) {
AdvertisingDistributionBook distributionBook = new AdvertisingDistributionBook();
distributionBook.setAdId(book.getAdId());
distributionBook.setBookId(bookAdviser.getBookId());
distributionBook.setChannelId(bookAdviser.getChannelId());
distributionBook.setAdviserId(book.getAdviserId());
distributionBook.setAgentId(agentId);
list.add(distributionBook);
}
advertisingDistributionBookDao.batchInsert(list);
}
}
/**
* 获取出版社书刊权限
*/
@Override
@ParamLog("获取出版社书刊权限")
public Boolean getAgentPermission(Long agentId) throws BizException {
AdvertisingAgentPermission permission = advertisingAgentPermissionDao.getByAgentId(agentId);
return null == permission ? true : permission.getIsOpen();
}
/**
* 设置出版社书刊权限
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ParamLog(value = "设置出版社书刊权限", isAfterReturn = false)
public void setAgentPermission(AdvertisingAgentPermission agentPermission) throws BizException {
if (null == agentPermission.getAgentId() || null == agentPermission.getIsOpen()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
AdvertisingAgentPermission permission = advertisingAgentPermissionDao.getByAgentId(agentPermission.getAgentId());
if (null == permission) {
advertisingAgentPermissionDao.insert(agentPermission);
} else {
agentPermission.setId(permission.getId());
advertisingAgentPermissionDao.update(agentPermission);
}
}
/**
* 设置编辑书刊权限
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ParamLog(value = "设置编辑书刊权限", isAfterReturn = false)
public void setAdviserPermission(AdvertisingAdviserPermission adviserPermission) throws BizException {
if (null == adviserPermission.getAdviserId() || null == adviserPermission.getIsOpen()
|| (!adviserPermission.getIsBatchOperation() && (null == adviserPermission.getBookId() || null == adviserPermission.getChannelId()))) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adviserId", adviserPermission.getAdviserId());
if (!adviserPermission.getIsBatchOperation()) {
paramMap.put("bookId", adviserPermission.getBookId());
paramMap.put("channelId", adviserPermission.getChannelId());
AdvertisingAdviserPermission permission = (AdvertisingAdviserPermission) advertisingAdviserPermissionDao.getBy(paramMap, "getByAdviserId");
if (null == permission) {
advertisingAdviserPermissionDao.insert(adviserPermission);
} else {
adviserPermission.setId(permission.getId());
advertisingAdviserPermissionDao.update(adviserPermission);
}
} else {
// 删除编辑所有数据
advertisingAdviserPermissionDao.deleteByAdviserId(adviserPermission.getAdviserId());
List<BookDto> bookList = bookDao.listBookIdAndChannelId4Adviser(paramMap);
if (!ListUtils.isEmpty(bookList)) {
List<AdvertisingAdviserPermission> list = new ArrayList<>();
for (BookDto bookDto : bookList) {
AdvertisingAdviserPermission permission = new AdvertisingAdviserPermission();
permission.setAdviserId(adviserPermission.getAdviserId());
permission.setIsOpen(adviserPermission.getIsOpen());
permission.setBookId(bookDto.getBookId());
permission.setChannelId(bookDto.getChannelId());
list.add(permission);
}
advertisingAdviserPermissionDao.batchInsert(list);
}
}
}
/**
* 编辑端获取书刊列表
*/
@Override
public PageBean listBook4Adviser(Map<String, Object> paramMap, PageParam pageParam, Long adviserId) throws BizException {
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
paramMap.put("agentId", agentId);
PageBean pageBean = bookDao.listPage(pageParam, paramMap, "listBook4Adviser");
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) {
return new PageBean(0, 0, new ArrayList<>());
}
// 填充渠道基础信息
bookSet.setChannelInfoList(pageBean.getRecordList());
return pageBean;
}
/**
* 平台端获取某编辑书刊列表
*/
@Override
public PageBean listBook4Platform(Map<String, Object> paramMap, PageParam pageParam, Long adviserId) throws BizException {
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
paramMap.put("agentId", agentId);
PageBean pageBean = bookDao.listPage(pageParam, paramMap, "listBook4Platform");
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) {
return new PageBean(0, 0, new ArrayList<>());
}
return pageBean;
}
/**
* 获取广告位投放书刊列表
*/
@Override
public PageBean distributionBookList(Long adId, String name, PageParam pageParam) throws BizException {
AdvertisingSpace space = advertisingSpaceDao.getById(adId);
if (null == space) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不存在或已删除!");
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", adId);
paramMap.put("name", StringUtil.isEmpty(name) ? null : name);
PageBean pageBean;
if (DistributionTypeEnum.SIGN_BOOK.value.equals(space.getDistributionType())) {
pageBean = bookDao.listPage(pageParam, paramMap, "listBook4AdvertisingSpace");
} else {
pageBean = bookDao.listPage(pageParam, paramMap, "listBook4AdvertisingSpaceNoSignBook");
}
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) {
return new PageBean(0, 0, new ArrayList<>());
}
// 设置编辑名称
bookSet.setAdviserName4BookDto(pageBean.getRecordList());
// 设置出版名称
bookSet.setAgentName4BookDto(pageBean.getRecordList());
// 填充渠道公众号信息
bookSet.setChannelOfficialAccountInfoList(pageBean.getRecordList());
for (Object object : pageBean.getRecordList()) {
BookDto bookDto = (BookDto) object;
if (!DistributionTypeEnum.SIGN_BOOK.value.equals(space.getDistributionType())) {
bookDto.setDistributionTime(space.getCreateTime());
}
// 曝光量
Long exposureNum = getExposureNumByBookId(adId, bookDto.getBookId(), bookDto.getAdviserId(), bookDto.getChannelId());
bookDto.setExposureNum(exposureNum);
// 点击量
Long clickNum = getClickNumByBookId(adId, bookDto.getBookId(), bookDto.getAdviserId(), bookDto.getChannelId());
bookDto.setClickNum(clickNum);
}
return pageBean;
}
/**
* 获取广告位投放作品/应用数据统计
*/
@Override
public PageBean distributionAppStatics(Long adId, PageParam pageParam) throws BizException {
AdvertisingSpace space = advertisingSpaceDao.getById(adId);
if (null == space) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不存在或已删除!");
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", adId);
PageBean pageBean = advertisingExposureRecordDao.listPage(pageParam, paramMap, "distributionAppStatics");
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) {
return new PageBean(0, 0, new ArrayList<>());
}
List<Long> productIds = new ArrayList<>();
List<Long> appIds = new ArrayList<>();
for (Object object : pageBean.getRecordList()) {
DistributionAppDTO dto = (DistributionAppDTO) object;
if ("PRODUCT".equals(dto.getFromType())) {
productIds.add(dto.getFromId());
} else if ("APP".equals(dto.getFromType())) {
appIds.add(dto.getFromId());
}
}
Map<Long, Product4BookDTO> productMap = productConsr.getProBasesWithSceneByIds(productIds);
Map<Long, AppDto> appMap = appConsr.getBaseByIds(appIds);
for (Object object : pageBean.getRecordList()) {
DistributionAppDTO dto = (DistributionAppDTO) object;
if ("PRODUCT".equals(dto.getFromType()) && !MapUtils.isEmpty(productMap) && productMap.containsKey(dto.getFromId())) {
Product4BookDTO product4BookDTO = productMap.get(dto.getFromId());
dto.setTitle(product4BookDTO.getProductName());
dto.setSceneCode(product4BookDTO.getProductSceneCode());
dto.setSceneName(product4BookDTO.getProductSceneName());
dto.setCreateUser(product4BookDTO.getMerchantId());
dto.setCreateUserName(product4BookDTO.getMerchantName());
dto.setCreateRole(product4BookDTO.getIsSuperMerchant() ? "超级作者" : "普通作者");
} else if ("APP".equals(dto.getFromType()) && !MapUtils.isEmpty(appMap) && appMap.containsKey(dto.getFromId())) {
AppDto appDto = appMap.get(dto.getFromId());
dto.setTitle(appDto.getTitle());
dto.setSceneCode(appDto.getSceneCode());
dto.setSceneName(appDto.getSceneName());
dto.setCreateUser(appDto.getCreatedUser());
dto.setCreateUserName(appDto.getAdviserName());
dto.setCreateRole("编辑");
}
}
return pageBean;
}
/**
* 获取广告位投放时间统计
*/
@Override
@ParamLog("获取广告位投放时间统计")
public List<Object> distributionDateStatics(Long adId, Integer day) throws BizException {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", adId);
Date startTime = DateUtils.addDay(new Date(), -day);
Date endTime = DateUtils.addDay(new Date(), -1);
paramMap.put("collectDates", CommonUtils.collectLocalDates(startTime, endTime));
return advertisingExposureRecordDao.listBy(paramMap, "distributionDateStatics");
}
/**
* 获取书刊广告位曝光量
*/
private Long getExposureNumByBookId(Long adId, Long bookId, Long adviserId, Long channelId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", adId);
paramMap.put("bookId", bookId);
paramMap.put("adviserId", adviserId);
paramMap.put("channelId", channelId);
Long exposureNum = (Long) advertisingExposureRecordDao.getBy(paramMap, "getExposureNum");
return null == exposureNum ? 0L : exposureNum;
}
/**
* 获取书刊广告位点击量
*/
private Long getClickNumByBookId(Long adId, Long bookId, Long adviserId, Long channelId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", adId);
paramMap.put("bookId", bookId);
paramMap.put("adviserId", adviserId);
paramMap.put("channelId", channelId);
Long clickNum = (Long) advertisingClickRecordDao.getBy(paramMap, "getClickNum");
return null == clickNum ? 0L : clickNum;
}
/**
* 获取书刊广告位曝光量
*/
private Long getExposureNumByAdId(Long adId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", adId);
Long exposureNum = (Long) advertisingExposureRecordDao.getBy(paramMap, "getExposureNum");
return null == exposureNum ? 0L : exposureNum;
}
/**
* 获取书刊广告位点击量
*/
private Long getClickNumByAdId(Long adId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", adId);
Long clickNum = (Long) advertisingClickRecordDao.getBy(paramMap, "getClickNum");
return null == clickNum ? 0L : clickNum;
}
/**
* 获取广告位列表
*/
@Override
@ParamLog("获取广告位列表")
public PageBean list(String name, PageParam pageParam) throws BizException {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("name", StringUtil.isEmpty(name) ? null : name);
PageBean pageBean = advertisingSpaceDao.listPage(pageParam, paramMap, "list");
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) {
return new PageBean(0, 0, new ArrayList<>());
}
// 填充投放书籍
for (Object object : pageBean.getRecordList()) {
AdvertisingSpaceDTO spaceDTO = (AdvertisingSpaceDTO) object;
if (null == spaceDTO) {
continue;
}
spaceDTO.setExposureNum(getExposureNumByAdId(spaceDTO.getId()));
spaceDTO.setClickNum(getClickNumByAdId(spaceDTO.getId()));
if (DistributionTypeEnum.SIGN_BOOK.value.equals(spaceDTO.getDistributionType())) {
List<AdvertisingDistributionBook> list = advertisingDistributionBookDao.getByAdId(spaceDTO.getId());
if (!ListUtils.isEmpty(list)) {
spaceDTO.setBookNum(list.size());
Long bookId = list.get(0).getBookId();
BookDto bookDto = bookBiz.getBaseById(bookId);
spaceDTO.setBookName(StringUtil.addBracket(bookDto.getBookName()));
} else {
spaceDTO.setBookNum(0);
}
}
}
return pageBean;
}
/**
* 客户端获取书刊配置的广告位信息
*/
@Override
@ParamLog("客户端获取书刊配置的广告位信息")
public AdvertisingSpaceDTO get4Wechat(Long sceneId, Long adviserId, Long channelId) throws BizException {
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
Long bookId = ResponseHandleUtil.parseResponse(qrcodeSceneService.getBookId4SceneId(sceneId), Long.class);
if (null == agentId || null == bookId) {
return new AdvertisingSpaceDTO();
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookId", bookId);
paramMap.put("adviserId", adviserId);
paramMap.put("channelId", channelId);
paramMap.put("agentId", agentId);
Boolean bookIsOpen = (Boolean) advertisingAdviserPermissionDao.getBy(paramMap, "checkBookOpen");
if (null == bookIsOpen || !bookIsOpen) {
return new AdvertisingSpaceDTO();
}
AdvertisingSpaceDTO spaceDTO = (AdvertisingSpaceDTO) advertisingSpaceDao.getBy(paramMap, "getDTOByBookId");
if (null == spaceDTO) {
spaceDTO = (AdvertisingSpaceDTO) advertisingSpaceDao.getBy(paramMap, "getNoSignBookAd");
}
if (null != spaceDTO) {
spaceDTO.setBookId(bookId);
}
return spaceDTO;
}
/**
* 曝光量埋点
*/
@Override
@ParamLog(value = "曝光量埋点", isAfterReturn = false)
public void addExposureTrack(AdvertisingExposureRecord advertisingExposureRecord) throws BizException {
Long agentId = channelConsr.getParentId(advertisingExposureRecord.getChannelId());
advertisingExposureRecord.setAgentId(agentId);
advertisingExposureRecordDao.insert(advertisingExposureRecord);
}
/**
* 点击量埋点
*/
@Override
@ParamLog(value = "点击量埋点", isAfterReturn = false)
public void addClickTrack(AdvertisingClickRecord advertisingClickRecord) throws BizException {
Long agentId = channelConsr.getParentId(advertisingClickRecord.getChannelId());
advertisingClickRecord.setAgentId(agentId);
advertisingClickRecordDao.insert(advertisingClickRecord);
}
}
package com.pcloud.book.advertising.dao;
import java.util.List;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告位编辑书刊权限数据访问层接口
* @author PENG
* @date 2019/2/28
*/
public interface AdvertisingAdviserPermissionDao extends BaseDao<AdvertisingAdviserPermission> {
/**
* 批量插入
* @param list 列表
* @return
*/
long batchInsert(List<AdvertisingAdviserPermission> list);
/**
* 根据编辑ID删除
* @param adviserId 编辑ID
* @return
*/
long deleteByAdviserId(Long adviserId);
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告位出版书刊权限数据访问层接口
* @author PENG
* @date 2019/2/28
*/
public interface AdvertisingAgentPermissionDao extends BaseDao<AdvertisingAgentPermission> {
/**
* 获取出版社权限
* @param agentId 出版社ID
* @return
*/
AdvertisingAgentPermission getByAgentId(Long agentId);
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告位点击记录数据访问层接口
* @author PENG
* @date 2019/2/28
*/
public interface AdvertisingClickRecordDao extends BaseDao<AdvertisingClickRecord> {
}
package com.pcloud.book.advertising.dao;
import java.util.List;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告位投放书籍数据访问层接口
* @author PENG
* @date 2019/2/28
*/
public interface AdvertisingDistributionBookDao extends BaseDao<AdvertisingDistributionBook> {
/**
* 批量新增
* @param list 列表
* @return
*/
long batchInsert(List<AdvertisingDistributionBook> list);
/**
* 校验书刊是否已投放
* @param list 列表
* @return
*/
List<Long> checkBookIdExist(List<Long> list);
/**
* 获取广告位投放的书刊列表
* @param adId 广告位ID
* @return
*/
List<AdvertisingDistributionBook> getByAdId(Long adId);
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告位曝光记录数据访问层接口
* @author PENG
* @date 2019/2/28
*/
public interface AdvertisingExposureRecordDao extends BaseDao<AdvertisingExposureRecord> {
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告位数据访问层接口
* @author PENG
* @date 2019/2/28
*/
public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> {
/**
* 获取广告位信息
* @param adId 广告位ID
* @return
*/
AdvertisingSpaceDTO getDTOById(Long adId);
}
package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingAdviserPermissionDao;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告位编辑书刊权限数据访问层接口实现类
* @author PENG
* @date 2019/2/28
*/
@Repository("advertisingAdviserPermissionDao")
public class AdvertisingAdviserPermissionDaoImpl extends BaseDaoImpl<AdvertisingAdviserPermission> implements AdvertisingAdviserPermissionDao {
/**
* 批量插入
*/
@Override
public long batchInsert(List<AdvertisingAdviserPermission> list) {
return super.getSqlSession().insert(getStatement("batchInsert"), list);
}
/**
* 根据编辑ID删除
*/
@Override
public long deleteByAdviserId(Long adviserId) {
return super.getSqlSession().delete(getStatement("deleteByAdviserId"), adviserId);
}
}
package com.pcloud.book.advertising.dao.impl;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingAgentPermissionDao;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告位出版书刊权限数据访问层接口实现类
* @author PENG
* @date 2019/2/28
*/
@Repository("advertisingAgentPermissionDao")
public class AdvertisingAgentPermissionDaoImpl extends BaseDaoImpl<AdvertisingAgentPermission> implements AdvertisingAgentPermissionDao {
/**
* 获取出版社权限
*/
@Override
public AdvertisingAgentPermission getByAgentId(Long agentId) {
return super.getSqlSession().selectOne(getStatement("getByAgentId"), agentId);
}
}
package com.pcloud.book.advertising.dao.impl;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告位点击记录数据访问层接口实现类
* @author PENG
* @date 2019/2/28
*/
@Repository("advertisingClickRecordDao")
public class AdvertisingClickRecordDaoImpl extends BaseDaoImpl<AdvertisingClickRecord> implements AdvertisingClickRecordDao {
}
package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告位投放书籍数据访问层接口实现类
* @author PENG
* @date 2019/2/28
*/
@Repository("advertisingDistributionBookDao")
public class AdvertisingDistributionBookDaoImpl extends BaseDaoImpl<AdvertisingDistributionBook> implements AdvertisingDistributionBookDao {
/**
* 批量新增
*/
@Override
public long batchInsert(List<AdvertisingDistributionBook> list) {
return super.getSqlSession().insert(getStatement("batchInsert"), list);
}
/**
* 校验书刊是否已投放
*/
@Override
public List<Long> checkBookIdExist(List<Long> list) {
return super.getSqlSession().selectList(getStatement("checkBookIdExist"), list);
}
/**
* 获取广告位投放的书刊列表
*/
@Override
public List<AdvertisingDistributionBook> getByAdId(Long adId) {
return super.getSqlSession().selectList(getStatement("getByAdId"), adId);
}
}
package com.pcloud.book.advertising.dao.impl;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告位曝光记录数据访问层接口实现类
* @author PENG
* @date 2019/2/28
*/
@Repository("advertisingExposureRecordDao")
public class AdvertisingExposureRecordDaoImpl extends BaseDaoImpl<AdvertisingExposureRecord> implements AdvertisingExposureRecordDao {
}
package com.pcloud.book.advertising.dao.impl;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingSpaceDao;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告位数据访问层接口实现类
* @author PENG
* @date 2019/2/28
*/
@Repository("advertisingSpaceDao")
public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> implements AdvertisingSpaceDao {
@Override
public AdvertisingSpaceDTO getDTOById(Long adId) {
return super.getSqlSession().selectOne(getStatement("getDTOById"), adId);
}
}
package com.pcloud.book.advertising.dto;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
/**
* @author PENG
*/
public class AdvertisingSpaceDTO extends BaseDto {
private static final long serialVersionUID = -1774181367397964304L;
/**
* advertising_space.id (唯一标识)
*/
private Long id;
/**
* advertising_space.ad_name (广告位名称)
*/
private String adName;
/**
* advertising_space.ad_position (广告位置)
*/
private String adPosition;
/**
* advertising_space.ad_source (广告来源)
*/
private String adSource;
/**
* advertising_space.ad_link (广告位链接)
*/
private String adLink;
/**
* advertising_space.source_id (对方id)
*/
private String sourceId;
/**
* advertising_space.ad_slogan (广告位文案)
*/
private String adSlogan;
/**
* advertising_space.ad_pic (广告位图片)
*/
private String adPic;
/**
* advertising_space.distribution_type (投放方式(0:指定书刊;1:不指定书刊))
*/
private Integer distributionType;
/**
* advertising_space.exposure_num (曝光量)
*/
private Long exposureNum;
/**
* advertising_space.click_num (点击量)
*/
private Long clickNum;
/**
* advertising_space.create_time (创建时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* advertising_space.update_time (修改时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
* advertising_space.is_open (是否打开)
*/
private Boolean isOpen;
/**
* 投放书刊数量
*/
private Integer bookNum;
/**
* 投放书刊名称
*/
private String bookName;
/**
* 书刊ID
*/
private Long bookId;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getAdName() {
return adName;
}
public void setAdName(String adName) {
this.adName = adName;
}
public String getAdPosition() {
return adPosition;
}
public void setAdPosition(String adPosition) {
this.adPosition = adPosition;
}
public String getAdSource() {
return adSource;
}
public void setAdSource(String adSource) {
this.adSource = adSource;
}
public String getAdLink() {
return adLink;
}
public void setAdLink(String adLink) {
this.adLink = adLink;
}
public String getSourceId() {
return sourceId;
}
public void setSourceId(String sourceId) {
this.sourceId = sourceId;
}
public String getAdSlogan() {
return adSlogan;
}
public void setAdSlogan(String adSlogan) {
this.adSlogan = adSlogan;
}
public String getAdPic() {
return adPic;
}
public void setAdPic(String adPic) {
this.adPic = adPic;
}
public Integer getDistributionType() {
return distributionType;
}
public void setDistributionType(Integer distributionType) {
this.distributionType = distributionType;
}
public Long getExposureNum() {
return exposureNum;
}
public void setExposureNum(Long exposureNum) {
this.exposureNum = exposureNum;
}
public Long getClickNum() {
return clickNum;
}
public void setClickNum(Long clickNum) {
this.clickNum = clickNum;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(Boolean isOpen) {
this.isOpen = isOpen;
}
public Integer getBookNum() {
return bookNum;
}
public void setBookNum(Integer bookNum) {
this.bookNum = bookNum;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
@Override
public String toString() {
return "AdvertisingSpaceDTO{" +
"id=" + id +
", adName='" + adName + '\'' +
", adPosition='" + adPosition + '\'' +
", adSource='" + adSource + '\'' +
", adLink='" + adLink + '\'' +
", sourceId='" + sourceId + '\'' +
", adSlogan='" + adSlogan + '\'' +
", adPic='" + adPic + '\'' +
", distributionType=" + distributionType +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", createTime=" + createTime +
", updateTime=" + updateTime +
", isOpen=" + isOpen +
", bookNum=" + bookNum +
", bookName='" + bookName + '\'' +
", bookId=" + bookId +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.dto;
import java.io.Serializable;
/**
* @description 日期数量DTO
* @author PENG
* @date 2017年6月11日 下午2:08:30
* @version 1.0
*/
public class DateCountDTO implements Serializable {
private static final long serialVersionUID = 4234798666223706295L;
/**
* 日期
*/
private String date;
/**
* 曝光量
*/
private Long exposureNum;
/**
* 点击量
*/
private Long clickNum;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public Long getExposureNum() {
return exposureNum;
}
public void setExposureNum(Long exposureNum) {
this.exposureNum = exposureNum;
}
public Long getClickNum() {
return clickNum;
}
public void setClickNum(Long clickNum) {
this.clickNum = clickNum;
}
}
package com.pcloud.book.advertising.dto;
import com.pcloud.common.dto.BaseDto;
/**
* Description 投放作品/应用DTO
* @author PENG
* @date 2019/3/6
*/
public class DistributionAppDTO extends BaseDto {
private static final long serialVersionUID = 5416187350592226379L;
/**
* 来源
*/
private String fromType;
/**
* 来源ID
*/
private Long fromId;
/**
* 名称
*/
private String title;
/**
* 场景编码
*/
private String sceneCode;
/**
* 场景名称
*/
private String sceneName;
/**
* 创建人
*/
private Long createUser;
/**
* 创建人名称
*/
private String createUserName;
/**
* 创建角色
*/
private String createRole;
/**
* 曝光量
*/
private Long exposureNum;
/**
* 点击量
*/
private Long clickNum;
public String getFromType() {
return fromType;
}
public void setFromType(String fromType) {
this.fromType = fromType;
}
public Long getFromId() {
return fromId;
}
public void setFromId(Long fromId) {
this.fromId = fromId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSceneCode() {
return sceneCode;
}
public void setSceneCode(String sceneCode) {
this.sceneCode = sceneCode;
}
public String getSceneName() {
return sceneName;
}
public void setSceneName(String sceneName) {
this.sceneName = sceneName;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public String getCreateUserName() {
return createUserName;
}
public void setCreateUserName(String createUserName) {
this.createUserName = createUserName;
}
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public Long getExposureNum() {
return exposureNum;
}
public void setExposureNum(Long exposureNum) {
this.exposureNum = exposureNum;
}
public Long getClickNum() {
return clickNum;
}
public void setClickNum(Long clickNum) {
this.clickNum = clickNum;
}
@Override
public String toString() {
return "DistributionAppDTO{" +
"fromType='" + fromType + '\'' +
", fromId=" + fromId +
", title='" + title + '\'' +
", sceneCode='" + sceneCode + '\'' +
", sceneName='" + sceneName + '\'' +
", createUser=" + createUser +
", createUserName='" + createUserName + '\'' +
", createRole='" + createRole + '\'' +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
"} " + super.toString();
}
}
package com.pcloud.book.advertising.entity;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
/**
* @author PENG
*/
public class AdvertisingAdviserPermission extends BaseEntity {
private static final long serialVersionUID = 3864910610568657776L;
/**
* advertising_adviser_permission.id (唯一标识)
*/
private Long id;
/**
* advertising_adviser_permission.adviser_id (编辑ID)
*/
private Long adviserId;
/**
* advertising_adviser_permission.book_id (书刊ID)
*/
private Long bookId;
/**
* 运营ID
*/
private Long channelId;
/**
* advertising_adviser_permission.is_open (是否打开)
*/
private Boolean isOpen;
/**
* advertising_adviser_permission.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_adviser_permission.update_time (修改时间)
*/
private Date updateTime;
/**
* 是否是批量操作
*/
private Boolean isBatchOperation;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(Boolean isOpen) {
this.isOpen = isOpen;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Boolean getIsBatchOperation() {
return isBatchOperation;
}
public void setIsBatchOperation(Boolean isBatchOperation) {
this.isBatchOperation = isBatchOperation;
}
@Override
public String toString() {
return "AdvertisingAdviserPermission{" +
"id=" + id +
", adviserId=" + adviserId +
", bookId=" + bookId +
", channelId=" + channelId +
", isOpen=" + isOpen +
", isBatchOperation=" + isBatchOperation +
", createTime=" + createTime +
", updateTime=" + updateTime +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
/**
* @author PENG
*/
public class AdvertisingAgentPermission extends BaseEntity {
private static final long serialVersionUID = 8108241715183544708L;
/**
* advertising_agent_permission.id (唯一标识)
*/
private Long id;
/**
* advertising_agent_permission.agent_id (出版社ID)
*/
private Long agentId;
/**
* advertising_agent_permission.is_open (是否打开)
*/
private Boolean isOpen;
/**
* advertising_agent_permission.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_agent_permission.update_time (修改时间)
*/
private Date updateTime;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getAgentId() {
return agentId;
}
public void setAgentId(Long agentId) {
this.agentId = agentId;
}
public Boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(Boolean isOpen) {
this.isOpen = isOpen;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "AdvertisingAgentPermission{" +
"id=" + id +
", agentId=" + agentId +
", isOpen=" + isOpen +
", createTime=" + createTime +
", updateTime=" + updateTime +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
/**
* @author PENG
*/
public class AdvertisingClickRecord extends BaseEntity {
private static final long serialVersionUID = 1236769572623516883L;
/**
* advertising_click_record.id (唯一标识)
*/
private Long id;
/**
* advertising_click_record.ad_id (广告位ID)
*/
private Long adId;
/**
* advertising_click_record.book_id (书刊ID)
*/
private Long bookId;
/**
* 二维码ID
*/
private Long sceneId;
/**
* advertising_click_record.adviser_id (编辑ID)
*/
private Long adviserId;
/**
* advertising_click_record.agent_id (出版社ID)
*/
private Long agentId;
/**
* advertising_click_record.channel_id (运营ID)
*/
private Long channelId;
/**
* advertising_click_record.official_account_id (公众号ID)
*/
private Long officialAccountId;
/**
* advertising_click_record.from_type (来源类型)
*/
private String fromType;
/**
* advertising_click_record.from_id (来源ID)
*/
private Long fromId;
/**
* advertising_click_record.wechat_user_id (读者ID)
*/
private Long wechatUserId;
/**
* advertising_click_record.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_click_record.create_day (创建日期)
*/
private Date createDay;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getAgentId() {
return agentId;
}
public void setAgentId(Long agentId) {
this.agentId = agentId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getOfficialAccountId() {
return officialAccountId;
}
public void setOfficialAccountId(Long officialAccountId) {
this.officialAccountId = officialAccountId;
}
public String getFromType() {
return fromType;
}
public void setFromType(String fromType) {
this.fromType = fromType;
}
public Long getFromId() {
return fromId;
}
public void setFromId(Long fromId) {
this.fromId = fromId;
}
public Long getWechatUserId() {
return wechatUserId;
}
public void setWechatUserId(Long wechatUserId) {
this.wechatUserId = wechatUserId;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getCreateDay() {
return createDay;
}
public void setCreateDay(Date createDay) {
this.createDay = createDay;
}
public Long getSceneId() {
return sceneId;
}
public void setSceneId(Long sceneId) {
this.sceneId = sceneId;
}
@Override
public String toString() {
return "AdvertisingClickRecord{" +
"id=" + id +
", adId=" + adId +
", bookId=" + bookId +
", sceneId=" + sceneId +
", adviserId=" + adviserId +
", agentId=" + agentId +
", channelId=" + channelId +
", officialAccountId=" + officialAccountId +
", fromType='" + fromType + '\'' +
", fromId=" + fromId +
", wechatUserId=" + wechatUserId +
", createTime=" + createTime +
", createDay=" + createDay +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.util.Date;
import java.util.List;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.common.entity.BaseEntity;
/**
* @author PENG
*/
public class AdvertisingDistributionBook extends BaseEntity {
private static final long serialVersionUID = -7658299195342462203L;
/**
* advertising_distribution_book.id (唯一标识)
*/
private Long id;
/**
* advertising_distribution_book.ad_id (广告位ID)
*/
private Long adId;
/**
* advertising_distribution_book.book_id (书刊ID)
*/
private Long bookId;
/**
* advertising_distribution_book.adviser_id (编辑ID)
*/
private Long adviserId;
/**
* advertising_distribution_book.agent_id (出版ID)
*/
private Long agentId;
/**
* advertising_distribution_book.channel_id (运营ID)
*/
private Long channelId;
/**
* advertising_distribution_book.distribution_time (投放时间)
*/
private Date distributionTime;
/**
* 书刊ID列表
*/
private List<BookAdviser> books;
/**
* 投放方式(0:指定书刊;1:不指定书刊)
*/
private Integer distributionType;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getAgentId() {
return agentId;
}
public void setAgentId(Long agentId) {
this.agentId = agentId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Date getDistributionTime() {
return distributionTime;
}
public void setDistributionTime(Date distributionTime) {
this.distributionTime = distributionTime;
}
public List<BookAdviser> getBooks() {
return books;
}
public void setBooks(List<BookAdviser> books) {
this.books = books;
}
public Integer getDistributionType() {
return distributionType;
}
public void setDistributionType(Integer distributionType) {
this.distributionType = distributionType;
}
@Override
public String toString() {
return "AdvertisingDistributionBook{" +
"id=" + id +
", adId=" + adId +
", bookId=" + bookId +
", adviserId=" + adviserId +
", agentId=" + agentId +
", channelId=" + channelId +
", distributionTime=" + distributionTime +
", books=" + books +
", distributionType=" + distributionType +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
/**
* @author PENG
*/
public class AdvertisingExposureRecord extends BaseEntity {
private static final long serialVersionUID = -2164449923488376086L;
/**
* advertising_exposure_record.id (唯一标识)
*/
private Long id;
/**
* advertising_exposure_record.ad_id (广告位ID)
*/
private Long adId;
/**
* advertising_exposure_record.book_id (书刊ID)
*/
private Long bookId;
/**
* 二维码ID
*/
private Long sceneId;
/**
* advertising_exposure_record.adviser_id (编辑ID)
*/
private Long adviserId;
/**
* advertising_exposure_record.agent_id (出版社ID)
*/
private Long agentId;
/**
* advertising_exposure_record.channel_id (运营ID)
*/
private Long channelId;
/**
* advertising_exposure_record.official_account_id (公众号ID)
*/
private Long officialAccountId;
/**
* advertising_exposure_record.from_type (来源类型)
*/
private String fromType;
/**
* advertising_exposure_record.from_id (来源ID)
*/
private Long fromId;
/**
* advertising_exposure_record.wechat_user_id (读者ID)
*/
private Long wechatUserId;
/**
* advertising_exposure_record.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_exposure_record.create_day (创建日期)
*/
private Date createDay;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getAgentId() {
return agentId;
}
public void setAgentId(Long agentId) {
this.agentId = agentId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getOfficialAccountId() {
return officialAccountId;
}
public void setOfficialAccountId(Long officialAccountId) {
this.officialAccountId = officialAccountId;
}
public String getFromType() {
return fromType;
}
public void setFromType(String fromType) {
this.fromType = fromType;
}
public Long getFromId() {
return fromId;
}
public void setFromId(Long fromId) {
this.fromId = fromId;
}
public Long getWechatUserId() {
return wechatUserId;
}
public void setWechatUserId(Long wechatUserId) {
this.wechatUserId = wechatUserId;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getCreateDay() {
return createDay;
}
public void setCreateDay(Date createDay) {
this.createDay = createDay;
}
public Long getSceneId() {
return sceneId;
}
public void setSceneId(Long sceneId) {
this.sceneId = sceneId;
}
@Override
public String toString() {
return "AdvertisingExposureRecord{" +
"id=" + id +
", adId=" + adId +
", bookId=" + bookId +
", sceneId=" + sceneId +
", adviserId=" + adviserId +
", agentId=" + agentId +
", channelId=" + channelId +
", officialAccountId=" + officialAccountId +
", fromType='" + fromType + '\'' +
", fromId=" + fromId +
", wechatUserId=" + wechatUserId +
", createTime=" + createTime +
", createDay=" + createDay +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
/**
* @author PENG
*/
public class AdvertisingSpace extends BaseEntity {
private static final long serialVersionUID = -2436861846992974754L;
/**
* advertising_space.id (唯一标识)
*/
private Long id;
/**
* advertising_space.ad_name (广告位名称)
*/
private String adName;
/**
* advertising_space.ad_position (广告位置)
*/
private String adPosition;
/**
* advertising_space.ad_source (广告来源)
*/
private String adSource;
/**
* advertising_space.ad_link (广告位链接)
*/
private String adLink;
/**
* advertising_space.source_id (对方id)
*/
private String sourceId;
/**
* advertising_space.ad_slogan (广告位文案)
*/
private String adSlogan;
/**
* advertising_space.ad_pic (广告位图片)
*/
private String adPic;
/**
* advertising_space.distribution_type (投放方式(0:指定书刊;1:不指定书刊))
*/
private Integer distributionType;
/**
* advertising_space.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_space.update_time (修改时间)
*/
private Date updateTime;
/**
* advertising_space.is_open (是否打开)
*/
private Boolean isOpen;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public String getAdName() {
return adName;
}
public void setAdName(String adName) {
this.adName = adName;
}
public String getAdPosition() {
return adPosition;
}
public void setAdPosition(String adPosition) {
this.adPosition = adPosition;
}
public String getAdSource() {
return adSource;
}
public void setAdSource(String adSource) {
this.adSource = adSource;
}
public String getAdLink() {
return adLink;
}
public void setAdLink(String adLink) {
this.adLink = adLink;
}
public String getSourceId() {
return sourceId;
}
public void setSourceId(String sourceId) {
this.sourceId = sourceId;
}
public String getAdSlogan() {
return adSlogan;
}
public void setAdSlogan(String adSlogan) {
this.adSlogan = adSlogan;
}
public String getAdPic() {
return adPic;
}
public void setAdPic(String adPic) {
this.adPic = adPic;
}
public Integer getDistributionType() {
return distributionType;
}
public void setDistributionType(Integer distributionType) {
this.distributionType = distributionType;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Boolean getIsOpen() {
return isOpen;
}
public void setIsOpen(Boolean isOpen) {
this.isOpen = isOpen;
}
@Override
public String toString() {
return "AdvertisingSpace{" +
"id=" + id +
", adName='" + adName + '\'' +
", adPosition='" + adPosition + '\'' +
", adSource='" + adSource + '\'' +
", adLink='" + adLink + '\'' +
", sourceId='" + sourceId + '\'' +
", adSlogan='" + adSlogan + '\'' +
", adPic='" + adPic + '\'' +
", distributionType=" + distributionType +
", createTime=" + createTime +
", updateTime=" + updateTime +
", isOpen=" + isOpen +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.enums;
/**
* Description 广告位置枚举
* @author PENG
* @date 2019/3/1
*/
public enum AdPositionEnum {
/**
* 应用或作品详情浮标
*/
DETAIL_PAGE("DETAIL_PAGE", "应用或作品详情浮标", true),
/**
* 扫码消息
*/
SCENE_MESSAGE("SCENE_MESSAGE", "扫码消息", false);
public final String positionCode;
public final String positionName;
public final Boolean isOpen;
AdPositionEnum(String positionCode, String positionName, Boolean isOpen) {
this.positionCode = positionCode;
this.positionName = positionName;
this.isOpen = isOpen;
}
/**
* 校验位置是否存在
*/
public static Boolean checkCodeExist(String positionCode) {
AdPositionEnum[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
AdPositionEnum adPositionEnum = var1[var3];
if (adPositionEnum.positionCode.equals(positionCode) && adPositionEnum.isOpen) {
return true;
}
}
return false;
}
public static final String[] AD_POSITION_GATHER = {DETAIL_PAGE.positionCode, SCENE_MESSAGE.positionCode};
}
package com.pcloud.book.advertising.enums;
/**
* Description 广告来源枚举
* @author PENG
* @date 2019/3/1
*/
public enum AdSourceEnum {
/**
* 推啊
*/
TUIA("TUIA"),
/**
* 招行
*/
CMB("CMB");
public String code;
AdSourceEnum(String code) {
this.code = code;
}
public static final String[] AD_SOURCE_GATHER = {TUIA.code, CMB.code};
}
package com.pcloud.book.advertising.enums;
/**
* Description 广告投放方式枚举
* @author PENG
* @date 2019/3/1
*/
public enum DistributionTypeEnum {
/**
* 指定书刊
*/
SIGN_BOOK(0),
/**
* 不指定书刊
*/
NO_SIGN_BOOK(1);
public Integer value;
DistributionTypeEnum(Integer value) {
this.value = value;
}
public static final Integer[] DISTRIBUTION_TYPE_GATHER = {SIGN_BOOK.value, NO_SIGN_BOOK.value};
}
package com.pcloud.book.advertising.facade;
import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
/**
* Description 广告位接口层接口
* @author PENG
* @date 2019/2/28
*/
@FeignClient(value = "pcloud-service-book", qualifier = "advertisingSpaceFacadeCloud", path = "book/v1.0/advertising")
@Api(description = "广告位接口层接口")
public interface AdvertisingSpaceFacade {
/**
* 创建广告位
* @param token 用户身份信息
* @param advertisingSpace 广告位实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "创建广告位", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingSpace", value = "广告位实体", required = false, dataType = "AdvertisingSpace", paramType = "body")
})
@RequestMapping(value = "create", method = RequestMethod.POST)
ResponseDto<?> create(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException;
/**
* 修改广告位
* @param token 用户身份信息
* @param advertisingSpace 广告位实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "修改广告位", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingSpace", value = "广告位实体", required = false, dataType = "AdvertisingSpace", paramType = "body")
})
@RequestMapping(value = "update", method = RequestMethod.POST)
ResponseDto<?> update(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException;
/**
* 获取广告位信息
* @param token 用户身份信息
* @param adId 广告位ID
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "修改广告位", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "adId", value = "广告位ID", required = false, dataType = "Long", paramType = "query")
})
@RequestMapping(value = "get", method = RequestMethod.GET)
ResponseDto<?> get(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId)
throws PermissionException, BizException, JsonParseException;
/**
* 停用广告位
* @param token 用户身份信息
* @param advertisingSpace 广告位实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "停用广告位", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingSpace", value = "广告位实体", required = false, dataType = "AdvertisingSpace", paramType = "body")
})
@RequestMapping(value = "stop", method = RequestMethod.POST)
ResponseDto<?> stop(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException;
/**
* 删除广告位
* @param token 用户身份信息
* @param advertisingSpace 广告位实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "删除广告位", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingSpace", value = "广告位实体", required = false, dataType = "AdvertisingSpace", paramType = "body")
})
@RequestMapping(value = "delete", method = RequestMethod.POST)
ResponseDto<?> delete(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException;
/**
* 投放书刊
* @param token 用户身份信息
* @param advertisingDistributionBook 广告位书刊实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "投放书刊", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingDistributionBook", value = "广告位书刊实体", required = false, dataType = "AdvertisingDistributionBook", paramType = "body")
})
@RequestMapping(value = "distributeBook", method = RequestMethod.POST)
ResponseDto<?> distributeBook(@RequestHeader("token") String token, @RequestBody AdvertisingDistributionBook advertisingDistributionBook)
throws PermissionException, BizException, JsonParseException;
/**
* 获取出版社书刊权限
* @param token 用户身份信息
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取出版社书刊权限", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header")
})
@RequestMapping(value = "getAgentPermission", method = RequestMethod.GET)
ResponseDto<?> getAgentPermission(@RequestHeader("token") String token)
throws PermissionException, BizException, JsonParseException;
/**
* 设置出版社书刊权限
* @param token 用户身份信息
* @param advertisingAgentPermission 广告位出版权限实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "设置出版社书刊权限", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingAgentPermission", value = "广告位出版权限实体", required = false, dataType = "AdvertisingAgentPermission", paramType = "body")
})
@RequestMapping(value = "setAgentPermission", method = RequestMethod.POST)
ResponseDto<?> setAgentPermission(@RequestHeader("token") String token, @RequestBody AdvertisingAgentPermission advertisingAgentPermission)
throws PermissionException, BizException, JsonParseException;
/**
* 设置编辑书刊权限
* @param token 用户身份信息
* @param advertisingAdviserPermission 广告位编辑权限实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "设置编辑书刊权限", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingAdviserPermission", value = "广告位编辑权限实体", required = false, dataType = "AdvertisingAdviserPermission", paramType = "body")
})
@RequestMapping(value = "setAdviserPermission", method = RequestMethod.POST)
ResponseDto<?> setAdviserPermission(@RequestHeader("token") String token, @RequestBody AdvertisingAdviserPermission advertisingAdviserPermission)
throws PermissionException, BizException, JsonParseException;
/**
* 编辑端获取书刊列表
* @param token 用户身份信息
* @param name 书籍名称
* @param currentPage 当前页
* @param numPerPage 每页条数
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "编辑端获取书刊列表", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "name", value = "书籍名称", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query")
})
@RequestMapping(value = "listBook4Adviser", method = RequestMethod.GET)
ResponseDto<?> listBook4Adviser(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws PermissionException, BizException, JsonParseException;
/**
* 平台端获取某编辑书刊列表
* @param token 用户身份信息
* @param adviserId 编辑ID
* @param name 书籍名称
* @param currentPage 当前页
* @param numPerPage 每页条数
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "平台端获取某编辑书刊列表", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "adviserId", value = "编辑ID", dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "name", value = "书籍名称", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query")
})
@RequestMapping(value = "listBook4Platform", method = RequestMethod.GET)
ResponseDto<?> listBook4Platform(@RequestHeader("token") String token, @RequestParam(value = "adviserId", required = false) Long adviserId,
@RequestParam(value = "name", required = false) String name, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException, BizException, JsonParseException;
/**
* 获取广告位列表
* @param token 用户身份信息
* @param name 广告位名称
* @param currentPage 当前页
* @param numPerPage 每页条数
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取广告位列表", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "name", value = "广告位名称", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query")
})
@RequestMapping(value = "list", method = RequestMethod.GET)
ResponseDto<?> list(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws PermissionException, BizException, JsonParseException;
/**
* 获取广告位投放书刊列表
* @param token 用户身份信息
* @param adId 广告位ID
* @param name 书刊名称
* @param currentPage 当前页
* @param numPerPage 每页条数
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取广告位投放书刊列表", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "adId", value = "广告位ID", dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "name", value = "书刊名称", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query")
})
@RequestMapping(value = "distributionBookList", method = RequestMethod.GET)
ResponseDto<?> distributionBookList(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId,
@RequestParam(value = "name", required = false) String name, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException, BizException, JsonParseException;
/**
* 获取广告位投放作品/应用数据统计
* @param token 用户身份信息
* @param adId 广告位ID
* @param currentPage 当前页
* @param numPerPage 每页条数
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取广告位投放作品/应用数据统计", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "adId", value = "广告位ID", dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query")
})
@RequestMapping(value = "distributionAppStatics", method = RequestMethod.GET)
ResponseDto<?> distributionAppStatics(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws PermissionException, BizException, JsonParseException;
/**
* 获取广告位投放时间统计
* @param token 用户身份信息
* @param adId 广告位ID
* @param day 天数
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取广告位投放时间统计", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "adId", value = "广告位ID", dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "day", value = "天数", dataType = "Long", paramType = "query")
})
@RequestMapping(value = "distributionDateStatics", method = RequestMethod.GET)
ResponseDto<?> distributionDateStatics(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId,
@RequestParam(value = "day", required = false) Integer day) throws PermissionException, BizException, JsonParseException;
/**
* 获取书刊配置的广告位信息
* @param userInfo 用户身份信息
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取书刊配置的广告位信息", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "userInfo", value = "用户身份信息", dataType = "string", paramType = "header")
})
@RequestMapping(value = "get4Wechat", method = RequestMethod.GET)
ResponseDto<?> get4Wechat(@CookieValue("userInfo") String userInfo)
throws PermissionException, BizException, JsonParseException;
/**
* 曝光量埋点
* @param userInfo 用户身份信息
* @param advertisingExposureRecord 广告位曝光实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "曝光量埋点", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "userInfo", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingExposureRecord", value = "广告位曝光实体", required = false, dataType = "AdvertisingExposureRecord", paramType = "body")
})
@RequestMapping(value = "addExposureTrack", method = RequestMethod.POST)
ResponseDto<?> addExposureTrack(@CookieValue("userInfo") String userInfo, @RequestBody AdvertisingExposureRecord advertisingExposureRecord)
throws PermissionException, BizException, JsonParseException;
/**
* 点击量埋点
* @param userInfo 用户身份信息
* @param advertisingClickRecord 广告位点击实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "点击量埋点", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "userInfo", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "advertisingClickRecord", value = "广告位点击实体", required = false, dataType = "AdvertisingClickRecord", paramType = "body")
})
@RequestMapping(value = "addClickTrack", method = RequestMethod.POST)
ResponseDto<?> addClickTrack(@CookieValue("userInfo") String userInfo, @RequestBody AdvertisingClickRecord advertisingClickRecord)
throws PermissionException, BizException, JsonParseException;
}
package com.pcloud.book.advertising.facade.impl;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.facade.AdvertisingSpaceFacade;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageParam;
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;
/**
* Description 广告位接口层接口实现类
* @author PENG
* @date 2019/2/28
*/
@RestController("advertisingSpaceFacade")
@RequestMapping("/advertising")
public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
@Autowired
private AdvertisingSpaceBiz advertisingSpaceBiz;
/**
* 创建广告位
*/
@Override
@RequestMapping(value = "create", method = RequestMethod.POST)
public ResponseDto<?> create(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingSpace) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
Map<String, Object> result = new HashMap<>();
result.put("adId", advertisingSpaceBiz.create(advertisingSpace));
return new ResponseDto<>(result);
}
/**
* 修改广告位
*/
@Override
@RequestMapping(value = "update", method = RequestMethod.POST)
public ResponseDto<?> update(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingSpace) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
advertisingSpaceBiz.update(advertisingSpace);
return new ResponseDto<>();
}
/**
* 获取广告位信息
*/
@Override
@RequestMapping(value = "get", method = RequestMethod.GET)
public ResponseDto<?> get(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId)
throws PermissionException, BizException, JsonParseException {
if (null == adId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
return new ResponseDto<>(advertisingSpaceBiz.get(adId));
}
/**
* 停用广告位
*/
@Override
@RequestMapping(value = "stop", method = RequestMethod.POST)
public ResponseDto<?> stop(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingSpace) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
advertisingSpaceBiz.stop(advertisingSpace);
return new ResponseDto<>();
}
/**
* 删除广告位
*/
@Override
@RequestMapping(value = "delete", method = RequestMethod.POST)
public ResponseDto<?> delete(@RequestHeader("token") String token, @RequestBody AdvertisingSpace advertisingSpace)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingSpace) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
advertisingSpaceBiz.delete(advertisingSpace);
return new ResponseDto<>();
}
/**
* 投放书刊
*/
@Override
@RequestMapping(value = "distributeBook", method = RequestMethod.POST)
public ResponseDto<?> distributeBook(@RequestHeader("token") String token, @RequestBody AdvertisingDistributionBook advertisingDistributionBook)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingDistributionBook) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
advertisingSpaceBiz.distributeBook(advertisingDistributionBook);
return new ResponseDto<>();
}
/**
* 获取出版社书刊权限
*/
@Override
@RequestMapping(value = "getAgentPermission", method = RequestMethod.GET)
public ResponseDto<?> getAgentPermission(@RequestHeader("token") String token)
throws PermissionException, BizException, JsonParseException {
Long agentId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
Map<String, Object> result = new HashMap<>();
result.put("isOpen", advertisingSpaceBiz.getAgentPermission(agentId));
return new ResponseDto<>(result);
}
/**
* 设置出版社书刊权限
*/
@Override
@RequestMapping(value = "setAgentPermission", method = RequestMethod.POST)
public ResponseDto<?> setAgentPermission(@RequestHeader("token") String token, @RequestBody AdvertisingAgentPermission advertisingAgentPermission)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingAgentPermission) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
Long agentId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
advertisingAgentPermission.setAgentId(agentId);
advertisingSpaceBiz.setAgentPermission(advertisingAgentPermission);
return new ResponseDto<>();
}
/**
* 设置编辑书刊权限
*/
@Override
@RequestMapping(value = "setAdviserPermission", method = RequestMethod.POST)
public ResponseDto<?> setAdviserPermission(@RequestHeader("token") String token, @RequestBody AdvertisingAdviserPermission advertisingAdviserPermission)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingAdviserPermission) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
advertisingAdviserPermission.setAdviserId(adviserId);
if (null == advertisingAdviserPermission.getIsBatchOperation()) {
advertisingAdviserPermission.setIsBatchOperation(false);
}
advertisingSpaceBiz.setAdviserPermission(advertisingAdviserPermission);
return new ResponseDto<>();
}
/**
* 编辑端获取书刊列表
*/
@Override
@RequestMapping(value = "listBook4Adviser", method = RequestMethod.GET)
public ResponseDto<?> listBook4Adviser(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws PermissionException, BizException, JsonParseException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adviserId", adviserId);
paramMap.put("name", StringUtil.isEmpty(name) ? null : name);
return new ResponseDto<>(advertisingSpaceBiz.listBook4Adviser(paramMap, new PageParam(currentPage, numPerPage), adviserId));
}
/**
* 平台端获取某编辑书刊列表
*/
@Override
@RequestMapping(value = "listBook4Platform", method = RequestMethod.GET)
public ResponseDto<?> listBook4Platform(@RequestHeader("token") String token, @RequestParam(value = "adviserId", required = false) Long adviserId,
@RequestParam(value = "name", required = false) String name, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException, BizException, JsonParseException {
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
if (null == adviserId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adviserId", adviserId);
paramMap.put("name", StringUtil.isEmpty(name) ? null : name);
return new ResponseDto<>(advertisingSpaceBiz.listBook4Platform(paramMap, new PageParam(currentPage, numPerPage), adviserId));
}
/**
* 获取广告位列表
*/
@Override
@RequestMapping(value = "list", method = RequestMethod.GET)
public ResponseDto<?> list(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws PermissionException, BizException, JsonParseException {
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
return new ResponseDto<>(advertisingSpaceBiz.list(name, new PageParam(currentPage, numPerPage)));
}
/**
* 获取广告位投放书刊列表
*/
@Override
@RequestMapping(value = "distributionBookList", method = RequestMethod.GET)
public ResponseDto<?> distributionBookList(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId,
@RequestParam(value = "name", required = false) String name, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException, BizException, JsonParseException {
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
if (null == adId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
return new ResponseDto<>(advertisingSpaceBiz.distributionBookList(adId, name, new PageParam(currentPage, numPerPage)));
}
/**
* 获取广告位投放作品/应用数据统计
*/
@Override
@RequestMapping(value = "distributionAppStatics", method = RequestMethod.GET)
public ResponseDto<?> distributionAppStatics(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws PermissionException, BizException, JsonParseException {
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
if (null == adId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
return new ResponseDto<>(advertisingSpaceBiz.distributionAppStatics(adId, new PageParam(currentPage, numPerPage)));
}
/**
* 获取广告位投放时间统计
*/
@Override
@RequestMapping(value = "distributionDateStatics", method = RequestMethod.GET)
public ResponseDto<?> distributionDateStatics(@RequestHeader("token") String token, @RequestParam(value = "adId", required = false) Long adId,
@RequestParam(value = "day", required = false) Integer day) throws PermissionException, BizException, JsonParseException {
if (null == adId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
if (null == day) {
day = 7;
}
return new ResponseDto<>(advertisingSpaceBiz.distributionDateStatics(adId, day));
}
/**
* 获取书刊配置的广告位信息
*/
@Override
@RequestMapping(value = "get4Wechat", method = RequestMethod.GET)
public ResponseDto<?> get4Wechat(@CookieValue("userInfo") String userInfo)
throws PermissionException, BizException, JsonParseException {
Long sceneId = Cookie.getId(userInfo, Cookie._SCENE_ID);
Long adviserId = Cookie.getId(userInfo, Cookie._ADVISER_ID);
Long channelId = Cookie.getId(userInfo, Cookie._CHANNEL_ID);
if (null == sceneId || null == adviserId || null == channelId) {
return new ResponseDto<>(new AdvertisingSpaceDTO());
}
return new ResponseDto<>(advertisingSpaceBiz.get4Wechat(sceneId, adviserId, channelId));
}
/**
* 曝光量埋点
*/
@Override
@RequestMapping(value = "addExposureTrack", method = RequestMethod.POST)
public ResponseDto<?> addExposureTrack(@CookieValue("userInfo") String userInfo, @RequestBody AdvertisingExposureRecord advertisingExposureRecord)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingExposureRecord || null == advertisingExposureRecord.getAdId() || null == advertisingExposureRecord.getBookId()) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
Long sceneId = Cookie.getId(userInfo, Cookie._SCENE_ID);
Long adviserId = Cookie.getId(userInfo, Cookie._ADVISER_ID);
Long channelId = Cookie.getId(userInfo, Cookie._CHANNEL_ID);
Long officialAccountsId = Cookie.getId(userInfo, Cookie._OFFICIAL_ACCOUNTS_ID);
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
advertisingExposureRecord.setSceneId(sceneId);
advertisingExposureRecord.setAdviserId(adviserId);
advertisingExposureRecord.setChannelId(channelId);
advertisingExposureRecord.setOfficialAccountId(officialAccountsId);
advertisingExposureRecord.setWechatUserId(wechatUserId);
advertisingSpaceBiz.addExposureTrack(advertisingExposureRecord);
return new ResponseDto<>();
}
/**
* 点击量埋点
*/
@Override
@RequestMapping(value = "addClickTrack", method = RequestMethod.POST)
public ResponseDto<?> addClickTrack(@CookieValue("userInfo") String userInfo, @RequestBody AdvertisingClickRecord advertisingClickRecord)
throws PermissionException, BizException, JsonParseException {
if (null == advertisingClickRecord || null == advertisingClickRecord.getAdId() || null == advertisingClickRecord.getBookId()) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
Long sceneId = Cookie.getId(userInfo, Cookie._SCENE_ID);
Long adviserId = Cookie.getId(userInfo, Cookie._ADVISER_ID);
Long channelId = Cookie.getId(userInfo, Cookie._CHANNEL_ID);
Long officialAccountsId = Cookie.getId(userInfo, Cookie._OFFICIAL_ACCOUNTS_ID);
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
advertisingClickRecord.setSceneId(sceneId);
advertisingClickRecord.setAdviserId(adviserId);
advertisingClickRecord.setChannelId(channelId);
advertisingClickRecord.setOfficialAccountId(officialAccountsId);
advertisingClickRecord.setWechatUserId(wechatUserId);
advertisingSpaceBiz.addClickTrack(advertisingClickRecord);
return new ResponseDto<>();
}
}
...@@ -3,15 +3,14 @@ ...@@ -3,15 +3,14 @@
*/ */
package com.pcloud.book.book.dao; package com.pcloud.book.book.dao;
import java.util.List;
import java.util.Map;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO; import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO; import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/** /**
* @描述:书籍数据访问层接口 * @描述:书籍数据访问层接口
* @作者:songx * @作者:songx
...@@ -286,4 +285,10 @@ public interface BookDao extends BaseDao<Book> { ...@@ -286,4 +285,10 @@ public interface BookDao extends BaseDao<Book> {
*/ */
List<BookInfo4AnlysicsDTO> getBookAnalysis(Map<String,Object> paramMap); List<BookInfo4AnlysicsDTO> getBookAnalysis(Map<String,Object> paramMap);
/**
* 获取编辑书刊ID和运营ID列表
* @param paramMap
* @return
*/
List<BookDto> listBookIdAndChannelId4Adviser(Map<String, Object> paramMap);
} }
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
*/ */
package com.pcloud.book.book.dao.impl; package com.pcloud.book.book.dao.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.pcloud.book.book.dao.BookDao; import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
...@@ -10,11 +14,6 @@ import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO; ...@@ -10,11 +14,6 @@ import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO; import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @描述:书籍数据访问层实现类 * @描述:书籍数据访问层实现类
...@@ -29,7 +28,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -29,7 +28,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
* 批量删除 * 批量删除
*/ */
public Integer deleteByIds(List<Long> bookIds, Long deleteUserId) { public Integer deleteByIds(List<Long> bookIds, Long deleteUserId) {
Map<String , Object> paramMap = new HashMap<String, Object>(); Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("bookIds", bookIds); paramMap.put("bookIds", bookIds);
paramMap.put("lastModifiedUser", deleteUserId); paramMap.put("lastModifiedUser", deleteUserId);
return super.getSqlSession().update(super.getStatement("deleteByIds"), paramMap); return super.getSqlSession().update(super.getStatement("deleteByIds"), paramMap);
...@@ -54,13 +53,13 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -54,13 +53,13 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
return super.getSqlSession().selectOne(super.getStatement("getByIsbnAndSnumContainsDelete"), paramMap); return super.getSqlSession().selectOne(super.getStatement("getByIsbnAndSnumContainsDelete"), paramMap);
} }
// /** // /**
// * 根据ISBN获取图书信息 // * 根据ISBN获取图书信息
// */ // */
// @Override // @Override
// public BookDto getByIsbn(String isbn) { // public BookDto getByIsbn(String isbn) {
// return super.getSqlSession().selectOne(super.getStatement("selectByIsbn"), isbn); // return super.getSqlSession().selectOne(super.getStatement("selectByIsbn"), isbn);
// } // }
/** /**
...@@ -89,14 +88,14 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -89,14 +88,14 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
@Override @Override
public List<BookDto> listDetailByIds(Map<String, Object> paramMap) { public List<BookDto> listDetailByIds(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(super.getStatement("listDetailByIds"),paramMap); return super.getSqlSession().selectList(super.getStatement("listDetailByIds"), paramMap);
} }
/** /**
* 根据名称获取ID * 根据名称获取ID
*/ */
@Override @Override
public List<Long> getIdsByName(String bookName){ public List<Long> getIdsByName(String bookName) {
return super.getSqlSession().selectList(super.getStatement("getIdsByName"), bookName); return super.getSqlSession().selectList(super.getStatement("getIdsByName"), bookName);
} }
...@@ -104,7 +103,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -104,7 +103,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
* 根据名称获取ID * 根据名称获取ID
*/ */
@Override @Override
public List<Long> getIdsByNameMap(Map<String, Object> paramMap){ public List<Long> getIdsByNameMap(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(super.getStatement("getIdsByNameMap"), paramMap); return super.getSqlSession().selectList(super.getStatement("getIdsByNameMap"), paramMap);
} }
...@@ -162,7 +161,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -162,7 +161,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
*/ */
@Override @Override
public int getBookCount4Platform(Map<String, Object> paramMap) { public int getBookCount4Platform(Map<String, Object> paramMap) {
return super.getSqlSession().selectOne(super.getStatement("getBookCount4Platform"),paramMap); return super.getSqlSession().selectOne(super.getStatement("getBookCount4Platform"), paramMap);
} }
/** /**
...@@ -170,7 +169,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -170,7 +169,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
*/ */
@Override @Override
public void updateCoverImg(Book book) { public void updateCoverImg(Book book) {
super.getSqlSession().update(this.getStatement("updateCoverImg"),book); super.getSqlSession().update(this.getStatement("updateCoverImg"), book);
} }
/** /**
...@@ -178,7 +177,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -178,7 +177,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
*/ */
@Override @Override
public List<BookDto> listBookByAppId(Map<String, Object> paramMap) { public List<BookDto> listBookByAppId(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(this.getStatement("listBookByAppId"),paramMap); return super.getSqlSession().selectList(this.getStatement("listBookByAppId"), paramMap);
} }
/** /**
...@@ -186,7 +185,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -186,7 +185,7 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
*/ */
@Override @Override
public Integer deleteBook(Long bookId, Long deleteUserId) { public Integer deleteBook(Long bookId, Long deleteUserId) {
Map<String , Long> paramMap = new HashMap<String, Long>(); Map<String, Long> paramMap = new HashMap<String, Long>();
paramMap.put("bookId", bookId); paramMap.put("bookId", bookId);
paramMap.put("lastModifiedUser", deleteUserId); paramMap.put("lastModifiedUser", deleteUserId);
return super.getSqlSession().update(this.getStatement("deleteBook"), paramMap); return super.getSqlSession().update(this.getStatement("deleteBook"), paramMap);
...@@ -238,7 +237,6 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -238,7 +237,6 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
/** /**
* 根据图书isbn和序号获取图书基本信息(不包含删除图书) * 根据图书isbn和序号获取图书基本信息(不包含删除图书)
*
* @param isbn * @param isbn
* @param serialNumber * @param serialNumber
* @return * @return
...@@ -252,26 +250,31 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -252,26 +250,31 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
@Override @Override
public List<BookDto> getList4Adviser(Map<String, Object> param) { public List<BookDto> getList4Adviser(Map<String, Object> param) {
return super.getSqlSession().selectList(this.getStatement("getListPage4Adviser"),param); return super.getSqlSession().selectList(this.getStatement("getListPage4Adviser"), param);
} }
@Override @Override
public void updateTimeById(Map<String, Object> param) { public void updateTimeById(Map<String, Object> param) {
super.getSqlSession().update(super.getStatement("updateTimeById"),param); super.getSqlSession().update(super.getStatement("updateTimeById"), param);
} }
@Override @Override
public void updateTimeByIds(Map<String, Object> param) { public void updateTimeByIds(Map<String, Object> param) {
super.getSqlSession().update(super.getStatement("updateTimeByIds"),param); super.getSqlSession().update(super.getStatement("updateTimeByIds"), param);
} }
@Override @Override
public List<BookInfoAnalysicsDTO> getBookInfoBy(Map<String, Object> param) { public List<BookInfoAnalysicsDTO> getBookInfoBy(Map<String, Object> param) {
return super.getSqlSession().selectList(this.getStatement("getBookInfoBy"),param); return super.getSqlSession().selectList(this.getStatement("getBookInfoBy"), param);
} }
@Override @Override
public List<BookInfo4AnlysicsDTO> getBookAnalysis(Map<String, Object> paramMap) { public List<BookInfo4AnlysicsDTO> getBookAnalysis(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(this.getStatement("getBookAnalysis"),paramMap); return super.getSqlSession().selectList(this.getStatement("getBookAnalysis"), paramMap);
}
@Override
public List<BookDto> listBookIdAndChannelId4Adviser(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("listBookIdAndChannelId4Adviser"), paramMap);
} }
} }
...@@ -3,6 +3,20 @@ ...@@ -3,6 +3,20 @@
*/ */
package com.pcloud.book.book.set; package com.pcloud.book.book.set;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto; import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto;
...@@ -29,6 +43,7 @@ import com.pcloud.book.book.dto.BookResourceDto; ...@@ -29,6 +43,7 @@ import com.pcloud.book.book.dto.BookResourceDto;
import com.pcloud.book.book.dto.BookTypeDto; import com.pcloud.book.book.dto.BookTypeDto;
import com.pcloud.book.book.entity.BookDefendant; import com.pcloud.book.book.entity.BookDefendant;
import com.pcloud.book.book.tools.BookTools; import com.pcloud.book.book.tools.BookTools;
import com.pcloud.book.book.vo.NoAuthBookVO;
import com.pcloud.book.consumer.analysisengine.BookScanCountConsr; import com.pcloud.book.consumer.analysisengine.BookScanCountConsr;
import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr; import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr;
import com.pcloud.book.consumer.app.AppConsr; import com.pcloud.book.consumer.app.AppConsr;
...@@ -40,15 +55,17 @@ import com.pcloud.book.consumer.message.MessageConsr; ...@@ -40,15 +55,17 @@ import com.pcloud.book.consumer.message.MessageConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.settlement.BookConsr; import com.pcloud.book.consumer.settlement.BookConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.BookcaseConsr; import com.pcloud.book.consumer.user.BookcaseConsr;
import com.pcloud.book.consumer.user.ChannelConsr; import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.consumer.user.PartyConsr; import com.pcloud.book.consumer.user.PartyConsr;
import com.pcloud.book.consumer.voicemessage.MerchantVideoConsr; import com.pcloud.book.consumer.voicemessage.MerchantVideoConsr;
import com.pcloud.book.book.vo.NoAuthBookVO;
import com.pcloud.channelcenter.base.constants.MessageFromTypeEnum; import com.pcloud.channelcenter.base.constants.MessageFromTypeEnum;
import com.pcloud.channelcenter.qrcode.dto.QrcodeLocationDto; import com.pcloud.channelcenter.qrcode.dto.QrcodeLocationDto;
import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrAskVO; import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrAskVO;
import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrVO; import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrVO;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.channelcenter.wechat.service.AccountSettingService;
import com.pcloud.comment.base.enums.SysCodeEnum; import com.pcloud.comment.base.enums.SysCodeEnum;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.MQTopicProducer; import com.pcloud.common.core.constant.MQTopicProducer;
...@@ -57,6 +74,7 @@ import com.pcloud.common.exceptions.BizException; ...@@ -57,6 +74,7 @@ import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.BookUtils; import com.pcloud.common.utils.BookUtils;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.number.AmountUtil; import com.pcloud.common.utils.number.AmountUtil;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.contentcenter.resource.dto.ResourceDTO; import com.pcloud.contentcenter.resource.dto.ResourceDTO;
...@@ -69,25 +87,9 @@ import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; ...@@ -69,25 +87,9 @@ import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.usercenter.party.adviser.entity.Adviser; import com.pcloud.usercenter.party.adviser.entity.Adviser;
import com.pcloud.usercenter.party.agent.entity.Agent; import com.pcloud.usercenter.party.agent.entity.Agent;
import com.pcloud.voicemessage.party.merchant.entity.MerchantVideo; import com.pcloud.voicemessage.party.merchant.entity.MerchantVideo;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @描述:图书信息填充 * @描述:图书信息填充
*
* @作者:songx * @作者:songx
* @创建时间:2016年12月30日,下午7:40:43 @版本:1.0 * @创建时间:2016年12月30日,下午7:40:43 @版本:1.0
*/ */
...@@ -139,11 +141,14 @@ public class BookSet { ...@@ -139,11 +141,14 @@ public class BookSet {
private BookFreezeDao bookFreezeDao; private BookFreezeDao bookFreezeDao;
@Autowired @Autowired
private AmqpTemplate amqpTemplate; private AmqpTemplate amqpTemplate;
@Autowired
private AgentConsr agentConsr;
@Autowired
private AccountSettingService accountSettingService;
/** /**
* 检验书号是否合法,包括ISSN,ISBN,CSSN * 检验书号是否合法,包括ISSN,ISBN,CSSN
* * @param typeCode 类型,图书或者期刊
* @param typeCode
* 类型,图书或者期刊
* @param isbn * @param isbn
*/ */
public void checkISBNEx(String typeCode, String isbn) { public void checkISBNEx(String typeCode, String isbn) {
...@@ -165,9 +170,7 @@ public class BookSet { ...@@ -165,9 +170,7 @@ public class BookSet {
/** /**
* 检验书号是否合法 * 检验书号是否合法
* * @param typeCode 类型,图书
* @param typeCode
* 类型,图书
* @param isbn * @param isbn
*/ */
public void checkISBN(String typeCode, String isbn) throws BizException { public void checkISBN(String typeCode, String isbn) throws BizException {
...@@ -179,7 +182,6 @@ public class BookSet { ...@@ -179,7 +182,6 @@ public class BookSet {
/** /**
* 验证issn,CSSN * 验证issn,CSSN
*
* @param typeCode * @param typeCode
* @param issn * @param issn
*/ */
...@@ -237,6 +239,26 @@ public class BookSet { ...@@ -237,6 +239,26 @@ public class BookSet {
} }
/** /**
* 批量填充渠道公众号信息
*/
public void setChannelOfficialAccountInfoList(List<Object> objects) throws BizException {
LOGGER.info("【书刊基础】批量填充渠道公众号信息,<START>");
// 组装运营标识(去重)
List<Long> channelIds = BookTools.listChannelIds(objects);
if (ListUtils.isEmpty(channelIds)) {
return;
}
// 从渠道中心批量获取渠道公众号名称
Map<Long, AccountSettingDto> officialAccountNameMap = ResponseHandleUtil.parseMap(accountSettingService.listWechat(channelIds), Long.class, AccountSettingDto.class);
if (MapUtils.isEmpty(officialAccountNameMap)) {
return;
}
// 批量填充运营公众号信息
BookTools.setChannelOfficialAccountsNames(objects, officialAccountNameMap);
LOGGER.info("【书刊基础】批量填充渠道公众号信息,<END>");
}
/**
* 批量填充顾问名称 * 批量填充顾问名称
*/ */
public void setAdviserName4BookDto(List<Object> objects) { public void setAdviserName4BookDto(List<Object> objects) {
...@@ -253,6 +275,23 @@ public class BookSet { ...@@ -253,6 +275,23 @@ public class BookSet {
LOGGER.info("【书刊基础】批量填充顾问名称,<END>"); LOGGER.info("【书刊基础】批量填充顾问名称,<END>");
} }
/**
* 批量填充出版名称
*/
public void setAgentName4BookDto(List<Object> objects) {
LOGGER.info("【书刊基础】批量填充出版名称,<START>");
// 组装出版标识(去重)
List<Long> agentIds = BookTools.listAgentIds(objects);
// 从用户中心批量获取出版名称
Map<Long, String> agentNameMap = agentConsr.getNames(agentIds);
if (MapUtils.isEmpty(agentNameMap)) {
return;
}
// 批量填充出版名称
BookTools.setAgentNames(objects, agentNameMap);
LOGGER.info("【书刊基础】批量填充出版名称,<END>");
}
/** /**
* 批量填充顾问名称 * 批量填充顾问名称
...@@ -273,7 +312,6 @@ public class BookSet { ...@@ -273,7 +312,6 @@ public class BookSet {
/** /**
* 设置申诉方及被诉方基本信息 * 设置申诉方及被诉方基本信息
*
* @param bookAppealDto * @param bookAppealDto
*/ */
public void setAdviserInfo(BookAppealDto bookAppealDto) { public void setAdviserInfo(BookAppealDto bookAppealDto) {
...@@ -370,7 +408,6 @@ public class BookSet { ...@@ -370,7 +408,6 @@ public class BookSet {
/** /**
* 设置书籍是否加入书架 * 设置书籍是否加入书架
*
* @param recordList * @param recordList
*/ */
public void setIsHaveAddBookcase(List<Object> recordList, Long wechatUserId) { public void setIsHaveAddBookcase(List<Object> recordList, Long wechatUserId) {
...@@ -397,9 +434,7 @@ public class BookSet { ...@@ -397,9 +434,7 @@ public class BookSet {
/** /**
* 发送书籍删除topic * 发送书籍删除topic
* * @param bookId 书籍标识
* @param bookId
* 书籍标识
*/ */
public void sendBookDeleteTopic(Long bookId) { public void sendBookDeleteTopic(Long bookId) {
LOGGER.info("【书籍基础】发送书籍删除topic,<START>"); LOGGER.info("【书籍基础】发送书籍删除topic,<START>");
...@@ -417,7 +452,6 @@ public class BookSet { ...@@ -417,7 +452,6 @@ public class BookSet {
/** /**
* 批量删除书籍topic * 批量删除书籍topic
*
* @param bookIds * @param bookIds
*/ */
public void sendBooksDeleteTopic(List<Long> bookIds) { public void sendBooksDeleteTopic(List<Long> bookIds) {
...@@ -434,7 +468,6 @@ public class BookSet { ...@@ -434,7 +468,6 @@ public class BookSet {
/** /**
* 设置被诉方 * 设置被诉方
*
* @param adviserBooks * @param adviserBooks
* @param bookAppealId * @param bookAppealId
*/ */
...@@ -456,12 +489,9 @@ public class BookSet { ...@@ -456,12 +489,9 @@ public class BookSet {
/** /**
* 设置申诉和被诉编辑信息 * 设置申诉和被诉编辑信息
*
* @param appealAdviserList * @param appealAdviserList
* @param bookAppealDto * @param bookAppealDto 申诉方
* 申诉方 * @param defendantAdvisers 被诉方
* @param defendantAdvisers
* 被诉方
*/ */
public void setAppealAdviserList(List<AppealAdviserDto> appealAdviserList, BookAppealDto bookAppealDto, public void setAppealAdviserList(List<AppealAdviserDto> appealAdviserList, BookAppealDto bookAppealDto,
List<BookAdviserDto> defendantAdvisers) { List<BookAdviserDto> defendantAdvisers) {
...@@ -496,7 +526,7 @@ public class BookSet { ...@@ -496,7 +526,7 @@ public class BookSet {
Map<Long, String> adviserNameMap = adviserConsr.getNames(adviserIds); Map<Long, String> adviserNameMap = adviserConsr.getNames(adviserIds);
//获取运营平台名称 //获取运营平台名称
Map<Long, String> channelNameMap = channelConsr.getNamesByIdList(channelIds); Map<Long, String> channelNameMap = channelConsr.getNamesByIdList(channelIds);
if(MapUtils.isEmpty(adviserNameMap)){ if (MapUtils.isEmpty(adviserNameMap)) {
return; return;
} }
for (AppealAdviserDto adviser : appealAdviserList) { for (AppealAdviserDto adviser : appealAdviserList) {
...@@ -511,7 +541,6 @@ public class BookSet { ...@@ -511,7 +541,6 @@ public class BookSet {
/** /**
* 设置编辑详细信息 * 设置编辑详细信息
*
* @param adviserManageDtos * @param adviserManageDtos
* @param adviserIds * @param adviserIds
* @return: void * @return: void
...@@ -552,9 +581,9 @@ public class BookSet { ...@@ -552,9 +581,9 @@ public class BookSet {
} }
/** /**
* @Description:设置主编辑信息
* @param bookDto * @param bookDto
* @param mainAdviserId * @param mainAdviserId
* @Description:设置主编辑信息
* @author: lihao * @author: lihao
* @date: 2017年7月12日 下午6:46:48 * @date: 2017年7月12日 下午6:46:48
*/ */
...@@ -567,8 +596,8 @@ public class BookSet { ...@@ -567,8 +596,8 @@ public class BookSet {
} }
/** /**
* @Description:设置微信端书刊列表详细信息
* @param recordList * @param recordList
* @Description:设置微信端书刊列表详细信息
* @return: void * @return: void
* @author: lihao * @author: lihao
* @date: 2017年7月18日 下午8:07:15 * @date: 2017年7月18日 下午8:07:15
...@@ -684,7 +713,6 @@ public class BookSet { ...@@ -684,7 +713,6 @@ public class BookSet {
/** /**
* 设置应用基本信息(过滤审核不通过的与过期的应用) * 设置应用基本信息(过滤审核不通过的与过期的应用)
*
* @param bookAppDtos * @param bookAppDtos
* @return * @return
*/ */
...@@ -720,7 +748,6 @@ public class BookSet { ...@@ -720,7 +748,6 @@ public class BookSet {
/** /**
* 设置录音并转换为map * 设置录音并转换为map
*
* @param bookProductDtos * @param bookProductDtos
* @return * @return
*/ */
...@@ -753,7 +780,6 @@ public class BookSet { ...@@ -753,7 +780,6 @@ public class BookSet {
/** /**
* 设置应用基本信息 * 设置应用基本信息
*
* @param bookAppDtos * @param bookAppDtos
*/ */
public void setAppInfo(List<BookAppDto> bookAppDtos) { public void setAppInfo(List<BookAppDto> bookAppDtos) {
...@@ -786,7 +812,6 @@ public class BookSet { ...@@ -786,7 +812,6 @@ public class BookSet {
/** /**
* 设置是否配置过录音 * 设置是否配置过录音
*
* @param bookProductAssoc * @param bookProductAssoc
*/ */
public void setIsHaveSound(List<BookProductDto> bookProductAssoc) { public void setIsHaveSound(List<BookProductDto> bookProductAssoc) {
...@@ -821,7 +846,6 @@ public class BookSet { ...@@ -821,7 +846,6 @@ public class BookSet {
/** /**
* 设置商品基本信息 * 设置商品基本信息
*
* @param bookProductAssoc * @param bookProductAssoc
*/ */
public void setProductInfo(List<BookProductDto> bookProductAssoc, Long channelId) { public void setProductInfo(List<BookProductDto> bookProductAssoc, Long channelId) {
...@@ -864,7 +888,6 @@ public class BookSet { ...@@ -864,7 +888,6 @@ public class BookSet {
/** /**
* 设置资源文件 * 设置资源文件
*
* @param bookResources * @param bookResources
*/ */
public List<Object> listResourceFile(List<BookResourceDto> bookResources) { public List<Object> listResourceFile(List<BookResourceDto> bookResources) {
...@@ -909,7 +932,6 @@ public class BookSet { ...@@ -909,7 +932,6 @@ public class BookSet {
/** /**
* 设置资源基本信息 * 设置资源基本信息
*
* @param bookResources * @param bookResources
*/ */
public void setResourceInfo(List<BookResourceDto> bookResources) { public void setResourceInfo(List<BookResourceDto> bookResources) {
...@@ -930,7 +952,6 @@ public class BookSet { ...@@ -930,7 +952,6 @@ public class BookSet {
/** /**
* 设置百分比 * 设置百分比
*
* @param bookTypes * @param bookTypes
*/ */
public void setPercent(List<BookTypeDto> bookTypes) { public void setPercent(List<BookTypeDto> bookTypes) {
...@@ -960,7 +981,6 @@ public class BookSet { ...@@ -960,7 +981,6 @@ public class BookSet {
/** /**
* 设置模板名称 * 设置模板名称
*
* @param recordList * @param recordList
*/ */
public void setTemplateName(List<Object> recordList) { public void setTemplateName(List<Object> recordList) {
...@@ -995,7 +1015,7 @@ public class BookSet { ...@@ -995,7 +1015,7 @@ public class BookSet {
* 设置待审核数 * 设置待审核数
* @param recordList * @param recordList
*/ */
public void setAuditWaitNum(List<Object> recordList){ public void setAuditWaitNum(List<Object> recordList) {
LOGGER.info("设置待审核数【START】"); LOGGER.info("设置待审核数【START】");
if (ListUtils.isEmpty(recordList)) { if (ListUtils.isEmpty(recordList)) {
return; return;
...@@ -1007,11 +1027,11 @@ public class BookSet { ...@@ -1007,11 +1027,11 @@ public class BookSet {
bookIds.add(bookDto.getBookId()); bookIds.add(bookDto.getBookId());
} }
} }
if(ListUtils.isEmpty(bookIds)){ if (ListUtils.isEmpty(bookIds)) {
return; return;
} }
Map<Long,Long> resultMap = qrcodeSceneConsr.getCountMapByBookIds(bookIds); Map<Long, Long> resultMap = qrcodeSceneConsr.getCountMapByBookIds(bookIds);
if(MapUtils.isEmpty(resultMap)){ if (MapUtils.isEmpty(resultMap)) {
return; return;
} }
for (Object object : recordList) { for (Object object : recordList) {
...@@ -1025,7 +1045,6 @@ public class BookSet { ...@@ -1025,7 +1045,6 @@ public class BookSet {
/** /**
* 设置模板名称 * 设置模板名称
*
* @param bookDto * @param bookDto
*/ */
public void setTemplateName(BookDto bookDto) { public void setTemplateName(BookDto bookDto) {
...@@ -1050,7 +1069,6 @@ public class BookSet { ...@@ -1050,7 +1069,6 @@ public class BookSet {
/** /**
* 组合excel数据 * 组合excel数据
*
* @param agentBook * @param agentBook
* @return * @return
*/ */
...@@ -1130,14 +1148,13 @@ public class BookSet { ...@@ -1130,14 +1148,13 @@ public class BookSet {
/** /**
* 生成Excel * 生成Excel
*
* @param dataList * @param dataList
* @return * @return
*/ */
public String createExcel(List<Object[]> dataList) { public String createExcel(List<Object[]> dataList) {
LOGGER.info("生成Excel【Start】"); LOGGER.info("生成Excel【Start】");
String[] rowsName = { "书刊名称", "书刊类型", "书刊分类", "条形码", "添加编辑", "出版社", "添加时间", "运营平台", "浏览量", "读者量", "扫码次数", String[] rowsName = {"书刊名称", "书刊类型", "书刊分类", "条形码", "添加编辑", "出版社", "添加时间", "运营平台", "浏览量", "读者量", "扫码次数",
"收益" }; "收益"};
String fileUrl = exportConsr.exportExcel("编辑添加书刊列表-" + DateUtils.getStrFormTime("yyyyMMdd", new Date()), String fileUrl = exportConsr.exportExcel("编辑添加书刊列表-" + DateUtils.getStrFormTime("yyyyMMdd", new Date()),
rowsName, dataList); rowsName, dataList);
LOGGER.info("生成Excel【END】fileUrl=" + fileUrl); LOGGER.info("生成Excel【END】fileUrl=" + fileUrl);
...@@ -1146,7 +1163,6 @@ public class BookSet { ...@@ -1146,7 +1163,6 @@ public class BookSet {
/** /**
* 发送图书Excel生成完成站内信 * 发送图书Excel生成完成站内信
*
* @param agentId * @param agentId
* @param url * @param url
* @param sendDate * @param sendDate
...@@ -1165,7 +1181,6 @@ public class BookSet { ...@@ -1165,7 +1181,6 @@ public class BookSet {
/** /**
* 设置图书读者量、扫码量、浏览量 * 设置图书读者量、扫码量、浏览量
*
* @param bookList * @param bookList
*/ */
public void setBookSvUvPv(List<BookDto> bookList) { public void setBookSvUvPv(List<BookDto> bookList) {
...@@ -1201,7 +1216,6 @@ public class BookSet { ...@@ -1201,7 +1216,6 @@ public class BookSet {
/** /**
* 设置图书读者量、扫码量、浏览量 * 设置图书读者量、扫码量、浏览量
*
* @param bookList * @param bookList
*/ */
@ParamLog(value = "设置图书读者量、扫码量、浏览量", isBefore = false) @ParamLog(value = "设置图书读者量、扫码量、浏览量", isBefore = false)
...@@ -1240,7 +1254,6 @@ public class BookSet { ...@@ -1240,7 +1254,6 @@ public class BookSet {
/** /**
* 冻结状态 * 冻结状态
*
* @param bookList * @param bookList
*/ */
public void setFreezeStatus(List<Object> bookList) { public void setFreezeStatus(List<Object> bookList) {
...@@ -1267,7 +1280,6 @@ public class BookSet { ...@@ -1267,7 +1280,6 @@ public class BookSet {
/** /**
* 设置冻结状态 * 设置冻结状态
*
* @param bookDto * @param bookDto
*/ */
public void setFreezeStatus(BookDto bookDto) { public void setFreezeStatus(BookDto bookDto) {
...@@ -1284,13 +1296,13 @@ public class BookSet { ...@@ -1284,13 +1296,13 @@ public class BookSet {
* 设置二维码相关信息 * 设置二维码相关信息
* @param recordList * @param recordList
*/ */
public void setQrInfo(List<Object> recordList){ public void setQrInfo(List<Object> recordList) {
if (ListUtils.isEmpty(recordList)) { if (ListUtils.isEmpty(recordList)) {
return; return;
} }
List<BookAssocLastQrAskVO> bookAssocLastQrAskVOS = Lists.newArrayList(); List<BookAssocLastQrAskVO> bookAssocLastQrAskVOS = Lists.newArrayList();
BookAssocLastQrAskVO bookAssocLastQrAskVO = null; BookAssocLastQrAskVO bookAssocLastQrAskVO = null;
for(Object object:recordList){ for (Object object : recordList) {
BookDto bookDto = (BookDto) object; BookDto bookDto = (BookDto) object;
bookAssocLastQrAskVO = new BookAssocLastQrAskVO(); bookAssocLastQrAskVO = new BookAssocLastQrAskVO();
bookAssocLastQrAskVO.setAdviserId(bookDto.getAdviserId()); bookAssocLastQrAskVO.setAdviserId(bookDto.getAdviserId());
...@@ -1298,24 +1310,24 @@ public class BookSet { ...@@ -1298,24 +1310,24 @@ public class BookSet {
bookAssocLastQrAskVO.setChannelId(bookDto.getChannelId()); bookAssocLastQrAskVO.setChannelId(bookDto.getChannelId());
bookAssocLastQrAskVOS.add(bookAssocLastQrAskVO); bookAssocLastQrAskVOS.add(bookAssocLastQrAskVO);
} }
if(ListUtils.isEmpty(bookAssocLastQrAskVOS)){ if (ListUtils.isEmpty(bookAssocLastQrAskVOS)) {
return; return;
} }
Map<String,BookAssocLastQrVO> bookAssocLastQrVOMap = qrcodeSceneConsr.getLastQrInfoByBookIds(bookAssocLastQrAskVOS); Map<String, BookAssocLastQrVO> bookAssocLastQrVOMap = qrcodeSceneConsr.getLastQrInfoByBookIds(bookAssocLastQrAskVOS);
if(MapUtils.isEmpty(bookAssocLastQrVOMap)){ if (MapUtils.isEmpty(bookAssocLastQrVOMap)) {
return; return;
} }
for(Object object:recordList){ for (Object object : recordList) {
BookDto bookDto = (BookDto) object; BookDto bookDto = (BookDto) object;
String key = bookDto.getBookId()+"_"+bookDto.getChannelId(); String key = bookDto.getBookId() + "_" + bookDto.getChannelId();
BookAssocLastQrVO bookAssocLastQrVO = bookAssocLastQrVOMap.get(key); BookAssocLastQrVO bookAssocLastQrVO = bookAssocLastQrVOMap.get(key);
if(null != bookAssocLastQrVO){ if (null != bookAssocLastQrVO) {
bookDto.setQrcodeUrl(bookAssocLastQrVO.getQrcodeUrl()); bookDto.setQrcodeUrl(bookAssocLastQrVO.getQrcodeUrl());
bookDto.setMessageCount(bookAssocLastQrVO.getCount()); bookDto.setMessageCount(bookAssocLastQrVO.getCount());
List<QrcodeLocationDto> qrcodeLocationDtos = bookAssocLastQrVO.getQrcodeLocations(); List<QrcodeLocationDto> qrcodeLocationDtos = bookAssocLastQrVO.getQrcodeLocations();
String localtion = null; String localtion = null;
if(!ListUtils.isEmpty(qrcodeLocationDtos)){ if (!ListUtils.isEmpty(qrcodeLocationDtos)) {
localtion = StringUtil.isEmpty(qrcodeLocationDtos.get(0).getLocationName())?qrcodeLocationDtos.get(0).getLocationRemark():qrcodeLocationDtos.get(0).getLocationName(); localtion = StringUtil.isEmpty(qrcodeLocationDtos.get(0).getLocationName()) ? qrcodeLocationDtos.get(0).getLocationRemark() : qrcodeLocationDtos.get(0).getLocationName();
} }
bookDto.setLocation(localtion); bookDto.setLocation(localtion);
bookDto.setSceneName(bookAssocLastQrVO.getSceneName()); bookDto.setSceneName(bookAssocLastQrVO.getSceneName());
...@@ -1324,12 +1336,12 @@ public class BookSet { ...@@ -1324,12 +1336,12 @@ public class BookSet {
} }
} }
} }
/** /**
* 设置图书收益 * 设置图书收益
*
* @param recordList * @param recordList
*/ */
@ParamLog(value = "图书收益",isBefore = false) @ParamLog(value = "图书收益", isBefore = false)
public void setBookIncome(List<Object> recordList) { public void setBookIncome(List<Object> recordList) {
if (ListUtils.isEmpty(recordList)) { if (ListUtils.isEmpty(recordList)) {
return; return;
...@@ -1375,7 +1387,6 @@ public class BookSet { ...@@ -1375,7 +1387,6 @@ public class BookSet {
/** /**
* 发送图书Excel生成完成站内信(平台端) * 发送图书Excel生成完成站内信(平台端)
*
* @param * @param
* @param url * @param url
* @param sendDate * @param sendDate
...@@ -1391,7 +1402,6 @@ public class BookSet { ...@@ -1391,7 +1402,6 @@ public class BookSet {
/** /**
* 组合excel数据(平台端) * 组合excel数据(平台端)
*
* @param platformBook * @param platformBook
* @return * @return
*/ */
...@@ -1445,7 +1455,6 @@ public class BookSet { ...@@ -1445,7 +1455,6 @@ public class BookSet {
/** /**
* 设置图书是否关联二维码和个数 * 设置图书是否关联二维码和个数
*
* @param recordList (List<BookDto>) * @param recordList (List<BookDto>)
* @param adviserId 编辑标识 * @param adviserId 编辑标识
*/ */
...@@ -1482,26 +1491,25 @@ public class BookSet { ...@@ -1482,26 +1491,25 @@ public class BookSet {
* 设置父模板标识 * 设置父模板标识
* @param bookDto * @param bookDto
*/ */
public void setTempleParentId(BookDto bookDto){ public void setTempleParentId(BookDto bookDto) {
LOGGER.info("设置父模板标识.setTempleParentId.<START>.[bookDto]:"+bookDto); LOGGER.info("设置父模板标识.setTempleParentId.<START>.[bookDto]:" + bookDto);
if(null != bookDto && null != bookDto.getTempletId()){ if (null != bookDto && null != bookDto.getTempletId()) {
List<Long> assistTempletIds = Lists.newArrayList(); List<Long> assistTempletIds = Lists.newArrayList();
assistTempletIds.add(bookDto.getTempletId()); assistTempletIds.add(bookDto.getTempletId());
Map<Long, AssistTempletDTO> templeMap = assistTempletConsr.mapByIds(assistTempletIds); Map<Long, AssistTempletDTO> templeMap = assistTempletConsr.mapByIds(assistTempletIds);
if(!MapUtils.isEmpty(templeMap)){ if (!MapUtils.isEmpty(templeMap)) {
AssistTempletDTO templetDTO = templeMap.get(bookDto.getTempletId()); AssistTempletDTO templetDTO = templeMap.get(bookDto.getTempletId());
if(null != templetDTO){ if (null != templetDTO) {
bookDto.setTempleParentId(templetDTO.getParentId()); bookDto.setTempleParentId(templetDTO.getParentId());
} }
} }
} }
LOGGER.info("设置父模板标识.setTempleParentId.<END>.[bookDto]:"+bookDto); LOGGER.info("设置父模板标识.setTempleParentId.<END>.[bookDto]:" + bookDto);
} }
/** /**
* 设置模板名称 * 设置模板名称
*
*/ */
public void setTempletNames(List<NoAuthBookVO> noAuthBookVOs) { public void setTempletNames(List<NoAuthBookVO> noAuthBookVOs) {
if (ListUtils.isEmpty(noAuthBookVOs)) { if (ListUtils.isEmpty(noAuthBookVOs)) {
......
...@@ -3,17 +3,15 @@ ...@@ -3,17 +3,15 @@
*/ */
package com.pcloud.book.book.tools; package com.pcloud.book.book.tools;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.vo.NoAuthBookVO; import com.pcloud.book.book.vo.NoAuthBookVO;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @描述: * @描述:
* @作者:songx * @作者:songx
...@@ -82,6 +80,26 @@ public class BookTools { ...@@ -82,6 +80,26 @@ public class BookTools {
} }
/** /**
* 批量填充运营公众号信息
*/
public static void setChannelOfficialAccountsNames(List<Object> objects, Map<Long, AccountSettingDto> officialAccountNameMap) throws BizException {
for (Object object : objects) {
BookDto bookDto = (BookDto) object;
Long channelId = bookDto.getChannelId();
if (officialAccountNameMap.containsKey(channelId)) {
AccountSettingDto accountSettingDto = officialAccountNameMap.get(channelId);
if (null != accountSettingDto) {
bookDto.setOfficialAccountsName(accountSettingDto.getBaseAppName());
} else {
bookDto.setOfficialAccountsName("");
}
} else {
bookDto.setOfficialAccountsName("");
}
}
}
/**
* 组装编辑标识(去重) * 组装编辑标识(去重)
* @param objects * @param objects
* @return * @return
...@@ -99,6 +117,23 @@ public class BookTools { ...@@ -99,6 +117,23 @@ public class BookTools {
} }
/** /**
* 组装出版标识(去重)
* @param objects
* @return
*/
public static List<Long> listAgentIds(List<Object> objects) {
Map<Long, Long> agentIdMap = new HashMap<>();
for (Object object : objects) {
BookDto bookDto = (BookDto) object;
Long agentId = bookDto.getAgentId();
if (!agentIdMap.containsKey(agentId)) {
agentIdMap.put(agentId, agentId);
}
}
return Lists.newArrayList(agentIdMap.values());
}
/**
* 批量填充编辑名称 * 批量填充编辑名称
* @param objects * @param objects
* @param adviserNameMap * @param adviserNameMap
...@@ -115,7 +150,24 @@ public class BookTools { ...@@ -115,7 +150,24 @@ public class BookTools {
} }
} }
public static void setChannelNames4NoAuthBookVO(List<NoAuthBookVO> noAuthBookVOS, Map<Long,String> channelNameMap) { /**
* 批量填充出版名称
* @param objects
* @param agentNameMap
*/
public static void setAgentNames(List<Object> objects, Map<Long, String> agentNameMap) {
for (Object object : objects) {
BookDto bookDto = (BookDto) object;
Long agentId = bookDto.getAgentId();
if (agentNameMap.containsKey(agentId)) {
bookDto.setAgentName(agentNameMap.get(agentId));
} else {
bookDto.setAgentName("");
}
}
}
public static void setChannelNames4NoAuthBookVO(List<NoAuthBookVO> noAuthBookVOS, Map<Long, String> channelNameMap) {
for (NoAuthBookVO noAuthBookVO : noAuthBookVOS) { for (NoAuthBookVO noAuthBookVO : noAuthBookVOS) {
Long channelId = noAuthBookVO.getChannelId(); Long channelId = noAuthBookVO.getChannelId();
if (channelNameMap.containsKey(channelId)) { if (channelNameMap.containsKey(channelId)) {
......
...@@ -84,4 +84,28 @@ public class AppConsr { ...@@ -84,4 +84,28 @@ public class AppConsr {
return appDtos; return appDtos;
} }
/**
* 获取应用基本信息
* @param appIds 应用ID列表
* @return
*/
public Map<Long, AppDto> getBaseByIds(List<Long> appIds) {
LOGGER.info("获取应用基本信息[appService.getBaseByIds],参数列表[appIds]:" + appIds);
Map<Long, AppDto> appDtos = new HashMap<>();
if (ListUtils.isEmpty(appIds)) {
return appDtos;
}
try {
ResponseEntity<ResponseDto<Map<Long, AppDto>>> appDtosEntity = appService.getBaseByIds(appIds);
appDtos = ResponseHandleUtil.parseMapResponse(appDtosEntity, Long.class, AppDto.class);
} catch (BizException e) {
LOGGER.warn("获取应用基本信息[appService.getBaseByIds]:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("获取应用基本信息[appService.getBaseByIds]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_USER_ERROR, "获取应用基本信息失败~!");
}
return appDtos;
}
} }
...@@ -16,6 +16,7 @@ import com.pcloud.book.base.exception.BookBizException; ...@@ -16,6 +16,7 @@ import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.resourcecenter.product.dto.Product4BookDTO;
import com.pcloud.resourcecenter.product.dto.ProductDto; import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.service.ProductService; import com.pcloud.resourcecenter.product.service.ProductService;
...@@ -61,7 +62,7 @@ public class ProductConsr { ...@@ -61,7 +62,7 @@ public class ProductConsr {
* 资源中心拉取商品基本信息 * 资源中心拉取商品基本信息
*/ */
public Map<Long, ProductDto> getProBasesByIds(List<Long> productIds) throws BizException { public Map<Long, ProductDto> getProBasesByIds(List<Long> productIds) throws BizException {
LOGGER.info("【资源中心(消)】获取商品基本信息,<START>.[productIds]=" + productIds.toString() + "]"); LOGGER.info("【资源中心(消)】获取商品基本信息,<START>.[productIds]=" + productIds + "]");
if (productIds == null || productIds.isEmpty()) { if (productIds == null || productIds.isEmpty()) {
return null; return null;
} }
...@@ -80,6 +81,28 @@ public class ProductConsr { ...@@ -80,6 +81,28 @@ public class ProductConsr {
} }
/** /**
* 资源中心拉取商品基本信息
*/
public Map<Long, Product4BookDTO> getProBasesWithSceneByIds(List<Long> productIds) throws BizException {
LOGGER.info("【资源中心(消)】获取商品基本信息,<START>.[productIds]=" + productIds + "]");
if (productIds == null || productIds.isEmpty()) {
return null;
}
try {
return ResponseHandleUtil.parseMapResponse(productService.getProInfoListWithScene(productIds), Long.class,
Product4BookDTO.class);
} catch (BizException e) {
LOGGER.warn("【资源中心(消)】获取商品基本信息失败:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("【资源中心(消)】获取商品基本信息.[getProInfoListWithScene]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
LOGGER.info("【资源中心(消)】获取商品基本信息,<END>");
}
}
/**
* 获取问答商品信息 * 获取问答商品信息
*/ */
public Map<Long, ProductDto> getQaProRetailBase4Group(List<Long> productIds, Long channelId, Long agentId) public Map<Long, ProductDto> getQaProRetailBase4Group(List<Long> productIds, Long channelId, Long agentId)
......
...@@ -3,17 +3,19 @@ ...@@ -3,17 +3,19 @@
*/ */
package com.pcloud.book.consumer.user; package com.pcloud.book.consumer.user;
import com.pcloud.common.dto.ResponseDto; import java.util.List;
import com.pcloud.usercenter.party.agent.entity.Agent; import java.util.Map;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.pcloud.channelcenter.base.exceptions.ChannelBizException; import com.pcloud.channelcenter.base.exceptions.ChannelBizException;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.usercenter.party.agent.entity.Agent;
import com.pcloud.usercenter.party.agent.service.AgentService; import com.pcloud.usercenter.party.agent.service.AgentService;
/** /**
...@@ -73,4 +75,23 @@ public class AgentConsr { ...@@ -73,4 +75,23 @@ public class AgentConsr {
} }
return agent.getId(); return agent.getId();
} }
/**
* 批量获取出版名称
*/
public Map<Long, String> getNames(List<Long> agentIds) throws BizException {
LOGGER.info("【出版用户(消)】批量获取出版名称,<START>.[agentIds]=" + agentIds.toString());
if (ListUtils.isEmpty(agentIds)) {
return null;
}
Map<Long, String> agentMap = null;
try {
agentMap = ResponseHandleUtil.parseMapResponse(agentService.getNamesByIdList(agentIds), Long.class,
String.class);
} catch (Exception e) {
LOGGER.error("【出版用户(消)】批量获取出版名称.[getNames]:" + e.getMessage(), e);
}
LOGGER.info("【出版用户(消)】批量获取出版名称,<END>");
return agentMap;
}
} }
package com.pcloud.book.util.common;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.pcloud.common.utils.DateNewUtils;
/**
* @author PENG
* @version 1.0
* @description 通用Utils
* @date 2017年6月14日 下午2:11:50
*/
public class CommonUtils {
/**
* Long数字转字符串
* @param number Long数字
* @return
* @author PENG
*/
public static String longToString(Long number) {
return number == null ? "0" : number.toString();
}
/**
* 获取Boolean类型的值(处理为null的情况)
* @param value Boolean值
* @return
*/
public static Boolean getBooleanValue(Boolean value) {
return value == null ? false : value;
}
/**
* 两个时间之间的秒数
* @param date1 时间1
* @param date2 时间2
* @return
* @author PENG
*/
public static Integer subSecond(Date date1, Date date2) {
long d1 = date1.getTime();
long d2 = date2.getTime();
int sub = (int) ((d1 - d2) / 1000);
return sub;
}
/**
* 获取今日所剩秒数
* @return
* @author PENG
*/
public static Integer todayRemainingSeconds() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
Integer second = subSecond(cal.getTime(), new Date());
if (second <= 0) {
second = 1;
}
return second;
}
/**
* 收集起始时间到结束时间之间所有的时间并以字符串集合方式返回
* @param timeStart 开始时间
* @param timeEnd 截止时间
* @return
* @author PENG
*/
public static List<String> collectLocalDates(Date timeStart, Date timeEnd) {
List<String> result = new ArrayList<>();
Calendar start = Calendar.getInstance();
start.setTime(timeStart);
Calendar end = Calendar.getInstance();
end.setTime(timeEnd);
while (start.before(end) || start.equals(end)) {
result.add(DateNewUtils.getShortDateStr(start.getTime()));
start.add(Calendar.DAY_OF_YEAR, 1);
}
return result;
}
/**
* 收集起始时间到结束时间之间所有的时间并以字符串集合方式返回
* @param timeStart 开始时间
* @param timeEnd 截止时间
* @return
* @author PENG
*/
public static List<String> collectLocalDates(String timeStart, String timeEnd) {
Date startDate = DateNewUtils.getDateByStr(timeStart);
Date endDate = DateNewUtils.getDateByStr(timeEnd);
return collectLocalDates(startDate, endDate);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingAdviserPermissionDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingAdviserPermission">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="adviser_id" property="adviserId" jdbcType="INTEGER"/>
<result column="book_id" property="bookId" jdbcType="INTEGER"/>
<result column="channel_id" property="channelId" jdbcType="INTEGER"/>
<result column="is_open" property="isOpen" jdbcType="BIT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, adviser_id, book_id, channel_id, is_open, create_time, update_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_adviser_permission
where id = #{id}
</select>
<select id="getByAdviserId" resultMap="BaseResultMap" parameterType="map">
select
<include refid="Base_Column_List"/>
from advertising_adviser_permission
where adviser_id = #{adviserId}
and book_id = #{bookId}
and channel_id = #{channelId}
</select>
<select id="checkBookOpen" parameterType="map" resultType="Boolean">
SELECT
IF (
adp.is_open = 0
OR (
adp.is_open IS NULL
AND ap.is_open = 0
),
0,
1
) isOpen
FROM
book_adviser a
LEFT JOIN advertising_agent_permission ap ON ap.agent_id = #{agentId}
LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = a.ADVISER_ID
AND adp.channel_id = a.CHANNEL_ID
AND adp.book_id = a.BOOK_ID
WHERE
a.BOOK_ID = #{bookId}
AND a.ADVISER_ID = #{adviserId}
AND a.CHANNEL_ID = #{channelId}
AND a.IS_MAIN_EDITOR = 1
</select>
<delete id="deleteById" parameterType="Long">
delete from advertising_adviser_permission
where id = #{id}
</delete>
<delete id="deleteByAdviserId" parameterType="Long">
delete from advertising_adviser_permission
where adviser_id = #{adviserId}
</delete>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingAdviserPermission"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_adviser_permission
<trim prefix="(" suffix=")" suffixOverrides=",">
adviser_id,
book_id,
channel_id,
is_open,
create_time,
update_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{adviserId,jdbcType=INTEGER},
#{bookId,jdbcType=INTEGER},
#{channelId,jdbcType=INTEGER},
#{isOpen,jdbcType=BIT},
NOW(),
NOW(),
</trim>
</insert>
<insert id="batchInsert" parameterType="com.pcloud.book.advertising.entity.AdvertisingAdviserPermission"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_adviser_permission (
adviser_id,
book_id,
channel_id,
is_open,
create_time,
update_time
) values
<foreach collection="list" item="item" index="index"
separator=",">
(#{item.adviserId,jdbcType=INTEGER},
#{item.bookId,jdbcType=INTEGER},
#{item.channelId,jdbcType=INTEGER},
#{item.isOpen,jdbcType=BIT},
NOW(),
NOW())
</foreach>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingAdviserPermission">
update advertising_adviser_permission
<set>
<if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER},
</if>
<if test="bookId != null">
book_id = #{bookId,jdbcType=INTEGER},
</if>
<if test="channelId != null">
channel_id = #{channelId,jdbcType=INTEGER},
</if>
<if test="isOpen != null">
is_open = #{isOpen,jdbcType=BIT},
</if>
update_time = NOW(),
</set>
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingAgentPermissionDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingAgentPermission">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="agent_id" property="agentId" jdbcType="INTEGER"/>
<result column="is_open" property="isOpen" jdbcType="BIT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, agent_id, is_open, create_time, update_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_agent_permission
where id = #{id}
</select>
<select id="getByAgentId" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_agent_permission
where agent_id = #{agentId}
</select>
<delete id="deleteById" parameterType="Long">
delete from advertising_agent_permission
where id = #{id}
</delete>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingAgentPermission"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_agent_permission
<trim prefix="(" suffix=")" suffixOverrides=",">
agent_id,
is_open,
create_time,
update_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{agentId,jdbcType=INTEGER},
#{isOpen,jdbcType=BIT},
NOW(),
NOW(),
</trim>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingAgentPermission">
update advertising_agent_permission
<set>
<if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER},
</if>
<if test="isOpen != null">
is_open = #{isOpen,jdbcType=BIT},
</if>
update_time = NOW(),
</set>
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingClickRecordDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingClickRecord">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="ad_id" property="adId" jdbcType="INTEGER"/>
<result column="book_id" property="bookId" jdbcType="INTEGER"/>
<result column="scene_id" property="sceneId" jdbcType="INTEGER"/>
<result column="adviser_id" property="adviserId" jdbcType="INTEGER"/>
<result column="agent_id" property="agentId" jdbcType="INTEGER"/>
<result column="channel_id" property="channelId" jdbcType="INTEGER"/>
<result column="official_account_id" property="officialAccountId" jdbcType="INTEGER"/>
<result column="from_type" property="fromType" jdbcType="VARCHAR"/>
<result column="from_id" property="fromId" jdbcType="INTEGER"/>
<result column="wechat_user_id" property="wechatUserId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="create_day" property="createDay" jdbcType="DATE"/>
</resultMap>
<sql id="Base_Column_List">
id, ad_id, book_id, scene_id, adviser_id, agent_id, channel_id, official_account_id, from_type,
from_id, wechat_user_id, create_time, create_day
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_click_record
where id = #{id}
</select>
<select id="getClickNum" parameterType="map" resultType="Long">
SELECT
count(1)
FROM
advertising_click_record
WHERE
ad_id = #{adId}
<if test="bookId != null">
AND book_id = #{bookId}
AND adviser_id = #{adviserId}
AND channel_id = #{channelId}
</if>
<if test="fromId != null">
AND from_id = #{fromId}
AND from_type = #{fromType}
</if>
</select>
<delete id="deleteById" parameterType="Long">
delete from advertising_click_record
where id = #{id}
</delete>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingClickRecord"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_click_record
<trim prefix="(" suffix=")" suffixOverrides=",">
ad_id,
book_id,
scene_id,
adviser_id,
agent_id,
channel_id,
official_account_id,
from_type,
from_id,
wechat_user_id,
create_time,
create_day,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{adId,jdbcType=INTEGER},
#{bookId,jdbcType=INTEGER},
#{sceneId,jdbcType=INTEGER},
#{adviserId,jdbcType=INTEGER},
#{agentId,jdbcType=INTEGER},
#{channelId,jdbcType=INTEGER},
#{officialAccountId,jdbcType=INTEGER},
#{fromType,jdbcType=VARCHAR},
#{fromId,jdbcType=INTEGER},
#{wechatUserId,jdbcType=INTEGER},
NOW(),
NOW(),
</trim>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingClickRecord">
update advertising_click_record
<set>
<if test="adId != null">
ad_id = #{adId,jdbcType=INTEGER},
</if>
<if test="bookId != null">
book_id = #{bookId,jdbcType=INTEGER},
</if>
<if test="sceneId != null">
scene_id = #{sceneId,jdbcType=INTEGER},
</if>
<if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER},
</if>
<if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER},
</if>
<if test="channelId != null">
channel_id = #{channelId,jdbcType=INTEGER},
</if>
<if test="officialAccountId != null">
official_account_id = #{officialAccountId,jdbcType=INTEGER},
</if>
<if test="fromType != null">
from_type = #{fromType,jdbcType=VARCHAR},
</if>
<if test="fromId != null">
from_id = #{fromId,jdbcType=INTEGER},
</if>
<if test="wechatUserId != null">
wechat_user_id = #{wechatUserId,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingDistributionBookDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingDistributionBook">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="ad_id" property="adId" jdbcType="INTEGER"/>
<result column="book_id" property="bookId" jdbcType="INTEGER"/>
<result column="adviser_id" property="adviserId" jdbcType="INTEGER"/>
<result column="agent_id" property="agentId" jdbcType="INTEGER"/>
<result column="channel_id" property="channelId" jdbcType="INTEGER"/>
<result column="distribution_time" property="distributionTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, ad_id, book_id, adviser_id, agent_id, channel_id, distribution_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_distribution_book
where id = #{id}
</select>
<select id="getByAdId" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_distribution_book
where ad_id = #{adId}
</select>
<select id="checkBookIdExist" parameterType="list" resultType="Long">
select
b.book_id
from
advertising_distribution_book b,
advertising_space s
where
b.ad_id = s.id
and s.is_open = 1
and b.book_id in
<foreach collection="list" index="i" item="item" open="("
separator="," close=")">
${item}
</foreach>
</select>
<select id="checkAdSpaceHasBook" parameterType="map" resultType="Boolean">
select
exists (
select
id
from
advertising_distribution_book
where
ad_id = #{adId}
)
</select>
<delete id="deleteById" parameterType="Long">
delete from advertising_distribution_book
where id = #{id}
</delete>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingDistributionBook"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_distribution_book
<trim prefix="(" suffix=")" suffixOverrides=",">
ad_id,
book_id,
adviser_id,
agent_id,
channel_id,
distribution_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{adId,jdbcType=INTEGER},
#{bookId,jdbcType=INTEGER},
#{adviserId,jdbcType=INTEGER},
#{agentId,jdbcType=INTEGER},
#{channelId,jdbcType=INTEGER},
NOW(),
</trim>
</insert>
<insert id="batchInsert" parameterType="com.pcloud.book.advertising.entity.AdvertisingDistributionBook"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_distribution_book (
ad_id,
book_id,
adviser_id,
agent_id,
channel_id,
distribution_time
) values
<foreach collection="list" item="item" index="index"
separator=",">
(#{item.adId,jdbcType=INTEGER},
#{item.bookId,jdbcType=INTEGER},
#{item.adviserId,jdbcType=INTEGER},
#{item.agentId,jdbcType=INTEGER},
#{item.channelId,jdbcType=INTEGER},
NOW())
</foreach>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingDistributionBook">
update advertising_distribution_book
<set>
<if test="adId != null">
ad_id = #{adId,jdbcType=INTEGER},
</if>
<if test="bookId != null">
book_id = #{bookId,jdbcType=INTEGER},
</if>
<if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER},
</if>
<if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER},
</if>
<if test="channelId != null">
channel_id = #{channelId,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingExposureRecordDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingExposureRecord">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="ad_id" property="adId" jdbcType="INTEGER"/>
<result column="book_id" property="bookId" jdbcType="INTEGER"/>
<result column="scene_id" property="sceneId" jdbcType="INTEGER"/>
<result column="adviser_id" property="adviserId" jdbcType="INTEGER"/>
<result column="agent_id" property="agentId" jdbcType="INTEGER"/>
<result column="channel_id" property="channelId" jdbcType="INTEGER"/>
<result column="official_account_id" property="officialAccountId" jdbcType="INTEGER"/>
<result column="from_type" property="fromType" jdbcType="VARCHAR"/>
<result column="from_id" property="fromId" jdbcType="INTEGER"/>
<result column="wechat_user_id" property="wechatUserId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="create_day" property="createDay" jdbcType="DATE"/>
</resultMap>
<sql id="Base_Column_List">
id, ad_id, book_id, scene_id, adviser_id, agent_id, channel_id, official_account_id, from_type,
from_id, wechat_user_id, create_time, create_day
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_exposure_record
where id = #{id}
</select>
<select id="getExposureNum" parameterType="map" resultType="Long">
SELECT
count(1)
FROM
advertising_exposure_record
WHERE
ad_id = #{adId}
<if test="bookId != null">
AND book_id = #{bookId}
AND adviser_id = #{adviserId}
AND channel_id = #{channelId}
</if>
<if test="fromId != null">
AND from_id = #{fromId}
AND from_type = #{fromType}
</if>
</select>
<select id="distributionDateStatics" resultType="com.pcloud.book.advertising.dto.DateCountDTO" parameterType="map">
SELECT
tmp.date,
ifnull(count(DISTINCT er.id), 0) exposureNum,
ifnull(count(DISTINCT cr.id), 0) clickNum
FROM
<foreach collection="collectDates" index="index" item="item" open="(" separator="date union all" close="date ) tmp">
select '${item}'
</foreach>
LEFT JOIN advertising_exposure_record er ON er.create_day = tmp.date
AND er.ad_id = #{adId}
LEFT JOIN advertising_click_record cr ON cr.create_day = tmp.date
AND cr.ad_id = #{adId}
GROUP BY
tmp.date
ORDER BY
tmp.date
</select>
<select id="distributionAppStatics" resultType="com.pcloud.book.advertising.dto.DistributionAppDTO" parameterType="map">
SELECT
er.from_type fromType,
er.from_id fromId,
count(DISTINCT er.id) exposureNum,
count(DISTINCT cr.id) clickNum
FROM
advertising_exposure_record er
LEFT JOIN advertising_click_record cr ON er.ad_id = cr.ad_id
AND er.from_type = cr.from_type
AND er.from_id = cr.from_id
WHERE
er.ad_id = #{adId}
GROUP BY
er.from_type,
er.from_id
ORDER BY
er.create_time ASC
</select>
<delete id="deleteById" parameterType="Long">
delete from advertising_exposure_record
where id = #{id}
</delete>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingExposureRecord"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_exposure_record
<trim prefix="(" suffix=")" suffixOverrides=",">
ad_id,
book_id,
scene_id,
adviser_id,
agent_id,
channel_id,
official_account_id,
from_type,
from_id,
wechat_user_id,
create_time,
create_day,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{adId,jdbcType=INTEGER},
#{bookId,jdbcType=INTEGER},
#{sceneId,jdbcType=INTEGER},
#{adviserId,jdbcType=INTEGER},
#{agentId,jdbcType=INTEGER},
#{channelId,jdbcType=INTEGER},
#{officialAccountId,jdbcType=INTEGER},
#{fromType,jdbcType=VARCHAR},
#{fromId,jdbcType=INTEGER},
#{wechatUserId,jdbcType=INTEGER},
NOW(),
NOW(),
</trim>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingExposureRecord">
update advertising_exposure_record
<set>
<if test="adId != null">
ad_id = #{adId,jdbcType=INTEGER},
</if>
<if test="bookId != null">
book_id = #{bookId,jdbcType=INTEGER},
</if>
<if test="sceneId != null">
scene_id = #{sceneId,jdbcType=INTEGER},
</if>
<if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER},
</if>
<if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER},
</if>
<if test="channelId != null">
channel_id = #{channelId,jdbcType=INTEGER},
</if>
<if test="officialAccountId != null">
official_account_id = #{officialAccountId,jdbcType=INTEGER},
</if>
<if test="fromType != null">
from_type = #{fromType,jdbcType=VARCHAR},
</if>
<if test="fromId != null">
from_id = #{fromId,jdbcType=INTEGER},
</if>
<if test="wechatUserId != null">
wechat_user_id = #{wechatUserId,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingSpaceDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingSpace">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="ad_name" property="adName" jdbcType="VARCHAR"/>
<result column="ad_position" property="adPosition" jdbcType="VARCHAR"/>
<result column="ad_source" property="adSource" jdbcType="VARCHAR"/>
<result column="ad_link" property="adLink" jdbcType="VARCHAR"/>
<result column="source_id" property="sourceId" jdbcType="VARCHAR"/>
<result column="ad_slogan" property="adSlogan" jdbcType="VARCHAR"/>
<result column="ad_pic" property="adPic" jdbcType="VARCHAR"/>
<result column="distribution_type" property="distributionType" jdbcType="BIT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="is_open" property="isOpen" jdbcType="BIT"/>
</resultMap>
<resultMap id="AdvertisingSpaceDTO" type="com.pcloud.book.advertising.dto.AdvertisingSpaceDTO">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="ad_name" property="adName" jdbcType="VARCHAR"/>
<result column="ad_position" property="adPosition" jdbcType="VARCHAR"/>
<result column="ad_source" property="adSource" jdbcType="VARCHAR"/>
<result column="ad_link" property="adLink" jdbcType="VARCHAR"/>
<result column="source_id" property="sourceId" jdbcType="VARCHAR"/>
<result column="ad_slogan" property="adSlogan" jdbcType="VARCHAR"/>
<result column="ad_pic" property="adPic" jdbcType="VARCHAR"/>
<result column="distribution_type" property="distributionType" jdbcType="BIT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="is_open" property="isOpen" jdbcType="BIT"/>
</resultMap>
<sql id="Base_Column_List">
id, ad_name, ad_position, ad_source, ad_link, source_id, ad_slogan, ad_pic, distribution_type,
create_time, update_time, is_open
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_space
where id = #{id}
</select>
<select id="getDTOById" resultMap="AdvertisingSpaceDTO" parameterType="Long">
select
<include refid="Base_Column_List"/>
from advertising_space
where id = #{id}
</select>
<select id="getDTOByBookId" resultMap="AdvertisingSpaceDTO" parameterType="map">
SELECT
s.id,
s.ad_name,
s.ad_link,
s.ad_position,
s.ad_source,
s.source_id,
s.ad_slogan,
s.ad_pic
FROM
advertising_distribution_book b,
advertising_space s
WHERE
b.ad_id = s.id
AND s.is_open = 1
AND b.book_id = #{bookId}
AND b.adviser_id = #{adviserId}
AND b.channel_id = #{channelId}
ORDER BY
b.distribution_time DESC
LIMIT 1
</select>
<select id="getNoSignBookAd" resultMap="AdvertisingSpaceDTO" parameterType="map">
SELECT
s.id,
s.ad_name,
s.ad_link,
s.ad_position,
s.ad_source,
s.source_id,
s.ad_slogan,
s.ad_pic
FROM
advertising_space s
WHERE
s.is_open = 1
and s.distribution_type = 1
ORDER BY
s.create_time DESC
LIMIT 1
</select>
<select id="list" parameterType="map" resultMap="AdvertisingSpaceDTO">
select
<include refid="Base_Column_List"/>
from advertising_space
where 1 = 1
<if test="name != null">
AND (ad_name LIKE CONCAT('%', #{name}, '%') OR source_id LIKE CONCAT(#{name},'%'))
</if>
ORDER BY
create_time DESC
</select>
<delete id="deleteById" parameterType="Long">
delete from advertising_space
where id = #{id}
</delete>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingSpace"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_space
<trim prefix="(" suffix=")" suffixOverrides=",">
ad_name,
ad_position,
ad_source,
ad_link,
source_id,
ad_slogan,
ad_pic,
distribution_type,
create_time,
update_time,
is_open,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{adName,jdbcType=VARCHAR},
#{adPosition,jdbcType=VARCHAR},
#{adSource,jdbcType=VARCHAR},
#{adLink,jdbcType=VARCHAR},
#{sourceId,jdbcType=VARCHAR},
#{adSlogan,jdbcType=VARCHAR},
#{adPic,jdbcType=VARCHAR},
#{distributionType,jdbcType=BIT},
NOW(),
NOW(),
#{isOpen,jdbcType=BIT},
</trim>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingSpace">
update advertising_space
<set>
<if test="adName != null">
ad_name = #{adName,jdbcType=VARCHAR},
</if>
<if test="adPosition != null">
ad_position = #{adPosition,jdbcType=VARCHAR},
</if>
<if test="adSource != null">
ad_source = #{adSource,jdbcType=VARCHAR},
</if>
<if test="adLink != null">
ad_link = #{adLink,jdbcType=VARCHAR},
</if>
<if test="sourceId != null">
source_id = #{sourceId,jdbcType=VARCHAR},
</if>
<if test="adSlogan != null">
ad_slogan = #{adSlogan,jdbcType=VARCHAR},
</if>
<if test="adPic != null">
ad_pic = #{adPic,jdbcType=VARCHAR},
</if>
<if test="distributionType != null">
distribution_type = #{distributionType,jdbcType=BIT},
</if>
update_time = NOW(),
<if test="isOpen != null">
is_open = #{isOpen,jdbcType=BIT},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
...@@ -511,6 +511,236 @@ ...@@ -511,6 +511,236 @@
</select> </select>
<!-- 获取书籍列表(编辑) --> <!-- 获取书籍列表(编辑) -->
<select id="listBook4Adviser" resultMap="bookMap" parameterType="map">
SELECT
a.BOOK_ID,
a.CHANNEL_ID,
a.ADVISER_ID,
a.IS_MAIN_EDITOR,
b.ISBN,
b.BOOK_NAME,
b.REMARK,
b.AUTHOR,
b.PUBLISH,
b.PUBLISH_DATE,
b.COVER_IMG,
b.ORIGIN_NAME,
b.BOOK_PRICE,
b.ISSN,
b.BOOK_NUM,
b.SERIAL_NUMBER,
a.TEMPLET_ID,
a.CREATED_DATE,
a.LAST_MODIFIED_DATE,
a.BOOK_ADVISER_ID,
IF (
adp.is_open = 0
OR (
adp.is_open IS NULL
AND ap.is_open = 0
),
0,
1
) isOpen
FROM
BOOK_ADVISER a
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.ADVISER_ID = #{adviserId}
AND a.IS_DELETE = 0
AND b.IS_DELETE = 0
LEFT JOIN advertising_agent_permission ap ON ap.agent_id = #{agentId}
LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = a.ADVISER_ID
AND adp.channel_id = a.CHANNEL_ID
AND adp.book_id = a.BOOK_ID
WHERE
a.IS_MAIN_EDITOR = 1
<if test="name != null">
AND (b.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR b.ISBN LIKE CONCAT(#{name},'%'))
</if>
GROUP BY
a.BOOK_ID,
a.CHANNEL_ID
ORDER BY
a.LAST_MODIFIED_DATE DESC
</select>
<!-- 获取书籍列表(编辑) -->
<select id="listBook4AdvertisingSpace" resultMap="bookMap" parameterType="map">
SELECT
a.BOOK_ID,
a.CHANNEL_ID,
a.ADVISER_ID,
db.agent_id agentId,
b.ISBN,
b.BOOK_NAME,
b.COVER_IMG,
db.distribution_time distributionTime,
IF (
adp.is_open = 0
OR (
adp.is_open IS NULL
AND ap.is_open = 0
),
0,
1
) isOpen
FROM
BOOK_ADVISER a
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.IS_DELETE = 0
AND b.IS_DELETE = 0
INNER JOIN advertising_distribution_book db ON db.book_id = a.BOOK_ID
AND db.channel_id = a.CHANNEL_ID
AND db.adviser_id = a.ADVISER_ID
AND db.ad_id = #{adId}
LEFT JOIN advertising_agent_permission ap ON ap.agent_id = db.agent_id
LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = a.ADVISER_ID
AND adp.channel_id = a.CHANNEL_ID
AND adp.book_id = a.BOOK_ID
WHERE
1 = 1
<if test="name != null">
AND (b.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR b.ISBN LIKE CONCAT(#{name},'%'))
</if>
GROUP BY
a.BOOK_ID,
a.CHANNEL_ID
ORDER BY
db.distribution_time DESC
</select>
<!-- 获取书籍列表(编辑) -->
<select id="listBook4AdvertisingSpaceNoSignBook" resultMap="bookMap" parameterType="map">
SELECT
a.BOOK_ID,
a.CHANNEL_ID,
a.ADVISER_ID,
db.agent_id agentId,
b.ISBN,
b.BOOK_NAME,
b.COVER_IMG,
IF (
adp.is_open = 0
OR (
adp.is_open IS NULL
AND ap.is_open = 0
),
0,
1
) isOpen
FROM
BOOK_ADVISER a
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.IS_DELETE = 0
AND b.IS_DELETE = 0
INNER JOIN (
SELECT
book_id,
adviser_id,
channel_id,
agent_id
FROM
advertising_exposure_record
WHERE
ad_id = #{adId}
GROUP BY
book_id,
adviser_id,
channel_id
) db ON db.book_id = a.BOOK_ID
AND db.channel_id = a.CHANNEL_ID
AND db.adviser_id = a.ADVISER_ID
LEFT JOIN advertising_agent_permission ap ON ap.agent_id = db.agent_id
LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = a.ADVISER_ID
AND adp.channel_id = a.CHANNEL_ID
AND adp.book_id = a.BOOK_ID
WHERE
1 = 1
<if test="name != null">
AND (b.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR b.ISBN LIKE CONCAT(#{name},'%'))
</if>
GROUP BY
a.BOOK_ID,
a.CHANNEL_ID
ORDER BY
a.CREATED_DATE DESC
</select>
<!-- 获取书籍列表(平台) -->
<select id="listBook4Platform" resultMap="bookMap" parameterType="map">
SELECT
a.BOOK_ID,
a.CHANNEL_ID,
a.ADVISER_ID,
a.IS_MAIN_EDITOR,
b.ISBN,
b.BOOK_NAME,
b.REMARK,
b.AUTHOR,
b.PUBLISH,
b.PUBLISH_DATE,
b.COVER_IMG,
b.ORIGIN_NAME,
b.BOOK_PRICE,
b.ISSN,
b.BOOK_NUM,
b.SERIAL_NUMBER,
a.TEMPLET_ID,
a.CREATED_DATE,
a.LAST_MODIFIED_DATE,
a.BOOK_ADVISER_ID,
IF (t.id IS NOT NULL, 1, 0) isSelect
FROM
BOOK_ADVISER a
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.ADVISER_ID = #{adviserId}
AND a.IS_DELETE = 0
AND b.IS_DELETE = 0
LEFT JOIN (
SELECT
db.id,
db.ad_id,
db.book_id,
db.adviser_id,
db.channel_id
FROM
advertising_distribution_book db
INNER JOIN advertising_space s ON db.ad_id = s.id
AND s.is_open = 1
) t ON t.adviser_id = a.ADVISER_ID
AND t.channel_id = a.CHANNEL_ID
AND t.book_id = a.BOOK_ID
WHERE
a.IS_MAIN_EDITOR = 1
<if test="name != null">
AND (b.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR b.ISBN LIKE CONCAT(#{name},'%'))
</if>
GROUP BY
a.BOOK_ID,
a.CHANNEL_ID
ORDER BY
a.CREATED_DATE DESC
</select>
<!-- 获取书籍列表(编辑) -->
<select id="listBookIdAndChannelId4Adviser" resultMap="bookMap" parameterType="map">
SELECT
a.BOOK_ID,
a.CHANNEL_ID
FROM
BOOK_ADVISER a
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.ADVISER_ID = #{adviserId}
AND a.IS_DELETE = 0
AND b.IS_DELETE = 0
WHERE
a.IS_MAIN_EDITOR = 1
GROUP BY
a.BOOK_ID,
a.CHANNEL_ID
</select>
<!-- 获取书籍列表(编辑) -->
<select id="listBook" resultMap="bookMap" parameterType="map"> <select id="listBook" resultMap="bookMap" parameterType="map">
SELECT SELECT
A.BOOK_ID, A.CHANNEL_ID, A.ADVISER_ID, A.IS_MAIN_EDITOR, T.TYPE_CODE, T.TYPE_NAME, B.ISBN, B.BOOK_NAME, B.REMARK, A.BOOK_ID, A.CHANNEL_ID, A.ADVISER_ID, A.IS_MAIN_EDITOR, T.TYPE_CODE, T.TYPE_NAME, B.ISBN, B.BOOK_NAME, B.REMARK,
......
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