Commit 61e38a20 by 田超
parents 2374deac cd9bf215
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 { ...@@ -433,6 +433,16 @@ public class BookDto extends BaseDto {
private Long clickNum; private Long clickNum;
/** /**
* 广告位数量
*/
private Long advertisingSpaceNum;
/**
* 点击率
*/
private BigDecimal clickRate;
/**
* 公众号名称 * 公众号名称
*/ */
private String officialAccountsName; private String officialAccountsName;
...@@ -1271,6 +1281,23 @@ public class BookDto extends BaseDto { ...@@ -1271,6 +1281,23 @@ public class BookDto extends BaseDto {
public void setIsBookGroup(Boolean isBookGroup) { public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = 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 @Override
public String toString() { public String toString() {
return "BookDto{" + return "BookDto{" +
...@@ -1357,6 +1384,8 @@ public class BookDto extends BaseDto { ...@@ -1357,6 +1384,8 @@ public class BookDto extends BaseDto {
", distributionTime=" + distributionTime + ", distributionTime=" + distributionTime +
", exposureNum=" + exposureNum + ", exposureNum=" + exposureNum +
", clickNum=" + clickNum + ", clickNum=" + clickNum +
", advertisingSpaceNum=" + advertisingSpaceNum +
", clickRate=" + clickRate +
", officialAccountsName='" + officialAccountsName + '\'' + ", officialAccountsName='" + officialAccountsName + '\'' +
", uniqueNumber='" + uniqueNumber + '\'' + ", uniqueNumber='" + uniqueNumber + '\'' +
", bookGroupId=" + bookGroupId + ", bookGroupId=" + bookGroupId +
......
package com.pcloud.book.advertising.dao; 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.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -9,4 +12,11 @@ import com.pcloud.common.core.dao.BaseDao; ...@@ -9,4 +12,11 @@ import com.pcloud.common.core.dao.BaseDao;
* @date 2019/2/28 * @date 2019/2/28
*/ */
public interface AdvertisingClickRecordDao extends BaseDao<AdvertisingClickRecord> { public interface AdvertisingClickRecordDao extends BaseDao<AdvertisingClickRecord> {
/**
* 微信群广告位点击读者列表
* @param paramMap 参数Map
* @return
*/
List<WechatGroupClickUserDTO> clickUserList4AdvertisingWechatGroup(Map<String, Object> paramMap);
} }
package com.pcloud.book.advertising.dao; package com.pcloud.book.advertising.dao;
import java.util.List; import java.util.List;
import java.util.Map;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook; import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -19,11 +20,11 @@ public interface AdvertisingDistributionBookDao extends BaseDao<AdvertisingDistr ...@@ -19,11 +20,11 @@ public interface AdvertisingDistributionBookDao extends BaseDao<AdvertisingDistr
long batchInsert(List<AdvertisingDistributionBook> list); long batchInsert(List<AdvertisingDistributionBook> list);
/** /**
* 校验书刊是否已投放 * 校验广告位是否已投放微信群
* @param list 列表 * @param paramMap 参数Map
* @return * @return
*/ */
List<Long> checkBookIdExist(List<Long> list); List<Long> checkQrcodeIdExist(Map<String, Object> paramMap);
/** /**
* 获取广告位投放的书刊列表 * 获取广告位投放的书刊列表
......
package com.pcloud.book.advertising.dao; package com.pcloud.book.advertising.dao;
import java.util.List;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord; import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.group.dto.AdGroupQrcodeDTO;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
/** /**
...@@ -9,4 +11,10 @@ import com.pcloud.common.core.dao.BaseDao; ...@@ -9,4 +11,10 @@ import com.pcloud.common.core.dao.BaseDao;
* @date 2019/2/28 * @date 2019/2/28
*/ */
public interface AdvertisingExposureRecordDao extends BaseDao<AdvertisingExposureRecord> { 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; 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.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingSpace; import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -17,4 +19,32 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> { ...@@ -17,4 +19,32 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> {
* @return * @return
*/ */
AdvertisingSpaceDTO getDTOById(Long adId); 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; package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao; import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao;
import com.pcloud.book.advertising.dto.WechatGroupClickUserDTO;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord; import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -12,4 +15,12 @@ import com.pcloud.common.core.dao.BaseDaoImpl; ...@@ -12,4 +15,12 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
*/ */
@Repository("advertisingClickRecordDao") @Repository("advertisingClickRecordDao")
public class AdvertisingClickRecordDaoImpl extends BaseDaoImpl<AdvertisingClickRecord> implements 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; package com.pcloud.book.advertising.dao.impl;
import java.util.List; import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao; import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook; import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
...@@ -23,11 +24,11 @@ public class AdvertisingDistributionBookDaoImpl extends BaseDaoImpl<AdvertisingD ...@@ -23,11 +24,11 @@ public class AdvertisingDistributionBookDaoImpl extends BaseDaoImpl<AdvertisingD
} }
/** /**
* 校验书刊是否已投放 * 校验广告位是否已投放微信群
*/ */
@Override @Override
public List<Long> checkBookIdExist(List<Long> list) { public List<Long> checkQrcodeIdExist(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("checkBookIdExist"), list); return super.getSqlSession().selectList(getStatement("checkQrcodeIdExist"), paramMap);
} }
/** /**
......
package com.pcloud.book.advertising.dao.impl; package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao; import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord; import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.group.dto.AdGroupQrcodeDTO;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
/** /**
...@@ -12,4 +14,12 @@ import com.pcloud.common.core.dao.BaseDaoImpl; ...@@ -12,4 +14,12 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
*/ */
@Repository("advertisingExposureRecordDao") @Repository("advertisingExposureRecordDao")
public class AdvertisingExposureRecordDaoImpl extends BaseDaoImpl<AdvertisingExposureRecord> implements 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; package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingSpaceDao; import com.pcloud.book.advertising.dao.AdvertisingSpaceDao;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO; import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
...@@ -14,8 +16,43 @@ import com.pcloud.common.core.dao.BaseDaoImpl; ...@@ -14,8 +16,43 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
@Repository("advertisingSpaceDao") @Repository("advertisingSpaceDao")
public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> implements AdvertisingSpaceDao { public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> implements AdvertisingSpaceDao {
/**
* 获取广告位信息
*/
@Override @Override
public AdvertisingSpaceDTO getDTOById(Long adId) { public AdvertisingSpaceDTO getDTOById(Long adId) {
return super.getSqlSession().selectOne(getStatement("getDTOById"), 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; package com.pcloud.book.advertising.dto;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonInclude;
/** /**
* @description 日期数量DTO * @description 日期数量DTO
...@@ -8,6 +10,7 @@ import java.io.Serializable; ...@@ -8,6 +10,7 @@ import java.io.Serializable;
* @date 2017年6月11日 下午2:08:30 * @date 2017年6月11日 下午2:08:30
* @version 1.0 * @version 1.0
*/ */
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class DateCountDTO implements Serializable { public class DateCountDTO implements Serializable {
private static final long serialVersionUID = 4234798666223706295L; private static final long serialVersionUID = 4234798666223706295L;
...@@ -27,6 +30,11 @@ public class DateCountDTO implements Serializable { ...@@ -27,6 +30,11 @@ public class DateCountDTO implements Serializable {
*/ */
private Long clickNum; private Long clickNum;
/**
* 收益
*/
private BigDecimal income;
public String getDate() { public String getDate() {
return date; return date;
} }
...@@ -50,4 +58,22 @@ public class DateCountDTO implements Serializable { ...@@ -50,4 +58,22 @@ public class DateCountDTO implements Serializable {
public void setClickNum(Long clickNum) { public void setClickNum(Long clickNum) {
this.clickNum = 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 { ...@@ -26,6 +26,11 @@ public class AdvertisingClickRecord extends BaseEntity {
private Long bookId; private Long bookId;
/** /**
* advertising_click_record.is_book_group (是否是社群书)
*/
private Boolean isBookGroup;
/**
* 二维码ID * 二维码ID
*/ */
private Long sceneId; private Long sceneId;
...@@ -75,6 +80,16 @@ public class AdvertisingClickRecord extends BaseEntity { ...@@ -75,6 +80,16 @@ public class AdvertisingClickRecord extends BaseEntity {
*/ */
private Date createDay; private Date createDay;
/**
* 创建月份
*/
private String createMonth;
/**
* 社群码ID
*/
private Long bookGroupId;
@Override @Override
public Long getId() { public Long getId() {
return id; return id;
...@@ -101,6 +116,14 @@ public class AdvertisingClickRecord extends BaseEntity { ...@@ -101,6 +116,14 @@ public class AdvertisingClickRecord extends BaseEntity {
this.bookId = bookId; this.bookId = bookId;
} }
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
public Long getAdviserId() { public Long getAdviserId() {
return adviserId; return adviserId;
} }
...@@ -183,12 +206,29 @@ public class AdvertisingClickRecord extends BaseEntity { ...@@ -183,12 +206,29 @@ public class AdvertisingClickRecord extends BaseEntity {
this.sceneId = sceneId; 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 @Override
public String toString() { public String toString() {
return "AdvertisingClickRecord{" + return "AdvertisingClickRecord{" +
"id=" + id + "id=" + id +
", adId=" + adId + ", adId=" + adId +
", bookId=" + bookId + ", bookId=" + bookId +
", isBookGroup=" + isBookGroup +
", sceneId=" + sceneId + ", sceneId=" + sceneId +
", adviserId=" + adviserId + ", adviserId=" + adviserId +
", agentId=" + agentId + ", agentId=" + agentId +
...@@ -199,6 +239,8 @@ public class AdvertisingClickRecord extends BaseEntity { ...@@ -199,6 +239,8 @@ public class AdvertisingClickRecord extends BaseEntity {
", wechatUserId=" + wechatUserId + ", wechatUserId=" + wechatUserId +
", createTime=" + createTime + ", createTime=" + createTime +
", createDay=" + createDay + ", createDay=" + createDay +
", createMonth='" + createMonth + '\'' +
", bookGroupId=" + bookGroupId +
"} " + super.toString(); "} " + super.toString();
} }
} }
\ No newline at end of file
...@@ -43,19 +43,34 @@ public class AdvertisingDistributionBook extends BaseEntity { ...@@ -43,19 +43,34 @@ public class AdvertisingDistributionBook extends BaseEntity {
private Long channelId; 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 (投放时间) * advertising_distribution_book.distribution_time (投放时间)
*/ */
private Date distributionTime; private Date distributionTime;
/** /**
* 书刊ID列表 * 书刊列表
*/ */
private List<BookAdviser> books; private List<BookAdviser> books;
/** /**
* 投放方式(0:指定书刊;1:不指定书刊) * 微信群列表
*/ */
private Integer distributionType; private List<DistributionWechatGroup> groups;
@Override @Override
public Long getId() { public Long getId() {
...@@ -107,6 +122,30 @@ public class AdvertisingDistributionBook extends BaseEntity { ...@@ -107,6 +122,30 @@ public class AdvertisingDistributionBook extends BaseEntity {
this.channelId = channelId; 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() { public Date getDistributionTime() {
return distributionTime; return distributionTime;
} }
...@@ -123,12 +162,12 @@ public class AdvertisingDistributionBook extends BaseEntity { ...@@ -123,12 +162,12 @@ public class AdvertisingDistributionBook extends BaseEntity {
this.books = books; this.books = books;
} }
public Integer getDistributionType() { public List<DistributionWechatGroup> getGroups() {
return distributionType; return groups;
} }
public void setDistributionType(Integer distributionType) { public void setGroups(List<DistributionWechatGroup> groups) {
this.distributionType = distributionType; this.groups = groups;
} }
@Override @Override
...@@ -140,9 +179,12 @@ public class AdvertisingDistributionBook extends BaseEntity { ...@@ -140,9 +179,12 @@ public class AdvertisingDistributionBook extends BaseEntity {
", adviserId=" + adviserId + ", adviserId=" + adviserId +
", agentId=" + agentId + ", agentId=" + agentId +
", channelId=" + channelId + ", channelId=" + channelId +
", isBookGroup=" + isBookGroup +
", classifyId=" + classifyId +
", qrcodeId=" + qrcodeId +
", distributionTime=" + distributionTime + ", distributionTime=" + distributionTime +
", books=" + books + ", books=" + books +
", distributionType=" + distributionType + ", groups=" + groups +
"} " + super.toString(); "} " + super.toString();
} }
} }
\ No newline at end of file
...@@ -26,6 +26,11 @@ public class AdvertisingExposureRecord extends BaseEntity { ...@@ -26,6 +26,11 @@ public class AdvertisingExposureRecord extends BaseEntity {
private Long bookId; private Long bookId;
/** /**
* advertising_exposure_record.is_book_group (是否是社群书)
*/
private Boolean isBookGroup;
/**
* 二维码ID * 二维码ID
*/ */
private Long sceneId; private Long sceneId;
...@@ -75,6 +80,16 @@ public class AdvertisingExposureRecord extends BaseEntity { ...@@ -75,6 +80,16 @@ public class AdvertisingExposureRecord extends BaseEntity {
*/ */
private Date createDay; private Date createDay;
/**
* 创建月份
*/
private String createMonth;
/**
* 曝光次数
*/
private Long count;
@Override @Override
public Long getId() { public Long getId() {
return id; return id;
...@@ -101,6 +116,14 @@ public class AdvertisingExposureRecord extends BaseEntity { ...@@ -101,6 +116,14 @@ public class AdvertisingExposureRecord extends BaseEntity {
this.bookId = bookId; this.bookId = bookId;
} }
public Boolean getIsBookGroup() {
return isBookGroup;
}
public void setIsBookGroup(Boolean isBookGroup) {
this.isBookGroup = isBookGroup;
}
public Long getAdviserId() { public Long getAdviserId() {
return adviserId; return adviserId;
} }
...@@ -183,12 +206,29 @@ public class AdvertisingExposureRecord extends BaseEntity { ...@@ -183,12 +206,29 @@ public class AdvertisingExposureRecord extends BaseEntity {
this.sceneId = sceneId; 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 @Override
public String toString() { public String toString() {
return "AdvertisingExposureRecord{" + return "AdvertisingExposureRecord{" +
"id=" + id + "id=" + id +
", adId=" + adId + ", adId=" + adId +
", bookId=" + bookId + ", bookId=" + bookId +
", isBookGroup=" + isBookGroup +
", sceneId=" + sceneId + ", sceneId=" + sceneId +
", adviserId=" + adviserId + ", adviserId=" + adviserId +
", agentId=" + agentId + ", agentId=" + agentId +
...@@ -199,6 +239,8 @@ public class AdvertisingExposureRecord extends BaseEntity { ...@@ -199,6 +239,8 @@ public class AdvertisingExposureRecord extends BaseEntity {
", wechatUserId=" + wechatUserId + ", wechatUserId=" + wechatUserId +
", createTime=" + createTime + ", createTime=" + createTime +
", createDay=" + createDay + ", createDay=" + createDay +
", createMonth='" + createMonth + '\'' +
", count=" + count +
"} " + super.toString(); "} " + 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; package com.pcloud.book.advertising.entity;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import com.pcloud.common.entity.BaseEntity; import com.pcloud.common.entity.BaseEntity;
...@@ -26,9 +27,19 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -26,9 +27,19 @@ public class AdvertisingSpace extends BaseEntity {
private String adPosition; 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 (广告位链接) * advertising_space.ad_link (广告位链接)
...@@ -41,6 +52,11 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -41,6 +52,11 @@ public class AdvertisingSpace extends BaseEntity {
private String sourceId; private String sourceId;
/** /**
* advertising_space.ad_title (广告位标题)
*/
private String adTitle;
/**
* advertising_space.ad_slogan (广告位文案) * advertising_space.ad_slogan (广告位文案)
*/ */
private String adSlogan; private String adSlogan;
...@@ -51,11 +67,6 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -51,11 +67,6 @@ public class AdvertisingSpace extends BaseEntity {
private String adPic; private String adPic;
/** /**
* advertising_space.distribution_type (投放方式(0:指定书刊;1:不指定书刊))
*/
private Integer distributionType;
/**
* advertising_space.create_time (创建时间) * advertising_space.create_time (创建时间)
*/ */
private Date createTime; private Date createTime;
...@@ -70,6 +81,16 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -70,6 +81,16 @@ public class AdvertisingSpace extends BaseEntity {
*/ */
private Boolean isOpen; private Boolean isOpen;
/**
* 结算方式
*/
private String settlementMethod;
/**
* 每次价格
*/
private BigDecimal priceEachTime;
@Override @Override
public Long getId() { public Long getId() {
return id; return id;
...@@ -96,12 +117,28 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -96,12 +117,28 @@ public class AdvertisingSpace extends BaseEntity {
this.adPosition = adPosition; this.adPosition = adPosition;
} }
public String getAdSource() { public String getAdPositionMode() {
return adSource; 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) { public Long getMasterId() {
this.adSource = adSource; return masterId;
}
public void setMasterId(Long masterId) {
this.masterId = masterId;
} }
public String getAdLink() { public String getAdLink() {
...@@ -120,6 +157,14 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -120,6 +157,14 @@ public class AdvertisingSpace extends BaseEntity {
this.sourceId = sourceId; this.sourceId = sourceId;
} }
public String getAdTitle() {
return adTitle;
}
public void setAdTitle(String adTitle) {
this.adTitle = adTitle;
}
public String getAdSlogan() { public String getAdSlogan() {
return adSlogan; return adSlogan;
} }
...@@ -136,14 +181,6 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -136,14 +181,6 @@ public class AdvertisingSpace extends BaseEntity {
this.adPic = adPic; this.adPic = adPic;
} }
public Integer getDistributionType() {
return distributionType;
}
public void setDistributionType(Integer distributionType) {
this.distributionType = distributionType;
}
@Override @Override
public Date getCreateTime() { public Date getCreateTime() {
return createTime; return createTime;
...@@ -172,21 +209,41 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -172,21 +209,41 @@ public class AdvertisingSpace extends BaseEntity {
this.isOpen = isOpen; 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 @Override
public String toString() { public String toString() {
return "AdvertisingSpace{" + return "AdvertisingSpace{" +
"id=" + id + "id=" + id +
", adName='" + adName + '\'' + ", adName='" + adName + '\'' +
", adPosition='" + adPosition + '\'' + ", adPosition='" + adPosition + '\'' +
", adSource='" + adSource + '\'' + ", adPositionMode='" + adPositionMode + '\'' +
", adPositionDetail='" + adPositionDetail + '\'' +
", masterId=" + masterId +
", adLink='" + adLink + '\'' + ", adLink='" + adLink + '\'' +
", sourceId='" + sourceId + '\'' + ", sourceId='" + sourceId + '\'' +
", adTitle='" + adTitle + '\'' +
", adSlogan='" + adSlogan + '\'' + ", adSlogan='" + adSlogan + '\'' +
", adPic='" + adPic + '\'' + ", adPic='" + adPic + '\'' +
", distributionType=" + distributionType +
", createTime=" + createTime + ", createTime=" + createTime +
", updateTime=" + updateTime + ", updateTime=" + updateTime +
", isOpen=" + isOpen + ", isOpen=" + isOpen +
", settlementMethod='" + settlementMethod + '\'' +
", priceEachTime=" + priceEachTime +
"} " + super.toString(); "} " + 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; ...@@ -7,24 +7,18 @@ package com.pcloud.book.advertising.enums;
*/ */
public enum AdPositionEnum { public enum AdPositionEnum {
/** BOOK_GROUP_PAGE("BOOK_GROUP_PAGE", "扫社群码页面"),
* 应用或作品详情浮标
*/
DETAIL_PAGE("DETAIL_PAGE", "应用或作品详情浮标", true),
/** APP_OR_PRODUCT("APP_OR_PRODUCT", "具体应用/作品"),
* 扫码消息
*/ WECHAT_GROUP_MSG("WECHAT_GROUP_MSG", "微信群消息");
SCENE_MESSAGE("SCENE_MESSAGE", "扫码消息", false);
public final String positionCode; public final String positionCode;
public final String positionName; public final String positionName;
public final Boolean isOpen;
AdPositionEnum(String positionCode, String positionName, Boolean isOpen) { AdPositionEnum(String positionCode, String positionName) {
this.positionCode = positionCode; this.positionCode = positionCode;
this.positionName = positionName; this.positionName = positionName;
this.isOpen = isOpen;
} }
/** /**
...@@ -35,12 +29,27 @@ public enum AdPositionEnum { ...@@ -35,12 +29,27 @@ public enum AdPositionEnum {
int var2 = var1.length; int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) { for (int var3 = 0; var3 < var2; ++var3) {
AdPositionEnum adPositionEnum = var1[var3]; AdPositionEnum adPositionEnum = var1[var3];
if (adPositionEnum.positionCode.equals(positionCode) && adPositionEnum.isOpen) { if (adPositionEnum.positionCode.equals(positionCode)) {
return true; return true;
} }
} }
return false; 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();
}
}
...@@ -1265,6 +1265,9 @@ public class BookBizImpl implements BookBiz { ...@@ -1265,6 +1265,9 @@ public class BookBizImpl implements BookBiz {
bookSet.setTemplateName(pageBean.getRecordList()); bookSet.setTemplateName(pageBean.getRecordList());
// 设置运营平台名称 // 设置运营平台名称
bookSet.setChannelInfoList(pageBean.getRecordList()); bookSet.setChannelInfoList(pageBean.getRecordList());
// 设置出版社名称
bookSet.setAgentId4BookDto(pageBean.getRecordList());
bookSet.setAgentName4BookDto(pageBean.getRecordList());
// 设置图书收益 // 设置图书收益
bookSet.setBookIncome(pageBean.getRecordList()); bookSet.setBookIncome(pageBean.getRecordList());
} else { } else {
......
...@@ -288,6 +288,22 @@ public class BookSet { ...@@ -288,6 +288,22 @@ public class BookSet {
} }
/** /**
* 批量填充出版ID
*/
public void setAgentId4BookDto(List<Object> objects) {
LOGGER.info("【书刊基础】批量填充出版ID,<START>");
for (Object object : objects) {
BookDto bookDto = (BookDto) object;
Long adviserId = bookDto.getAdviserId();
if (null != adviserId) {
Long agentId = adviserConsr.getAgentIdByAdviser(adviserId);
bookDto.setAgentId(agentId);
}
}
LOGGER.info("【书刊基础】批量填充出版ID,<END>");
}
/**
* 批量填充出版名称 * 批量填充出版名称
*/ */
public void setAgentName4BookDto(List<Object> objects) { public void setAgentName4BookDto(List<Object> objects) {
......
package com.pcloud.book.consumer.reader; 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.alibaba.druid.support.json.JSONUtils;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
...@@ -8,13 +16,6 @@ import com.pcloud.common.utils.ResponseHandleUtil; ...@@ -8,13 +16,6 @@ import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.readercenter.wechat.dto.WechatUserRobotDto; import com.pcloud.readercenter.wechat.dto.WechatUserRobotDto;
import com.pcloud.readercenter.wechat.entity.WechatUser; import com.pcloud.readercenter.wechat.entity.WechatUser;
import com.pcloud.readercenter.wechat.service.WechatUserService; 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 * @author lily
...@@ -27,8 +28,6 @@ public class ReaderConsr { ...@@ -27,8 +28,6 @@ public class ReaderConsr {
*/ */
private static final Logger LOGGER = LoggerFactory.getLogger(ReaderConsr.class); private static final Logger LOGGER = LoggerFactory.getLogger(ReaderConsr.class);
@Autowired @Autowired
private WechatUserService wechatUserService; private WechatUserService wechatUserService;
...@@ -44,7 +43,17 @@ public class ReaderConsr { ...@@ -44,7 +43,17 @@ public class ReaderConsr {
return null; 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) @ParamLog(value = "随机获取n个用户", isAfterReturn = false)
public List<WechatUserRobotDto> selectRobotsRandom(Integer number) throws BizException { public List<WechatUserRobotDto> selectRobotsRandom(Integer number) throws BizException {
......
...@@ -73,4 +73,11 @@ public interface GroupQrcodeBiz { ...@@ -73,4 +73,11 @@ public interface GroupQrcodeBiz {
* @Date:2019/5/6 16:12 * @Date:2019/5/6 16:12
*/ */
GroupQrcodeBaseInfoVO getBaseById(Long groupQrcodeId); GroupQrcodeBaseInfoVO getBaseById(Long groupQrcodeId);
/**
* @Author:lili
* @Desr:更新用户数
* @Date:2019/5/28 11:47
*/
void updateUserNumber(String weixinGroupId);
} }
...@@ -220,6 +220,18 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -220,6 +220,18 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
return groupQrcodeDao.getBaseById(groupQrcodeId); return groupQrcodeDao.getBaseById(groupQrcodeId);
} }
@Override
public void updateUserNumber(String weixinGroupId) {
String robotIdByGroupId = wechatGroupConsr.getRobotIdByGroupId(weixinGroupId);
if(robotIdByGroupId != null){
Integer peopleCounts = WxGroupSDK.getPeopleCounts(weixinGroupId, robotIdByGroupId);
if (peopleCounts != null) {
//更新用户数
groupQrcodeDao.updateUserNumber(weixinGroupId, peopleCounts);
}
}
}
/** /**
* 重新分配一个群 * 重新分配一个群
*/ */
......
...@@ -82,6 +82,11 @@ public class AdGroupQrcodeDTO implements Serializable { ...@@ -82,6 +82,11 @@ public class AdGroupQrcodeDTO implements Serializable {
private Long clickNum; private Long clickNum;
/** /**
* 点击读者量
*/
private Long clickUserNum;
/**
* 广告位数量 * 广告位数量
*/ */
private Long advertisingSpaceNum; private Long advertisingSpaceNum;
...@@ -259,6 +264,14 @@ public class AdGroupQrcodeDTO implements Serializable { ...@@ -259,6 +264,14 @@ public class AdGroupQrcodeDTO implements Serializable {
this.distributionTime = distributionTime; this.distributionTime = distributionTime;
} }
public Long getClickUserNum() {
return clickUserNum;
}
public void setClickUserNum(Long clickUserNum) {
this.clickUserNum = clickUserNum;
}
@Override @Override
public String toString() { public String toString() {
return "AdGroupQrcodeDTO{" + return "AdGroupQrcodeDTO{" +
...@@ -276,6 +289,7 @@ public class AdGroupQrcodeDTO implements Serializable { ...@@ -276,6 +289,7 @@ public class AdGroupQrcodeDTO implements Serializable {
", agentName='" + agentName + '\'' + ", agentName='" + agentName + '\'' +
", exposureNum=" + exposureNum + ", exposureNum=" + exposureNum +
", clickNum=" + clickNum + ", clickNum=" + clickNum +
", clickUserNum=" + clickUserNum +
", advertisingSpaceNum=" + advertisingSpaceNum + ", advertisingSpaceNum=" + advertisingSpaceNum +
", clickRate=" + clickRate + ", clickRate=" + clickRate +
", totalIncome=" + totalIncome + ", totalIncome=" + totalIncome +
......
...@@ -58,10 +58,18 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade { ...@@ -58,10 +58,18 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade {
GroupQrcodeBaseInfoVO groupQrcodeBaseInfoVO = groupQrcodeBiz.getBaseById(groupQrcodeId); GroupQrcodeBaseInfoVO groupQrcodeBaseInfoVO = groupQrcodeBiz.getBaseById(groupQrcodeId);
return new ResponseDto<>(groupQrcodeBaseInfoVO == null ? new GroupQrcodeBaseInfoVO() : groupQrcodeBaseInfoVO); return new ResponseDto<>(groupQrcodeBaseInfoVO == null ? new GroupQrcodeBaseInfoVO() : groupQrcodeBaseInfoVO);
} }
@GetMapping("addUser") @GetMapping("addUser")
ResponseDto<?> addUser(@RequestParam("weixinGroupId") String weixinGroupId, @RequestParam("userNumber") Integer userNumber) ResponseDto<?> addUser(@RequestParam("weixinGroupId") String weixinGroupId, @RequestParam("userNumber") Integer userNumber)
throws BizException{ throws BizException{
groupQrcodeBiz.addOneUser(weixinGroupId, userNumber, null); groupQrcodeBiz.addOneUser(weixinGroupId, userNumber, null);
return new ResponseDto<>(); return new ResponseDto<>();
} }
@GetMapping("updateUserNumber")
ResponseDto<?> updateUserNumber(@RequestParam("weixinGroupId") String weixinGroupId)
throws BizException{
groupQrcodeBiz.updateUserNumber(weixinGroupId);
return new ResponseDto<>();
}
} }
...@@ -2,24 +2,26 @@ ...@@ -2,24 +2,26 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingClickRecordDaoImpl"> <mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingClickRecordDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingClickRecord"> <resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingClickRecord">
<id column="id" property="id" jdbcType="INTEGER"/> <id column="id" property="id" jdbcType="BIGINT"/>
<result column="ad_id" property="adId" jdbcType="INTEGER"/> <result column="ad_id" property="adId" jdbcType="BIGINT"/>
<result column="book_id" property="bookId" jdbcType="INTEGER"/> <result column="book_id" property="bookId" jdbcType="BIGINT"/>
<result column="scene_id" property="sceneId" jdbcType="INTEGER"/> <result column="is_book_group" property="isBookGroup" jdbcType="BIT"/>
<result column="adviser_id" property="adviserId" jdbcType="INTEGER"/> <result column="scene_id" property="sceneId" jdbcType="BIGINT"/>
<result column="agent_id" property="agentId" jdbcType="INTEGER"/> <result column="adviser_id" property="adviserId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="INTEGER"/> <result column="agent_id" property="agentId" jdbcType="BIGINT"/>
<result column="official_account_id" property="officialAccountId" jdbcType="INTEGER"/> <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_type" property="fromType" jdbcType="VARCHAR"/>
<result column="from_id" property="fromId" jdbcType="INTEGER"/> <result column="from_id" property="fromId" jdbcType="BIGINT"/>
<result column="wechat_user_id" property="wechatUserId" jdbcType="INTEGER"/> <result column="wechat_user_id" property="wechatUserId" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="create_day" property="createDay" jdbcType="DATE"/> <result column="create_day" property="createDay" jdbcType="DATE"/>
<result column="create_month" property="createMonth" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, ad_id, book_id, scene_id, adviser_id, agent_id, channel_id, official_account_id, from_type, 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 from_id, wechat_user_id, create_time, create_day, create_month
</sql> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long"> <select id="getById" resultMap="BaseResultMap" parameterType="Long">
...@@ -41,23 +43,109 @@ ...@@ -41,23 +43,109 @@
AND adviser_id = #{adviserId} AND adviser_id = #{adviserId}
AND channel_id = #{channelId} AND channel_id = #{channelId}
</if> </if>
<if test="fromId != null"> <if test="statisMonth != null">
AND from_id = #{fromId} and create_month = #{statisMonth}
AND from_type = #{fromType}
</if> </if>
</select> </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 id="deleteById" parameterType="Long">
delete from advertising_click_record delete from advertising_click_record
where id = #{id} where id = #{id}
</delete> </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" <insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingClickRecord"
useGeneratedKeys="true" keyProperty="id"> useGeneratedKeys="true" keyProperty="id">
insert into advertising_click_record insert into advertising_click_record
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
ad_id, ad_id,
book_id, book_id,
is_book_group,
scene_id, scene_id,
adviser_id, adviser_id,
agent_id, agent_id,
...@@ -68,20 +156,23 @@ ...@@ -68,20 +156,23 @@
wechat_user_id, wechat_user_id,
create_time, create_time,
create_day, create_day,
create_month,
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{adId,jdbcType=INTEGER}, #{adId,jdbcType=BIGINT},
#{bookId,jdbcType=INTEGER}, #{bookId,jdbcType=BIGINT},
#{sceneId,jdbcType=INTEGER}, #{isBookGroup,jdbcType=BIT},
#{adviserId,jdbcType=INTEGER}, #{sceneId,jdbcType=BIGINT},
#{agentId,jdbcType=INTEGER}, #{adviserId,jdbcType=BIGINT},
#{channelId,jdbcType=INTEGER}, #{agentId,jdbcType=BIGINT},
#{officialAccountId,jdbcType=INTEGER}, #{channelId,jdbcType=BIGINT},
#{officialAccountId,jdbcType=BIGINT},
#{fromType,jdbcType=VARCHAR}, #{fromType,jdbcType=VARCHAR},
#{fromId,jdbcType=INTEGER}, #{fromId,jdbcType=BIGINT},
#{wechatUserId,jdbcType=INTEGER}, #{wechatUserId,jdbcType=BIGINT},
NOW(), NOW(),
NOW(), NOW(),
DATE_FORMAT(NOW(), '%Y-%m'),
</trim> </trim>
</insert> </insert>
...@@ -89,36 +180,39 @@ ...@@ -89,36 +180,39 @@
update advertising_click_record update advertising_click_record
<set> <set>
<if test="adId != null"> <if test="adId != null">
ad_id = #{adId,jdbcType=INTEGER}, ad_id = #{adId,jdbcType=BIGINT},
</if> </if>
<if test="bookId != null"> <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>
<if test="sceneId != null"> <if test="sceneId != null">
scene_id = #{sceneId,jdbcType=INTEGER}, scene_id = #{sceneId,jdbcType=BIGINT},
</if> </if>
<if test="adviserId != null"> <if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER}, adviser_id = #{adviserId,jdbcType=BIGINT},
</if> </if>
<if test="agentId != null"> <if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER}, agent_id = #{agentId,jdbcType=BIGINT},
</if> </if>
<if test="channelId != null"> <if test="channelId != null">
channel_id = #{channelId,jdbcType=INTEGER}, channel_id = #{channelId,jdbcType=BIGINT},
</if> </if>
<if test="officialAccountId != null"> <if test="officialAccountId != null">
official_account_id = #{officialAccountId,jdbcType=INTEGER}, official_account_id = #{officialAccountId,jdbcType=BIGINT},
</if> </if>
<if test="fromType != null"> <if test="fromType != null">
from_type = #{fromType,jdbcType=VARCHAR}, from_type = #{fromType,jdbcType=VARCHAR},
</if> </if>
<if test="fromId != null"> <if test="fromId != null">
from_id = #{fromId,jdbcType=INTEGER}, from_id = #{fromId,jdbcType=BIGINT},
</if> </if>
<if test="wechatUserId != null"> <if test="wechatUserId != null">
wechat_user_id = #{wechatUserId,jdbcType=INTEGER}, wechat_user_id = #{wechatUserId,jdbcType=BIGINT},
</if> </if>
</set> </set>
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=BIGINT}
</update> </update>
</mapper> </mapper>
\ No newline at end of file
...@@ -2,17 +2,20 @@ ...@@ -2,17 +2,20 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingDistributionBookDaoImpl"> <mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingDistributionBookDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingDistributionBook"> <resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingDistributionBook">
<id column="id" property="id" jdbcType="INTEGER"/> <id column="id" property="id" jdbcType="BIGINT"/>
<result column="ad_id" property="adId" jdbcType="INTEGER"/> <result column="ad_id" property="adId" jdbcType="BIGINT"/>
<result column="book_id" property="bookId" jdbcType="INTEGER"/> <result column="book_id" property="bookId" jdbcType="BIGINT"/>
<result column="adviser_id" property="adviserId" jdbcType="INTEGER"/> <result column="adviser_id" property="adviserId" jdbcType="BIGINT"/>
<result column="agent_id" property="agentId" jdbcType="INTEGER"/> <result column="agent_id" property="agentId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="INTEGER"/> <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"/> <result column="distribution_time" property="distributionTime" jdbcType="TIMESTAMP"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <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> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long"> <select id="getById" resultMap="BaseResultMap" parameterType="Long">
...@@ -29,20 +32,137 @@ ...@@ -29,20 +32,137 @@
where ad_id = #{adId} where ad_id = #{adId}
</select> </select>
<select id="checkBookIdExist" parameterType="list" resultType="Long"> <select id="countByAdId" resultType="Integer" parameterType="map">
select 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 from
advertising_distribution_book b, advertising_distribution_book b,
advertising_space s advertising_space s
where where
b.ad_id = s.id b.ad_id = s.id
and b.ad_id = #{adId}
and s.is_open = 1 and s.is_open = 1
and b.book_id in and b.qrcode_id in
<foreach collection="list" index="i" item="item" open="(" <foreach collection="qrcodeIds" index="i" item="item" open="("
separator="," close=")"> separator="," close=")">
${item} ${item}
</foreach> </foreach>
group by
b.qrcode_id
</select> </select>
<select id="checkAdSpaceHasBook" parameterType="map" resultType="Boolean"> <select id="checkAdSpaceHasBook" parameterType="map" resultType="Boolean">
...@@ -71,14 +191,20 @@ ...@@ -71,14 +191,20 @@
adviser_id, adviser_id,
agent_id, agent_id,
channel_id, channel_id,
is_book_group,
classify_id,
qrcode_id,
distribution_time, distribution_time,
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{adId,jdbcType=INTEGER}, #{adId,jdbcType=BIGINT},
#{bookId,jdbcType=INTEGER}, #{bookId,jdbcType=BIGINT},
#{adviserId,jdbcType=INTEGER}, #{adviserId,jdbcType=BIGINT},
#{agentId,jdbcType=INTEGER}, #{agentId,jdbcType=BIGINT},
#{channelId,jdbcType=INTEGER}, #{channelId,jdbcType=BIGINT},
#{isBookGroup,jdbcType=BIT},
#{classifyId,jdbcType=BIGINT},
#{qrcodeId,jdbcType=BIGINT},
NOW(), NOW(),
</trim> </trim>
</insert> </insert>
...@@ -91,15 +217,21 @@ ...@@ -91,15 +217,21 @@
adviser_id, adviser_id,
agent_id, agent_id,
channel_id, channel_id,
is_book_group,
classify_id,
qrcode_id,
distribution_time distribution_time
) values ) values
<foreach collection="list" item="item" index="index" <foreach collection="list" item="item" index="index"
separator=","> separator=",">
(#{item.adId,jdbcType=INTEGER}, (#{item.adId,jdbcType=BIGINT},
#{item.bookId,jdbcType=INTEGER}, #{item.bookId,jdbcType=BIGINT},
#{item.adviserId,jdbcType=INTEGER}, #{item.adviserId,jdbcType=BIGINT},
#{item.agentId,jdbcType=INTEGER}, #{item.agentId,jdbcType=BIGINT},
#{item.channelId,jdbcType=INTEGER}, #{item.channelId,jdbcType=BIGINT},
#{item.isBookGroup,jdbcType=BIT},
#{item.classifyId,jdbcType=BIGINT},
#{item.qrcodeId,jdbcType=BIGINT},
NOW()) NOW())
</foreach> </foreach>
</insert> </insert>
...@@ -108,21 +240,30 @@ ...@@ -108,21 +240,30 @@
update advertising_distribution_book update advertising_distribution_book
<set> <set>
<if test="adId != null"> <if test="adId != null">
ad_id = #{adId,jdbcType=INTEGER}, ad_id = #{adId,jdbcType=BIGINT},
</if> </if>
<if test="bookId != null"> <if test="bookId != null">
book_id = #{bookId,jdbcType=INTEGER}, book_id = #{bookId,jdbcType=BIGINT},
</if> </if>
<if test="adviserId != null"> <if test="adviserId != null">
adviser_id = #{adviserId,jdbcType=INTEGER}, adviser_id = #{adviserId,jdbcType=BIGINT},
</if> </if>
<if test="agentId != null"> <if test="agentId != null">
agent_id = #{agentId,jdbcType=INTEGER}, agent_id = #{agentId,jdbcType=BIGINT},
</if> </if>
<if test="channelId != null"> <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> </if>
</set> </set>
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=BIGINT}
</update> </update>
</mapper> </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 @@ ...@@ -726,7 +726,7 @@
</select> </select>
<!-- 获取书籍列表(编辑) --> <!-- 获取书籍列表(编辑) -->
<select id="listBook4AdvertisingSpaceNoSignBook" resultMap="bookMap" parameterType="map"> <select id="advertisingBookList" resultMap="bookMap" parameterType="map">
SELECT SELECT
a.BOOK_ID, a.BOOK_ID,
a.CHANNEL_ID, a.CHANNEL_ID,
...@@ -735,6 +735,7 @@ ...@@ -735,6 +735,7 @@
b.ISBN, b.ISBN,
b.BOOK_NAME, b.BOOK_NAME,
b.COVER_IMG, b.COVER_IMG,
count(DISTINCT db.id) advertisingSpaceNum,
IF ( IF (
adp.is_open = 0 adp.is_open = 0
OR ( OR (
...@@ -749,23 +750,10 @@ ...@@ -749,23 +750,10 @@
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.IS_DELETE = 0 AND a.IS_DELETE = 0
AND b.IS_DELETE = 0 AND b.IS_DELETE = 0
INNER JOIN ( INNER JOIN advertising_distribution_book db ON db.book_id = a.BOOK_ID
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.channel_id = a.CHANNEL_ID
AND db.adviser_id = a.ADVISER_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_agent_permission ap ON ap.agent_id = db.agent_id
LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = a.ADVISER_ID LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = a.ADVISER_ID
AND adp.channel_id = a.CHANNEL_ID AND adp.channel_id = a.CHANNEL_ID
...@@ -779,7 +767,7 @@ ...@@ -779,7 +767,7 @@
a.BOOK_ID, a.BOOK_ID,
a.CHANNEL_ID a.CHANNEL_ID
ORDER BY ORDER BY
a.CREATED_DATE DESC db.id ASC
</select> </select>
<!-- 获取书籍列表(平台) --> <!-- 获取书籍列表(平台) -->
...@@ -809,9 +797,14 @@ ...@@ -809,9 +797,14 @@
FROM FROM
BOOK_ADVISER a BOOK_ADVISER a
INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID INNER JOIN BOOK b ON a.BOOK_ID = b.BOOK_ID
AND a.ADVISER_ID = #{adviserId}
AND a.IS_DELETE = 0 AND a.IS_DELETE = 0
AND b.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 ( LEFT JOIN (
SELECT SELECT
db.id, db.id,
...@@ -828,14 +821,23 @@ ...@@ -828,14 +821,23 @@
AND t.book_id = a.BOOK_ID AND t.book_id = a.BOOK_ID
WHERE WHERE
a.IS_MAIN_EDITOR = 1 a.IS_MAIN_EDITOR = 1
<if test="adviserId != null">
AND a.ADVISER_ID = #{adviserId}
</if>
<if test="name != null"> <if test="name != null">
AND (b.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR b.ISBN LIKE CONCAT(#{name},'%')) AND (b.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR b.ISBN LIKE CONCAT(#{name},'%'))
</if> </if>
GROUP BY GROUP BY
a.BOOK_ID, a.BOOK_ID,
a.CHANNEL_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 ORDER BY
a.CREATED_DATE DESC a.CREATED_DATE DESC
</if>
</select> </select>
<!-- 获取书籍列表(编辑) --> <!-- 获取书籍列表(编辑) -->
...@@ -1183,7 +1185,7 @@ ...@@ -1183,7 +1185,7 @@
<!-- 图书列表(平台端) --> <!-- 图书列表(平台端) -->
<select id="listBookClassify" resultMap="bookMap" parameterType="map"> <select id="listBookClassify" resultMap="bookMap" parameterType="map">
SELECT SELECT
b.BOOK_ID, b.BOOK_NAME, b.COVER_IMG, b.ISBN, b.PUBLISH, b.BOOK_ID, b.BOOK_NAME, b.COVER_IMG, b.ISBN, b.PUBLISH, b.SERIAL_NUMBER,
ba.ADVISER_ID, ba.TEMPLET_ID, ba.CHANNEL_ID, ba.CREATED_DATE, ba.ADVISER_ID, ba.TEMPLET_ID, ba.CHANNEL_ID, ba.CREATED_DATE,
bt.TYPE_NAME bt.TYPE_NAME
FROM FROM
......
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