Commit b8d79363 by lili

Merge remote-tracking branch 'origin/master'

parents 1481f1a9 e991c8ed
package com.pcloud.book.advertising.service;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.pcloud.common.exceptions.BizException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@FeignClient(value = "pcloud-service-book", qualifier = "advertisingSpaceServiceCloud", path = "book/v1.0/advertisingSpaceService")
@Api(description = "广告位内部接口")
public interface AdvertisingSpaceService {
/**
* 每日凌晨计算昨日广告位收益
* @throws BizException
*/
@ApiOperation(value = "每日凌晨计算昨日广告位收益", httpMethod = "GET")
@RequestMapping(value = "calculateAdvertisingIncomeYesterday", method = RequestMethod.GET)
void calculateAdvertisingIncomeYesterday() throws BizException;
}
......@@ -433,6 +433,16 @@ public class BookDto extends BaseDto {
private Long clickNum;
/**
* 广告位数量
*/
private Long advertisingSpaceNum;
/**
* 点击率
*/
private BigDecimal clickRate;
/**
* 公众号名称
*/
private String officialAccountsName;
......@@ -1271,6 +1281,23 @@ public class BookDto extends BaseDto {
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
public BigDecimal getClickRate() {
return clickRate;
}
public void setClickRate(BigDecimal clickRate) {
this.clickRate = clickRate;
}
public Long getAdvertisingSpaceNum() {
return advertisingSpaceNum;
}
public void setAdvertisingSpaceNum(Long advertisingSpaceNum) {
this.advertisingSpaceNum = advertisingSpaceNum;
}
@Override
public String toString() {
return "BookDto{" +
......@@ -1357,6 +1384,8 @@ public class BookDto extends BaseDto {
", distributionTime=" + distributionTime +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", advertisingSpaceNum=" + advertisingSpaceNum +
", clickRate=" + clickRate +
", officialAccountsName='" + officialAccountsName + '\'' +
", uniqueNumber='" + uniqueNumber + '\'' +
", bookGroupId=" + bookGroupId +
......
package com.pcloud.book.advertising.dao;
import java.util.List;
import java.util.Map;
import com.pcloud.book.advertising.dto.WechatGroupClickUserDTO;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.common.core.dao.BaseDao;
......@@ -9,4 +12,11 @@ import com.pcloud.common.core.dao.BaseDao;
* @date 2019/2/28
*/
public interface AdvertisingClickRecordDao extends BaseDao<AdvertisingClickRecord> {
/**
* 微信群广告位点击读者列表
* @param paramMap 参数Map
* @return
*/
List<WechatGroupClickUserDTO> clickUserList4AdvertisingWechatGroup(Map<String, Object> paramMap);
}
package com.pcloud.book.advertising.dao;
import java.util.List;
import java.util.Map;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.common.core.dao.BaseDao;
......@@ -19,11 +20,11 @@ public interface AdvertisingDistributionBookDao extends BaseDao<AdvertisingDistr
long batchInsert(List<AdvertisingDistributionBook> list);
/**
* 校验书刊是否已投放
* @param list 列表
* 校验广告位是否已投放微信群
* @param paramMap 参数Map
* @return
*/
List<Long> checkBookIdExist(List<Long> list);
List<Long> checkQrcodeIdExist(Map<String, Object> paramMap);
/**
* 获取广告位投放的书刊列表
......
package com.pcloud.book.advertising.dao;
import java.util.List;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.group.dto.AdGroupQrcodeDTO;
import com.pcloud.common.core.dao.BaseDao;
/**
......@@ -9,4 +11,10 @@ import com.pcloud.common.core.dao.BaseDao;
* @date 2019/2/28
*/
public interface AdvertisingExposureRecordDao extends BaseDao<AdvertisingExposureRecord> {
/**
* 获取广告位投放微信群曝光量前几位
* @return
*/
List<AdGroupQrcodeDTO> advertisingWechatGroupRankTop();
}
package com.pcloud.book.advertising.dao;
import java.util.Map;
import com.pcloud.book.advertising.entity.AdvertisingIncomeDaily;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告位每日收益统计数据访问层接口
* Created by PENG on 2019/5/6.
*/
public interface AdvertisingIncomeDailyDao extends BaseDao<AdvertisingIncomeDaily> {
/**
* 插入扫社群码页面和作品/应用广告位的昨日收益数据
* @param paramMap 参数Map
* @return
*/
long insertRecordWithoutWechatGroupMsgAd(Map<String, Object> paramMap);
/**
* 插入微信群消息广告位的昨日收益数据
* @param paramMap 参数Map
* @return
*/
long insertWechatGroupMsgAdRecord(Map<String, Object> paramMap);
}
package com.pcloud.book.advertising.dao;
import java.util.List;
import com.pcloud.book.advertising.dto.AdvertisingMasterDTO;
import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告主数据访问层接口
* Created by PENG on 2019/4/26.
*/
public interface AdvertisingMasterDao extends BaseDao<AdvertisingMaster> {
/**
* 获取所有广告主
* @return
*/
List<AdvertisingMasterDTO> getAllMaster();
/**
* 获取广告主DTO
* @param masterId 广告主ID
* @return
*/
AdvertisingMasterDTO getDTOById(Long masterId);
}
package com.pcloud.book.advertising.dao;
import java.util.List;
import com.pcloud.book.advertising.dto.AdvertisingSettlementMethodDTO;
import com.pcloud.book.advertising.entity.AdvertisingSettlementMethod;
import com.pcloud.common.core.dao.BaseDao;
/**
* Description 广告结算方式数据访问层接口
* Created by PENG on 2019/4/26.
*/
public interface AdvertisingSettlementMethodDao extends BaseDao<AdvertisingSettlementMethod> {
/**
* 删除广告主配置的结算方式
* @param masterId 广告主ID
* @return
*/
long deleteByMasterId(Long masterId);
/**
* 获取广告主配置的结算方式列表
* @param masterId 广告主ID
* @return
*/
List<AdvertisingSettlementMethodDTO> getByMasterId(Long masterId);
/**
* 获取广告位的结算方式
* @param masterId 广告主ID
* @param adId 广告位ID
* @return
*/
AdvertisingSettlementMethodDTO getByMasterIdAndAdId(Long masterId, Long adId);
}
package com.pcloud.book.advertising.dao;
import java.util.List;
import java.util.Map;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.core.dao.BaseDao;
......@@ -17,4 +19,32 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> {
* @return
*/
AdvertisingSpaceDTO getDTOById(Long adId);
/**
* 书刊广告位明细
* @param paramMap 参数Map
* @return
*/
List<AdvertisingSpaceDTO> advertisingDetail4Book(Map<String, Object> paramMap);
/**
* 微信群广告位明细
* @param paramMap 参数Map
* @return
*/
List<AdvertisingSpaceDTO> advertisingDetail4WechatGroup(Map<String, Object> paramMap);
/**
* 广告主广告位明细
* @param paramMap 参数Map
* @return
*/
List<AdvertisingSpaceDTO> advertisingDetail4Master(Map<String, Object> paramMap);
/**
* 获取书刊下的广告位列表
* @param paramMap 参数Map
* @return
*/
List<AdvertisingSpaceDTO> getDTOByBookId(Map<String, Object> paramMap);
}
package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao;
import com.pcloud.book.advertising.dto.WechatGroupClickUserDTO;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
......@@ -12,4 +15,12 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
*/
@Repository("advertisingClickRecordDao")
public class AdvertisingClickRecordDaoImpl extends BaseDaoImpl<AdvertisingClickRecord> implements AdvertisingClickRecordDao {
/**
* 微信群广告位点击读者列表
*/
@Override
public List<WechatGroupClickUserDTO> clickUserList4AdvertisingWechatGroup(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("clickUserList4AdvertisingWechatGroup"), paramMap);
}
}
package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
......@@ -23,11 +24,11 @@ public class AdvertisingDistributionBookDaoImpl extends BaseDaoImpl<AdvertisingD
}
/**
* 校验书刊是否已投放
* 校验广告位是否已投放微信群
*/
@Override
public List<Long> checkBookIdExist(List<Long> list) {
return super.getSqlSession().selectList(getStatement("checkBookIdExist"), list);
public List<Long> checkQrcodeIdExist(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("checkQrcodeIdExist"), paramMap);
}
/**
......
package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.group.dto.AdGroupQrcodeDTO;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
......@@ -12,4 +14,12 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
*/
@Repository("advertisingExposureRecordDao")
public class AdvertisingExposureRecordDaoImpl extends BaseDaoImpl<AdvertisingExposureRecord> implements AdvertisingExposureRecordDao {
/**
* 获取广告位投放微信群曝光量前几位
*/
@Override
public List<AdGroupQrcodeDTO> advertisingWechatGroupRankTop() {
return super.getSqlSession().selectList(getStatement("advertisingWechatGroupRankTop"));
}
}
package com.pcloud.book.advertising.dao.impl;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingIncomeDailyDao;
import com.pcloud.book.advertising.entity.AdvertisingIncomeDaily;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告位每日收益统计数据访问层接口实现类
* Created by PENG on 2019/5/6.
*/
@Repository("advertisingIncomeDailyDao")
public class AdvertisingIncomeDailyDaoImpl extends BaseDaoImpl<AdvertisingIncomeDaily> implements AdvertisingIncomeDailyDao {
/**
* 插入扫社群码页面和作品/应用广告位的昨日收益数据
*/
@Override
public long insertRecordWithoutWechatGroupMsgAd(Map<String, Object> paramMap) {
return super.getSqlSession().insert(getStatement("insertRecordWithoutWechatGroupMsgAd"), paramMap);
}
/**
* 插入微信群消息广告位的昨日收益数据
*/
@Override
public long insertWechatGroupMsgAdRecord(Map<String, Object> paramMap) {
return super.getSqlSession().insert(getStatement("insertWechatGroupMsgAdRecord"), paramMap);
}
}
package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingMasterDao;
import com.pcloud.book.advertising.dto.AdvertisingMasterDTO;
import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告主数据访问层接口实现类
* Created by PENG on 2019/4/26.
*/
@Repository("advertisingMasterDao")
public class AdvertisingMasterDaoImpl extends BaseDaoImpl<AdvertisingMaster> implements AdvertisingMasterDao {
/**
* 获取所有广告主
*/
@Override
public List<AdvertisingMasterDTO> getAllMaster() {
return super.getSqlSession().selectList(getStatement("getAllMaster"));
}
/**
* 获取广告主DTO
*/
@Override
public AdvertisingMasterDTO getDTOById(Long masterId) {
return super.getSqlSession().selectOne(getStatement("getDTOById"), masterId);
}
}
package com.pcloud.book.advertising.dao.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingSettlementMethodDao;
import com.pcloud.book.advertising.dto.AdvertisingSettlementMethodDTO;
import com.pcloud.book.advertising.entity.AdvertisingSettlementMethod;
import com.pcloud.common.core.dao.BaseDaoImpl;
/**
* Description 广告结算方式数据访问层接口实现类
* Created by PENG on 2019/4/26.
*/
@Repository("advertisingSettlementMethodDao")
public class AdvertisingSettlementMethodDaoImpl extends BaseDaoImpl<AdvertisingSettlementMethod> implements AdvertisingSettlementMethodDao {
/**
* 删除广告主配置的结算方式
*/
@Override
public long deleteByMasterId(Long masterId) {
return super.getSqlSession().delete(getStatement("deleteByMasterId"), masterId);
}
/**
* 获取广告主配置的结算方式列表
*/
@Override
public List<AdvertisingSettlementMethodDTO> getByMasterId(Long masterId) {
return super.getSqlSession().selectList(getStatement("getByMasterId"), masterId);
}
/**
* 获取广告位的结算方式
*/
@Override
public AdvertisingSettlementMethodDTO getByMasterIdAndAdId(Long masterId, Long adId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("masterId", masterId);
paramMap.put("adId", adId);
return super.getSqlSession().selectOne(getStatement("getByMasterIdAndAdId"), paramMap);
}
}
package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingSpaceDao;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
......@@ -14,8 +16,43 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
@Repository("advertisingSpaceDao")
public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> implements AdvertisingSpaceDao {
/**
* 获取广告位信息
*/
@Override
public AdvertisingSpaceDTO getDTOById(Long adId) {
return super.getSqlSession().selectOne(getStatement("getDTOById"), adId);
}
/**
* 书刊广告位明细
*/
@Override
public List<AdvertisingSpaceDTO> advertisingDetail4Book(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("advertisingDetail4Book"), paramMap);
}
/**
* 微信群广告位明细
*/
@Override
public List<AdvertisingSpaceDTO> advertisingDetail4WechatGroup(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("advertisingDetail4WechatGroup"), paramMap);
}
/**
* 广告主广告位明细
*/
@Override
public List<AdvertisingSpaceDTO> advertisingDetail4Master(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("advertisingDetail4Master"), paramMap);
}
/**
* 获取书刊下的广告位列表
*/
@Override
public List<AdvertisingSpaceDTO> getDTOByBookId(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("getDTOByBookId"), paramMap);
}
}
package com.pcloud.book.advertising.dto;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
public class AdvertisingMasterDTO extends BaseDto {
private static final long serialVersionUID = -2269268659722737438L;
/**
* advertising_master.id (唯一标识)
*/
private Long id;
/**
* advertising_master.master_name (广告主名称)
*/
private String masterName;
/**
* advertising_master.create_time (创建时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* advertising_master.update_time (修改时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
* 广告结算方式列表
*/
private List<AdvertisingSettlementMethodDTO> settlementMethodList;
/**
* 广告位数量
*/
private Long spaceNum;
/**
* 曝光量
*/
private Long exposureNum;
/**
* 点击量
*/
private Long clickNum;
/**
* 点击率
*/
private BigDecimal clickRate;
/**
* 累积消费
*/
private BigDecimal totalIncome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMasterName() {
return masterName;
}
public void setMasterName(String masterName) {
this.masterName = masterName;
}
@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 List<AdvertisingSettlementMethodDTO> getSettlementMethodList() {
return settlementMethodList;
}
public void setSettlementMethodList(List<AdvertisingSettlementMethodDTO> settlementMethodList) {
this.settlementMethodList = settlementMethodList;
}
public Long getSpaceNum() {
return spaceNum;
}
public void setSpaceNum(Long spaceNum) {
this.spaceNum = spaceNum;
}
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 BigDecimal getClickRate() {
return clickRate;
}
public void setClickRate(BigDecimal clickRate) {
this.clickRate = clickRate;
}
public BigDecimal getTotalIncome() {
return totalIncome;
}
public void setTotalIncome(BigDecimal totalIncome) {
this.totalIncome = totalIncome;
}
@Override
public String toString() {
return "AdvertisingMasterDTO{" +
"id=" + id +
", masterName='" + masterName + '\'' +
", createTime=" + createTime +
", updateTime=" + updateTime +
", settlementMethodList=" + settlementMethodList +
", spaceNum=" + spaceNum +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", clickRate=" + clickRate +
", totalIncome=" + totalIncome +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.dto;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
public class AdvertisingSettlementMethodDTO extends BaseDto {
private static final long serialVersionUID = 8723754417913443287L;
/**
* advertising_settlement_method.id (唯一标识)
*/
private Long id;
/**
* advertising_settlement_method.master_id (广告主ID)
*/
private Long masterId;
/**
* advertising_settlement_method.ad_id (广告位ID)
*/
private Long adId;
/**
* advertising_settlement_method.settlement_method (结算方式)
*/
private String settlementMethod;
/**
* 结算方式名称
*/
private String settlementMethodName;
/**
* advertising_settlement_method.price_each_time (每次价格)
*/
private BigDecimal priceEachTime;
/**
* advertising_settlement_method.create_time (创建时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* advertising_settlement_method.update_time (修改时间)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getMasterId() {
return masterId;
}
public void setMasterId(Long masterId) {
this.masterId = masterId;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public String getSettlementMethod() {
return settlementMethod;
}
public void setSettlementMethod(String settlementMethod) {
this.settlementMethod = settlementMethod;
}
public String getSettlementMethodName() {
return settlementMethodName;
}
public void setSettlementMethodName(String settlementMethodName) {
this.settlementMethodName = settlementMethodName;
}
public BigDecimal getPriceEachTime() {
return priceEachTime;
}
public void setPriceEachTime(BigDecimal priceEachTime) {
this.priceEachTime = priceEachTime;
}
@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;
}
@Override
public String toString() {
return "AdvertisingSettlementMethodDTO{" +
"id=" + id +
", masterId=" + masterId +
", adId=" + adId +
", settlementMethod='" + settlementMethod + '\'' +
", settlementMethodName='" + settlementMethodName + '\'' +
", priceEachTime=" + priceEachTime +
", createTime=" + createTime +
", updateTime=" + updateTime +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
* @description 日期数量DTO
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @date 2017年6月11日 下午2:08:30
* @version 1.0
*/
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class DateCountDTO implements Serializable {
private static final long serialVersionUID = 4234798666223706295L;
......@@ -27,6 +30,11 @@ public class DateCountDTO implements Serializable {
*/
private Long clickNum;
/**
* 收益
*/
private BigDecimal income;
public String getDate() {
return date;
}
......@@ -50,4 +58,22 @@ public class DateCountDTO implements Serializable {
public void setClickNum(Long clickNum) {
this.clickNum = clickNum;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
@Override
public String toString() {
return "DateCountDTO{" +
"date='" + date + '\'' +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", income=" + income +
'}';
}
}
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 WechatGroupClickUserDTO extends BaseDto {
private static final long serialVersionUID = -2385429387988628595L;
/**
* 广告位ID
*/
private Long adId;
/**
* 公众号ID
*/
private Long officialAccountId;
/**
* 来源类型
*/
private String fromType;
/**
* 来源ID
*/
private Long fromId;
/**
* 读者ID
*/
private Long wechatUserId;
/**
* 读者昵称
*/
private String wechatUserName;
/**
* 读者头像
*/
private String wechatUserHeadurl;
/**
* 性别
*/
private Integer wechatUserSex;
/**
* 省份
*/
private String wechatUserProvince;
/**
* 城市
*/
private String wechatUserCity;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
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;
}
public String getWechatUserName() {
return wechatUserName;
}
public void setWechatUserName(String wechatUserName) {
this.wechatUserName = wechatUserName;
}
public String getWechatUserHeadurl() {
return wechatUserHeadurl;
}
public void setWechatUserHeadurl(String wechatUserHeadurl) {
this.wechatUserHeadurl = wechatUserHeadurl;
}
public Integer getWechatUserSex() {
return wechatUserSex;
}
public void setWechatUserSex(Integer wechatUserSex) {
this.wechatUserSex = wechatUserSex;
}
public String getWechatUserProvince() {
return wechatUserProvince;
}
public void setWechatUserProvince(String wechatUserProvince) {
this.wechatUserProvince = wechatUserProvince;
}
public String getWechatUserCity() {
return wechatUserCity;
}
public void setWechatUserCity(String wechatUserCity) {
this.wechatUserCity = wechatUserCity;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return "WechatGroupClickUserDTO{" +
"adId=" + adId +
", officialAccountId=" + officialAccountId +
", fromType='" + fromType + '\'' +
", fromId=" + fromId +
", wechatUserId=" + wechatUserId +
", wechatUserName='" + wechatUserName + '\'' +
", wechatUserHeadurl='" + wechatUserHeadurl + '\'' +
", wechatUserSex=" + wechatUserSex +
", wechatUserProvince='" + wechatUserProvince + '\'' +
", wechatUserCity='" + wechatUserCity + '\'' +
", createTime=" + createTime +
"} " + super.toString();
}
}
\ No newline at end of file
......@@ -26,6 +26,11 @@ public class AdvertisingClickRecord extends BaseEntity {
private Long bookId;
/**
* advertising_click_record.is_book_group (是否是社群书)
*/
private Boolean isBookGroup;
/**
* 二维码ID
*/
private Long sceneId;
......@@ -75,6 +80,16 @@ public class AdvertisingClickRecord extends BaseEntity {
*/
private Date createDay;
/**
* 创建月份
*/
private String createMonth;
/**
* 社群码ID
*/
private Long bookGroupId;
@Override
public Long getId() {
return id;
......@@ -101,6 +116,14 @@ public class AdvertisingClickRecord extends BaseEntity {
this.bookId = bookId;
}
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
public Long getAdviserId() {
return adviserId;
}
......@@ -183,12 +206,29 @@ public class AdvertisingClickRecord extends BaseEntity {
this.sceneId = sceneId;
}
public String getCreateMonth() {
return createMonth;
}
public void setCreateMonth(String createMonth) {
this.createMonth = createMonth;
}
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
@Override
public String toString() {
return "AdvertisingClickRecord{" +
"id=" + id +
", adId=" + adId +
", bookId=" + bookId +
", isBookGroup=" + isBookGroup +
", sceneId=" + sceneId +
", adviserId=" + adviserId +
", agentId=" + agentId +
......@@ -199,6 +239,8 @@ public class AdvertisingClickRecord extends BaseEntity {
", wechatUserId=" + wechatUserId +
", createTime=" + createTime +
", createDay=" + createDay +
", createMonth='" + createMonth + '\'' +
", bookGroupId=" + bookGroupId +
"} " + super.toString();
}
}
\ No newline at end of file
......@@ -43,19 +43,34 @@ public class AdvertisingDistributionBook extends BaseEntity {
private Long channelId;
/**
* advertising_distribution_book.is_book_group (是否是社群书)
*/
private Boolean isBookGroup;
/**
* advertising_distribution_book.classify_id (群分类ID)
*/
private Long classifyId;
/**
* advertising_distribution_book.qrcode_id (微信群ID)
*/
private Long qrcodeId;
/**
* advertising_distribution_book.distribution_time (投放时间)
*/
private Date distributionTime;
/**
* 书刊ID列表
* 书刊列表
*/
private List<BookAdviser> books;
/**
* 投放方式(0:指定书刊;1:不指定书刊)
* 微信群列表
*/
private Integer distributionType;
private List<DistributionWechatGroup> groups;
@Override
public Long getId() {
......@@ -107,6 +122,30 @@ public class AdvertisingDistributionBook extends BaseEntity {
this.channelId = channelId;
}
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
public Date getDistributionTime() {
return distributionTime;
}
......@@ -123,12 +162,12 @@ public class AdvertisingDistributionBook extends BaseEntity {
this.books = books;
}
public Integer getDistributionType() {
return distributionType;
public List<DistributionWechatGroup> getGroups() {
return groups;
}
public void setDistributionType(Integer distributionType) {
this.distributionType = distributionType;
public void setGroups(List<DistributionWechatGroup> groups) {
this.groups = groups;
}
@Override
......@@ -140,9 +179,12 @@ public class AdvertisingDistributionBook extends BaseEntity {
", adviserId=" + adviserId +
", agentId=" + agentId +
", channelId=" + channelId +
", isBookGroup=" + isBookGroup +
", classifyId=" + classifyId +
", qrcodeId=" + qrcodeId +
", distributionTime=" + distributionTime +
", books=" + books +
", distributionType=" + distributionType +
", groups=" + groups +
"} " + super.toString();
}
}
\ No newline at end of file
......@@ -26,6 +26,11 @@ public class AdvertisingExposureRecord extends BaseEntity {
private Long bookId;
/**
* advertising_exposure_record.is_book_group (是否是社群书)
*/
private Boolean isBookGroup;
/**
* 二维码ID
*/
private Long sceneId;
......@@ -75,6 +80,16 @@ public class AdvertisingExposureRecord extends BaseEntity {
*/
private Date createDay;
/**
* 创建月份
*/
private String createMonth;
/**
* 曝光次数
*/
private Long count;
@Override
public Long getId() {
return id;
......@@ -101,6 +116,14 @@ public class AdvertisingExposureRecord extends BaseEntity {
this.bookId = bookId;
}
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
public Long getAdviserId() {
return adviserId;
}
......@@ -183,12 +206,29 @@ public class AdvertisingExposureRecord extends BaseEntity {
this.sceneId = sceneId;
}
public Long getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
public String getCreateMonth() {
return createMonth;
}
public void setCreateMonth(String createMonth) {
this.createMonth = createMonth;
}
@Override
public String toString() {
return "AdvertisingExposureRecord{" +
"id=" + id +
", adId=" + adId +
", bookId=" + bookId +
", isBookGroup=" + isBookGroup +
", sceneId=" + sceneId +
", adviserId=" + adviserId +
", agentId=" + agentId +
......@@ -199,6 +239,8 @@ public class AdvertisingExposureRecord extends BaseEntity {
", wechatUserId=" + wechatUserId +
", createTime=" + createTime +
", createDay=" + createDay +
", createMonth='" + createMonth + '\'' +
", count=" + count +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.math.BigDecimal;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
public class AdvertisingIncomeDaily extends BaseEntity {
private static final long serialVersionUID = 2993939729052080207L;
/**
* advertising_income_daily.id (唯一标识)
*/
private Long id;
/**
* advertising_income_daily.ad_id (广告位ID)
*/
private Long adId;
/**
* advertising_income_daily.master_id (广告主ID)
*/
private Long masterId;
/**
* advertising_income_daily.book_id (书刊ID)
*/
private Long bookId;
/**
* 运营ID
*/
private Long channelId;
/**
* advertising_income_daily.classify_id (分类ID)
*/
private Long classifyId;
/**
* advertising_income_daily.qrcode_id (微信群ID)
*/
private Long qrcodeId;
/**
* advertising_income_daily.settlement_method (结算方式编码)
*/
private String settlementMethod;
/**
* advertising_income_daily.price_each_time (价格)
*/
private BigDecimal priceEachTime;
/**
* advertising_income_daily.exposure_num (曝光量)
*/
private Integer exposureNum;
/**
* advertising_income_daily.click_num (点击量)
*/
private Integer clickNum;
/**
* advertising_income_daily.income (收益)
*/
private BigDecimal income;
/**
* advertising_income_daily.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_income_daily.statis_day (统计日期)
*/
private Date statisDay;
/**
* advertising_income_daily.statis_month (统计月份)
*/
private String statisMonth;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public Long getMasterId() {
return masterId;
}
public void setMasterId(Long masterId) {
this.masterId = masterId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
public String getSettlementMethod() {
return settlementMethod;
}
public void setSettlementMethod(String settlementMethod) {
this.settlementMethod = settlementMethod;
}
public BigDecimal getPriceEachTime() {
return priceEachTime;
}
public void setPriceEachTime(BigDecimal priceEachTime) {
this.priceEachTime = priceEachTime;
}
public Integer getExposureNum() {
return exposureNum;
}
public void setExposureNum(Integer exposureNum) {
this.exposureNum = exposureNum;
}
public Integer getClickNum() {
return clickNum;
}
public void setClickNum(Integer clickNum) {
this.clickNum = clickNum;
}
public BigDecimal getIncome() {
return income;
}
public void setIncome(BigDecimal income) {
this.income = income;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getStatisDay() {
return statisDay;
}
public void setStatisDay(Date statisDay) {
this.statisDay = statisDay;
}
public String getStatisMonth() {
return statisMonth;
}
public void setStatisMonth(String statisMonth) {
this.statisMonth = statisMonth;
}
@Override
public String toString() {
return "AdvertisingIncomeDaily{" +
"id=" + id +
", adId=" + adId +
", masterId=" + masterId +
", bookId=" + bookId +
", channelId=" + channelId +
", classifyId=" + classifyId +
", qrcodeId=" + qrcodeId +
", settlementMethod='" + settlementMethod + '\'' +
", priceEachTime=" + priceEachTime +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", income=" + income +
", createTime=" + createTime +
", statisDay=" + statisDay +
", statisMonth='" + statisMonth + '\'' +
"} " + 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.common.entity.BaseEntity;
public class AdvertisingMaster extends BaseEntity {
private static final long serialVersionUID = 3317585726581741831L;
/**
* advertising_master.id (唯一标识)
*/
private Long id;
/**
* advertising_master.master_name (广告主名称)
*/
private String masterName;
/**
* advertising_master.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_master.update_time (修改时间)
*/
private Date updateTime;
/**
* 广告结算方式列表
*/
private List<AdvertisingSettlementMethod> settlementMethodList;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public String getMasterName() {
return masterName;
}
public void setMasterName(String masterName) {
this.masterName = masterName;
}
@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 List<AdvertisingSettlementMethod> getSettlementMethodList() {
return settlementMethodList;
}
public void setSettlementMethodList(List<AdvertisingSettlementMethod> settlementMethodList) {
this.settlementMethodList = settlementMethodList;
}
@Override
public String toString() {
return "AdvertisingMaster{" +
"id=" + id +
", masterName='" + masterName + '\'' +
", createTime=" + createTime +
", updateTime=" + updateTime +
", settlementMethodList=" + settlementMethodList +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
public class AdvertisingSettlementMethod extends BaseEntity {
private static final long serialVersionUID = 2834986141520977079L;
/**
* advertising_settlement_method.id (唯一标识)
*/
private Long id;
/**
* advertising_settlement_method.master_id (广告主ID)
*/
private Long masterId;
/**
* advertising_settlement_method.ad_id (广告位ID)
*/
private Long adId;
/**
* advertising_settlement_method.settlement_method (结算方式)
*/
private String settlementMethod;
/**
* advertising_settlement_method.price_each_time (每次价格)
*/
private BigDecimal priceEachTime;
/**
* advertising_settlement_method.create_time (创建时间)
*/
private Date createTime;
/**
* advertising_settlement_method.update_time (修改时间)
*/
private Date updateTime;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
public Long getMasterId() {
return masterId;
}
public void setMasterId(Long masterId) {
this.masterId = masterId;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public String getSettlementMethod() {
return settlementMethod;
}
public void setSettlementMethod(String settlementMethod) {
this.settlementMethod = settlementMethod;
}
public BigDecimal getPriceEachTime() {
return priceEachTime;
}
public void setPriceEachTime(BigDecimal priceEachTime) {
this.priceEachTime = priceEachTime;
}
@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 "AdvertisingSettlementMethod{" +
"id=" + id +
", masterId=" + masterId +
", adId=" + adId +
", settlementMethod='" + settlementMethod + '\'' +
", priceEachTime=" + priceEachTime +
", createTime=" + createTime +
", updateTime=" + updateTime +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.math.BigDecimal;
import java.util.Date;
import com.pcloud.common.entity.BaseEntity;
......@@ -26,9 +27,19 @@ public class AdvertisingSpace extends BaseEntity {
private String adPosition;
/**
* advertising_space.ad_source (广告来源)
* advertising_space.ad_position_mode (广告位置方式)
*/
private String adSource;
private String adPositionMode;
/**
* advertising_space.ad_position_detail (具体广告位置)
*/
private String adPositionDetail;
/**
* advertising_space.master_id (广告主ID)
*/
private Long masterId;
/**
* advertising_space.ad_link (广告位链接)
......@@ -41,6 +52,11 @@ public class AdvertisingSpace extends BaseEntity {
private String sourceId;
/**
* advertising_space.ad_title (广告位标题)
*/
private String adTitle;
/**
* advertising_space.ad_slogan (广告位文案)
*/
private String adSlogan;
......@@ -51,11 +67,6 @@ public class AdvertisingSpace extends BaseEntity {
private String adPic;
/**
* advertising_space.distribution_type (投放方式(0:指定书刊;1:不指定书刊))
*/
private Integer distributionType;
/**
* advertising_space.create_time (创建时间)
*/
private Date createTime;
......@@ -70,6 +81,16 @@ public class AdvertisingSpace extends BaseEntity {
*/
private Boolean isOpen;
/**
* 结算方式
*/
private String settlementMethod;
/**
* 每次价格
*/
private BigDecimal priceEachTime;
@Override
public Long getId() {
return id;
......@@ -96,12 +117,28 @@ public class AdvertisingSpace extends BaseEntity {
this.adPosition = adPosition;
}
public String getAdSource() {
return adSource;
public String getAdPositionMode() {
return adPositionMode;
}
public void setAdPositionMode(String adPositionMode) {
this.adPositionMode = adPositionMode;
}
public String getAdPositionDetail() {
return adPositionDetail;
}
public void setAdPositionDetail(String adPositionDetail) {
this.adPositionDetail = adPositionDetail;
}
public void setAdSource(String adSource) {
this.adSource = adSource;
public Long getMasterId() {
return masterId;
}
public void setMasterId(Long masterId) {
this.masterId = masterId;
}
public String getAdLink() {
......@@ -120,6 +157,14 @@ public class AdvertisingSpace extends BaseEntity {
this.sourceId = sourceId;
}
public String getAdTitle() {
return adTitle;
}
public void setAdTitle(String adTitle) {
this.adTitle = adTitle;
}
public String getAdSlogan() {
return adSlogan;
}
......@@ -136,14 +181,6 @@ public class AdvertisingSpace extends BaseEntity {
this.adPic = adPic;
}
public Integer getDistributionType() {
return distributionType;
}
public void setDistributionType(Integer distributionType) {
this.distributionType = distributionType;
}
@Override
public Date getCreateTime() {
return createTime;
......@@ -172,21 +209,41 @@ public class AdvertisingSpace extends BaseEntity {
this.isOpen = isOpen;
}
public String getSettlementMethod() {
return settlementMethod;
}
public void setSettlementMethod(String settlementMethod) {
this.settlementMethod = settlementMethod;
}
public BigDecimal getPriceEachTime() {
return priceEachTime;
}
public void setPriceEachTime(BigDecimal priceEachTime) {
this.priceEachTime = priceEachTime;
}
@Override
public String toString() {
return "AdvertisingSpace{" +
"id=" + id +
", adName='" + adName + '\'' +
", adPosition='" + adPosition + '\'' +
", adSource='" + adSource + '\'' +
", adPositionMode='" + adPositionMode + '\'' +
", adPositionDetail='" + adPositionDetail + '\'' +
", masterId=" + masterId +
", adLink='" + adLink + '\'' +
", sourceId='" + sourceId + '\'' +
", adTitle='" + adTitle + '\'' +
", adSlogan='" + adSlogan + '\'' +
", adPic='" + adPic + '\'' +
", distributionType=" + distributionType +
", createTime=" + createTime +
", updateTime=" + updateTime +
", isOpen=" + isOpen +
", settlementMethod='" + settlementMethod + '\'' +
", priceEachTime=" + priceEachTime +
"} " + super.toString();
}
}
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import java.io.Serializable;
/**
* Description 投放微信学习群参数实体
* Created by PENG on 2019/5/9.
*/
public class DistributionWechatGroup implements Serializable {
private static final long serialVersionUID = 7843545114166726847L;
/**
* 书刊ID
*/
private Long bookId;
/**
* 运营ID
*/
private Long channelId;
/**
* 编辑ID
*/
private Long adviserId;
/**
* 群分类ID
*/
private Long classifyId;
/**
* 微信群ID
*/
private Long qrcodeId;
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getClassifyId() {
return classifyId;
}
public void setClassifyId(Long classifyId) {
this.classifyId = classifyId;
}
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
@Override
public String toString() {
return "DistributionWechatGroup{" +
"bookId=" + bookId +
", channelId=" + channelId +
", adviserId=" + adviserId +
", classifyId=" + classifyId +
", qrcodeId=" + qrcodeId +
'}';
}
}
package com.pcloud.book.advertising.enums;
/**
* Description 具体广告位置枚举
* @author PENG
* @date 2019/4/24
*/
public enum AdPositionDetailEnum {
JOIN_PAGE(AdPositionEnum.BOOK_GROUP_PAGE.positionCode, "JOIN_PAGE", "入群选择页"),
GROUP_QRCODE_PAGE(AdPositionEnum.BOOK_GROUP_PAGE.positionCode, "GROUP_QRCODE_PAGE", "群二维码页面"),
FAIL_JOIN_PAGE(AdPositionEnum.BOOK_GROUP_PAGE.positionCode, "FAIL_JOIN_PAGE", "群成员已满/无法入群页面");
public final String positionCode;
public final String detailCode;
public final String detailName;
AdPositionDetailEnum(String positionCode, String detailCode, String detailName) {
this.positionCode = positionCode;
this.detailCode = detailCode;
this.detailName = detailName;
}
/**
* 校验位置是否存在
*/
public static Boolean checkCodeExist(String positionCode, String detailCode) {
AdPositionDetailEnum[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
AdPositionDetailEnum adPositionDetailEnum = var1[var3];
if (adPositionDetailEnum.positionCode.equals(positionCode) && adPositionDetailEnum.detailCode.equals(detailCode)) {
return true;
}
}
return false;
}
/**
* 根据编码拿名称
*/
public static String getNameByCode(String detailCode) {
AdPositionDetailEnum[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
AdPositionDetailEnum adPositionDetailEnum = var1[var3];
if (adPositionDetailEnum.detailCode.equals(detailCode)) {
return adPositionDetailEnum.detailName;
}
}
return "";
}
}
......@@ -7,24 +7,18 @@ package com.pcloud.book.advertising.enums;
*/
public enum AdPositionEnum {
/**
* 应用或作品详情浮标
*/
DETAIL_PAGE("DETAIL_PAGE", "应用或作品详情浮标", true),
BOOK_GROUP_PAGE("BOOK_GROUP_PAGE", "扫社群码页面"),
/**
* 扫码消息
*/
SCENE_MESSAGE("SCENE_MESSAGE", "扫码消息", false);
APP_OR_PRODUCT("APP_OR_PRODUCT", "具体应用/作品"),
WECHAT_GROUP_MSG("WECHAT_GROUP_MSG", "微信群消息");
public final String positionCode;
public final String positionName;
public final Boolean isOpen;
AdPositionEnum(String positionCode, String positionName, Boolean isOpen) {
AdPositionEnum(String positionCode, String positionName) {
this.positionCode = positionCode;
this.positionName = positionName;
this.isOpen = isOpen;
}
/**
......@@ -35,12 +29,27 @@ public enum AdPositionEnum {
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
AdPositionEnum adPositionEnum = var1[var3];
if (adPositionEnum.positionCode.equals(positionCode) && adPositionEnum.isOpen) {
if (adPositionEnum.positionCode.equals(positionCode)) {
return true;
}
}
return false;
}
public static final String[] AD_POSITION_GATHER = {DETAIL_PAGE.positionCode, SCENE_MESSAGE.positionCode};
/**
* 根据编码拿名称
*/
public static String getNameByCode(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)) {
return adPositionEnum.positionName;
}
}
return "";
}
public static final String[] AD_POSITION_GATHER = {BOOK_GROUP_PAGE.positionCode, APP_OR_PRODUCT.positionCode, WECHAT_GROUP_MSG.positionCode};
}
package com.pcloud.book.advertising.enums;
/**
* Description 广告形式枚举类
* Created by PENG on 2019/4/24.
*/
public enum AdPositionModeEnum {
INFORMATION(AdPositionEnum.BOOK_GROUP_PAGE.positionCode, AdPositionDetailEnum.JOIN_PAGE.detailCode, "INFORMATION", "信息流"),
BANNER_MIDDLE(AdPositionEnum.BOOK_GROUP_PAGE.positionCode, AdPositionDetailEnum.JOIN_PAGE.detailCode, "BANNER_MIDDLE", "中部通栏"),
BANNER_BOTTOM(AdPositionEnum.BOOK_GROUP_PAGE.positionCode, AdPositionDetailEnum.GROUP_QRCODE_PAGE.detailCode, "BANNER_BOTTOM", "底部通栏"),
BANNER_BOTTOM_TRACK(AdPositionEnum.BOOK_GROUP_PAGE.positionCode, AdPositionDetailEnum.FAIL_JOIN_PAGE.detailCode, "BANNER_BOTTOM_TRACK", "底部通栏(跑道式)"),
DESC_PAGE_HEAD(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "DESC_PAGE_HEAD", "应用说明页头部通栏"),
DESC_PAGE_MIDDLE(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "DESC_PAGE_MIDDLE", "应用说明页中部通栏"),
DESC_PAGE_BOTTOM(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "DESC_PAGE_BOTTOM", "应用说明页底部通栏"),
TOP_FOCUS_PIC_1(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "TOP_FOCUS_PIC_1", "顶部焦点图第1帧"),
TOP_FOCUS_PIC_2(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "TOP_FOCUS_PIC_2", "顶部焦点图第2帧"),
UNDER_TITLE_BANNER(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "UNDER_TITLE_BANNER", "顶部焦点图第2帧"),
RIGHT_FLOAT_ICON(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "RIGHT_FLOAT_ICON", "右侧浮标"),
PAY_POP_UP(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "PAY_POP_UP", "付费后弹窗"),
MINE_TOP_BANNER(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "MINE_TOP_BANNER", "“我的”顶部通栏(大)"),
TOP_BANNER_SMALL(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "TOP_BANNER_SMALL", "顶部通栏(小)"),
BOTTOM_FLOAT_ICON(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "BOTTOM_FLOAT_ICON", "底部浮标"),
BOTTOM_BANNER_LARGE(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "BOTTOM_BANNER_LARGE", "底部通栏(大)"),
PAY_BOTTOM_BANNER(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "PAY_BOTTOM_BANNER", "应用支付页底部通栏"),
PIC_IN_PIC_MIDDLE(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "PIC_IN_PIC_MIDDLE", "画中画(中)"),
PIC_IN_PIC_BOTTOM(AdPositionEnum.APP_OR_PRODUCT.positionCode, null, "PIC_IN_PIC_BOTTOM", "画中画(底)"),
TEXT_AND_LINK(AdPositionEnum.WECHAT_GROUP_MSG.positionCode, null, "TEXT_AND_LINK", "文字+链接"),
NEWS_SHARE(AdPositionEnum.WECHAT_GROUP_MSG.positionCode, null, "NEWS_SHARE", "图文分享"),
JUST_PIC(AdPositionEnum.WECHAT_GROUP_MSG.positionCode, null, "JUST_PIC", "纯图片");
public final String positionCode;
public final String detailCode;
public final String modeCode;
public final String modeName;
AdPositionModeEnum(String positionCode, String detailCode, String modeCode, String modeName) {
this.positionCode = positionCode;
this.detailCode = detailCode;
this.modeCode = modeCode;
this.modeName = modeName;
}
/**
* 校验位置是否存在
*/
public static Boolean checkCodeExist(String positionCode, String modeCode) {
AdPositionModeEnum[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
AdPositionModeEnum adPositionModeEnum = var1[var3];
if (adPositionModeEnum.positionCode.equals(positionCode) && adPositionModeEnum.modeCode.equals(modeCode)) {
return true;
}
}
return false;
}
/**
* 根据编码拿名称
*/
public static String getNameByCode(String modeCode) {
AdPositionModeEnum[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
AdPositionModeEnum adPositionModeEnum = var1[var3];
if (adPositionModeEnum.modeCode.equals(modeCode)) {
return adPositionModeEnum.modeName;
}
}
return "";
}
}
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.enums;
/**
* Description 广告结算方式
* Created by PENG on 2019/4/26.
*/
public enum SettlementMethodEnum {
CPC("CPC", "按点击量"),
CPM("CPM", "按曝光量"),
CPA("CPA", "按实际行动"),
CPS("CPS", "按实际销售");
public final String code;
public final String name;
SettlementMethodEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static String getNameByCode(String code) {
SettlementMethodEnum[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
SettlementMethodEnum methodEnum = var1[var3];
if (methodEnum.code.equals(code)) {
return methodEnum.name;
}
}
return null;
}
public static final String[] SETTLEMENT_METHOD_GATHER = {CPC.code, CPM.code, CPA.code, CPS.code};
public static final String[] SETTLEMENT_METHOD_NEED_PRICE_GATHER = {CPC.code, CPM.code};
}
package com.pcloud.book.advertising.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
import com.pcloud.book.advertising.service.AdvertisingSpaceService;
import com.pcloud.common.exceptions.BizException;
/**
* Description 广告位内部接口实现类
* Created by PENG on 2019/5/6.
*/
@RestController("advertisingSpaceService")
@RequestMapping("advertisingSpaceService")
public class AdvertisingSpaceServiceImpl implements AdvertisingSpaceService {
@Autowired
private AdvertisingSpaceBiz advertisingSpaceBiz;
/**
* 每日凌晨计算昨日广告位收益
*/
@Override
@RequestMapping(value = "calculateAdvertisingIncomeYesterday", method = RequestMethod.GET)
public void calculateAdvertisingIncomeYesterday() throws BizException {
advertisingSpaceBiz.calculateAdvertisingIncomeYesterday();
}
}
package com.pcloud.book.consumer.reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.alibaba.druid.support.json.JSONUtils;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
......@@ -8,13 +16,6 @@ import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.readercenter.wechat.dto.WechatUserRobotDto;
import com.pcloud.readercenter.wechat.entity.WechatUser;
import com.pcloud.readercenter.wechat.service.WechatUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author lily
......@@ -27,8 +28,6 @@ public class ReaderConsr {
*/
private static final Logger LOGGER = LoggerFactory.getLogger(ReaderConsr.class);
@Autowired
private WechatUserService wechatUserService;
......@@ -44,7 +43,17 @@ public class ReaderConsr {
return null;
}
public Map<Long, WechatUser> getUserList(List<Long> wechatUserIds) throws BizException {
if (ListUtils.isEmpty(wechatUserIds)) {
return new HashMap<>();
}
try {
return ResponseHandleUtil.parseMap(wechatUserService.getUserList(wechatUserIds), Long.class, WechatUser.class);
} catch (Exception e) {
LOGGER.error("获取微信用户信息失败[wechatUserService.getUserList]:" + e.getMessage(), e);
}
return null;
}
@ParamLog(value = "随机获取n个用户", isAfterReturn = false)
public List<WechatUserRobotDto> selectRobotsRandom(Integer number) throws BizException {
......
......@@ -82,6 +82,11 @@ public class AdGroupQrcodeDTO implements Serializable {
private Long clickNum;
/**
* 点击读者量
*/
private Long clickUserNum;
/**
* 广告位数量
*/
private Long advertisingSpaceNum;
......@@ -259,6 +264,14 @@ public class AdGroupQrcodeDTO implements Serializable {
this.distributionTime = distributionTime;
}
public Long getClickUserNum() {
return clickUserNum;
}
public void setClickUserNum(Long clickUserNum) {
this.clickUserNum = clickUserNum;
}
@Override
public String toString() {
return "AdGroupQrcodeDTO{" +
......@@ -276,6 +289,7 @@ public class AdGroupQrcodeDTO implements Serializable {
", agentName='" + agentName + '\'' +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", clickUserNum=" + clickUserNum +
", advertisingSpaceNum=" + advertisingSpaceNum +
", clickRate=" + clickRate +
", totalIncome=" + totalIncome +
......
......@@ -2,24 +2,26 @@
<!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"/>
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="ad_id" property="adId" jdbcType="BIGINT"/>
<result column="book_id" property="bookId" jdbcType="BIGINT"/>
<result column="is_book_group" property="isBookGroup" jdbcType="BIT"/>
<result column="scene_id" property="sceneId" jdbcType="BIGINT"/>
<result column="adviser_id" property="adviserId" jdbcType="BIGINT"/>
<result column="agent_id" property="agentId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="BIGINT"/>
<result column="official_account_id" property="officialAccountId" jdbcType="BIGINT"/>
<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="from_id" property="fromId" jdbcType="BIGINT"/>
<result column="wechat_user_id" property="wechatUserId" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="create_day" property="createDay" jdbcType="DATE"/>
<result column="create_month" property="createMonth" jdbcType="VARCHAR"/>
</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
id, ad_id, book_id, is_book_group, scene_id, adviser_id, agent_id, channel_id, official_account_id, from_type,
from_id, wechat_user_id, create_time, create_day, create_month
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
......@@ -41,23 +43,109 @@
AND adviser_id = #{adviserId}
AND channel_id = #{channelId}
</if>
<if test="fromId != null">
AND from_id = #{fromId}
AND from_type = #{fromType}
<if test="statisMonth != null">
and create_month = #{statisMonth}
</if>
</select>
<select id="getClickNumByMasterId" parameterType="map" resultType="Long">
SELECT
count(1)
FROM
advertising_click_record r
INNER JOIN advertising_space s ON r.ad_id = s.id
WHERE
s.master_id = #{masterId}
</select>
<select id="getClickNumByBookId" parameterType="map" resultType="Long">
SELECT
count(1)
FROM
advertising_click_record
WHERE
book_id = #{bookId}
AND adviser_id = #{adviserId}
AND channel_id = #{channelId}
AND from_type != 'WECHAT_GROUP'
</select>
<select id="getClickNumByGroupQrcodeId" parameterType="map" resultType="Long">
SELECT
count(1)
FROM
advertising_click_record
WHERE
from_id = #{qrcodeId}
AND from_type = 'WECHAT_GROUP'
<if test="adId != null">
AND ad_id = #{adId}
</if>
<if test="statisMonth != null">
AND create_month = #{statisMonth}
</if>
</select>
<select id="getClickUserNumByGroupQrcodeId" parameterType="map" resultType="Long">
SELECT
count(DISTINCT wechat_user_id)
FROM
advertising_click_record
WHERE
from_id = #{qrcodeId}
AND from_type = 'WECHAT_GROUP'
<if test="adId != null">
AND ad_id = #{adId}
</if>
<if test="statisMonth != null">
AND create_month = #{statisMonth}
</if>
AND wechat_user_id IS NOT NULL
</select>
<select id="getTotalClickNum" resultType="Long">
SELECT
count(1)
FROM
advertising_click_record
</select>
<delete id="deleteById" parameterType="Long">
delete from advertising_click_record
where id = #{id}
</delete>
<select id="clickUserList4AdvertisingWechatGroup" parameterType="map" resultType="com.pcloud.book.advertising.dto.WechatGroupClickUserDTO">
SELECT
ad_id adId,
official_account_id officialAccountId,
from_type fromType,
from_id fromId,
wechat_user_id wechatUserId,
max(create_time) createTime
FROM
advertising_click_record
WHERE
from_id = #{qrcodeId}
AND from_type = 'WECHAT_GROUP'
AND ad_id = #{adId}
<if test="statisMonth != null">
AND create_month = #{statisMonth}
</if>
AND wechat_user_id IS NOT NULL
GROUP BY
wechat_user_id
ORDER BY
createTime DESC
</select>
<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,
is_book_group,
scene_id,
adviser_id,
agent_id,
......@@ -68,20 +156,23 @@
wechat_user_id,
create_time,
create_day,
create_month,
</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},
#{adId,jdbcType=BIGINT},
#{bookId,jdbcType=BIGINT},
#{isBookGroup,jdbcType=BIT},
#{sceneId,jdbcType=BIGINT},
#{adviserId,jdbcType=BIGINT},
#{agentId,jdbcType=BIGINT},
#{channelId,jdbcType=BIGINT},
#{officialAccountId,jdbcType=BIGINT},
#{fromType,jdbcType=VARCHAR},
#{fromId,jdbcType=INTEGER},
#{wechatUserId,jdbcType=INTEGER},
#{fromId,jdbcType=BIGINT},
#{wechatUserId,jdbcType=BIGINT},
NOW(),
NOW(),
DATE_FORMAT(NOW(), '%Y-%m'),
</trim>
</insert>
......@@ -89,36 +180,39 @@
update advertising_click_record
<set>
<if test="adId != null">
ad_id = #{adId,jdbcType=INTEGER},
ad_id = #{adId,jdbcType=BIGINT},
</if>
<if test="bookId != null">
book_id = #{bookId,jdbcType=INTEGER},
book_id = #{bookId,jdbcType=BIGINT},
</if>
<if test="isBookGroup != null">
is_book_group = #{isBookGroup,jdbcType=BIT},
</if>
<if test="sceneId != null">
scene_id = #{sceneId,jdbcType=INTEGER},
scene_id = #{sceneId,jdbcType=BIGINT},
</if>
<if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER},
adviser_id = #{adviserId,jdbcType=BIGINT},
</if>
<if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER},
agent_id = #{agentId,jdbcType=BIGINT},
</if>
<if test="channelId != null">
channel_id = #{channelId,jdbcType=INTEGER},
channel_id = #{channelId,jdbcType=BIGINT},
</if>
<if test="officialAccountId != null">
official_account_id = #{officialAccountId,jdbcType=INTEGER},
official_account_id = #{officialAccountId,jdbcType=BIGINT},
</if>
<if test="fromType != null">
from_type = #{fromType,jdbcType=VARCHAR},
</if>
<if test="fromId != null">
from_id = #{fromId,jdbcType=INTEGER},
from_id = #{fromId,jdbcType=BIGINT},
</if>
<if test="wechatUserId != null">
wechat_user_id = #{wechatUserId,jdbcType=INTEGER},
wechat_user_id = #{wechatUserId,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
......@@ -2,17 +2,20 @@
<!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"/>
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="ad_id" property="adId" jdbcType="BIGINT"/>
<result column="book_id" property="bookId" jdbcType="BIGINT"/>
<result column="adviser_id" property="adviserId" jdbcType="BIGINT"/>
<result column="agent_id" property="agentId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="BIGINT"/>
<result column="is_book_group" property="isBookGroup" jdbcType="BIT"/>
<result column="classify_id" property="classifyId" jdbcType="BIGINT"/>
<result column="qrcode_id" property="qrcodeId" jdbcType="BIGINT"/>
<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
id, ad_id, book_id, adviser_id, agent_id, channel_id, is_book_group, classify_id, qrcode_id, distribution_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
......@@ -29,20 +32,137 @@
where ad_id = #{adId}
</select>
<select id="checkBookIdExist" parameterType="list" resultType="Long">
<select id="countByAdId" resultType="Integer" parameterType="map">
select
b.book_id
count(1)
from advertising_distribution_book
where ad_id = #{adId}
</select>
<select id="getDistributionBookNum" resultType="Long">
SELECT
count(
DISTINCT (
CONCAT(a.BOOK_ID, '-', a.CHANNEL_ID)
)
)
FROM
BOOK_ADVISER a
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.IS_DELETE = 0
AND b.IS_DELETE = 0
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.qrcode_id IS NULL
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
</select>
<select id="getDistributionWechatGroupNum" resultType="Long">
select
count(distinct qrcode_id)
from
advertising_distribution_book
where
qrcode_id is not null
</select>
<select id="distributionWechatGroupList" parameterType="map" resultType="AdGroupQrcodeDTO">
SELECT
c.book_id bookId,
c.channel_id channelId,
c.create_user adviserId,
q.id groupQrcodeId,
q.group_name groupQrcodeName,
db.agent_id agentId,
b.ISBN isbn,
b.BOOK_NAME bookName,
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_group_classify c
INNER JOIN book b ON b.BOOK_ID = c.book_id
INNER JOIN book_group_qrcode q ON c.id = q.classify_id
INNER JOIN advertising_distribution_book db ON db.qrcode_id = q.id
AND db.ad_id = #{adId}
AND db.classify_id = c.id
AND db.book_id = c.book_id
LEFT JOIN advertising_agent_permission ap ON ap.agent_id = db.agent_id
LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = c.create_user
AND adp.channel_id = c.channel_id
AND adp.book_id = c.book_id
WHERE
1 = 1
<if test="name != null">
AND (b.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR q.group_name LIKE CONCAT('%', #{name}, '%'))
</if>
GROUP BY
db.qrcode_id
ORDER BY
db.distribution_time DESC
</select>
<select id="checkBookGroupAdExist" parameterType="map" resultType="Integer">
SELECT
count(1)
FROM
advertising_distribution_book b,
advertising_space s
WHERE
b.ad_id = s.id
AND b.book_id = #{bookId}
AND b.channel_id = #{channelId}
AND b.is_book_group = 1
AND s.is_open = 1
AND s.ad_position = 'BOOK_GROUP_PAGE'
AND s.ad_position_detail = #{adPositionDetail}
</select>
<select id="checkBookAdExist" parameterType="map" resultType="Integer">
SELECT
count(1)
FROM
advertising_distribution_book b,
advertising_space s
WHERE
b.ad_id = s.id
AND b.book_id = #{bookId}
AND b.channel_id = #{channelId}
AND b.is_book_group = 0
AND s.is_open = 1
AND s.ad_position = 'APP_OR_PRODUCT'
AND s.ad_position_detail = #{adPositionDetail}
AND s.ad_position_mode = #{adPositionMode}
</select>
<select id="checkQrcodeIdExist" parameterType="map" resultType="Long">
select
b.qrcode_id
from
advertising_distribution_book b,
advertising_space s
where
b.ad_id = s.id
and b.ad_id = #{adId}
and s.is_open = 1
and b.book_id in
<foreach collection="list" index="i" item="item" open="("
and b.qrcode_id in
<foreach collection="qrcodeIds" index="i" item="item" open="("
separator="," close=")">
${item}
</foreach>
group by
b.qrcode_id
</select>
<select id="checkAdSpaceHasBook" parameterType="map" resultType="Boolean">
......@@ -71,14 +191,20 @@
adviser_id,
agent_id,
channel_id,
is_book_group,
classify_id,
qrcode_id,
distribution_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{adId,jdbcType=INTEGER},
#{bookId,jdbcType=INTEGER},
#{adviserId,jdbcType=INTEGER},
#{agentId,jdbcType=INTEGER},
#{channelId,jdbcType=INTEGER},
#{adId,jdbcType=BIGINT},
#{bookId,jdbcType=BIGINT},
#{adviserId,jdbcType=BIGINT},
#{agentId,jdbcType=BIGINT},
#{channelId,jdbcType=BIGINT},
#{isBookGroup,jdbcType=BIT},
#{classifyId,jdbcType=BIGINT},
#{qrcodeId,jdbcType=BIGINT},
NOW(),
</trim>
</insert>
......@@ -91,15 +217,21 @@
adviser_id,
agent_id,
channel_id,
is_book_group,
classify_id,
qrcode_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},
(#{item.adId,jdbcType=BIGINT},
#{item.bookId,jdbcType=BIGINT},
#{item.adviserId,jdbcType=BIGINT},
#{item.agentId,jdbcType=BIGINT},
#{item.channelId,jdbcType=BIGINT},
#{item.isBookGroup,jdbcType=BIT},
#{item.classifyId,jdbcType=BIGINT},
#{item.qrcodeId,jdbcType=BIGINT},
NOW())
</foreach>
</insert>
......@@ -108,21 +240,30 @@
update advertising_distribution_book
<set>
<if test="adId != null">
ad_id = #{adId,jdbcType=INTEGER},
ad_id = #{adId,jdbcType=BIGINT},
</if>
<if test="bookId != null">
book_id = #{bookId,jdbcType=INTEGER},
book_id = #{bookId,jdbcType=BIGINT},
</if>
<if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER},
adviser_id = #{adviserId,jdbcType=BIGINT},
</if>
<if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER},
agent_id = #{agentId,jdbcType=BIGINT},
</if>
<if test="channelId != null">
channel_id = #{channelId,jdbcType=INTEGER},
channel_id = #{channelId,jdbcType=BIGINT},
</if>
<if test="isBookGroup != null">
is_book_group = #{isBookGroup,jdbcType=BIT},
</if>
<if test="classifyId != null">
classify_id = #{classifyId,jdbcType=BIGINT},
</if>
<if test="qrcodeId != null">
qrcode_id = #{qrcodeId,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
where id = #{id,jdbcType=BIGINT}
</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.AdvertisingMasterDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingMaster">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="master_name" property="masterName" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<resultMap id="AdvertisingMasterDTO" type="com.pcloud.book.advertising.dto.AdvertisingMasterDTO">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="master_name" property="masterName" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, master_name, create_time, update_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
select
<include refid="Base_Column_List"/>
from advertising_master
where id = #{id,jdbcType=BIGINT}
</select>
<select id="getDTOById" resultMap="AdvertisingMasterDTO" parameterType="java.lang.Long">
select
<include refid="Base_Column_List"/>
from advertising_master
where id = #{id,jdbcType=BIGINT}
</select>
<select id="checkMasterNameExist" resultMap="BaseResultMap" parameterType="java.lang.Long">
select
exists (
select
id
from
advertising_master
where
master_name = #{masterName,jdbcType=VARCHAR}
<if test="masterId != null">
and id != #{masterId,jdbcType=BIGINT}
</if>
)
</select>
<delete id="deleteById" parameterType="java.lang.Long">
delete from advertising_master
where id = #{id,jdbcType=BIGINT}
</delete>
<select id="getMasterList" parameterType="map" resultMap="AdvertisingMasterDTO">
select
m.id,
m.master_name,
m.create_time,
m.update_time,
count(s.id) spaceNum
from
advertising_master m
left join advertising_space s on s.master_id = m.id
where 1 = 1
<if test="null != masterName and masterName != ''">
and m.master_name like concat('%', #{masterName}, '%')
</if>
group by
m.id
</select>
<select id="getAllMaster" resultMap="AdvertisingMasterDTO">
select
<include refid="Base_Column_List"/>
from advertising_master
</select>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingMaster"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_master
<trim prefix="(" suffix=")" suffixOverrides=",">
master_name,
create_time,
update_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{masterName,jdbcType=VARCHAR},
NOW(),
NOW(),
</trim>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingMaster">
update advertising_master
<set>
<if test="masterName != null">
master_name = #{masterName,jdbcType=VARCHAR},
</if>
update_time = NOW(),
</set>
where id = #{id,jdbcType=BIGINT}
</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.AdvertisingSettlementMethodDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingSettlementMethod">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="master_id" property="masterId" jdbcType="BIGINT"/>
<result column="ad_id" property="adId" jdbcType="BIGINT"/>
<result column="settlement_method" property="settlementMethod" jdbcType="VARCHAR"/>
<result column="price_each_time" property="priceEachTime" jdbcType="DECIMAL"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<resultMap id="AdvertisingSettlementMethodDTO" type="com.pcloud.book.advertising.dto.AdvertisingSettlementMethodDTO">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="master_id" property="masterId" jdbcType="BIGINT"/>
<result column="ad_id" property="adId" jdbcType="BIGINT"/>
<result column="settlement_method" property="settlementMethod" jdbcType="VARCHAR"/>
<result column="price_each_time" property="priceEachTime" jdbcType="DECIMAL"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, master_id, ad_id, settlement_method, price_each_time, create_time, update_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
select
<include refid="Base_Column_List"/>
from advertising_settlement_method
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteById" parameterType="java.lang.Long">
delete from advertising_settlement_method
where id = #{id,jdbcType=BIGINT}
</delete>
<delete id="deleteByMasterId" parameterType="java.lang.Long">
delete from advertising_settlement_method
where master_id = #{masterId,jdbcType=BIGINT}
and ad_id is null
</delete>
<select id="getByMasterId" parameterType="java.lang.Long" resultMap="AdvertisingSettlementMethodDTO">
select
<include refid="Base_Column_List"/>
from advertising_settlement_method
where master_id = #{masterId,jdbcType=BIGINT}
and ad_id is null
</select>
<select id="getByMasterIdAndAdId" parameterType="map" resultMap="AdvertisingSettlementMethodDTO">
select
<include refid="Base_Column_List"/>
from advertising_settlement_method
where master_id = #{masterId,jdbcType=BIGINT}
and ad_id = #{adId,jdbcType=BIGINT}
order by create_time desc
limit 1
</select>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingSettlementMethod"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_settlement_method
<trim prefix="(" suffix=")" suffixOverrides=",">
master_id,
ad_id,
settlement_method,
price_each_time,
create_time,
update_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{masterId,jdbcType=BIGINT},
#{adId,jdbcType=BIGINT},
#{settlementMethod,jdbcType=VARCHAR},
#{priceEachTime,jdbcType=DECIMAL},
NOW(),
NOW(),
</trim>
</insert>
<insert id="batchInsert" parameterType="com.pcloud.book.advertising.entity.AdvertisingSettlementMethod"
useGeneratedKeys="true" keyProperty="id">
insert into advertising_settlement_method (
master_id,
ad_id,
settlement_method,
price_each_time,
create_time,
update_time
) values
<foreach collection="list" item="item" index="index"
separator=",">
(#{item.masterId,jdbcType=BIGINT},
#{item.adId,jdbcType=BIGINT},
#{item.settlementMethod,jdbcType=VARCHAR},
#{item.priceEachTime,jdbcType=DECIMAL},
NOW(),
NOW())
</foreach>
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingSettlementMethod">
update advertising_settlement_method
<set>
<if test="masterId != null">
master_id = #{masterId,jdbcType=BIGINT},
</if>
<if test="adId != null">
ad_id = #{adId,jdbcType=BIGINT},
</if>
<if test="settlementMethod != null">
settlement_method = #{settlementMethod,jdbcType=VARCHAR},
</if>
<if test="priceEachTime != null">
price_each_time = #{priceEachTime,jdbcType=DECIMAL},
</if>
update_time = NOW(),
</set>
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
......@@ -726,7 +726,7 @@
</select>
<!-- 获取书籍列表(编辑) -->
<select id="listBook4AdvertisingSpaceNoSignBook" resultMap="bookMap" parameterType="map">
<select id="advertisingBookList" resultMap="bookMap" parameterType="map">
SELECT
a.BOOK_ID,
a.CHANNEL_ID,
......@@ -735,6 +735,7 @@
b.ISBN,
b.BOOK_NAME,
b.COVER_IMG,
count(DISTINCT db.id) advertisingSpaceNum,
IF (
adp.is_open = 0
OR (
......@@ -749,23 +750,10 @@
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
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.qrcode_id IS NULL
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
......@@ -779,7 +767,7 @@
a.BOOK_ID,
a.CHANNEL_ID
ORDER BY
a.CREATED_DATE DESC
db.id ASC
</select>
<!-- 获取书籍列表(平台) -->
......@@ -809,9 +797,14 @@
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
<if test="bookGroupOnly != null and bookGroupOnly == 1">
INNER JOIN book_group g ON g.BOOK_ID = a.BOOK_ID
AND g.CHANNEL_ID = a.CHANNEL_ID
AND g.CREATE_USER = a.ADVISER_ID
AND g.IS_DELETE = 0
</if>
LEFT JOIN (
SELECT
db.id,
......@@ -828,14 +821,23 @@
AND t.book_id = a.BOOK_ID
WHERE
a.IS_MAIN_EDITOR = 1
<if test="adviserId != null">
AND a.ADVISER_ID = #{adviserId}
</if>
<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
<if test="bookGroupOnly != null and bookGroupOnly == 1">
ORDER BY
g.create_time DESC
</if>
<if test="bookGroupOnly == null or bookGroupOnly != 1">
ORDER BY
a.CREATED_DATE DESC
</if>
</select>
<!-- 获取书籍列表(编辑) -->
......
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