Commit 044616bd by 朱亚洁

广告cpa内容

parent 50d93b7e
package com.pcloud.book.advertising.biz; package com.pcloud.book.advertising.biz;
import java.util.List; import com.pcloud.book.advertising.dto.AdvertisingCpaDTO;
import java.util.Map;
import com.pcloud.book.advertising.dto.AdvertisingMasterDTO; import com.pcloud.book.advertising.dto.AdvertisingMasterDTO;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO; import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.dto.AdvertisingWechatMsgDTO;
import com.pcloud.book.advertising.dto.QrcodeAdvertisingSpaceCountDTO; import com.pcloud.book.advertising.dto.QrcodeAdvertisingSpaceCountDTO;
import com.pcloud.book.advertising.entity.*; import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingBrowseRecord;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingCpa;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.book.advertising.entity.AdvertisingPilotRecord;
import com.pcloud.book.advertising.entity.AdvertisingPlan;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.entity.AdvertisingWechatMsg;
import com.pcloud.book.group.dto.AdGroupQrcodeDTO; import com.pcloud.book.group.dto.AdGroupQrcodeDTO;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import java.util.List;
import java.util.Map;
/** /**
* Description 广告位业务逻辑层接口 * Description 广告位业务逻辑层接口
* @author PENG * @author PENG
...@@ -170,7 +184,7 @@ public interface AdvertisingSpaceBiz { ...@@ -170,7 +184,7 @@ public interface AdvertisingSpaceBiz {
* @return * @return
* @throws BizException * @throws BizException
*/ */
PageBean list(String name, PageParam pageParam, Boolean filterClose, Boolean filterTest, String adPosition) throws BizException; PageBean list(String name, PageParam pageParam, Boolean filterClose, Boolean filterTest, String adPosition, String type) throws BizException;
/** /**
* 书刊广告位明细 * 书刊广告位明细
...@@ -471,4 +485,63 @@ public interface AdvertisingSpaceBiz { ...@@ -471,4 +485,63 @@ public interface AdvertisingSpaceBiz {
* @param peopleCounts * @param peopleCounts
*/ */
void updateExposureByQrcode(Long qrcodeId, Integer peopleCounts); void updateExposureByQrcode(Long qrcodeId, Integer peopleCounts);
/**
* 创建多条微信群消息
* @param advertisingWechatMsgList
*/
void createWechatGroupMsg(List<AdvertisingWechatMsg> advertisingWechatMsgList);
/**
* 创建cpa内容
* @param advertisingCpa
* @return
*/
Long createCPAContent(AdvertisingCpa advertisingCpa);
/**
* 修改cpa内容
* @param advertisingCpa
*/
void updateCPAContent(AdvertisingCpa advertisingCpa);
/**
* 删除cpa内容
* @param cpaId
*/
void deleteCPAContent(Long cpaId);
/**
* 根据id查询cpa内容
* @param cpaId
* @return
*/
AdvertisingCpaDTO getCPAContentById(Long cpaId);
/**
* 分页查询cpa内容
* @param title
* @param detailMode
* @return
*/
PageBeanNew<AdvertisingCpaDTO> listPageCPAContent(String title, String detailMode, Integer currentPage, Integer numPerPage);
/**
* 分页查询cpalink
* @param title
* @param detailMode
* @return
*/
PageBeanNew<AdvertisingCpaDTO> listPageCPALink(String title, String detailMode, Integer currentPage, Integer numPerPage);
/**
* 根据广告id查询
* @param adId
* @return
*/
List<AdvertisingWechatMsgDTO> getWechatGroupMsgListByAdId(Long adId);
/**
* cpa内容旧数据处理
*/
void dealOldCPAContent();
} }
...@@ -35,7 +35,7 @@ public interface BmBiz { ...@@ -35,7 +35,7 @@ public interface BmBiz {
* 新增选项列表 * 新增选项列表
* @param advertisingBmOptionList * @param advertisingBmOptionList
*/ */
void addOptionList(List<AdvertisingBmOption> advertisingBmOptionList,Long adId); void addOptionList(List<AdvertisingBmOption> advertisingBmOptionList, Long cpaId);
/** /**
* 新增选项配置 * 新增选项配置
...@@ -45,12 +45,12 @@ public interface BmBiz { ...@@ -45,12 +45,12 @@ public interface BmBiz {
*/ */
Long addOption(AdvertisingBmOption bmOption) throws BizException; Long addOption(AdvertisingBmOption bmOption) throws BizException;
/** /**
* 根据应用ID获取选项列表信息 * 根据cpaID获取选项列表信息
* @param adId 选项实体 * @param cpaId 选项实体
* @return * @return
* @throws BizException * @throws BizException
*/ */
List<AdvertisingBmOption> getByAdId(Long adId); List<AdvertisingBmOption> getByCPAId(Long cpaId);
/** /**
* 修改选项配置 * 修改选项配置
...@@ -62,9 +62,9 @@ public interface BmBiz { ...@@ -62,9 +62,9 @@ public interface BmBiz {
/** /**
* 删除选项 * 删除选项
* @param adId * @param cpaId
*/ */
void deleteByAdId(Long adId); void deleteByCPAId(Long cpaId);
/** /**
* 用户提交表单 * 用户提交表单
......
...@@ -4,11 +4,13 @@ import com.pcloud.appcenter.app.dto.AppTypeDto; ...@@ -4,11 +4,13 @@ import com.pcloud.appcenter.app.dto.AppTypeDto;
import com.pcloud.appcenter.app.service.AppTypeService; import com.pcloud.appcenter.app.service.AppTypeService;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz; import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
import com.pcloud.book.advertising.biz.BmBiz; import com.pcloud.book.advertising.biz.BmBiz;
import com.pcloud.book.advertising.check.AdvertisingCheck;
import com.pcloud.book.advertising.check.AdvertisingPlanCheck; import com.pcloud.book.advertising.check.AdvertisingPlanCheck;
import com.pcloud.book.advertising.dao.AdvertisingAdviserPermissionDao; import com.pcloud.book.advertising.dao.AdvertisingAdviserPermissionDao;
import com.pcloud.book.advertising.dao.AdvertisingAgentPermissionDao; import com.pcloud.book.advertising.dao.AdvertisingAgentPermissionDao;
import com.pcloud.book.advertising.dao.AdvertisingBrowseRecordDao; import com.pcloud.book.advertising.dao.AdvertisingBrowseRecordDao;
import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao; import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao;
import com.pcloud.book.advertising.dao.AdvertisingCpaDao;
import com.pcloud.book.advertising.dao.AdvertisingDetailFileDao; import com.pcloud.book.advertising.dao.AdvertisingDetailFileDao;
import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao; import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao;
import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao; import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao;
...@@ -20,12 +22,23 @@ import com.pcloud.book.advertising.dao.AdvertisingPlanGroupDao; ...@@ -20,12 +22,23 @@ import com.pcloud.book.advertising.dao.AdvertisingPlanGroupDao;
import com.pcloud.book.advertising.dao.AdvertisingPutDao; import com.pcloud.book.advertising.dao.AdvertisingPutDao;
import com.pcloud.book.advertising.dao.AdvertisingSettlementMethodDao; import com.pcloud.book.advertising.dao.AdvertisingSettlementMethodDao;
import com.pcloud.book.advertising.dao.AdvertisingSpaceDao; import com.pcloud.book.advertising.dao.AdvertisingSpaceDao;
import com.pcloud.book.advertising.dto.*; import com.pcloud.book.advertising.dao.AdvertisingWechatMsgDao;
import com.pcloud.book.advertising.dao.BmOptionDao;
import com.pcloud.book.advertising.dto.AdvertisingCpaDTO;
import com.pcloud.book.advertising.dto.AdvertisingDistributionDTO;
import com.pcloud.book.advertising.dto.AdvertisingMasterDTO;
import com.pcloud.book.advertising.dto.AdvertisingSettlementMethodDTO;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.dto.AdvertisingWechatMsgDTO;
import com.pcloud.book.advertising.dto.BookAndChannelDTO;
import com.pcloud.book.advertising.dto.QrcodeAdvertisingSpaceCountDTO;
import com.pcloud.book.advertising.dto.WechatGroupClickUserDTO;
import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission; import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingBrowseRecord; import com.pcloud.book.advertising.entity.AdvertisingBrowseRecord;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord; import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingCpa;
import com.pcloud.book.advertising.entity.AdvertisingDetailFile; import com.pcloud.book.advertising.entity.AdvertisingDetailFile;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook; import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord; import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
...@@ -36,6 +49,7 @@ import com.pcloud.book.advertising.entity.AdvertisingPlanGroup; ...@@ -36,6 +49,7 @@ import com.pcloud.book.advertising.entity.AdvertisingPlanGroup;
import com.pcloud.book.advertising.entity.AdvertisingPut; import com.pcloud.book.advertising.entity.AdvertisingPut;
import com.pcloud.book.advertising.entity.AdvertisingSettlementMethod; import com.pcloud.book.advertising.entity.AdvertisingSettlementMethod;
import com.pcloud.book.advertising.entity.AdvertisingSpace; import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.entity.AdvertisingWechatMsg;
import com.pcloud.book.advertising.entity.DistributionWechatGroup; import com.pcloud.book.advertising.entity.DistributionWechatGroup;
import com.pcloud.book.advertising.enums.AdDetailModeEnum; import com.pcloud.book.advertising.enums.AdDetailModeEnum;
import com.pcloud.book.advertising.enums.AdPositionDetailEnum; import com.pcloud.book.advertising.enums.AdPositionDetailEnum;
...@@ -49,12 +63,10 @@ import com.pcloud.book.book.dao.BookDao; ...@@ -49,12 +63,10 @@ import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.set.BookSet; import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.common.ExportConsr; import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.convert.ConvertConsr; import com.pcloud.book.consumer.convert.ConvertConsr;
import com.pcloud.book.consumer.label.LabelConsr; import com.pcloud.book.consumer.label.LabelConsr;
import com.pcloud.book.consumer.reader.ReaderConsr; import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr; import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.ChannelConsr; import com.pcloud.book.consumer.user.ChannelConsr;
...@@ -73,6 +85,7 @@ import com.pcloud.book.group.entity.GroupQrcode; ...@@ -73,6 +85,7 @@ import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.GroupQrcodeVO; import com.pcloud.book.group.vo.GroupQrcodeVO;
import com.pcloud.book.util.common.CommonUtils; import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService; import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService;
import com.pcloud.common.constant.UrlConstant;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.biz.ConvertQueueBiz; import com.pcloud.common.core.biz.ConvertQueueBiz;
import com.pcloud.common.core.constant.ConvertEnum; import com.pcloud.common.core.constant.ConvertEnum;
...@@ -104,6 +117,7 @@ import org.apache.commons.collections.MapUtils; ...@@ -104,6 +117,7 @@ import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -164,10 +178,6 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -164,10 +178,6 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
@Autowired @Autowired
private AdvertisingClickRecordDao advertisingClickRecordDao; private AdvertisingClickRecordDao advertisingClickRecordDao;
@Autowired @Autowired
private ProductConsr productConsr;
@Autowired
private AppConsr appConsr;
@Autowired
private AdvertisingMasterDao advertisingMasterDao; private AdvertisingMasterDao advertisingMasterDao;
@Autowired @Autowired
private AdvertisingSettlementMethodDao advertisingSettlementMethodDao; private AdvertisingSettlementMethodDao advertisingSettlementMethodDao;
...@@ -219,6 +229,15 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -219,6 +229,15 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
private ConvertConsr convertConsr; private ConvertConsr convertConsr;
@Autowired @Autowired
private AdvertisingDetailFileDao detailFileDao; private AdvertisingDetailFileDao detailFileDao;
@Autowired
private AdvertisingWechatMsgDao advertisingWechatMsgDao;
@Autowired
private AdvertisingCheck advertisingCheck;
@Autowired
private AdvertisingCpaDao advertisingCpaDao;
@Autowired
private BmOptionDao bmOptionDao;
private static final String ADVERTISING_PUT_PLAN_SCHEDULE_PRE = "ADVERTISING_PUT_PALN_"; private static final String ADVERTISING_PUT_PLAN_SCHEDULE_PRE = "ADVERTISING_PUT_PALN_";
...@@ -231,24 +250,11 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -231,24 +250,11 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
@ParamLog("创建广告位") @ParamLog("创建广告位")
public Long create(AdvertisingSpace advertisingSpace) throws BizException { public Long create(AdvertisingSpace advertisingSpace) throws BizException {
// 校验参数 // 校验参数
checkParamBeforeCreate(advertisingSpace); advertisingCheck.checkParamBeforeCreate(advertisingSpace);
String settlementMethod = advertisingSpace.getSettlementMethod(); String settlementMethod = advertisingSpace.getSettlementMethod();
advertisingSpace.setIsOpen(true); advertisingSpace.setIsOpen(true);
//CPA方式
if (SettlementMethodEnum.CPA.code.equals(settlementMethod)) {
advertisingSpace = equipCPA(advertisingSpace);
}
advertisingSpaceDao.insert(advertisingSpace); advertisingSpaceDao.insert(advertisingSpace);
Long adId = advertisingSpace.getId(); Long adId = advertisingSpace.getId();
//CPA、非纯图片广告详情,报名表单选项新增
if (SettlementMethodEnum.CPA.code.equals(settlementMethod) &&
!AdPositionModeEnum.JUST_PIC.modeCode.equals(advertisingSpace.getAdPositionMode())) {
bmBiz.addOptionList(advertisingSpace.getAdvertisingBmOptionList(), adId);
//音视频保存
if (!AdDetailModeEnum.IMG_TEXT.code.equals(advertisingSpace.getAdDetailMode())) {
addAdvertisingDetailFile(adId, advertisingSpace.getAdvertisingDetailFileList());
}
}
AdvertisingSettlementMethod method = new AdvertisingSettlementMethod(); AdvertisingSettlementMethod method = new AdvertisingSettlementMethod();
method.setMasterId(advertisingSpace.getMasterId()); method.setMasterId(advertisingSpace.getMasterId());
method.setAdId(adId); method.setAdId(adId);
...@@ -260,27 +266,25 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -260,27 +266,25 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
/** /**
* 新增广告详情文件 * 新增广告详情文件
* @param adId * @param cpaId
* @param fileList * @param fileList
*/ */
private void addAdvertisingDetailFile(Long adId, List<AdvertisingDetailFile> fileList) { private void addAdvertisingDetailFile(Long cpaId, List<AdvertisingDetailFile> fileList) {
if (ListUtils.isEmpty(fileList)) { if (ListUtils.isEmpty(fileList)) {
return; return;
} }
for (AdvertisingDetailFile file : fileList) { fileList.forEach(detailFile -> detailFile.setCpaId(cpaId));
file.setAdId(adId);
}
detailFileDao.insert(fileList); detailFileDao.insert(fileList);
} }
/** /**
* cpa广告详情参数配置 * cpa广告详情参数配置
* @param advertisingSpace * @param advertisingCpa
* @return * @return
*/ */
private AdvertisingSpace equipCPA(AdvertisingSpace advertisingSpace) { private AdvertisingCpa equipCPA(AdvertisingCpa advertisingCpa) {
if (AdDetailModeEnum.AUDIO.code.equals(advertisingSpace.getAdDetailMode()) || AdDetailModeEnum.VIDEO.code.equals(advertisingSpace.getAdDetailMode())) { if (AdDetailModeEnum.AUDIO.code.equals(advertisingCpa.getDetailMode()) || AdDetailModeEnum.VIDEO.code.equals(advertisingCpa.getDetailMode())) {
List<AdvertisingDetailFile> fileList = advertisingSpace.getAdvertisingDetailFileList(); List<AdvertisingDetailFile> fileList = advertisingCpa.getAdvertisingDetailFileList();
if (ListUtils.isEmpty(fileList)) { if (ListUtils.isEmpty(fileList)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传文件"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传文件");
} }
...@@ -325,123 +329,7 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -325,123 +329,7 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
} }
} }
} }
return advertisingSpace; return advertisingCpa;
}
/**
* 新增前校验参数
*/
private void checkParamBeforeCreate(AdvertisingSpace advertisingSpace) {
String adPosition = advertisingSpace.getAdPosition();
if (null == advertisingSpace.getAdName() || null == adPosition || null == advertisingSpace.getAdPositionMode()
|| null == advertisingSpace.getMasterId() || null == advertisingSpace.getSettlementMethod()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
if (!AdPositionEnum.checkCodeExist(adPosition)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}
if (!AdPositionModeEnum.checkCodeExist(adPosition, advertisingSpace.getAdPositionMode())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}
if (AdPositionEnum.BOOK_GROUP_PAGE.equals(adPosition)
&& !AdPositionDetailEnum.checkCodeExist(adPosition, advertisingSpace.getAdPositionDetail())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}
String settlementMethod = advertisingSpace.getSettlementMethod();
//按点击量结算、按曝光量结算、按实际行动结算价格不为空
if (ArrayUtils.contains(SettlementMethodEnum.SETTLEMENT_METHOD_NEED_PRICE_GATHER, settlementMethod)
&& null == advertisingSpace.getPriceEachTime()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "价格不能为空!");
}
if (SettlementMethodEnum.CPA.code.equals(settlementMethod) &&
!AdPositionModeEnum.JUST_PIC.modeCode.equals(advertisingSpace.getAdPositionMode())) {//CPA、非纯图片广告详情、报名表单不为空
if (StringUtil.isEmpty(advertisingSpace.getAdDetailMode())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告详情不能为空!");
}
if (ListUtils.isEmpty(advertisingSpace.getAdvertisingBmOptionList())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "报名表单不能为空!");
}
checkCPAParam(advertisingSpace);
}
if (AdPositionEnum.WECHAT_GROUP_MSG.positionCode.equals(advertisingSpace.getAdPosition())) {//微信群投放
if (AdPositionModeEnum.TEXT_AND_LINK.modeCode.equals(advertisingSpace.getAdPositionMode())) {//多文字+多链接
String adTitle = advertisingSpace.getAdTitle();
List<String> linkList = getLinkList(adTitle);
int linkLength = 0;//短链接长度
if (!ListUtils.isEmpty(linkList)) {
for (String link : linkList) {
adTitle = adTitle.replace(link, "");
linkLength = linkLength + 26;
}
}
int length = linkLength + adTitle.length();
if (length > 1000) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "文本长度超过300!");
}
}
}
}
/**
* CPA方式参数校验
* @param advertisingSpace
*/
private void checkCPAParam(AdvertisingSpace advertisingSpace) {
List<AdvertisingDetailFile> fileList = advertisingSpace.getAdvertisingDetailFileList();
if (StringUtil.isEmpty(advertisingSpace.getAdDetailInfo())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "产品介绍不能为空!");
}
if (StringUtil.isEmpty(advertisingSpace.getAdDetailWelfarePic())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "优惠展示图不能为空!");
}
//1图文介绍
if (AdDetailModeEnum.IMG_TEXT.code.equals(advertisingSpace.getAdDetailMode())) {
if (StringUtil.isEmpty(advertisingSpace.getAdDetailCoverPic())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "封面不能为空!");
}
}
//2音频试听
else if (AdDetailModeEnum.AUDIO.code.equals(advertisingSpace.getAdDetailMode())) {
if (ListUtils.isEmpty(fileList)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传音频资源!");
}
for (AdvertisingDetailFile file : fileList) {
if (StringUtil.isEmpty(file.getFileId())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传音频资源!");
}
if (StringUtil.isEmpty(file.getTitle())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "标题不能为空!");
}
}
}
//3视频试看
else if (AdDetailModeEnum.VIDEO.code.equals(advertisingSpace.getAdDetailMode())) {
if (ListUtils.isEmpty(fileList)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传视频资源!");
}
for (AdvertisingDetailFile file : fileList) {
if (StringUtil.isEmpty(file.getCoverPic())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "封面不能为空!");
}
if (StringUtil.isEmpty(file.getFileId())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传视频资源!");
}
if (StringUtil.isEmpty(file.getTitle())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "标题不能为空!");
}
}
}
//报名设置
if (null == advertisingSpace.getAdFormMobileCheck()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "手机号校验不能为空!");
}
if (StringUtil.isEmpty(advertisingSpace.getAdFormRemark())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "报名表单备注不能为空!");
}
if (StringUtil.isEmpty(advertisingSpace.getAdFormButton())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "按钮提示不能为空!");
}
} }
/** /**
...@@ -472,7 +360,7 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -472,7 +360,7 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
@ParamLog(value = "修改广告位", isAfterReturn = false) @ParamLog(value = "修改广告位", isAfterReturn = false)
public void update(AdvertisingSpace advertisingSpace) throws BizException { public void update(AdvertisingSpace advertisingSpace) throws BizException {
// 校验参数 // 校验参数
checkParamBeforeCreate(advertisingSpace); advertisingCheck.checkParamBeforeCreate(advertisingSpace);
if (null == advertisingSpace.getId()) { if (null == advertisingSpace.getId()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
} }
...@@ -483,31 +371,11 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -483,31 +371,11 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adId", advertisingSpace.getId()); paramMap.put("adId", advertisingSpace.getId());
Integer bookNum = (Integer) advertisingDistributionBookDao.getBy(paramMap, "countByAdId"); Integer bookNum = (Integer) advertisingDistributionBookDao.getBy(paramMap, "countByAdId");
//CPA方式
Boolean isCPA = false;
if (SettlementMethodEnum.CPA.code.equals(advertisingSpace.getSettlementMethod())) {
isCPA = true;
}
// 已投放,不是cpa模式 // 已投放,不是cpa模式
if (null != bookNum && bookNum > 0 && !isCPA) { if (null != bookNum && bookNum > 0 && !SettlementMethodEnum.CPA.code.equals(advertisingSpace.getSettlementMethod())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "已投放书刊的广告位不能修改!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "已投放书刊的广告位不能修改!");
} }
//CPA方式
if (isCPA) {
advertisingSpace = equipCPA(advertisingSpace);
}
advertisingSpaceDao.update(advertisingSpace); advertisingSpaceDao.update(advertisingSpace);
//CPA、非纯图片广告详情,报名表单选项新增
if (isCPA && !AdPositionModeEnum.JUST_PIC.modeCode.equals(advertisingSpace.getAdPositionMode())) {
bmBiz.addOptionList(advertisingSpace.getAdvertisingBmOptionList(), advertisingSpace.getId());
//音视频保存
detailFileDao.deleteByAdId(advertisingSpace.getId());
if (!AdDetailModeEnum.IMG_TEXT.code.equals(advertisingSpace.getAdDetailMode())) {
addAdvertisingDetailFile(advertisingSpace.getId(), advertisingSpace.getAdvertisingDetailFileList());
}
} else {//删除可能有的报名信息
bmBiz.deleteByAdId(advertisingSpace.getId());
}
// 修改结算方式 // 修改结算方式
AdvertisingSettlementMethodDTO methodDTO = advertisingSettlementMethodDao.getByMasterIdAndAdId(space.getMasterId(), space.getId()); AdvertisingSettlementMethodDTO methodDTO = advertisingSettlementMethodDao.getByMasterIdAndAdId(space.getMasterId(), space.getId());
AdvertisingSettlementMethod method = new AdvertisingSettlementMethod(); AdvertisingSettlementMethod method = new AdvertisingSettlementMethod();
...@@ -562,10 +430,8 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -562,10 +430,8 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
spaceDTO.setPriceEachTime(methodDTO.getPriceEachTime()); spaceDTO.setPriceEachTime(methodDTO.getPriceEachTime());
//CPA方式填充报名表单,多个上传文件 //CPA方式填充报名表单,多个上传文件
if (SettlementMethodEnum.CPA.code.equals(methodDTO.getSettlementMethod())) { if (SettlementMethodEnum.CPA.code.equals(methodDTO.getSettlementMethod())) {
spaceDTO.setAdvertisingBmOptionList(bmBiz.getByAdId(adId)); if (null != spaceDTO.getCpaId()) {
List<AdvertisingDetailFile> fileList = detailFileDao.getByAdId(adId); fillCPAContent(spaceDTO);
if (!ListUtils.isEmpty(fileList)) {
spaceDTO.setAdvertisingDetailFileList(fileList);
} }
} }
} }
...@@ -584,6 +450,27 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -584,6 +450,27 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
} }
/** /**
* 填充cpa内容
*/
private AdvertisingSpaceDTO fillCPAContent(AdvertisingSpaceDTO spaceDTO) {
spaceDTO.setAdvertisingBmOptionList(bmBiz.getByCPAId(spaceDTO.getCpaId()));
List<AdvertisingDetailFile> fileList = detailFileDao.getByCPAId(spaceDTO.getCpaId());
if (!ListUtils.isEmpty(fileList)) {
spaceDTO.setAdvertisingDetailFileList(fileList);
}
AdvertisingCpa advertisingCpa = advertisingCpaDao.getById(spaceDTO.getCpaId());
spaceDTO.setAdDetailMode(advertisingCpa.getDetailMode());
spaceDTO.setAdDetailCoverPic(advertisingCpa.getCoverPic());
spaceDTO.setAdDetailWelfarePic(advertisingCpa.getWelfarePic());
spaceDTO.setAdDetailInfo(advertisingCpa.getDetailInfo());
spaceDTO.setAdFormMobileCheck(advertisingCpa.getFormMobileCheck());
spaceDTO.setAdFormRemark(advertisingCpa.getFormRemark());
spaceDTO.setAdFormButton(advertisingCpa.getFormButton());
spaceDTO.setAdFormLink(advertisingCpa.getFormLink());
return spaceDTO;
}
/**
* 投放书刊 * 投放书刊
*/ */
@Override @Override
...@@ -774,32 +661,63 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -774,32 +661,63 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
if (StringUtil.isEmpty(altId)) { if (StringUtil.isEmpty(altId)) {
continue; continue;
} }
if (AdPositionModeEnum.TEXT_AND_LINK.modeCode.equals(advertisingSpace.getAdPositionMode())) { String positionMode = advertisingSpace.getAdPositionMode();
//多文字+多链接 modifyby zhuyajie
//例如:[色]123<link>http://www.baidu.com</link>1111111[闭嘴]
String adTitle = advertisingSpace.getAdTitle(); String adTitle = advertisingSpace.getAdTitle();
List<String> linkList = getLinkList(adTitle);//提取文本链接 String adPic = advertisingSpace.getAdPic();
if (!ListUtils.isEmpty(linkList)) { Long adId = advertisingSpace.getId();
adTitle = adTitle.replaceAll("</link><link>", "</link> <link>");//连续两个链接之间要有分隔 if (!StringUtil.isEmpty(positionMode) && (!StringUtil.isEmpty(adTitle) || !StringUtil.isEmpty(adPic))) {//旧流程
for (String link : linkList) { sendMessage(adTitle, adId, adPic, advertisingSpace.getAdLink(), advertisingSpace.getAdSlogan(), positionMode, methodDTO.getSettlementMethod(), group, groupId, altId, false);
String adLink = ""; } else {//配置多条信息
String adLinkOld = link.replaceAll("<link>", "").replace("</link>", ""); List<AdvertisingWechatMsg> msgList = advertisingWechatMsgDao.getByAdId(advertisingSpace.getId());
if (!StringUtil.isEmpty(adLinkOld)) { if (ListUtils.isEmpty(msgList)) {
if (adLinkOld.contains("?")) { return;
adLink = adLinkOld + "&book_group_id=" + classifyDTO.getBookGroupId() + "&classify_id=" + group.getClassifyId()
+ "&qrcode_id=" + group.getQrcodeId() + "&ad_id=" + advertisingSpace.getId();
} else {
adLink = adLinkOld + "?book_group_id=" + classifyDTO.getBookGroupId() + "&classify_id=" + group.getClassifyId()
+ "&qrcode_id=" + group.getQrcodeId() + "&ad_id=" + advertisingSpace.getId();
} }
if (null != methodDTO) { for (AdvertisingWechatMsg wechatMsg : msgList) {
adLink = adLink + "&settlement_method=" + methodDTO.getSettlementMethod(); sendMessage(wechatMsg.getAdTitle(), adId, wechatMsg.getAdPic(), wechatMsg.getAdLink(), wechatMsg.getAdSlogan(), wechatMsg.getAdPositionMode(), methodDTO.getSettlementMethod(), group, groupId, altId, true);
} }
}
}
}
/**
* 微信群发送消息
* @param adTitle
* @param adId
* @param adPic
* @param advertisingLink
* @param slogan
* @param positionMode
* @param settlementMethod
* @param group
* @param groupId
* @param altId
*/
private void sendMessage(String adTitle, Long adId, String adPic, String advertisingLink, String slogan, String positionMode,
String settlementMethod, DistributionWechatGroup group, String groupId, String altId, Boolean isNew) {
ClassifyDTO classifyDTO = bookGroupClassifyDao.getById(group.getClassifyId());
if (AdPositionModeEnum.TEXT_AND_LINK.modeCode.equals(positionMode)) {
//多文字+多链接
List<String> linkList = getLinkList(adTitle, isNew);//提取文本链接
if (!ListUtils.isEmpty(linkList)) {
if (isNew){
for (String link : linkList) {
String hex = link.replaceAll(UrlConstant.OWN_SHORT_URL, "");
String originLink = UrlUtils.getUrl4Own(hex);
String adLink = jointLink(originLink, classifyDTO.getBookGroupId(), group.getClassifyId(), group.getQrcodeId(), adId, settlementMethod);
adLink = UrlUtils.getShortUrl4Own(wechatGroupLinkPrefix + "/link?url=" + URLEncoder.encode(adLink)); adLink = UrlUtils.getShortUrl4Own(wechatGroupLinkPrefix + "/link?url=" + URLEncoder.encode(adLink));
adTitle = adTitle.replace(link, adLink);
} }
}else {
//例如:[色]123<link>http://www.baidu.com</link>1111111[闭嘴]
adTitle = adTitle.replaceAll("</link><link>", "</link> <link>");//连续两个链接之间要有分隔
for (String link : linkList) {
String originLink = link.replaceAll("<link>", "").replace("</link>", "");
String adLink = jointLink(originLink, classifyDTO.getBookGroupId(), group.getClassifyId(), group.getQrcodeId(), adId, settlementMethod);
adLink = UrlUtils.getShortUrl4Own(wechatGroupLinkPrefix + "/link?url=" + URLEncoder.encode(adLink));
adTitle = adTitle.replace(link, adLink); adTitle = adTitle.replace(link, adLink);
} }
} }
}
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO(); SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setWxGroupId(groupId); sendTextMessageVO.setWxGroupId(groupId);
sendTextMessageVO.setAltId(altId); sendTextMessageVO.setAltId(altId);
...@@ -807,35 +725,23 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -807,35 +725,23 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
sendTextMessageVO.setIp(findIp(groupId)); sendTextMessageVO.setIp(findIp(groupId));
LOGGER.info("发送微信消息-文字链接" + sendTextMessageVO.toString()); LOGGER.info("发送微信消息-文字链接" + sendTextMessageVO.toString());
WxGroupSDK.sendTextMessage(sendTextMessageVO); WxGroupSDK.sendTextMessage(sendTextMessageVO);
} else if (AdPositionModeEnum.NEWS_SHARE.modeCode.equals(advertisingSpace.getAdPositionMode())) { } else if (AdPositionModeEnum.NEWS_SHARE.modeCode.equals(positionMode)) {
String adLink = jointLink(advertisingLink, classifyDTO.getBookGroupId(), group.getClassifyId(), group.getQrcodeId(), adId, settlementMethod);
SendArticleMessageVO sendArticleMessageVO = new SendArticleMessageVO(); SendArticleMessageVO sendArticleMessageVO = new SendArticleMessageVO();
sendArticleMessageVO.setAltId(altId); sendArticleMessageVO.setAltId(altId);
sendArticleMessageVO.setTitle(advertisingSpace.getAdTitle()); sendArticleMessageVO.setTitle(adTitle);
sendArticleMessageVO.setDescription(advertisingSpace.getAdSlogan()); sendArticleMessageVO.setDescription(slogan);
sendArticleMessageVO.setWxGroupId(groupId); sendArticleMessageVO.setWxGroupId(groupId);
String adLink = "";
if (!StringUtil.isEmpty(advertisingSpace.getAdLink())) {
if (advertisingSpace.getAdLink().contains("?")) {
adLink = advertisingSpace.getAdLink() + "&book_group_id=" + classifyDTO.getBookGroupId() + "&classify_id=" + group.getClassifyId()
+ "&qrcode_id=" + group.getQrcodeId() + "&ad_id=" + advertisingSpace.getId();
} else {
adLink = advertisingSpace.getAdLink() + "?book_group_id=" + classifyDTO.getBookGroupId() + "&classify_id=" + group.getClassifyId()
+ "&qrcode_id=" + group.getQrcodeId() + "&ad_id=" + advertisingSpace.getId();
}
if (null != methodDTO) {
adLink = adLink + "&settlement_method=" + methodDTO.getSettlementMethod();
}
}
sendArticleMessageVO.setLinkUrl(adLink); sendArticleMessageVO.setLinkUrl(adLink);
sendArticleMessageVO.setPicUrl(advertisingSpace.getAdPic()); sendArticleMessageVO.setPicUrl(adPic);
sendArticleMessageVO.setIp(findIp(groupId)); sendArticleMessageVO.setIp(findIp(groupId));
LOGGER.info("发送微信消息-图文分享" + sendArticleMessageVO.toString()); LOGGER.info("发送微信消息-图文分享" + sendArticleMessageVO.toString());
WxGroupSDK.sendArticleMessage(sendArticleMessageVO); WxGroupSDK.sendArticleMessage(sendArticleMessageVO);
} else if (AdPositionModeEnum.JUST_PIC.modeCode.equals(advertisingSpace.getAdPositionMode())) { } else if (AdPositionModeEnum.JUST_PIC.modeCode.equals(positionMode)) {
SendPicMessageVO sendPicMessageVO = new SendPicMessageVO(); SendPicMessageVO sendPicMessageVO = new SendPicMessageVO();
sendPicMessageVO.setAltId(altId); sendPicMessageVO.setAltId(altId);
sendPicMessageVO.setWxGroupId(groupId); sendPicMessageVO.setWxGroupId(groupId);
sendPicMessageVO.setPicUrl(advertisingSpace.getAdPic()); sendPicMessageVO.setPicUrl(adPic);
sendPicMessageVO.setIp(findIp(groupId)); sendPicMessageVO.setIp(findIp(groupId));
LOGGER.info("发送微信消息-纯图片" + sendPicMessageVO.toString()); LOGGER.info("发送微信消息-纯图片" + sendPicMessageVO.toString());
WxGroupSDK.sendPicMessage(sendPicMessageVO); WxGroupSDK.sendPicMessage(sendPicMessageVO);
...@@ -847,16 +753,22 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -847,16 +753,22 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
LOGGER.error("线程休眠失败" + e.getMessage()); LOGGER.error("线程休眠失败" + e.getMessage());
} }
} }
}
/** /**
* 提取文本中链接 * 提取文本中链接
* @param title * @param title
* @return * @return
*/ */
private List<String> getLinkList(String title) { private List<String> getLinkList(String title, Boolean isNew) {
//标题正则表达式
Pattern pa;
if (isNew) {
title = title.replaceAll("&nbsp;"," ");
pa = Pattern.compile(UrlConstant.OWN_SHORT_URL + "[0-9A-Za-z]+\\s");
} else {
pa = Pattern.compile("<link>.*?</link>");
}
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
Pattern pa = Pattern.compile("<link>.*?</link>");//标题正则表达式
Matcher ma = pa.matcher(title); Matcher ma = pa.matcher(title);
while (ma.find()) { while (ma.find()) {
list.add(ma.group()); list.add(ma.group());
...@@ -865,6 +777,23 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -865,6 +777,23 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
} }
/** /**
* 链接拼加参数
*/
private String jointLink(String originLink, Long bookGroupId, Long classifyId, Long qrcodeId, Long adId, String settlementMethod) {
String adLink = "";
if (!StringUtil.isEmpty(originLink)) {
if (originLink.contains("?")) {
adLink = originLink + "&";
} else {
adLink = originLink + "?";
}
adLink = adLink + "book_group_id=" + bookGroupId + "&classify_id=" + classifyId + "&qrcode_id=" + qrcodeId
+ "&ad_id=" + adId + "&settlement_method=" + settlementMethod;
}
return adLink;
}
/**
* 获取出版社书刊权限 * 获取出版社书刊权限
*/ */
@Override @Override
...@@ -1473,12 +1402,13 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -1473,12 +1402,13 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
* 获取广告位列表 * 获取广告位列表
*/ */
@Override @Override
public PageBean list(String name, PageParam pageParam, Boolean filterClose, Boolean filterTest, String adPosition) throws BizException { public PageBean list(String name, PageParam pageParam, Boolean filterClose, Boolean filterTest, String adPosition, String type) throws BizException {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("name", StringUtil.isEmpty(name) ? null : name); paramMap.put("name", StringUtil.isEmpty(name) ? null : name);
paramMap.put("filterClose", filterClose); paramMap.put("filterClose", filterClose);
paramMap.put("filterTest", filterTest); paramMap.put("filterTest", filterTest);
paramMap.put("adPosition", adPosition); paramMap.put("adPosition", adPosition);
paramMap.put("type", type);
PageBean pageBean = advertisingSpaceDao.listPage(pageParam, paramMap, "list"); PageBean pageBean = advertisingSpaceDao.listPage(pageParam, paramMap, "list");
if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) { if (pageBean == null || ListUtils.isEmpty(pageBean.getRecordList())) {
return new PageBean(0, 0, new ArrayList<>()); return new PageBean(0, 0, new ArrayList<>());
...@@ -1684,6 +1614,9 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -1684,6 +1614,9 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
* 填充作品应用、社群码页面广告位名称 * 填充作品应用、社群码页面广告位名称
*/ */
private void fillAdpositionName4CommonAd(AdvertisingSpaceDTO spaceDTO) { private void fillAdpositionName4CommonAd(AdvertisingSpaceDTO spaceDTO) {
if (StringUtil.isEmpty(spaceDTO.getAdPosition())) {
return;
}
String adPositionName = ""; String adPositionName = "";
String adPositionModeName = AdPositionModeEnum.getNameByCode(spaceDTO.getAdPositionMode()); String adPositionModeName = AdPositionModeEnum.getNameByCode(spaceDTO.getAdPositionMode());
if (AdPositionEnum.BOOK_GROUP_PAGE.positionCode.equals(spaceDTO.getAdPosition())) { if (AdPositionEnum.BOOK_GROUP_PAGE.positionCode.equals(spaceDTO.getAdPosition())) {
...@@ -1715,6 +1648,9 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -1715,6 +1648,9 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
* 填充作品应用、社群码页面广告位名称 * 填充作品应用、社群码页面广告位名称
*/ */
private void fillAdpositionName4WechatGroupAd(AdvertisingSpaceDTO spaceDTO) { private void fillAdpositionName4WechatGroupAd(AdvertisingSpaceDTO spaceDTO) {
if (StringUtil.isEmpty(spaceDTO.getAdPosition())) {
return;
}
String adPositionName = AdPositionEnum.getNameByCode(spaceDTO.getAdPosition()) + ">" + AdPositionModeEnum.getNameByCode(spaceDTO.getAdPositionMode()); String adPositionName = AdPositionEnum.getNameByCode(spaceDTO.getAdPosition()) + ">" + AdPositionModeEnum.getNameByCode(spaceDTO.getAdPositionMode());
spaceDTO.setAdPositionName(adPositionName); spaceDTO.setAdPositionName(adPositionName);
} }
...@@ -2343,10 +2279,6 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -2343,10 +2279,6 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
if (null != nameExist && nameExist) { if (null != nameExist && nameExist) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告主名称不能重复!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告主名称不能重复!");
} }
AdvertisingMaster master = advertisingMasterDao.getById(masterId);
if (null == master) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告主不存在!");
}
advertisingMasterDao.update(advertisingMaster); advertisingMasterDao.update(advertisingMaster);
// 删除广告主之前配置的结算方式 // 删除广告主之前配置的结算方式
advertisingSettlementMethodDao.deleteByMasterId(masterId); advertisingSettlementMethodDao.deleteByMasterId(masterId);
...@@ -3108,4 +3040,183 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -3108,4 +3040,183 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
return ip; return ip;
} }
@Override
public void createWechatGroupMsg(List<AdvertisingWechatMsg> advertisingWechatMsgList) {
Long adId = advertisingWechatMsgList.get(0).getAdId();
AdvertisingSpaceDTO spaceDTO = advertisingSpaceDao.getDTOById(adId);
if (null == spaceDTO) {
throw new BookBizException(BookBizException.ERROR, "广告位不存在");
}
AdvertisingSettlementMethodDTO methodDTO = advertisingSettlementMethodDao.getByMasterIdAndAdId(spaceDTO.getMasterId(), adId);
if (null != methodDTO && SettlementMethodEnum.CPA.code.equals(methodDTO.getSettlementMethod())) {
for (AdvertisingWechatMsg wechatMsg : advertisingWechatMsgList) {//目前仅限一条消息
//图文分享必须关联cpa内容
if (AdPositionModeEnum.NEWS_SHARE.modeCode.equals(wechatMsg.getAdPositionMode()) &&
null == wechatMsg.getCpaId()) {
throw new BookBizException(BookBizException.ERROR, "缺少cpaId");
}
advertisingSpaceDao.updateCPAId(adId, wechatMsg.getCpaId());
}
}
advertisingWechatMsgDao.deleteByAdId(adId);
advertisingWechatMsgDao.insert(advertisingWechatMsgList);
}
@Override
public Long createCPAContent(AdvertisingCpa advertisingCpa) {
advertisingCheck.checkCPAParam(advertisingCpa);
advertisingCpaDao.insert(advertisingCpa);
Long cpaId = advertisingCpa.getId();
//配置试听试看参数
advertisingCpa = equipCPA(advertisingCpa);
//广告详情,报名表单选项新增
bmBiz.addOptionList(advertisingCpa.getAdvertisingBmOptionList(), cpaId);
//音视频保存
if (!AdDetailModeEnum.IMG_TEXT.code.equals(advertisingCpa.getDetailMode())) {
addAdvertisingDetailFile(cpaId, advertisingCpa.getAdvertisingDetailFileList());
}
//更新预览链接
String previewLink = wechatGroupLinkPrefix + "/ad?cpa_id=" + cpaId;
previewLink = UrlUtils.getShortUrl4Own(wechatGroupLinkPrefix + "/link?url=" + URLEncoder.encode(previewLink));
AdvertisingCpa cpaUpdate = new AdvertisingCpa();
cpaUpdate.setId(cpaId);
cpaUpdate.setPreviewLink(previewLink);
advertisingCpaDao.update(cpaUpdate);
return cpaId;
}
@Override
public void updateCPAContent(AdvertisingCpa advertisingCpa) {
advertisingCpa = equipCPA(advertisingCpa);
Long cpaId = advertisingCpa.getId();
//广告详情,报名表单选项新增
bmBiz.addOptionList(advertisingCpa.getAdvertisingBmOptionList(), cpaId);
//音视频保存
detailFileDao.deleteByCPAId(cpaId);
if (!AdDetailModeEnum.IMG_TEXT.code.equals(advertisingCpa.getDetailMode())) {
addAdvertisingDetailFile(cpaId, advertisingCpa.getAdvertisingDetailFileList());
}
advertisingCpaDao.update(advertisingCpa);
}
@Override
public void deleteCPAContent(Long cpaId) {
List<Long> adIds = advertisingSpaceDao.getAdIdsByCPAId(cpaId);
if (!ListUtils.isEmpty(adIds)) {
throw new BookBizException(BookBizException.ERROR, "无法删除,该内容已经投放");
}
advertisingCpaDao.deleteById(cpaId);
detailFileDao.deleteByCPAId(cpaId);
bmBiz.deleteByCPAId(cpaId);
}
@Override
public AdvertisingCpaDTO getCPAContentById(Long cpaId) {
AdvertisingCpaDTO cpaDTO = new AdvertisingCpaDTO();
AdvertisingCpa advertisingCpaDTO = advertisingCpaDao.getById(cpaId);
if (null == advertisingCpaDTO) {
throw new BookBizException(BookBizException.ERROR, "CPA内容不存在");
}
BeanUtils.copyProperties(advertisingCpaDTO, cpaDTO);
//填充报名表单,多个上传文件
cpaDTO.setAdvertisingBmOptionList(bmBiz.getByCPAId(cpaId));
List<AdvertisingDetailFile> fileList = detailFileDao.getByCPAId(cpaId);
if (!ListUtils.isEmpty(fileList)) {
cpaDTO.setAdvertisingDetailFileList(fileList);
}
return cpaDTO;
}
@Override
public PageBeanNew<AdvertisingCpaDTO> listPageCPAContent(String title, String detailMode, Integer currentPage, Integer numPerPage) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("name", title);
paramMap.put("detailMode", detailMode);
PageBeanNew<AdvertisingCpaDTO> pageBeanNew = advertisingCpaDao.listPageNew(new PageParam(currentPage, numPerPage), paramMap, "listPage");
if (pageBeanNew == null || ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return new PageBeanNew<>(currentPage, numPerPage, new ArrayList<>());
}
for (AdvertisingCpaDTO cpaDTO : pageBeanNew.getRecordList()) {
Long cpaId = cpaDTO.getId();
//曝光量点击量点击率点击人数
cpaDTO.setExposureNum(advertisingExposureRecordDao.getExposureNumByCPAId(cpaId));
Long clickNum = advertisingClickRecordDao.getClickNumByCPAId(cpaId);
cpaDTO.setClickNum(clickNum);
BigDecimal clickRate = (null == cpaDTO.getExposureNum() || cpaDTO.getExposureNum().equals(0L)) ? BigDecimal.ZERO :
new BigDecimal(clickNum.doubleValue() / cpaDTO.getExposureNum()).setScale(4, BigDecimal.ROUND_HALF_UP);
cpaDTO.setClickRate(clickRate);
Long clickUserNum = advertisingClickRecordDao.getClickUserNumByCPAId(cpaId);
cpaDTO.setClickUserNum(clickUserNum);
//报名量报名率
List<Long> adIdList = advertisingSpaceDao.getAdIdsByCPAId(cpaId);
Long registerNum = bmBiz.getRegisterCountByAdIds(adIdList);
BigDecimal registerRate = (null == clickNum || clickNum.equals(0L)) ? BigDecimal.ZERO :
new BigDecimal(registerNum.doubleValue() / clickNum).setScale(4, BigDecimal.ROUND_HALF_UP);
cpaDTO.setRegisterNum(registerNum);
cpaDTO.setRegisterRate(registerRate);
//完课量完课率
Long pilotFinishUserNum = advertisingPilotRecordDao.getPilotUserNumByCPAId(cpaId);
BigDecimal pilotFinishRate = (null == clickUserNum || clickUserNum.equals(0L)) ? BigDecimal.ZERO :
new BigDecimal(pilotFinishUserNum.doubleValue() / clickUserNum).setScale(4, BigDecimal.ROUND_HALF_UP);
cpaDTO.setPilotFinishUserNum(pilotFinishUserNum);
cpaDTO.setPilotFinishRate(pilotFinishRate);
}
return pageBeanNew;
}
@Override
public PageBeanNew<AdvertisingCpaDTO> listPageCPALink(String title, String detailMode, Integer currentPage, Integer numPerPage) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("name", title);
paramMap.put("detailMode", detailMode);
PageBeanNew<AdvertisingCpaDTO> pageBeanNew = advertisingCpaDao.listPageNew(new PageParam(currentPage, numPerPage), paramMap, "listPage");
if (pageBeanNew == null || ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return new PageBeanNew<>(currentPage, numPerPage, new ArrayList<>());
}
return pageBeanNew;
}
@Override
public List<AdvertisingWechatMsgDTO> getWechatGroupMsgListByAdId(Long adId) {
List<AdvertisingWechatMsg> msgList = advertisingWechatMsgDao.getByAdId(adId);
if (ListUtils.isEmpty(msgList)) {
return new ArrayList<>();
}
List<AdvertisingWechatMsgDTO> list = new ArrayList<>();
for (AdvertisingWechatMsg msg : msgList) {
AdvertisingWechatMsgDTO msgDTO = new AdvertisingWechatMsgDTO();
BeanUtils.copyProperties(msg, msgDTO);
list.add(msgDTO);
}
return list;
}
@Override
public void dealOldCPAContent() {
List<AdvertisingSpace> spaceList = advertisingSpaceDao.getCPASpaceList();
if (ListUtils.isEmpty(spaceList)) {
return;
}
for (AdvertisingSpace space : spaceList) {
Long adId = space.getId();
AdvertisingCpa cpa = new AdvertisingCpa();
cpa.setDetailMode(space.getAdDetailMode());
cpa.setDetailName(space.getAdName());
cpa.setCoverPic(space.getAdDetailCoverPic());
cpa.setWelfarePic(space.getAdDetailWelfarePic());
cpa.setDetailInfo(space.getAdDetailInfo());
cpa.setFormMobileCheck(space.getAdFormMobileCheck());
cpa.setFormRemark(space.getAdFormRemark());
cpa.setFormButton(space.getAdFormButton());
cpa.setFormLink(space.getAdFormLink());
advertisingCpaDao.insert(cpa);
Long cpaId = cpa.getId();
//更新到广告位、报名信息、广告详情
advertisingSpaceDao.updateCPAId(adId, cpaId);
bmOptionDao.updateCPAId(adId, cpaId);
detailFileDao.updateCPAId(adId, cpaId);
}
}
} }
...@@ -104,12 +104,6 @@ public class BmBizImpl implements BmBiz { ...@@ -104,12 +104,6 @@ public class BmBizImpl implements BmBiz {
list.add(optionType); list.add(optionType);
optionType = new OptionType("select", "选择(列表/菜单)"); optionType = new OptionType("select", "选择(列表/菜单)");
list.add(optionType); list.add(optionType);
// optionType = new OptionType("levelselect", "2级选择(列表/菜单)");
// list.add(optionType);
optionType = new OptionType("file", "文件域");
list.add(optionType);
// optionType = new OptionType("areas", "省市区");
// list.add(optionType);
return list; return list;
} }
...@@ -137,8 +131,6 @@ public class BmBizImpl implements BmBiz { ...@@ -137,8 +131,6 @@ public class BmBizImpl implements BmBiz {
list.add(optionType); list.add(optionType);
optionType = new OptionType("idcard", "身份证"); optionType = new OptionType("idcard", "身份证");
list.add(optionType); list.add(optionType);
// optionType = new OptionType("image", "图片");
// list.add(optionType);
return list; return list;
} }
...@@ -146,13 +138,13 @@ public class BmBizImpl implements BmBiz { ...@@ -146,13 +138,13 @@ public class BmBizImpl implements BmBiz {
* 新增选项列表 * 新增选项列表
*/ */
@Override @Override
public void addOptionList(List<AdvertisingBmOption> advertisingBmOptionList, Long adId) { public void addOptionList(List<AdvertisingBmOption> advertisingBmOptionList, Long cpaId) {
if (ListUtils.isEmpty(advertisingBmOptionList) || null == adId) { if (ListUtils.isEmpty(advertisingBmOptionList) || null == cpaId) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
} }
List<Long> optionIds = bmOptionDao.getOptionIdsByAdId(adId); List<Long> optionIds = bmOptionDao.getOptionIdsByCPAId(cpaId);
for (AdvertisingBmOption bmOption : advertisingBmOptionList) { for (AdvertisingBmOption bmOption : advertisingBmOptionList) {
bmOption.setAdId(adId); bmOption.setCpaId(cpaId);
if (!ListUtils.isEmpty(optionIds) && null != bmOption.getId()) {//修改选项 if (!ListUtils.isEmpty(optionIds) && null != bmOption.getId()) {//修改选项
modifyOption(bmOption); modifyOption(bmOption);
optionIds.remove(bmOption.getId()); optionIds.remove(bmOption.getId());
...@@ -175,7 +167,7 @@ public class BmBizImpl implements BmBiz { ...@@ -175,7 +167,7 @@ public class BmBizImpl implements BmBiz {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long addOption(AdvertisingBmOption bmOption) throws BizException { public Long addOption(AdvertisingBmOption bmOption) throws BizException {
if (null == bmOption.getAdId() || StringUtil.isEmpty(bmOption.getItemInputType()) if (null == bmOption.getCpaId() || StringUtil.isEmpty(bmOption.getItemInputType())
|| StringUtil.isEmpty(bmOption.getItemDataType()) || StringUtil.isEmpty(bmOption.getItemTitle())) { || StringUtil.isEmpty(bmOption.getItemDataType()) || StringUtil.isEmpty(bmOption.getItemTitle())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
} }
...@@ -219,11 +211,11 @@ public class BmBizImpl implements BmBiz { ...@@ -219,11 +211,11 @@ public class BmBizImpl implements BmBiz {
* 根据广告ID获取选项列表信息 * 根据广告ID获取选项列表信息
*/ */
@Override @Override
public List<AdvertisingBmOption> getByAdId(Long adId) throws BizException { public List<AdvertisingBmOption> getByCPAId(Long cpaId) throws BizException {
if (null == adId){ if (null == cpaId){
return new ArrayList<>(); return new ArrayList<>();
} }
List<AdvertisingBmOption> list = bmOptionDao.getByAdId(adId); List<AdvertisingBmOption> list = bmOptionDao.getByCPAId(cpaId);
return list; return list;
} }
...@@ -235,7 +227,7 @@ public class BmBizImpl implements BmBiz { ...@@ -235,7 +227,7 @@ public class BmBizImpl implements BmBiz {
public void modifyOption(AdvertisingBmOption bmOption) throws BizException { public void modifyOption(AdvertisingBmOption bmOption) throws BizException {
Long optionId = bmOption.getId(); Long optionId = bmOption.getId();
// 校验参数 // 校验参数
if (null == bmOption.getAdId() || null == optionId || StringUtil.isEmpty(bmOption.getItemInputType()) if (null == bmOption.getCpaId() || null == optionId || StringUtil.isEmpty(bmOption.getItemInputType())
|| StringUtil.isEmpty(bmOption.getItemDataType()) || StringUtil.isEmpty(bmOption.getItemTitle())) { || StringUtil.isEmpty(bmOption.getItemDataType()) || StringUtil.isEmpty(bmOption.getItemTitle())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
} }
...@@ -249,8 +241,8 @@ public class BmBizImpl implements BmBiz { ...@@ -249,8 +241,8 @@ public class BmBizImpl implements BmBiz {
} }
@Override @Override
public void deleteByAdId(Long adId) { public void deleteByCPAId(Long cpaId) {
List<Long> optionIds = bmOptionDao.getOptionIdsByAdId(adId); List<Long> optionIds = bmOptionDao.getOptionIdsByCPAId(cpaId);
if (ListUtils.isEmpty(optionIds)) { if (ListUtils.isEmpty(optionIds)) {
return; return;
} }
...@@ -271,11 +263,12 @@ public class BmBizImpl implements BmBiz { ...@@ -271,11 +263,12 @@ public class BmBizImpl implements BmBiz {
if (null == space) { if (null == space) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不存在或已删除!"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位不存在或已删除!");
} }
Long cpaId = space.getCpaId();
List<AdvertisingBmRegisterItem> items = bmRegister.getBmRegisterItemList(); List<AdvertisingBmRegisterItem> items = bmRegister.getBmRegisterItemList();
if (ListUtils.isEmpty(items)) { if (ListUtils.isEmpty(items)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请填写表单"); throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请填写表单");
} }
Long mobilePhoneOptionId = bmOptionDao.getMobilePhoneOptionIdByAd(adId); Long mobilePhoneOptionId = bmOptionDao.getMobilePhoneOptionIdByCPA(cpaId);
Optional<AdvertisingBmRegisterItem> itemOptional = items.stream().filter(s -> s != null && s.getOptionId() == mobilePhoneOptionId).findFirst(); Optional<AdvertisingBmRegisterItem> itemOptional = items.stream().filter(s -> s != null && s.getOptionId() == mobilePhoneOptionId).findFirst();
if (itemOptional.isPresent()) {// 存在 if (itemOptional.isPresent()) {// 存在
AdvertisingBmRegisterItem registerItem = itemOptional.get(); AdvertisingBmRegisterItem registerItem = itemOptional.get();
...@@ -398,7 +391,7 @@ public class BmBizImpl implements BmBiz { ...@@ -398,7 +391,7 @@ public class BmBizImpl implements BmBiz {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
try { try {
String title = spaceDTO.getAdName() + "-客户信息"; String title = spaceDTO.getAdName() + "-客户信息";
List<AdvertisingBmOption> optionList = bmOptionDao.getByAdId(adId); List<AdvertisingBmOption> optionList = bmOptionDao.getByCPAId(spaceDTO.getCpaId());
List<String> rowsNameList = new ArrayList<>(); List<String> rowsNameList = new ArrayList<>();
rowsNameList.add("序号"); rowsNameList.add("序号");
rowsNameList.add("报名人"); rowsNameList.add("报名人");
......
package com.pcloud.book.advertising.check;
import com.pcloud.book.advertising.entity.AdvertisingCpa;
import com.pcloud.book.advertising.entity.AdvertisingDetailFile;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.enums.AdDetailModeEnum;
import com.pcloud.book.advertising.enums.AdPositionDetailEnum;
import com.pcloud.book.advertising.enums.AdPositionEnum;
import com.pcloud.book.advertising.enums.AdPositionModeEnum;
import com.pcloud.book.advertising.enums.SettlementMethodEnum;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @描述:广告位参数校验
* @作者:zhuyajie
* @创建时间:11:15 2019/9/4
* @版本:1.0
*/
@Component("advertisingCheck")
public class AdvertisingCheck {
/**
* 新增广告位前校验参数
*/
public void checkParamBeforeCreate(AdvertisingSpace advertisingSpace) {
String adPosition = advertisingSpace.getAdPosition();
if (null == advertisingSpace.getAdName() || null == advertisingSpace.getMasterId() || null == advertisingSpace.getSettlementMethod()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
/* if (!AdPositionEnum.checkCodeExist(adPosition)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}
if (!AdPositionModeEnum.checkCodeExist(adPosition, advertisingSpace.getAdPositionMode())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}
if (AdPositionEnum.BOOK_GROUP_PAGE.equals(adPosition)
&& !AdPositionDetailEnum.checkCodeExist(adPosition, advertisingSpace.getAdPositionDetail())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告位置选择有误!");
}*/
String settlementMethod = advertisingSpace.getSettlementMethod();
//按点击量结算、按曝光量结算、按实际行动结算价格不为空
if (ArrayUtils.contains(SettlementMethodEnum.SETTLEMENT_METHOD_NEED_PRICE_GATHER, settlementMethod)
&& null == advertisingSpace.getPriceEachTime()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "价格不能为空!");
}
}
/**
* CPA方式参数校验
* @param advertisingCpa
*/
public void checkCPAParam(AdvertisingCpa advertisingCpa) {
List<AdvertisingDetailFile> fileList = advertisingCpa.getAdvertisingDetailFileList();
if (StringUtil.isEmpty(advertisingCpa.getDetailMode())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "广告详情不能为空!");
}
if (ListUtils.isEmpty(advertisingCpa.getAdvertisingBmOptionList())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "报名表单不能为空!");
}
if (StringUtil.isEmpty(advertisingCpa.getDetailInfo())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "产品介绍不能为空!");
}
if (StringUtil.isEmpty(advertisingCpa.getWelfarePic())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "优惠展示图不能为空!");
}
//1图文介绍
if (AdDetailModeEnum.IMG_TEXT.code.equals(advertisingCpa.getDetailMode())) {
if (StringUtil.isEmpty(advertisingCpa.getCoverPic())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "封面不能为空!");
}
}
//2音频试听
else if (AdDetailModeEnum.AUDIO.code.equals(advertisingCpa.getDetailMode())) {
if (ListUtils.isEmpty(fileList)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传音频资源!");
}
for (AdvertisingDetailFile file : fileList) {
if (StringUtil.isEmpty(file.getFileId())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传音频资源!");
}
if (StringUtil.isEmpty(file.getTitle())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "标题不能为空!");
}
}
}
//3视频试看
else if (AdDetailModeEnum.VIDEO.code.equals(advertisingCpa.getDetailMode())) {
if (ListUtils.isEmpty(fileList)) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传视频资源!");
}
for (AdvertisingDetailFile file : fileList) {
if (StringUtil.isEmpty(file.getCoverPic())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "封面不能为空!");
}
if (StringUtil.isEmpty(file.getFileId())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "请上传视频资源!");
}
if (StringUtil.isEmpty(file.getTitle())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "标题不能为空!");
}
}
}
//报名设置
if (null == advertisingCpa.getFormMobileCheck()) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "手机号校验不能为空!");
}
if (StringUtil.isEmpty(advertisingCpa.getFormRemark())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "报名表单备注不能为空!");
}
if (StringUtil.isEmpty(advertisingCpa.getFormButton())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "按钮提示不能为空!");
}
}
/**
* 判断链接文本长度
* @param adTitle
*/
/*public void checkLinkLength(String adTitle){
List<String> linkList = getLinkList(adTitle);
int linkLength = 0;//短链接长度
if (!ListUtils.isEmpty(linkList)) {
for (String link : linkList) {
adTitle = adTitle.replace(link, "");
linkLength = linkLength + 26;
}
}
int length = linkLength + adTitle.length();
if (length > 300) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "文本长度超过300!");
}
}*/
/* private List<String> getLinkList(String title) {
List<String> list = new ArrayList<>();
Pattern pa = Pattern.compile("<link>.*?</link>");//标题正则表达式
Matcher ma = pa.matcher(title);
while (ma.find()) {
list.add(ma.group());
}
return list;
}*/
}
...@@ -57,4 +57,18 @@ public interface AdvertisingClickRecordDao extends BaseDao<AdvertisingClickRecor ...@@ -57,4 +57,18 @@ public interface AdvertisingClickRecordDao extends BaseDao<AdvertisingClickRecor
* @return * @return
*/ */
public Long getClickUserNumByBookId(Long adId, Long bookId, Long adviserId, Long channelId, String statisMonth); public Long getClickUserNumByBookId(Long adId, Long bookId, Long adviserId, Long channelId, String statisMonth);
/**
* 根据CPAID查点击次数
* @param cpaId
* @return
*/
public Long getClickNumByCPAId(Long cpaId);
/**
* 根据cpaid查点击人数
* @param cpaId
* @return
*/
public Long getClickUserNumByCPAId(Long cpaId);
} }
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingCpa;
import com.pcloud.common.core.dao.BaseDao;
/**
* @描述:cpa内容
* @作者:zhuyajie
* @创建时间:15:44 2019/9/3
* @版本:1.0
*/
public interface AdvertisingCpaDao extends BaseDao<AdvertisingCpa> {
}
...@@ -15,14 +15,21 @@ public interface AdvertisingDetailFileDao extends BaseDao<AdvertisingDetailFile> ...@@ -15,14 +15,21 @@ public interface AdvertisingDetailFileDao extends BaseDao<AdvertisingDetailFile>
/** /**
* 根据广告id查询 * 根据广告id查询
* @param adId * @param cpaId
* @return * @return
*/ */
public List<AdvertisingDetailFile> getByAdId(Long adId); public List<AdvertisingDetailFile> getByCPAId(Long cpaId);
/** /**
* 删除文件 * 删除文件
* @param cpaId
*/
void deleteByCPAId(Long cpaId);
/**
* 更新cpaId
* @param adId * @param adId
* @param cpaId
*/ */
void deleteByAdId(Long adId); void updateCPAId(Long adId, Long cpaId);
} }
...@@ -24,4 +24,11 @@ public interface AdvertisingExposureRecordDao extends BaseDao<AdvertisingExposur ...@@ -24,4 +24,11 @@ public interface AdvertisingExposureRecordDao extends BaseDao<AdvertisingExposur
* @param peopleCounts * @param peopleCounts
*/ */
void updateExposureByQrcode(Long qrcodeId, Integer peopleCounts); void updateExposureByQrcode(Long qrcodeId, Integer peopleCounts);
/**
* 根据cpaid查曝光量
* @param cpaId
* @return
*/
public Long getExposureNumByCPAId(Long cpaId);
} }
...@@ -52,4 +52,11 @@ public interface AdvertisingPilotRecordDao extends BaseDao<AdvertisingPilotRecor ...@@ -52,4 +52,11 @@ public interface AdvertisingPilotRecordDao extends BaseDao<AdvertisingPilotRecor
* @return * @return
*/ */
Long getPilotUserNumByBookId(Long bookId, Long adviserId, Long channelId, Long adId, String statisMonth); Long getPilotUserNumByBookId(Long bookId, Long adviserId, Long channelId, Long adId, String statisMonth);
/**
* cpa试听人数
* @param cpaId
* @return
*/
Long getPilotUserNumByCPAId(Long cpaId);
} }
...@@ -79,4 +79,24 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> { ...@@ -79,4 +79,24 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> {
* @return * @return
*/ */
List<Long> getAdIdsByMasterId(Long id); List<Long> getAdIdsByMasterId(Long id);
/**
* 使用cpa的广告ids
* @param cpaId
* @return
*/
public List<Long> getAdIdsByCPAId(Long cpaId);
/**
* 更新cpaId
* @param adId
* @param cpaId
*/
void updateCPAId(Long adId, Long cpaId);
/**
* 查询cpa方式的广告位,没有cpaid
* @return
*/
public List<AdvertisingSpace> getCPASpaceList();
} }
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingWechatMsg;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @描述:微信群消息
* @作者:zhuyajie
* @创建时间:15:24 2019/9/2
* @版本:1.0
*/
public interface AdvertisingWechatMsgDao extends BaseDao<AdvertisingWechatMsg> {
/**
*根据广告位id查群消息
*/
public List<AdvertisingWechatMsg> getByAdId(Long adId);
/**
* 删除广告位下群消息
* @param adId
*/
public void deleteByAdId(Long adId);
}
...@@ -16,10 +16,10 @@ public interface BmOptionDao extends BaseDao<AdvertisingBmOption> { ...@@ -16,10 +16,10 @@ public interface BmOptionDao extends BaseDao<AdvertisingBmOption> {
/** /**
* 获取报名列表 * 获取报名列表
* @param adId * @param cpaId
* @return * @return
*/ */
List<AdvertisingBmOption> getByAdId(Long adId); List<AdvertisingBmOption> getByCPAId(Long cpaId);
/** /**
* 批量删除 * 批量删除
...@@ -28,16 +28,22 @@ public interface BmOptionDao extends BaseDao<AdvertisingBmOption> { ...@@ -28,16 +28,22 @@ public interface BmOptionDao extends BaseDao<AdvertisingBmOption> {
void deleteByIds(List<Long> optionIds); void deleteByIds(List<Long> optionIds);
/** /**
* 根据广告id获取选项id列表 * 根据cpaid获取选项id列表
* @param adId * @param cpaId
* @return * @return
*/ */
List<Long> getOptionIdsByAdId(Long adId); List<Long> getOptionIdsByCPAId(Long cpaId);
/** /**
* 查手机号选项id * 查手机号选项id
* @param adId * @param adId
* @return * @return
*/ */
Long getMobilePhoneOptionIdByAd(Long adId); Long getMobilePhoneOptionIdByCPA(Long adId);
/**
* 更新cpaId
* @param adId
* @param cpaId
*/
void updateCPAId(Long adId, Long cpaId);
} }
...@@ -65,4 +65,14 @@ public class AdvertisingClickRecordDaoImpl extends BaseDaoImpl<AdvertisingClickR ...@@ -65,4 +65,14 @@ public class AdvertisingClickRecordDaoImpl extends BaseDaoImpl<AdvertisingClickR
paramMap.put("statisMonth", statisMonth); paramMap.put("statisMonth", statisMonth);
return getSessionTemplate().selectOne(getStatement("getClickUserNumByBookId"), paramMap); return getSessionTemplate().selectOne(getStatement("getClickUserNumByBookId"), paramMap);
} }
@Override
public Long getClickNumByCPAId(Long cpaId) {
return getSessionTemplate().selectOne(getStatement("getClickNumByCPAId"), cpaId);
}
@Override
public Long getClickUserNumByCPAId(Long cpaId) {
return getSessionTemplate().selectOne(getStatement("getClickUserNumByCPAId"), cpaId);
}
} }
package com.pcloud.book.advertising.dao.impl;
import com.pcloud.book.advertising.dao.AdvertisingCpaDao;
import com.pcloud.book.advertising.entity.AdvertisingCpa;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
/**
* @描述:cpa内容
* @作者:zhuyajie
* @创建时间:15:45 2019/9/3
* @版本:1.0
*/
@Component("advertisingCpaDao")
public class AdvertisingCpaDaoImpl extends BaseDaoImpl<AdvertisingCpa> implements AdvertisingCpaDao {
}
...@@ -6,7 +6,9 @@ import com.pcloud.common.core.dao.BaseDaoImpl; ...@@ -6,7 +6,9 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @描述:广告详情上传文件 * @描述:广告详情上传文件
...@@ -18,12 +20,20 @@ import java.util.List; ...@@ -18,12 +20,20 @@ import java.util.List;
public class AdvertisingDetailFileDaoImpl extends BaseDaoImpl<AdvertisingDetailFile> implements AdvertisingDetailFileDao { public class AdvertisingDetailFileDaoImpl extends BaseDaoImpl<AdvertisingDetailFile> implements AdvertisingDetailFileDao {
@Override @Override
public List<AdvertisingDetailFile> getByAdId(Long adId) { public List<AdvertisingDetailFile> getByCPAId(Long cpaId) {
return getSessionTemplate().selectList(getStatement("getByAdId"), adId); return getSessionTemplate().selectList(getStatement("getByCPAId"), cpaId);
} }
@Override @Override
public void deleteByAdId(Long adId) { public void deleteByCPAId(Long cpaId) {
getSessionTemplate().delete(getStatement("deleteByAdId"), adId); getSessionTemplate().delete(getStatement("deleteByCPAId"), cpaId);
}
@Override
public void updateCPAId(Long adId, Long cpaId) {
Map<String, Object> map = new HashMap<>();
map.put("adId", adId);
map.put("cpaId", cpaId);
getSessionTemplate().update(getStatement("updateCPAId"), map);
} }
} }
...@@ -34,4 +34,9 @@ public class AdvertisingExposureRecordDaoImpl extends BaseDaoImpl<AdvertisingExp ...@@ -34,4 +34,9 @@ public class AdvertisingExposureRecordDaoImpl extends BaseDaoImpl<AdvertisingExp
map.put("count", peopleCounts); map.put("count", peopleCounts);
getSessionTemplate().update(getStatement("updateExposureByQrcode"), map); getSessionTemplate().update(getStatement("updateExposureByQrcode"), map);
} }
@Override
public Long getExposureNumByCPAId(Long cpaId) {
return getSessionTemplate().selectOne(getStatement("getExposureNumByCPAId"), cpaId);
}
} }
package com.pcloud.book.advertising.dao.impl; package com.pcloud.book.advertising.dao.impl;
import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao;
import com.pcloud.book.advertising.dao.AdvertisingPilotRecordDao; import com.pcloud.book.advertising.dao.AdvertisingPilotRecordDao;
import com.pcloud.book.advertising.dto.WechatGroupClickUserDTO;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingPilotRecord; import com.pcloud.book.advertising.entity.AdvertisingPilotRecord;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -58,4 +54,9 @@ public class AdvertisingPilotRecordDaoImpl extends BaseDaoImpl<AdvertisingPilotR ...@@ -58,4 +54,9 @@ public class AdvertisingPilotRecordDaoImpl extends BaseDaoImpl<AdvertisingPilotR
paramMap.put("statisMonth", statisMonth); paramMap.put("statisMonth", statisMonth);
return getSessionTemplate().selectOne(getStatement("getPilotUserNumByBookId"), paramMap); return getSessionTemplate().selectOne(getStatement("getPilotUserNumByBookId"), paramMap);
} }
@Override
public Long getPilotUserNumByCPAId(Long cpaId) {
return getSessionTemplate().selectOne(getStatement("getPilotUserNumByCPAId"), cpaId);
}
} }
...@@ -88,4 +88,22 @@ public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> imple ...@@ -88,4 +88,22 @@ public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> imple
public List<Long> getAdIdsByMasterId(Long masterId) { public List<Long> getAdIdsByMasterId(Long masterId) {
return getSessionTemplate().selectList(getStatement("getAdIdsByMasterId"),masterId); return getSessionTemplate().selectList(getStatement("getAdIdsByMasterId"),masterId);
} }
@Override
public List<Long> getAdIdsByCPAId(Long cpaId) {
return getSessionTemplate().selectList(getStatement("getAdIdsByCPAId"), cpaId);
}
@Override
public void updateCPAId(Long adId, Long cpaId) {
Map<String, Object> map = new HashMap<>();
map.put("id", adId);
map.put("cpaId", cpaId);
getSessionTemplate().update(getStatement("updateCPAId"), map);
}
@Override
public List<AdvertisingSpace> getCPASpaceList() {
return getSessionTemplate().selectList(getStatement("getCPASpaceList"));
}
} }
package com.pcloud.book.advertising.dao.impl;
import com.pcloud.book.advertising.dao.AdvertisingWechatMsgDao;
import com.pcloud.book.advertising.entity.AdvertisingWechatMsg;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @描述:微信群消息
* @作者:zhuyajie
* @创建时间:15:24 2019/9/2
* @版本:1.0
*/
@Component("advertisingWechatMsgDao")
public class AdvertisingWechatMsgDaoImpl extends BaseDaoImpl<AdvertisingWechatMsg> implements AdvertisingWechatMsgDao {
@Override
public List<AdvertisingWechatMsg> getByAdId(Long adId) {
return getSessionTemplate().selectList(getStatement("getByAdId"), adId);
}
@Override
public void deleteByAdId(Long adId) {
getSessionTemplate().delete(getStatement("deleteByAdId"), adId);
}
}
...@@ -6,7 +6,9 @@ import com.pcloud.common.core.dao.BaseDaoImpl; ...@@ -6,7 +6,9 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @描述:报名选项 * @描述:报名选项
...@@ -17,8 +19,8 @@ import java.util.List; ...@@ -17,8 +19,8 @@ import java.util.List;
@Component("bmOptionDao") @Component("bmOptionDao")
public class BmOptionDaoImpl extends BaseDaoImpl<AdvertisingBmOption> implements BmOptionDao { public class BmOptionDaoImpl extends BaseDaoImpl<AdvertisingBmOption> implements BmOptionDao {
@Override @Override
public List<AdvertisingBmOption> getByAdId(Long adId) { public List<AdvertisingBmOption> getByCPAId(Long cpaId) {
return getSessionTemplate().selectList(getStatement("getByAdId"), adId); return getSessionTemplate().selectList(getStatement("getByCPAId"), cpaId);
} }
@Override @Override
...@@ -27,12 +29,20 @@ public class BmOptionDaoImpl extends BaseDaoImpl<AdvertisingBmOption> implements ...@@ -27,12 +29,20 @@ public class BmOptionDaoImpl extends BaseDaoImpl<AdvertisingBmOption> implements
} }
@Override @Override
public List<Long> getOptionIdsByAdId(Long adId) { public List<Long> getOptionIdsByCPAId(Long cpaId) {
return getSessionTemplate().selectList(getStatement("getOptionIdsByAdId"), adId); return getSessionTemplate().selectList(getStatement("getOptionIdsByCPAId"), cpaId);
} }
@Override @Override
public Long getMobilePhoneOptionIdByAd(Long adId) { public Long getMobilePhoneOptionIdByCPA(Long cpaId) {
return getSessionTemplate().selectOne(getStatement("getMobilePhoneOptionIdByAd"),adId); return getSessionTemplate().selectOne(getStatement("getMobilePhoneOptionIdByCPA"),cpaId);
}
@Override
public void updateCPAId(Long adId, Long cpaId) {
Map<String, Object> map = new HashMap<>();
map.put("adId", adId);
map.put("cpaId", cpaId);
getSessionTemplate().update(getStatement("updateCPAId"), map);
} }
} }
package com.pcloud.book.advertising.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.advertising.entity.AdvertisingBmOption;
import com.pcloud.book.advertising.entity.AdvertisingDetailFile;
import com.pcloud.common.dto.BaseDto;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @描述:CPA内容
* @作者:zhuyajie
* @创建时间:15:27 2019/9/4
* @版本:1.0
*/
public class AdvertisingCpaDTO extends BaseDto {
private Long id;
/**
*标题
*/
private String detailName;
/**
*广告详情方式
*/
private String detailMode;
/**
*广告详情封面
*/
private String coverPic;
/**
*广告详情优惠图
*/
private String welfarePic;
/**
* 广告详情介绍
*/
private String detailInfo;
/**
*广告报名表单是否校验手机号
*/
private Boolean formMobileCheck;
/**
*广告报名表单备注
*/
private String formRemark;
/**
*广告报名表单提交按钮
*/
private String formButton;
/**
*广告报名表单跳转链接
*/
private String formLink;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date updateTime;
/**
* 预览链接
*/
private String previewLink;
/**
* 报名选项设置
*/
private List<AdvertisingBmOption> advertisingBmOptionList;
/**
* 多个上传文件
*/
private List<AdvertisingDetailFile> advertisingDetailFileList;
/**
* 曝光量
*/
private Long exposureNum;
/**
* 点击量
*/
private Long clickNum;
/**
* 点击率
*/
private BigDecimal clickRate;
/**
* 点击用户数(独立访客数)
*/
private Long clickUserNum;
/**
* 报名量
*/
private Long registerNum;
/**
* 报名率
*/
private BigDecimal registerRate;
/**
* 试听完成人数(完课量)
*/
private Long pilotFinishUserNum;
/**
* 试听完成比率(完课率)
*/
private BigDecimal pilotFinishRate;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDetailName() {
return detailName;
}
public void setDetailName(String detailName) {
this.detailName = detailName;
}
public String getDetailMode() {
return detailMode;
}
public void setDetailMode(String detailMode) {
this.detailMode = detailMode;
}
public String getCoverPic() {
return coverPic;
}
public void setCoverPic(String coverPic) {
this.coverPic = coverPic;
}
public String getWelfarePic() {
return welfarePic;
}
public void setWelfarePic(String welfarePic) {
this.welfarePic = welfarePic;
}
public String getDetailInfo() {
return detailInfo;
}
public void setDetailInfo(String detailInfo) {
this.detailInfo = detailInfo;
}
public Boolean getFormMobileCheck() {
return formMobileCheck;
}
public void setFormMobileCheck(Boolean formMobileCheck) {
this.formMobileCheck = formMobileCheck;
}
public String getFormRemark() {
return formRemark;
}
public void setFormRemark(String formRemark) {
this.formRemark = formRemark;
}
public String getFormButton() {
return formButton;
}
public void setFormButton(String formButton) {
this.formButton = formButton;
}
public String getFormLink() {
return formLink;
}
public void setFormLink(String formLink) {
this.formLink = formLink;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public List<AdvertisingBmOption> getAdvertisingBmOptionList() {
return advertisingBmOptionList;
}
public void setAdvertisingBmOptionList(List<AdvertisingBmOption> advertisingBmOptionList) {
this.advertisingBmOptionList = advertisingBmOptionList;
}
public List<AdvertisingDetailFile> getAdvertisingDetailFileList() {
return advertisingDetailFileList;
}
public void setAdvertisingDetailFileList(List<AdvertisingDetailFile> advertisingDetailFileList) {
this.advertisingDetailFileList = advertisingDetailFileList;
}
public String getPreviewLink() {
return previewLink;
}
public void setPreviewLink(String previewLink) {
this.previewLink = previewLink;
}
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 Long getClickUserNum() {
return clickUserNum;
}
public void setClickUserNum(Long clickUserNum) {
this.clickUserNum = clickUserNum;
}
public Long getRegisterNum() {
return registerNum;
}
public void setRegisterNum(Long registerNum) {
this.registerNum = registerNum;
}
public BigDecimal getRegisterRate() {
return registerRate;
}
public void setRegisterRate(BigDecimal registerRate) {
this.registerRate = registerRate;
}
public Long getPilotFinishUserNum() {
return pilotFinishUserNum;
}
public void setPilotFinishUserNum(Long pilotFinishUserNum) {
this.pilotFinishUserNum = pilotFinishUserNum;
}
public BigDecimal getPilotFinishRate() {
return pilotFinishRate;
}
public void setPilotFinishRate(BigDecimal pilotFinishRate) {
this.pilotFinishRate = pilotFinishRate;
}
@Override
public String toString() {
return "AdvertisingCpaDTO{" +
"id=" + id +
", detailName='" + detailName + '\'' +
", detailMode='" + detailMode + '\'' +
", coverPic='" + coverPic + '\'' +
", welfarePic='" + welfarePic + '\'' +
", detailInfo='" + detailInfo + '\'' +
", formMobileCheck=" + formMobileCheck +
", formRemark='" + formRemark + '\'' +
", formButton='" + formButton + '\'' +
", formLink='" + formLink + '\'' +
", updateTime=" + updateTime +
", previewLink='" + previewLink + '\'' +
", advertisingBmOptionList=" + advertisingBmOptionList +
", advertisingDetailFileList=" + advertisingDetailFileList +
", exposureNum=" + exposureNum +
", clickNum=" + clickNum +
", clickRate=" + clickRate +
", clickUserNum=" + clickUserNum +
", registerNum=" + registerNum +
", registerRate=" + registerRate +
", pilotFinishUserNum=" + pilotFinishUserNum +
", pilotFinishRate=" + pilotFinishRate +
'}';
}
}
...@@ -316,7 +316,10 @@ public class AdvertisingSpaceDTO extends BaseDto { ...@@ -316,7 +316,10 @@ public class AdvertisingSpaceDTO extends BaseDto {
* 多个上传文件 * 多个上传文件
*/ */
private List<AdvertisingDetailFile> advertisingDetailFileList; private List<AdvertisingDetailFile> advertisingDetailFileList;
/**
* cp内容id
*/
private Long cpaId;
public Long getId() { public Long getId() {
return id; return id;
} }
...@@ -832,6 +835,14 @@ public class AdvertisingSpaceDTO extends BaseDto { ...@@ -832,6 +835,14 @@ public class AdvertisingSpaceDTO extends BaseDto {
this.advertisingDetailFileList = advertisingDetailFileList; this.advertisingDetailFileList = advertisingDetailFileList;
} }
public Long getCpaId() {
return cpaId;
}
public void setCpaId(Long cpaId) {
this.cpaId = cpaId;
}
@Override @Override
public String toString() { public String toString() {
return "AdvertisingSpaceDTO{" + return "AdvertisingSpaceDTO{" +
...@@ -899,6 +910,7 @@ public class AdvertisingSpaceDTO extends BaseDto { ...@@ -899,6 +910,7 @@ public class AdvertisingSpaceDTO extends BaseDto {
", outRate=" + outRate + ", outRate=" + outRate +
", distributionNum=" + distributionNum + ", distributionNum=" + distributionNum +
", advertisingDetailFileList=" + advertisingDetailFileList + ", advertisingDetailFileList=" + advertisingDetailFileList +
", cpaId=" + cpaId +
'}'; '}';
} }
} }
\ No newline at end of file
package com.pcloud.book.advertising.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
/**
* 微信群消息
*/
public class AdvertisingWechatMsgDTO extends BaseDto{
private Long id;
/**
* 广告id
*/
private Long adId;
/**
* 广告位置方式
*/
private String adPositionMode;
/**
* 广告位链接
*/
private String adLink;
/**
*广告位标题
*/
private String adTitle;
/**
*广告位文案
*/
private String adSlogan;
/**
*广告位图片
*/
private String adPic;
/**
* 序号
*/
private Integer seq;
/**
* cpaId
*/
private Long cpaId;
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 String getAdPositionMode() {
return adPositionMode;
}
public void setAdPositionMode(String adPositionMode) {
this.adPositionMode = adPositionMode == null ? null : adPositionMode.trim();
}
public String getAdLink() {
return adLink;
}
public void setAdLink(String adLink) {
this.adLink = adLink == null ? null : adLink.trim();
}
public String getAdTitle() {
return adTitle;
}
public void setAdTitle(String adTitle) {
this.adTitle = adTitle == null ? null : adTitle.trim();
}
public String getAdSlogan() {
return adSlogan;
}
public void setAdSlogan(String adSlogan) {
this.adSlogan = adSlogan == null ? null : adSlogan.trim();
}
public String getAdPic() {
return adPic;
}
public void setAdPic(String adPic) {
this.adPic = adPic == null ? null : adPic.trim();
}
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
public Long getCpaId() {
return cpaId;
}
public void setCpaId(Long cpaId) {
this.cpaId = cpaId;
}
@Override
public String toString() {
return "AdvertisingWechatMsgDTO{" +
"id=" + id +
", adId=" + adId +
", adPositionMode='" + adPositionMode + '\'' +
", adLink='" + adLink + '\'' +
", adTitle='" + adTitle + '\'' +
", adSlogan='" + adSlogan + '\'' +
", adPic='" + adPic + '\'' +
", seq=" + seq +
", cpaId=" + cpaId +
'}';
}
}
\ No newline at end of file
...@@ -61,6 +61,11 @@ public class AdvertisingBmOption extends BaseEntity{ ...@@ -61,6 +61,11 @@ public class AdvertisingBmOption extends BaseEntity{
*/ */
private List<AdvertisingBmOptionItem> optionItem; private List<AdvertisingBmOptionItem> optionItem;
/**
* cp内容id
*/
private Long cpaId;
public Long getAdId() { public Long getAdId() {
return adId; return adId;
} }
...@@ -157,6 +162,14 @@ public class AdvertisingBmOption extends BaseEntity{ ...@@ -157,6 +162,14 @@ public class AdvertisingBmOption extends BaseEntity{
this.optionItem = optionItem; this.optionItem = optionItem;
} }
public Long getCpaId() {
return cpaId;
}
public void setCpaId(Long cpaId) {
this.cpaId = cpaId;
}
@Override @Override
public String toString() { public String toString() {
return "AdvertisingBmOption{" + return "AdvertisingBmOption{" +
...@@ -172,6 +185,7 @@ public class AdvertisingBmOption extends BaseEntity{ ...@@ -172,6 +185,7 @@ public class AdvertisingBmOption extends BaseEntity{
", updateUser=" + updateUser + ", updateUser=" + updateUser +
", updateTime=" + updateTime + ", updateTime=" + updateTime +
", optionItem=" + optionItem + ", optionItem=" + optionItem +
", cpaId=" + cpaId +
'}'; '}';
} }
} }
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
import java.util.List;
/**
* cpa内容
*/
public class AdvertisingCpa extends BaseEntity{
/**
*标题
*/
private String detailName;
/**
*广告详情方式
*/
private String detailMode;
/**
*广告详情封面
*/
private String coverPic;
/**
*广告详情优惠图
*/
private String welfarePic;
/**
* 广告详情介绍
*/
private String detailInfo;
/**
*广告报名表单是否校验手机号
*/
private Boolean formMobileCheck;
/**
*广告报名表单备注
*/
private String formRemark;
/**
*广告报名表单提交按钮
*/
private String formButton;
/**
*广告报名表单跳转链接
*/
private String formLink;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date updateTime;
/**
* 预览链接
*/
private String previewLink;
/**
* 报名选项设置
*/
private List<AdvertisingBmOption> advertisingBmOptionList;
/**
* 多个上传文件
*/
private List<AdvertisingDetailFile> advertisingDetailFileList;
public String getDetailName() {
return detailName;
}
public void setDetailName(String detailName) {
this.detailName = detailName == null ? null : detailName.trim();
}
public String getDetailMode() {
return detailMode;
}
public void setDetailMode(String detailMode) {
this.detailMode = detailMode == null ? null : detailMode.trim();
}
public String getCoverPic() {
return coverPic;
}
public void setCoverPic(String coverPic) {
this.coverPic = coverPic == null ? null : coverPic.trim();
}
public String getWelfarePic() {
return welfarePic;
}
public void setWelfarePic(String welfarePic) {
this.welfarePic = welfarePic == null ? null : welfarePic.trim();
}
public Boolean getFormMobileCheck() {
return formMobileCheck;
}
public void setFormMobileCheck(Boolean formMobileCheck) {
this.formMobileCheck = formMobileCheck;
}
public String getFormRemark() {
return formRemark;
}
public void setFormRemark(String formRemark) {
this.formRemark = formRemark == null ? null : formRemark.trim();
}
public String getFormButton() {
return formButton;
}
public void setFormButton(String formButton) {
this.formButton = formButton == null ? null : formButton.trim();
}
public String getFormLink() {
return formLink;
}
public void setFormLink(String formLink) {
this.formLink = formLink == null ? null : formLink.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getDetailInfo() {
return detailInfo;
}
public void setDetailInfo(String detailInfo) {
this.detailInfo = detailInfo == null ? null : detailInfo.trim();
}
public List<AdvertisingBmOption> getAdvertisingBmOptionList() {
return advertisingBmOptionList;
}
public void setAdvertisingBmOptionList(List<AdvertisingBmOption> advertisingBmOptionList) {
this.advertisingBmOptionList = advertisingBmOptionList;
}
public List<AdvertisingDetailFile> getAdvertisingDetailFileList() {
return advertisingDetailFileList;
}
public void setAdvertisingDetailFileList(List<AdvertisingDetailFile> advertisingDetailFileList) {
this.advertisingDetailFileList = advertisingDetailFileList;
}
public String getPreviewLink() {
return previewLink;
}
public void setPreviewLink(String previewLink) {
this.previewLink = previewLink;
}
}
\ No newline at end of file
...@@ -72,6 +72,10 @@ public class AdvertisingDetailFile extends BaseEntity{ ...@@ -72,6 +72,10 @@ public class AdvertisingDetailFile extends BaseEntity{
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime; private Date updateTime;
/**
* cpa内容id
*/
private Long cpaId;
public Long getAdId() { public Long getAdId() {
return adId; return adId;
} }
...@@ -186,6 +190,14 @@ public class AdvertisingDetailFile extends BaseEntity{ ...@@ -186,6 +190,14 @@ public class AdvertisingDetailFile extends BaseEntity{
this.updateTime = updateTime; this.updateTime = updateTime;
} }
public Long getCpaId() {
return cpaId;
}
public void setCpaId(Long cpaId) {
this.cpaId = cpaId;
}
@Override @Override
public String toString() { public String toString() {
return "AdvertisingDetailFile{" + return "AdvertisingDetailFile{" +
......
...@@ -180,7 +180,10 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -180,7 +180,10 @@ public class AdvertisingSpace extends BaseEntity {
* 多个上传文件 * 多个上传文件
*/ */
private List<AdvertisingDetailFile> advertisingDetailFileList; private List<AdvertisingDetailFile> advertisingDetailFileList;
/**
* cp内容id
*/
private Long cpaId;
@Override @Override
public Long getId() { public Long getId() {
return id; return id;
...@@ -483,6 +486,14 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -483,6 +486,14 @@ public class AdvertisingSpace extends BaseEntity {
this.advertisingDetailFileList = advertisingDetailFileList; this.advertisingDetailFileList = advertisingDetailFileList;
} }
public Long getCpaId() {
return cpaId;
}
public void setCpaId(Long cpaId) {
this.cpaId = cpaId;
}
@Override @Override
public String toString() { public String toString() {
return "AdvertisingSpace{" + return "AdvertisingSpace{" +
...@@ -523,6 +534,7 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -523,6 +534,7 @@ public class AdvertisingSpace extends BaseEntity {
", adDetailFileName='" + adDetailFileName + '\'' + ", adDetailFileName='" + adDetailFileName + '\'' +
", adDetailFileDuration=" + adDetailFileDuration + ", adDetailFileDuration=" + adDetailFileDuration +
", advertisingDetailFileList=" + advertisingDetailFileList + ", advertisingDetailFileList=" + advertisingDetailFileList +
", cpaId=" + cpaId +
'}'; '}';
} }
} }
\ No newline at end of file
package com.pcloud.book.advertising.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
public class AdvertisingWechatMsg extends BaseEntity{
/**
* 广告id
*/
private Long adId;
/**
* 广告位置方式
*/
private String adPositionMode;
/**
* 广告位链接
*/
private String adLink;
/**
*广告位标题
*/
private String adTitle;
/**
*广告位文案
*/
private String adSlogan;
/**
*广告位图片
*/
private String adPic;
/**
* 序号
*/
private Integer seq;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date updateTime;
/**
* cpaId
*/
private Long cpaId;
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public String getAdPositionMode() {
return adPositionMode;
}
public void setAdPositionMode(String adPositionMode) {
this.adPositionMode = adPositionMode == null ? null : adPositionMode.trim();
}
public String getAdLink() {
return adLink;
}
public void setAdLink(String adLink) {
this.adLink = adLink == null ? null : adLink.trim();
}
public String getAdTitle() {
return adTitle;
}
public void setAdTitle(String adTitle) {
this.adTitle = adTitle == null ? null : adTitle.trim();
}
public String getAdSlogan() {
return adSlogan;
}
public void setAdSlogan(String adSlogan) {
this.adSlogan = adSlogan == null ? null : adSlogan.trim();
}
public String getAdPic() {
return adPic;
}
public void setAdPic(String adPic) {
this.adPic = adPic == null ? null : adPic.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
public Long getCpaId() {
return cpaId;
}
public void setCpaId(Long cpaId) {
this.cpaId = cpaId;
}
@Override
public String toString() {
return "AdvertisingWechatMsg{" +
"adId=" + adId +
", adPositionMode='" + adPositionMode + '\'' +
", adLink='" + adLink + '\'' +
", adTitle='" + adTitle + '\'' +
", adSlogan='" + adSlogan + '\'' +
", adPic='" + adPic + '\'' +
", seq=" + seq +
", createTime=" + createTime +
", updateTime=" + updateTime +
", cpaId=" + cpaId +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.advertising.facade; package com.pcloud.book.advertising.facade;
import com.pcloud.book.advertising.dto.AdvertisingCpaDTO;
import com.pcloud.book.advertising.dto.AdvertisingBrandDTO; import com.pcloud.book.advertising.dto.AdvertisingBrandDTO;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO; import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.dto.AdvertisingWechatMsgDTO;
import com.pcloud.book.advertising.dto.Book4AdvertisingTagDTO; import com.pcloud.book.advertising.dto.Book4AdvertisingTagDTO;
import com.pcloud.book.advertising.dto.GroupTagAddDTO; import com.pcloud.book.advertising.dto.GroupTagAddDTO;
import com.pcloud.book.advertising.dto.GroupTagDTO; import com.pcloud.book.advertising.dto.GroupTagDTO;
...@@ -11,12 +13,14 @@ import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; ...@@ -11,12 +13,14 @@ import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingBrand; import com.pcloud.book.advertising.entity.AdvertisingBrand;
import com.pcloud.book.advertising.entity.AdvertisingBrowseRecord; import com.pcloud.book.advertising.entity.AdvertisingBrowseRecord;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord; import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingCpa;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook; import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord; import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingMaster; import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.book.advertising.entity.AdvertisingPilotRecord; import com.pcloud.book.advertising.entity.AdvertisingPilotRecord;
import com.pcloud.book.advertising.entity.AdvertisingPlan; import com.pcloud.book.advertising.entity.AdvertisingPlan;
import com.pcloud.book.advertising.entity.AdvertisingSpace; import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.entity.AdvertisingWechatMsg;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
...@@ -324,14 +328,16 @@ public interface AdvertisingSpaceFacade { ...@@ -324,14 +328,16 @@ public interface AdvertisingSpaceFacade {
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "filterClose", value = "过滤已关闭", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "filterClose", value = "过滤已关闭", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "filterTest", value = "过滤测试数据", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "filterTest", value = "过滤测试数据", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "adPosition", value = "广告位位置", dataType = "string", paramType = "query") @ApiImplicitParam(name = "adPosition", value = "广告位位置", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "type", value = "广告位类型(WECHAT_GROUP/BOOK)", dataType = "string", paramType = "query")
}) })
@RequestMapping(value = "list", method = RequestMethod.GET) @RequestMapping(value = "list", method = RequestMethod.GET)
ResponseDto<?> list(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name, ResponseDto<?> list(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage, @RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage,
@RequestParam(value = "filterClose", required = false) Boolean filterClose, @RequestParam(value = "filterClose", required = false) Boolean filterClose,
@RequestParam(value = "filterTest", required = false) Boolean filterTest, @RequestParam(value = "filterTest", required = false) Boolean filterTest,
@RequestParam(value = "adPosition", required = false) String adPosition) @RequestParam(value = "adPosition", required = false) String adPosition,
@RequestParam(value = "type", required = false) String type)
throws PermissionException, BizException, JsonParseException; throws PermissionException, BizException, JsonParseException;
/** /**
...@@ -1212,4 +1218,64 @@ public interface AdvertisingSpaceFacade { ...@@ -1212,4 +1218,64 @@ public interface AdvertisingSpaceFacade {
@ApiOperation(value = "获得品牌方登录信息", httpMethod = "GET") @ApiOperation(value = "获得品牌方登录信息", httpMethod = "GET")
@GetMapping("getBrandLoginInfo") @GetMapping("getBrandLoginInfo")
public ResponseDto<?> getBrandLoginInfo(@RequestHeader("token") String token) throws PermissionException; public ResponseDto<?> getBrandLoginInfo(@RequestHeader("token") String token) throws PermissionException;
@ApiOperation(value = "创建多条微信群消息", httpMethod = "POST")
@PostMapping("createWechatGroupMsg")
public ResponseDto<?> createWechatGroupMsg(@RequestHeader("token") String token, @RequestBody @ApiParam List<AdvertisingWechatMsg> advertisingWechatMsgList) throws PermissionException;
@ApiOperation(value = "创建cpa内容", httpMethod = "POST")
@PostMapping("createCPAContent")
public ResponseDto<?> createCPAContent(@RequestHeader("token") String token, @RequestBody @ApiParam AdvertisingCpa advertisingCpa) throws PermissionException;
@ApiOperation(value = "修改cpa内容", httpMethod = "POST")
@PostMapping("updateCPAContent")
public ResponseDto<?> updateCPAContent(@RequestHeader("token") String token, @RequestBody @ApiParam AdvertisingCpa advertisingCpa) throws PermissionException;
@ApiOperation(value = "删除cpa内容", httpMethod = "GET")
@ApiImplicitParam(name = "cpaId", value = "cpa内容id", dataType = "Long", paramType = "query")
@GetMapping("deleteCPAContent")
public ResponseDto<?> deleteCPAContent(@RequestHeader("token") String token, @RequestParam("cpaId") Long cpaId) throws PermissionException;
@ApiOperation(value = "根据id查询cpa内容", httpMethod = "GET")
@ApiImplicitParam(name = "cpaId", value = "cpa内容id", dataType = "Long", paramType = "query")
@GetMapping("getCPAContentById")
public ResponseDto<AdvertisingCpaDTO> getCPAContentById(@RequestHeader("token") String token, @RequestParam("cpaId") Long cpaId) throws PermissionException;
@ApiOperation(value = "分页查询cpa内容", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "title", value = "标题", dataType = "string", required = false, paramType = "query"),
@ApiImplicitParam(name = "detailMode", value = "展示方式(AUDIO/VIDEO/IMG_TEXT)", dataType = "string", required = false, paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query"),
})
@GetMapping("listPageCPAContent")
public ResponseDto<PageBeanNew<AdvertisingCpaDTO>> listPageCPAContent(
@RequestHeader("token") String token, @RequestParam(value = "title", required = false) String title,
@RequestParam(value = "detailMode", required = false) String detailMode,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException;
@ApiOperation(value = "分页查询cpa链接", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "title", value = "标题", dataType = "string", required = false, paramType = "query"),
@ApiImplicitParam(name = "detailMode", value = "展示方式(AUDIO/VIDEO/IMG_TEXT)", dataType = "string", required = false, paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query"),
})
@GetMapping("listPageCPALink")
public ResponseDto<PageBeanNew<AdvertisingCpaDTO>> listPageCPALink(
@RequestHeader("token") String token, @RequestParam(value = "title", required = false) String title,
@RequestParam(value = "detailMode", required = false) String detailMode,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException;
@ApiOperation(value = "根据广告位查询配置的微信群消息", httpMethod = "GET")
@ApiImplicitParam(name = "adId", value = "广告id", dataType = "long", paramType = "query")
@GetMapping("getWechatGroupMsgListByAdId")
public ResponseDto<List<AdvertisingWechatMsgDTO>> getWechatGroupMsgListByAdId(@RequestHeader("token") String token, @RequestParam("adId") Long adId) throws PermissionException;
@ApiOperation(value = "客户端-根据id查询cpa内容", httpMethod = "GET")
@ApiImplicitParam(name = "cpaId", value = "cpa内容id", dataType = "Long", paramType = "query")
@GetMapping("getCPAContentById4Wechat")
public ResponseDto<AdvertisingCpaDTO> getCPAContentById4Wechat(@CookieValue("userInfo") String userInfo, @RequestParam("cpaId") Long cpaId) throws PermissionException;
} }
...@@ -3,22 +3,26 @@ package com.pcloud.book.advertising.facade.impl; ...@@ -3,22 +3,26 @@ package com.pcloud.book.advertising.facade.impl;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz; import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
import com.pcloud.book.advertising.biz.GroupTagBiz; import com.pcloud.book.advertising.biz.GroupTagBiz;
import com.pcloud.book.advertising.dto.AdvertisingBrandDTO; import com.pcloud.book.advertising.dto.AdvertisingBrandDTO;
import com.pcloud.book.advertising.dto.AdvertisingCpaDTO;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO; import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.dto.Book4AdvertisingTagDTO; import com.pcloud.book.advertising.dto.Book4AdvertisingTagDTO;
import com.pcloud.book.advertising.dto.GroupTagAddDTO; import com.pcloud.book.advertising.dto.GroupTagAddDTO;
import com.pcloud.book.advertising.dto.GroupTagDTO; import com.pcloud.book.advertising.dto.GroupTagDTO;
import com.pcloud.book.advertising.dto.AdvertisingWechatMsgDTO;
import com.pcloud.book.advertising.dto.TestParamDTO; import com.pcloud.book.advertising.dto.TestParamDTO;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission; import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingBrand; import com.pcloud.book.advertising.entity.AdvertisingBrand;
import com.pcloud.book.advertising.entity.AdvertisingBrowseRecord; import com.pcloud.book.advertising.entity.AdvertisingBrowseRecord;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord; import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingCpa;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook; import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord; import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingMaster; import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.book.advertising.entity.AdvertisingPilotRecord; import com.pcloud.book.advertising.entity.AdvertisingPilotRecord;
import com.pcloud.book.advertising.entity.AdvertisingPlan; import com.pcloud.book.advertising.entity.AdvertisingPlan;
import com.pcloud.book.advertising.entity.AdvertisingSpace; import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.entity.AdvertisingWechatMsg;
import com.pcloud.book.advertising.facade.AdvertisingSpaceFacade; import com.pcloud.book.advertising.facade.AdvertisingSpaceFacade;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -292,7 +296,8 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade { ...@@ -292,7 +296,8 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage, @RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage,
@RequestParam(value = "filterClose", required = false) Boolean filterClose, @RequestParam(value = "filterClose", required = false) Boolean filterClose,
@RequestParam(value = "filterTest", required = false) Boolean filterTest, @RequestParam(value = "filterTest", required = false) Boolean filterTest,
@RequestParam(value = "adPosition", required = false) String adPosition) @RequestParam(value = "adPosition", required = false) String adPosition,
@RequestParam(value = "type", required = false) String type)
throws PermissionException, BizException, JsonParseException { throws PermissionException, BizException, JsonParseException {
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) { if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION; throw BookBizException.PAGE_PARAM_DELETION;
...@@ -303,7 +308,7 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade { ...@@ -303,7 +308,7 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
if (null == filterTest) { if (null == filterTest) {
filterTest = true; filterTest = true;
} }
return new ResponseDto<>(advertisingSpaceBiz.list(name, new PageParam(currentPage, numPerPage), filterClose, filterTest, adPosition)); return new ResponseDto<>(advertisingSpaceBiz.list(name, new PageParam(currentPage, numPerPage), filterClose, filterTest, adPosition, type));
} }
/** /**
...@@ -1073,6 +1078,22 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade { ...@@ -1073,6 +1078,22 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
List<Long> bookIds = groupTagBiz.getTagBookIds4AdBrand(brandId); List<Long> bookIds = groupTagBiz.getTagBookIds4AdBrand(brandId);
return new ResponseDto<>(bookIds); return new ResponseDto<>(bookIds);
} }
@Override
@PostMapping("createWechatGroupMsg")
public ResponseDto<?> createWechatGroupMsg(@RequestHeader("token") String token, @RequestBody @ApiParam List<AdvertisingWechatMsg> advertisingWechatMsgList) throws PermissionException {
SessionUtil.getToken4Redis(token);
if (ListUtils.isEmpty(advertisingWechatMsgList)) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数为空");
}
if (advertisingWechatMsgList.size() > 1) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "最多1条消息");
}
if (null == advertisingWechatMsgList.get(0).getAdId()) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "广告id为空");
}
advertisingSpaceBiz.createWechatGroupMsg(advertisingWechatMsgList);
return new ResponseDto<>();
}
/** /**
* 创建品牌方账号 * 创建品牌方账号
...@@ -1199,4 +1220,105 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade { ...@@ -1199,4 +1220,105 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
return new ResponseDto<>(map); return new ResponseDto<>(map);
} }
@Override
@PostMapping("createCPAContent")
public ResponseDto<?> createCPAContent(@RequestHeader("token") String token, @RequestBody @ApiParam AdvertisingCpa advertisingCpa) throws PermissionException {
if (null == advertisingCpa) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
Long cpaId = advertisingSpaceBiz.createCPAContent(advertisingCpa);
return new ResponseDto<>(cpaId);
}
@Override
@PostMapping("updateCPAContent")
public ResponseDto<?> updateCPAContent(@RequestHeader("token") String token, @RequestBody @ApiParam AdvertisingCpa advertisingCpa) throws PermissionException {
if (null == advertisingCpa || null == advertisingCpa.getId()) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
advertisingSpaceBiz.updateCPAContent(advertisingCpa);
return new ResponseDto<>();
}
@Override
@GetMapping("deleteCPAContent")
public ResponseDto<?> deleteCPAContent(@RequestHeader("token") String token, @RequestParam("cpaId") Long cpaId) throws PermissionException {
if (null == cpaId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
advertisingSpaceBiz.deleteCPAContent(cpaId);
return new ResponseDto<>();
}
@Override
@GetMapping("getCPAContentById")
public ResponseDto<AdvertisingCpaDTO> getCPAContentById(@RequestHeader("token") String token, @RequestParam("cpaId") Long cpaId) throws PermissionException {
if (null == cpaId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
SessionUtil.getToken4Redis(token);
AdvertisingCpaDTO dto = advertisingSpaceBiz.getCPAContentById(cpaId);
return new ResponseDto<>(dto);
}
@Override
@GetMapping("listPageCPAContent")
public ResponseDto<PageBeanNew<AdvertisingCpaDTO>> listPageCPAContent(
@RequestHeader("token") String token, @RequestParam(value = "title", required = false) String title,
@RequestParam(value = "detailMode", required = false) String detailMode,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException {
SessionUtil.getToken4Redis(token);
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
PageBeanNew<AdvertisingCpaDTO> pageBeanNew = advertisingSpaceBiz.listPageCPAContent(title, detailMode, currentPage, numPerPage);
return new ResponseDto<>(pageBeanNew);
}
@Override
@GetMapping("listPageCPALink")
public ResponseDto<PageBeanNew<AdvertisingCpaDTO>> listPageCPALink(
@RequestHeader("token") String token, @RequestParam(value = "title", required = false) String title,
@RequestParam(value = "detailMode", required = false) String detailMode,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) throws PermissionException {
SessionUtil.getToken4Redis(token);
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
PageBeanNew<AdvertisingCpaDTO> pageBeanNew = advertisingSpaceBiz.listPageCPALink(title, detailMode, currentPage, numPerPage);
return new ResponseDto<>(pageBeanNew);
}
@Override
@GetMapping("getWechatGroupMsgListByAdId")
public ResponseDto<List<AdvertisingWechatMsgDTO>> getWechatGroupMsgListByAdId(@RequestHeader("token") String token, @RequestParam("adId") Long adId) throws PermissionException {
SessionUtil.getToken4Redis(token);
if (null == adId){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"广告id为空");
}
List<AdvertisingWechatMsgDTO> list = advertisingSpaceBiz.getWechatGroupMsgListByAdId(adId);
return new ResponseDto<>(list);
}
@ApiOperation(value = "cpa内容旧数据处理---内部使用!!",httpMethod = "GET")
@GetMapping("dealOldCPAContent")
public ResponseDto<?> dealOldCPAContent(){
advertisingSpaceBiz.dealOldCPAContent();
return new ResponseDto<>();
}
@Override
@GetMapping("getCPAContentById4Wechat")
public ResponseDto<AdvertisingCpaDTO> getCPAContentById4Wechat(@CookieValue("userInfo") String userInfo, @RequestParam("cpaId") Long cpaId) throws PermissionException {
if (null == cpaId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
AdvertisingCpaDTO dto = advertisingSpaceBiz.getCPAContentById(cpaId);
return new ResponseDto<>(dto);
}
} }
...@@ -14,32 +14,33 @@ ...@@ -14,32 +14,33 @@
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" /> <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_user" property="updateUser" jdbcType="BIGINT" /> <result column="update_user" property="updateUser" jdbcType="BIGINT" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /> <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="cpa_id" property="cpaId" jdbcType="BIGINT" />
<collection property="optionItem" column="id" <collection property="optionItem" column="id"
select="com.pcloud.book.advertising.dao.impl.BmOptionItemDaoImpl.getByOptionId" /> select="com.pcloud.book.advertising.dao.impl.BmOptionItemDaoImpl.getByOptionId" />
</resultMap> </resultMap>
<sql id="Base_Column_List" > <sql id="Base_Column_List" >
id, ad_id, seq, item_title, item_desc, item_input_type, item_data_type, required, id, ad_id, seq, item_title, item_desc, item_input_type, item_data_type, required,
create_user, create_time, update_user, update_time create_user, create_time, update_user, update_time, cpa_id
</sql> </sql>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingBmOption" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingBmOption" useGeneratedKeys="true" keyProperty="id">
insert into advertising_bm_option (ad_id, seq, item_title, insert into advertising_bm_option (ad_id, seq, item_title,
item_desc, item_input_type, item_data_type, item_desc, item_input_type, item_data_type,
required, create_user, create_time required, create_user, create_time, cpa_id
) )
values (#{adId,jdbcType=BIGINT}, #{seq,jdbcType=BIGINT}, #{itemTitle,jdbcType=VARCHAR}, values (#{adId,jdbcType=BIGINT}, #{seq,jdbcType=BIGINT}, #{itemTitle,jdbcType=VARCHAR},
#{itemDesc,jdbcType=VARCHAR}, #{itemInputType,jdbcType=VARCHAR}, #{itemDataType,jdbcType=VARCHAR}, #{itemDesc,jdbcType=VARCHAR}, #{itemInputType,jdbcType=VARCHAR}, #{itemDataType,jdbcType=VARCHAR},
#{required,jdbcType=BIT}, #{createUser,jdbcType=BIGINT}, NOW() #{required,jdbcType=BIT}, #{createUser,jdbcType=BIGINT}, NOW(), #{cpaId}
) )
</insert> </insert>
<!-- 根据广告ID获取选项表单 --> <!-- 根据广告ID获取选项表单 -->
<select id="getByAdId" resultMap="BaseResultMap" parameterType="map" > <select id="getByCPAId" resultMap="BaseResultMap" parameterType="map" >
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List" />
from advertising_bm_option from advertising_bm_option
where ad_id = #{adId,jdbcType=BIGINT} where cpa_id = #{cpaId,jdbcType=BIGINT}
order by seq asc, id asc order by seq asc, id asc
</select> </select>
...@@ -79,19 +80,19 @@ ...@@ -79,19 +80,19 @@
</foreach> </foreach>
</delete> </delete>
<select id="getOptionIdsByAdId" parameterType="Long" resultType="Long"> <select id="getOptionIdsByCPAId" parameterType="Long" resultType="Long">
SELECT id SELECT id
FROM advertising_bm_option FROM advertising_bm_option
WHERE ad_id = #{adId,jdbcType=BIGINT} WHERE cpa_id = #{cpaId,jdbcType=BIGINT}
</select> </select>
<select id="getMobilePhoneOptionIdByAd" parameterType="Long" resultType="Long"> <select id="getMobilePhoneOptionIdByCPA" parameterType="Long" resultType="Long">
SELECT SELECT
id id
FROM FROM
advertising_bm_option advertising_bm_option
WHERE WHERE
ad_id = #{adId,jdbcType=BIGINT} cpa_id = #{cpaId,jdbcType=BIGINT}
AND item_title = '手机号' AND item_title = '手机号'
AND item_input_type = 'input' AND item_input_type = 'input'
AND item_data_type = 'mobile' AND item_data_type = 'mobile'
...@@ -99,4 +100,11 @@ ...@@ -99,4 +100,11 @@
LIMIT 1 LIMIT 1
</select> </select>
<update id="updateCPAId" parameterType="map">
UPDATE advertising_bm_option
SET cpa_id = #{cpaId,jdbcType=BIGINT}
WHERE
ad_id = #{adId,jdbcType=BIGINT}
</update>
</mapper> </mapper>
\ No newline at end of file
...@@ -287,4 +287,24 @@ ...@@ -287,4 +287,24 @@
) AS a ) AS a
</select> </select>
<select id="getClickNumByCPAId" 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.cpa_id = #{cpaId}
</select>
<select id="getClickUserNumByCPAId" parameterType="map" resultType="Long">
SELECT
COUNT(DISTINCT wechat_user_id)
FROM
advertising_click_record r
INNER JOIN advertising_space s ON r.ad_id = s.id
WHERE
s.cpa_id = #{cpaId}
</select>
</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" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingCpaDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingCpa" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="detail_name" property="detailName" jdbcType="VARCHAR" />
<result column="detail_mode" property="detailMode" jdbcType="VARCHAR" />
<result column="cover_pic" property="coverPic" jdbcType="VARCHAR" />
<result column="welfare_pic" property="welfarePic" jdbcType="VARCHAR" />
<result column="form_mobile_check" property="formMobileCheck" jdbcType="BIT" />
<result column="form_remark" property="formRemark" jdbcType="VARCHAR" />
<result column="form_button" property="formButton" jdbcType="VARCHAR" />
<result column="form_link" property="formLink" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="detail_info" property="detailInfo" jdbcType="LONGVARCHAR" />
<result column="preview_link" property="previewLink" jdbcType="VARCHAR" />
</resultMap>
<resultMap id="AdvertisingCpaDTO" type="com.pcloud.book.advertising.dto.AdvertisingCpaDTO">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="detail_name" property="detailName" jdbcType="VARCHAR"/>
<result column="detail_mode" property="detailMode" jdbcType="VARCHAR"/>
<result column="cover_pic" property="coverPic" jdbcType="VARCHAR"/>
<result column="welfare_pic" property="welfarePic" jdbcType="VARCHAR"/>
<result column="form_mobile_check" property="formMobileCheck" jdbcType="BIT"/>
<result column="form_remark" property="formRemark" jdbcType="VARCHAR"/>
<result column="form_button" property="formButton" jdbcType="VARCHAR"/>
<result column="form_link" property="formLink" jdbcType="VARCHAR"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="detail_info" property="detailInfo" jdbcType="LONGVARCHAR"/>
<result column="preview_link" property="previewLink" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, detail_name, detail_mode, cover_pic, welfare_pic, form_mobile_check, form_remark,
form_button, form_link, create_time, update_time, detail_info, preview_link
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long" >
select
<include refid="Base_Column_List" />
from advertising_cpa
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteById" parameterType="java.lang.Long" >
delete from advertising_cpa
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingCpa" useGeneratedKeys="true" keyProperty="id">
insert into advertising_cpa (detail_name, detail_mode,
cover_pic, welfare_pic, form_mobile_check,
form_remark, form_button, form_link,
create_time, update_time, detail_info, preview_link
)
values (#{detailName,jdbcType=VARCHAR}, #{detailMode,jdbcType=VARCHAR},
#{coverPic,jdbcType=VARCHAR}, #{welfarePic,jdbcType=VARCHAR}, #{formMobileCheck,jdbcType=BIT},
#{formRemark,jdbcType=VARCHAR}, #{formButton,jdbcType=VARCHAR}, #{formLink,jdbcType=VARCHAR},
NOW(), NOW(), #{detailInfo,jdbcType=LONGVARCHAR}, #{previewLink,jdbcType=VARCHAR}
)
</insert>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingCpa" >
update advertising_cpa
<set >
<if test="detailName != null" >
detail_name = #{detailName,jdbcType=VARCHAR},
</if>
<if test="detailMode != null" >
detail_mode = #{detailMode,jdbcType=VARCHAR},
</if>
<if test="coverPic != null" >
cover_pic = #{coverPic,jdbcType=VARCHAR},
</if>
<if test="welfarePic != null" >
welfare_pic = #{welfarePic,jdbcType=VARCHAR},
</if>
<if test="formMobileCheck != null" >
form_mobile_check = #{formMobileCheck,jdbcType=BIT},
</if>
<if test="formRemark != null" >
form_remark = #{formRemark,jdbcType=VARCHAR},
</if>
<if test="formButton != null" >
form_button = #{formButton,jdbcType=VARCHAR},
</if>
<if test="formLink != null" >
form_link = #{formLink,jdbcType=VARCHAR},
</if>
update_time = NOW(),
<if test="detailInfo != null" >
detail_info = #{detailInfo,jdbcType=LONGVARCHAR},
</if>
<if test="previewLink != null">
preview_link = #{previewLink,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<select id="listPage" parameterType="map" resultMap="AdvertisingCpaDTO">
select
<include refid="Base_Column_List"/>
from advertising_cpa
WHERE
1 = 1
<if test="name != null ">
AND detail_name LIKE CONCAT( '%', #{name}, '%')
</if>
<if test="detailMode != null">
AND detail_mode = #{detailMode,jdbcType=VARCHAR}
</if>
ORDER BY
update_time DESC
</select>
</mapper>
\ No newline at end of file
...@@ -17,23 +17,24 @@ ...@@ -17,23 +17,24 @@
<result column="cover_pic" property="coverPic" jdbcType="VARCHAR" /> <result column="cover_pic" property="coverPic" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" /> <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /> <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="cpa_id" property="cpaId" jdbcType="BIGINT" />
</resultMap> </resultMap>
<sql id="Base_Column_List" > <sql id="Base_Column_List" >
id, ad_id, file_id, file_convert_state, file_size, file_name, file_duration, file_url, id, ad_id, file_id, file_convert_state, file_size, file_name, file_duration, file_url,
file_pilot_second, file_pilot_url, file_pilot_finish_tip, title, cover_pic, create_time, update_time file_pilot_second, file_pilot_url, file_pilot_finish_tip, title, cover_pic, create_time, update_time, cpa_id
</sql> </sql>
<select id="getByAdId" resultMap="BaseResultMap" parameterType="java.lang.Long" > <select id="getByCPAId" resultMap="BaseResultMap" parameterType="java.lang.Long" >
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List" />
from advertising_detail_file from advertising_detail_file
where ad_id = #{adId,jdbcType=BIGINT} where cpa_id = #{cpaId,jdbcType=BIGINT}
</select> </select>
<delete id="deleteByAdId" parameterType="Long"> <delete id="deleteByCPAId" parameterType="Long">
delete from advertising_detail_file delete from advertising_detail_file
where ad_id = #{adId,jdbcType=BIGINT} where cpa_id = #{cpaId,jdbcType=BIGINT}
</delete> </delete>
<insert id="batchInsert" useGeneratedKeys="true" parameterType="java.util.List" keyProperty="id"> <insert id="batchInsert" useGeneratedKeys="true" parameterType="java.util.List" keyProperty="id">
...@@ -42,7 +43,7 @@ ...@@ -42,7 +43,7 @@
file_convert_state, file_size, file_name, file_convert_state, file_size, file_name,
file_duration, file_url, file_pilot_second, file_duration, file_url, file_pilot_second,
file_pilot_url, file_pilot_finish_tip, title, file_pilot_url, file_pilot_finish_tip, title,
cover_pic, create_time) cover_pic, create_time, cpa_id)
values values
<foreach collection="list" item="item" index="index" separator="," > <foreach collection="list" item="item" index="index" separator="," >
( (
...@@ -50,50 +51,16 @@ ...@@ -50,50 +51,16 @@
#{item.fileConvertState,jdbcType=INTEGER}, #{item.fileSize,jdbcType=BIGINT}, #{item.fileName,jdbcType=VARCHAR}, #{item.fileConvertState,jdbcType=INTEGER}, #{item.fileSize,jdbcType=BIGINT}, #{item.fileName,jdbcType=VARCHAR},
#{item.fileDuration,jdbcType=BIGINT}, #{item.fileUrl,jdbcType=VARCHAR}, #{item.filePilotSecond,jdbcType=BIGINT}, #{item.fileDuration,jdbcType=BIGINT}, #{item.fileUrl,jdbcType=VARCHAR}, #{item.filePilotSecond,jdbcType=BIGINT},
#{item.filePilotUrl,jdbcType=VARCHAR}, #{item.filePilotFinishTip,jdbcType=VARCHAR}, #{item.title,jdbcType=VARCHAR}, #{item.filePilotUrl,jdbcType=VARCHAR}, #{item.filePilotFinishTip,jdbcType=VARCHAR}, #{item.title,jdbcType=VARCHAR},
#{item.coverPic,jdbcType=VARCHAR}, NOW() #{item.coverPic,jdbcType=VARCHAR}, NOW(), #{item.cpaId}
) )
</foreach> </foreach>
</insert> </insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pcloud.book.advertising.entity.AdvertisingDetailFile" > <update id="updateCPAId" parameterType="map">
update advertising_detail_file UPDATE advertising_detail_file
<set > SET cpa_id = #{cpaId,jdbcType=BIGINT}
<if test="fileId != null" > WHERE
file_id = #{fileId,jdbcType=VARCHAR}, ad_id = #{adId}
</if>
<if test="fileConvertState != null" >
file_convert_state = #{fileConvertState,jdbcType=INTEGER},
</if>
<if test="fileSize != null" >
file_size = #{fileSize,jdbcType=BIGINT},
</if>
<if test="fileName != null" >
file_name = #{fileName,jdbcType=VARCHAR},
</if>
<if test="fileDuration != null" >
file_duration = #{fileDuration,jdbcType=BIGINT},
</if>
<if test="fileUrl != null" >
file_url = #{fileUrl,jdbcType=VARCHAR},
</if>
<if test="filePilotSecond != null" >
file_pilot_second = #{filePilotSecond,jdbcType=BIGINT},
</if>
<if test="filePilotUrl != null" >
file_pilot_url = #{filePilotUrl,jdbcType=VARCHAR},
</if>
<if test="filePilotFinishTip != null" >
file_pilot_finish_tip = #{filePilotFinishTip,jdbcType=VARCHAR},
</if>
<if test="title != null" >
title = #{title,jdbcType=VARCHAR},
</if>
<if test="coverPic != null" >
cover_pic = #{coverPic,jdbcType=VARCHAR},
</if>
update_time = NOW(),
</set>
where id = #{id,jdbcType=BIGINT}
</update> </update>
</mapper> </mapper>
\ No newline at end of file
...@@ -293,4 +293,14 @@ ...@@ -293,4 +293,14 @@
AND count = 0 AND count = 0
</update> </update>
<select id="getExposureNumByCPAId" parameterType="long" resultType="long">
SELECT
ifnull(sum(count), 0)
FROM
advertising_exposure_record r
INNER JOIN advertising_space s ON r.ad_id = s.id
WHERE
s.cpa_id = #{cpaId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -169,4 +169,13 @@ ...@@ -169,4 +169,13 @@
</if> </if>
</select> </select>
<select id="getPilotUserNumByCPAId" parameterType="long" resultType="long">
SELECT
COUNT(DISTINCT wechat_user_id)
FROM
advertising_pilot_record r
INNER JOIN advertising_space s ON r.ad_id = s.id
WHERE
s.cpa_id = #{cpaId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
<result column="ad_detail_file_size" property="adDetailFileSize" jdbcType="BIGINT" /> <result column="ad_detail_file_size" property="adDetailFileSize" jdbcType="BIGINT" />
<result column="ad_detail_file_name" property="adDetailFileName" jdbcType="VARCHAR" /> <result column="ad_detail_file_name" property="adDetailFileName" jdbcType="VARCHAR" />
<result column="ad_detail_file_duration" property="adDetailFileDuration" jdbcType="BIGINT" /> <result column="ad_detail_file_duration" property="adDetailFileDuration" jdbcType="BIGINT" />
<result column="cpa_id" property="cpaId" jdbcType="BIGINT" />
</resultMap> </resultMap>
<resultMap id="AdvertisingSpaceDTO" type="com.pcloud.book.advertising.dto.AdvertisingSpaceDTO"> <resultMap id="AdvertisingSpaceDTO" type="com.pcloud.book.advertising.dto.AdvertisingSpaceDTO">
...@@ -72,6 +73,7 @@ ...@@ -72,6 +73,7 @@
<result column="ad_detail_file_name" property="adDetailFileName" jdbcType="VARCHAR" /> <result column="ad_detail_file_name" property="adDetailFileName" jdbcType="VARCHAR" />
<result column="ad_detail_file_duration" property="adDetailFileDuration" jdbcType="BIGINT" /> <result column="ad_detail_file_duration" property="adDetailFileDuration" jdbcType="BIGINT" />
<result column="settlement_method" property="settlementMethod" jdbcType="VARCHAR"/> <result column="settlement_method" property="settlementMethod" jdbcType="VARCHAR"/>
<result column="cpa_id" property="cpaId" jdbcType="BIGINT" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
...@@ -80,7 +82,7 @@ ...@@ -80,7 +82,7 @@
ad_detail_cover_pic, ad_detail_welfare_pic, ad_detail_info, ad_detail_file_id, ad_detail_file_convert_state, ad_detail_cover_pic, ad_detail_welfare_pic, ad_detail_info, ad_detail_file_id, ad_detail_file_convert_state,
ad_detail_file_url, ad_detail_title, ad_detail_file_pilot_second, ad_detail_file_pilot_url, ad_detail_file_url, ad_detail_title, ad_detail_file_pilot_second, ad_detail_file_pilot_url,
ad_detail_file_pilot_finish_tip, ad_form_mobile_check, ad_form_remark, ad_form_button, ad_detail_file_pilot_finish_tip, ad_form_mobile_check, ad_form_remark, ad_form_button,
ad_form_link, ad_detail_file_size, ad_detail_file_name, ad_detail_file_duration ad_form_link, ad_detail_file_size, ad_detail_file_name, ad_detail_file_duration,cpa_id
</sql> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long"> <select id="getById" resultMap="BaseResultMap" parameterType="Long">
...@@ -127,7 +129,8 @@ ...@@ -127,7 +129,8 @@
s.ad_form_link, s.ad_form_link,
s.ad_detail_file_size, s.ad_detail_file_size,
s.ad_detail_file_name, s.ad_detail_file_name,
s.ad_detail_file_duration s.ad_detail_file_duration,
s.cpa_id
FROM FROM
advertising_distribution_book b, advertising_distribution_book b,
advertising_space s advertising_space s
...@@ -173,7 +176,8 @@ ...@@ -173,7 +176,8 @@
s.ad_form_link, s.ad_form_link,
s.ad_detail_file_size, s.ad_detail_file_size,
s.ad_detail_file_name, s.ad_detail_file_name,
s.ad_detail_file_duration s.ad_detail_file_duration,
s.cpa_id
FROM FROM
advertising_distribution_book b, advertising_distribution_book b,
advertising_space s advertising_space s
...@@ -211,9 +215,15 @@ ...@@ -211,9 +215,15 @@
<if test="filterTest == 1"> <if test="filterTest == 1">
AND (is_test = 0 OR is_test IS NULL) AND (is_test = 0 OR is_test IS NULL)
</if> </if>
<if test="adPosition !=null"> <if test="adPosition != null">
AND ad_position = #{adPosition} AND ad_position = #{adPosition}
</if> </if>
<if test="type != null and type == 'WECHAT_GROUP'.toString()">
AND ad_position = 'WECHAT_GROUP_MSG'
</if>
<if test="type != null and type == 'BOOK'.toString()">
AND ad_position != 'WECHAT_GROUP_MSG' OR ad_position IS NULL
</if>
order by order by
create_time desc create_time desc
</select> </select>
...@@ -332,7 +342,8 @@ ...@@ -332,7 +342,8 @@
ad_detail_file_pilot_url, ad_detail_file_pilot_finish_tip, ad_detail_file_pilot_url, ad_detail_file_pilot_finish_tip,
ad_form_mobile_check, ad_form_remark, ad_form_button, ad_form_mobile_check, ad_form_remark, ad_form_button,
ad_form_link,ad_detail_file_size, ad_detail_file_name, ad_form_link,ad_detail_file_size, ad_detail_file_name,
ad_detail_file_duration ad_detail_file_duration,
cpa_id
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{adName,jdbcType=VARCHAR}, #{adName,jdbcType=VARCHAR},
...@@ -355,7 +366,8 @@ ...@@ -355,7 +366,8 @@
#{adDetailFilePilotUrl,jdbcType=VARCHAR}, #{adDetailFilePilotFinishTip,jdbcType=VARCHAR}, #{adDetailFilePilotUrl,jdbcType=VARCHAR}, #{adDetailFilePilotFinishTip,jdbcType=VARCHAR},
#{adFormMobileCheck,jdbcType=BIT}, #{adFormRemark,jdbcType=VARCHAR}, #{adFormButton,jdbcType=VARCHAR}, #{adFormMobileCheck,jdbcType=BIT}, #{adFormRemark,jdbcType=VARCHAR}, #{adFormButton,jdbcType=VARCHAR},
#{adFormLink,jdbcType=VARCHAR}, #{adDetailFileSize}, #{adDetailFileName}, #{adFormLink,jdbcType=VARCHAR}, #{adDetailFileSize}, #{adDetailFileName},
#{adDetailFileDuration} #{adDetailFileDuration},
#{cpaId}
</trim> </trim>
</insert> </insert>
...@@ -450,6 +462,9 @@ ...@@ -450,6 +462,9 @@
<if test="adDetailFileDuration != null"> <if test="adDetailFileDuration != null">
ad_detail_file_duration = #{adDetailFileDuration}, ad_detail_file_duration = #{adDetailFileDuration},
</if> </if>
<if test="cpaId != null">
cpa_id = #{cpaId},
</if>
</set> </set>
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</update> </update>
...@@ -500,4 +515,31 @@ ...@@ -500,4 +515,31 @@
WHERE WHERE
master_id = #{masterId} master_id = #{masterId}
</select> </select>
<select id="getAdIdsByCPAId" resultType="long" parameterType="long">
select
id
from
advertising_space
WHERE
cpa_id = #{cpaId,jdbcType=BIGINT}
</select>
<update id="updateCPAId" parameterType="map">
UPDATE advertising_space
SET cpa_id = #{cpaId,jdbcType=BIGINT}
WHERE
id = #{id}
</update>
<select id="getCPASpaceList" resultMap="BaseResultMap">
SELECT
s.*
FROM
advertising_space s
LEFT JOIN advertising_settlement_method m ON s.id = m.ad_id
WHERE
m.settlement_method = 'CPA' AND cpa_id IS NULL
</select>
</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" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.advertising.dao.impl.AdvertisingWechatMsgDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingWechatMsg" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="ad_id" property="adId" jdbcType="BIGINT" />
<result column="ad_position_mode" property="adPositionMode" jdbcType="VARCHAR" />
<result column="ad_link" property="adLink" jdbcType="VARCHAR" />
<result column="ad_title" property="adTitle" jdbcType="VARCHAR" />
<result column="ad_slogan" property="adSlogan" jdbcType="VARCHAR" />
<result column="ad_pic" property="adPic" jdbcType="VARCHAR" />
<result column="seq" property="seq" jdbcType="INTEGER" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
id, ad_id, ad_position_mode, ad_link, ad_title, ad_slogan, ad_pic, seq, create_time, update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingWechatMsg" useGeneratedKeys="true" keyProperty="id">
insert into advertising_wechat_msg (ad_id, ad_position_mode,
ad_link, ad_title, ad_slogan,
ad_pic, seq, create_time, update_time
)
values (#{adId,jdbcType=BIGINT}, #{adPositionMode,jdbcType=VARCHAR},
#{adLink,jdbcType=VARCHAR}, #{adTitle,jdbcType=VARCHAR}, #{adSlogan,jdbcType=VARCHAR},
#{adPic,jdbcType=VARCHAR},#{seq},NOW(), NOW()
)
</insert>
<delete id="deleteById" parameterType="java.lang.Long" >
delete from advertising_wechat_msg
where id = #{id,jdbcType=BIGINT}
</delete>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingWechatMsg" >
update advertising_wechat_msg
set
ad_id = #{adId,jdbcType=BIGINT},
ad_position_mode = #{adPositionMode,jdbcType=VARCHAR},
ad_link = #{adLink,jdbcType=VARCHAR},
ad_title = #{adTitle,jdbcType=VARCHAR},
ad_slogan = #{adSlogan,jdbcType=VARCHAR},
ad_pic = #{adPic,jdbcType=VARCHAR},
update_time = NOW()
where id = #{id,jdbcType=BIGINT}
</update>
<insert id="batchInsert" useGeneratedKeys="true" parameterType="java.util.List" keyProperty="id">
insert into advertising_wechat_msg (ad_id, ad_position_mode,
ad_link, ad_title, ad_slogan,
ad_pic, seq, create_time, update_time
)
values
<foreach collection="list" item="item" index="index" separator="," >
(#{item.adId,jdbcType=BIGINT}, #{item.adPositionMode,jdbcType=VARCHAR},
#{item.adLink,jdbcType=VARCHAR}, #{item.adTitle,jdbcType=VARCHAR}, #{item.adSlogan,jdbcType=VARCHAR},
#{item.adPic,jdbcType=VARCHAR}, #{item.seq}, NOW(), NOW()
)
</foreach>
</insert>
<select id="getByAdId" resultMap="BaseResultMap" parameterType="long">
SELECT <include refid="Base_Column_List"></include>
FROM advertising_wechat_msg WHERE ad_id = #{adId,jdbcType=BIGINT}
order by seq asc
</select>
<delete id="deleteByAdId" parameterType="java.lang.Long" >
delete from advertising_wechat_msg
where ad_id = #{adId,jdbcType=BIGINT}
</delete>
</mapper>
\ No newline at end of file
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