Commit 0b3e0250 by 阮思源

Merge branch 'master' of http://192.168.89.173/rays/pcloud-book into mymaster

parents 5ffb6ccf a9e36b1a
......@@ -515,6 +515,16 @@ public class BookDto extends BaseDto {
*/
private String secondTypeCode;
/**
* 报名量
*/
private Long registerNum;
/**
* 报名率
*/
private BigDecimal registerRate;
public String getQrRemark() {
return qrRemark;
}
......@@ -1311,6 +1321,22 @@ public class BookDto extends BaseDto {
this.depLabelId = depLabelId;
}
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;
}
@Override
public String toString() {
return "BookDto{" +
......@@ -1401,18 +1427,20 @@ public class BookDto extends BaseDto {
", clickRate=" + clickRate +
", officialAccountsName='" + officialAccountsName + '\'' +
", uniqueNumber='" + uniqueNumber + '\'' +
", isBookGroup=" + isBookGroup +
", bookGroupId=" + bookGroupId +
", groupQrcodeUrl='" + groupQrcodeUrl + '\'' +
", groupQrcodeName='" + groupQrcodeName + '\'' +
", depLabelId=" + depLabelId +
", classifyCount=" + classifyCount +
", groupPersonCount=" + groupPersonCount +
", groupCount=" + groupCount +
", totalIncome=" + totalIncome +
", isBookGroup=" + isBookGroup +
", groupQrcodeLink='" + groupQrcodeLink + '\'' +
", secondTempletId=" + secondTempletId +
", secondTypeCode='" + secondTypeCode + '\'' +
", depLabelId=" + depLabelId +
", registerNum=" + registerNum +
", registerRate=" + registerRate +
'}';
}
}
......@@ -69,6 +69,10 @@ public interface WeixinQrcodeService {
@GetMapping("listAvailableGroupByPage")
ResponseEntity<ResponseDto<List<BookWxQrcodeDTO>>> listAvailableGroupByPage(@RequestParam("currentPage") Integer currentPage, @RequestParam("numPerPage") Integer numPerPage);
@ApiOperation("分页获取人数超过10人的可用微信群")
@GetMapping("listOver10AvailableGroupByPage")
ResponseEntity<ResponseDto<List<BookWxQrcodeDTO>>> listOver10AvailableGroupByPage(@RequestParam("currentPage") Integer currentPage, @RequestParam("numPerPage") Integer numPerPage);
@ApiOperation("所有群邀请新的机器人小号(有接收消息机器人存在好友关系)")
@GetMapping("inviteNewRobot")
void inviteNewRobot(@RequestParam("wxUserId") String wxUserId);
......
......@@ -2,6 +2,7 @@ package com.pcloud.book;
import com.alibaba.druid.pool.DruidDataSource;
import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.common.core.constant.MQQueueConstant;
import com.pcloud.common.core.constant.MQTopicProducer;
import com.pcloud.common.core.mq.RabbitMQFactory;
......@@ -182,4 +183,9 @@ public class BookApplication {
public Binding updateProductInfoBind() {
return RabbitMQFactory.bindingExchange(updateProductInfoQueue(), MQTopicProducer.PRODUCT_UPDATE);
}
@Bean
public Queue convert2BookQueue(){
return RabbitMQFactory.queueBuilder(MQQueueConstant.CONVERT_TO_BOOK);
}
}
......@@ -367,6 +367,29 @@ public interface AdvertisingSpaceBiz {
* @throws BizException
*/
AdGroupQrcodeDTO getGroupQrcodeInfo(Long qrcodeId) throws BizException;
/**
*获得剪切的音视频
* @param fileUrl
* @param fileText
* @param startTime
* @param endTime
* @param duration
* @return
*/
public String getCutUrl(String fileUrl, String fileText, Double startTime, Double endTime, Double duration);
/**
* 未转码的文件
* @return
*/
public List<AdvertisingSpace> getUnConvertFile(String adDetailFileId);
/**
* 更新文件路径
* @param filelist
* @param fileUrl
*/
void updateFile(List<AdvertisingSpace> filelist, String fileUrl);
/**
* 获得关闭广告位的出版id
* @return
......
package com.pcloud.book.advertising.biz;
import com.pcloud.book.advertising.dto.BmRegisterDTO;
import com.pcloud.book.advertising.dto.OptionType;
import com.pcloud.book.advertising.entity.AdvertisingBmOption;
import com.pcloud.book.advertising.entity.AdvertisingBmRegister;
import com.pcloud.common.exceptions.BizException;
import java.util.List;
import java.util.Map;
/**
* @描述:报名
* @作者:zhuyajie
* @创建时间:20:03 2019/6/27
* @版本:1.0
*/
public interface BmBiz {
/**
* 获取选项类型
* @return
* @throws BizException
*/
List<OptionType> getOptionType() throws BizException;
/**
* 获取选项数据类型
* @return
* @throws BizException
*/
List<OptionType> getOptionDataType() throws BizException;
/**
* 新增选项列表
* @param advertisingBmOptionList
*/
void addOptionList(List<AdvertisingBmOption> advertisingBmOptionList,Long adId);
/**
* 新增选项配置
* @param bmOption 选项实体
* @return
* @throws BizException
*/
Long addOption(AdvertisingBmOption bmOption) throws BizException;
/**
* 根据应用ID获取选项列表信息
* @param adId 选项实体
* @return
* @throws BizException
*/
List<AdvertisingBmOption> getByAdId(Long adId);
/**
* 修改选项配置
* @param bmOption 选项实体
* @return
* @throws BizException
*/
void modifyOption(AdvertisingBmOption bmOption) throws BizException;
/**
* 删除选项
* @param adId
*/
void deleteByAdId(Long adId);
/**
* 用户提交表单
* @param bmRegister
* @param wechatUserId
* @return
*/
Long userSubmit(AdvertisingBmRegister bmRegister, Long wechatUserId, Long qrcodeId);
/**
* 微信端获取个人报名详情
* @param adId 应用ID
* @param wechatUserId 用户ID
* @return
* @throws BizException
*/
List<BmRegisterDTO> getDetail4Wechat(Long adId, Long wechatUserId, Long qrcodeId) throws BizException;
/**
* 获取报名次数
* @param adId
* @return
*/
public Long getRegisterCountByAdId(Long adId, String statisMonth);
/**
* 获取微信群报名次数
* @param adId
* @param statisMonth
* @param qrcodeId
* @return
*/
public Long getRegisterCountByAdIdQrcodeId(Long adId, String statisMonth, Long qrcodeId);
/**
* 获取报名次数
* @param adIdList
* @return
*/
Long getRegisterCountByAdIds(List<Long> adIdList);
/**
* 导出报名表单
* @param adId
*/
Map<String, Object> exportRegisterInfoByAdId(Long adId,Long qrcodeId);
}
package com.pcloud.book.advertising.dao;
import java.util.List;
import java.util.Map;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* Description 广告位数据访问层接口
* @author PENG
......@@ -49,6 +50,18 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> {
List<AdvertisingSpaceDTO> getDTOByBookId(Map<String, Object> paramMap);
/**
* 未转码的文件
* @return
*/
public List<AdvertisingSpace> getUnConvertFile(String adDetailFileId);
/**
* 根据fileId更新
* @param advertisingSpace
*/
public void updateByFileId(AdvertisingSpace advertisingSpace);
/**
* 更新测试状态
* @param isTest
* @param id
......@@ -59,4 +72,11 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> {
* 根据id集合获取
*/
List<AdvertisingSpace> getByIds(List<Long> ids);
/**
* 获取广告id列表
* @param id
* @return
*/
List<Long> getAdIdsByMasterId(Long id);
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingBmOption;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @描述:报名选项
* @作者:zhuyajie
* @创建时间:20:05 2019/6/27
* @版本:1.0
*/
public interface BmOptionDao extends BaseDao<AdvertisingBmOption> {
/**
* 获取报名列表
* @param adId
* @return
*/
List<AdvertisingBmOption> getByAdId(Long adId);
/**
* 批量删除
* @param optionIds
*/
void deleteByIds(List<Long> optionIds);
/**
* 根据广告id获取选项id列表
* @param adId
* @return
*/
List<Long> getOptionIdsByAdId(Long adId);
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingBmOptionItem;
import com.pcloud.common.core.dao.BaseDao;
/**
* @描述:报名选项清单
* @作者:zhuyajie
* @创建时间:20:06 2019/6/27
* @版本:1.0
*/
public interface BmOptionItemDao extends BaseDao<AdvertisingBmOptionItem> {
/**
* 根据选项ID删除选项清单
* @param optionId 选项ID
* @return
*/
long deleteByOptionId(Long optionId);
/**
* 获取选项值
* @param optionItemId
* @return
*/
String getValueById(Long optionItemId);
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.dto.BmRegisterDTO;
import com.pcloud.book.advertising.entity.AdvertisingBmRegister;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* @描述:报名记录
* @作者:zhuyajie
* @创建时间:20:06 2019/6/27
* @版本:1.0
*/
public interface BmRegisterDao extends BaseDao<AdvertisingBmRegister> {
/**
* 获取用户报名信息
* @param paramMap
* @return
*/
List<BmRegisterDTO> getDetailByUser(Map<String, Object> paramMap);
/**
* 获取报名数量
* @param adId
* @return
*/
Long getRegisterCountByAdId(Long adId, String statisMonth);
/**
* 报名数量
* @param adIdList
* @return
*/
Long getRegisterCountByAdIds(List<Long> adIdList);
/**
* 查报名信息
* @param adId
* @return
*/
List<BmRegisterDTO> exportRegisterInfoById(Long adId, Long qrcodeId);
/**
* 获取微信群报名次数
* @param adId
* @param statisMonth
* @param qrcodeId
* @return
*/
Long getRegisterCountByAdIdQrcodeId(Long adId, String statisMonth, Long qrcodeId);
}
package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingBmRegisterItem;
import com.pcloud.common.core.dao.BaseDao;
/**
* @描述:报名选项记录
* @作者:zhuyajie
* @创建时间:20:05 2019/6/27
* @版本:1.0
*/
public interface BmRegisterItemDao extends BaseDao<AdvertisingBmRegisterItem> {
}
......@@ -60,6 +60,16 @@ public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> imple
}
@Override
public List<AdvertisingSpace> getUnConvertFile(String adDetailFileId) {
return getSessionTemplate().selectList(getStatement("getUnConvertFile"),adDetailFileId);
}
@Override
public void updateByFileId(AdvertisingSpace advertisingSpace) {
getSessionTemplate().update(getStatement("updateByFileId"),advertisingSpace);
}
@Override
public void updateTestStatus(Boolean isTest, Long id) {
Map<String, Object> map = new HashMap<>();
map.put("id", id);
......@@ -73,4 +83,9 @@ public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> imple
map.put("ids", ids);
return getSessionTemplate().selectList(getStatement("getByIds"), map);
}
@Override
public List<Long> getAdIdsByMasterId(Long masterId) {
return getSessionTemplate().selectList(getStatement("getAdIdsByMasterId"),masterId);
}
}
package com.pcloud.book.advertising.dao.impl;
import com.pcloud.book.advertising.dao.BmOptionDao;
import com.pcloud.book.advertising.entity.AdvertisingBmOption;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @描述:报名选项
* @作者:zhuyajie
* @创建时间:20:14 2019/6/27
* @版本:1.0
*/
@Component("bmOptionDao")
public class BmOptionDaoImpl extends BaseDaoImpl<AdvertisingBmOption> implements BmOptionDao {
@Override
public List<AdvertisingBmOption> getByAdId(Long adId) {
return getSessionTemplate().selectList(getStatement("getByAdId"), adId);
}
@Override
public void deleteByIds(List<Long> optionIds) {
getSessionTemplate().delete(getStatement("deleteByIds"), optionIds);
}
@Override
public List<Long> getOptionIdsByAdId(Long adId) {
return getSessionTemplate().selectList(getStatement("getOptionIdsByAdId"), adId);
}
}
package com.pcloud.book.advertising.dao.impl;
import com.pcloud.book.advertising.dao.BmOptionItemDao;
import com.pcloud.book.advertising.entity.AdvertisingBmOptionItem;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
/**
* @描述:报名选项清单
* @作者:zhuyajie
* @创建时间:20:16 2019/6/27
* @版本:1.0
*/
@Component("bmOptionItemDao")
public class BmOptionItemDaoImpl extends BaseDaoImpl<AdvertisingBmOptionItem> implements BmOptionItemDao{
/**
* 根据选项ID删除选项清单
*/
@Override
public long deleteByOptionId(Long optionId) {
return super.getSqlSession().delete(getStatement("deleteByOptionId"), optionId);
}
@Override
public String getValueById(Long optionItemId) {
return getSessionTemplate().selectOne(getStatement("getValueById"),optionItemId);
}
}
package com.pcloud.book.advertising.dao.impl;
import com.pcloud.book.advertising.dao.BmRegisterDao;
import com.pcloud.book.advertising.dto.BmRegisterDTO;
import com.pcloud.book.advertising.entity.AdvertisingBmRegister;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @描述:报名记录
* @作者:zhuyajie
* @创建时间:20:06 2019/6/27
* @版本:1.0
*/
@Component("bmRegisterDao")
public class BmRegisterDaoImpl extends BaseDaoImpl<AdvertisingBmRegister> implements BmRegisterDao {
@Override
public List<BmRegisterDTO> getDetailByUser(Map<String, Object> paramMap) {
return getSessionTemplate().selectList(getStatement("getDetailByUser"),paramMap);
}
@Override
public Long getRegisterCountByAdId(Long adId,String statisMonth) {
Map<String,Object> map = new HashMap<>();
map.put("adId",adId);
map.put("statisMonth",statisMonth);
return getSessionTemplate().selectOne(getStatement("getRegisterCountByAdId"),map);
}
@Override
public Long getRegisterCountByAdIds(List<Long> adIdList) {
return getSessionTemplate().selectOne(getStatement("getRegisterCountByAdIds"),adIdList);
}
@Override
public List<BmRegisterDTO> exportRegisterInfoById(Long adId, Long qrcodeId) {
Map<String, Object> map = new HashMap<>();
map.put("adId", adId);
map.put("qrcodeId", qrcodeId);
return getSessionTemplate().selectList(getStatement("exportRegisterInfoById"), map);
}
@Override
public Long getRegisterCountByAdIdQrcodeId(Long adId, String statisMonth, Long qrcodeId) {
Map<String,Object> map = new HashMap<>();
map.put("adId",adId);
map.put("statisMonth",statisMonth);
map.put("qrcodeId",qrcodeId);
return getSessionTemplate().selectOne(getStatement("getRegisterCountByAdIdQrcodeId"),map);
}
}
package com.pcloud.book.advertising.dao.impl;
import com.pcloud.book.advertising.dao.BmRegisterItemDao;
import com.pcloud.book.advertising.entity.AdvertisingBmRegisterItem;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
/**
* @描述:报名选项记录
* @作者:zhuyajie
* @创建时间:20:19 2019/6/27
* @版本:1.0
*/
@Component("bmRegisterItemDao")
public class BmRegisterItemDaoImpl extends BaseDaoImpl<AdvertisingBmRegisterItem> implements BmRegisterItemDao {
}
......@@ -61,6 +61,15 @@ public class AdvertisingMasterDTO extends BaseDto {
* 累积消费
*/
private BigDecimal totalIncome;
/**
* 报名量
*/
private Long registerNum;
/**
* 报名率
*/
private BigDecimal registerRate;
public Long getId() {
return id;
......@@ -144,6 +153,22 @@ public class AdvertisingMasterDTO extends BaseDto {
this.totalIncome = totalIncome;
}
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;
}
@Override
public String toString() {
return "AdvertisingMasterDTO{" +
......@@ -157,6 +182,8 @@ public class AdvertisingMasterDTO extends BaseDto {
", clickNum=" + clickNum +
", clickRate=" + clickRate +
", totalIncome=" + totalIncome +
"} " + super.toString();
", registerNum=" + registerNum +
", registerRate=" + registerRate +
'}';
}
}
\ No newline at end of file
......@@ -2,7 +2,10 @@ package com.pcloud.book.advertising.dto;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.advertising.entity.AdvertisingBmOption;
import com.pcloud.common.dto.BaseDto;
/**
......@@ -194,6 +197,93 @@ public class AdvertisingSpaceDTO extends BaseDto {
* 运营ID
*/
private Long channelId;
/**
*广告详情方式
*/
private String adDetailMode;
/**
*广告详情封面
*/
private String adDetailCoverPic;
/**
*广告详情优惠图
*/
private String adDetailWelfarePic;
/**
*广告详情介绍
*/
private String adDetailInfo;
/**
*广告详情文件ID
*/
private String adDetailFileId;
/**
*广告详情文件转码状态
*/
private Integer adDetailFileConvertState;
/**
*广告详情文件路径
*/
private String adDetailFileUrl;
/**
*广告详情文件标题
*/
private String adDetailTitle;
/**
*广告详情文件试播秒数
*/
private Long adDetailFilePilotSecond;
/**
*广告详情文件试播路径
*/
private String adDetailFilePilotUrl;
/**
*广告详情文件试播结束提示
*/
private String adDetailFilePilotFinishTip;
/**
*广告报名表单是否校验手机号
*/
private Boolean adFormMobileCheck;
/**
*广告报名表单备注
*/
private String adFormRemark;
/**
*广告报名表单提交按钮
*/
private String adFormButton;
/**
*广告报名表单跳转链接
*/
private String adFormLink;
/**
* 报名选项设置
*/
private List<AdvertisingBmOption> advertisingBmOptionList;
/**
* 报名量
*/
private Long registerNum;
/**
* 报名率
*/
private BigDecimal registerRate;
/**
* 广告详情文件大小
*/
private Long adDetailFileSize;
/**
* 广告详情文件名称
*/
private String adDetailFileName;
/**
* 广告详情文件时长
*/
private Long adDetailFileDuration;
public Long getId() {
return id;
......@@ -478,6 +568,125 @@ public class AdvertisingSpaceDTO extends BaseDto {
this.clickUserNum = clickUserNum;
}
public String getAdDetailMode() {
return adDetailMode;
}
public void setAdDetailMode(String adDetailMode) {
this.adDetailMode = adDetailMode;
}
public String getAdDetailCoverPic() {
return adDetailCoverPic;
}
public void setAdDetailCoverPic(String adDetailCoverPic) {
this.adDetailCoverPic = adDetailCoverPic;
}
public String getAdDetailWelfarePic() {
return adDetailWelfarePic;
}
public void setAdDetailWelfarePic(String adDetailWelfarePic) {
this.adDetailWelfarePic = adDetailWelfarePic;
}
public String getAdDetailInfo() {
return adDetailInfo;
}
public void setAdDetailInfo(String adDetailInfo) {
this.adDetailInfo = adDetailInfo;
}
public String getAdDetailFileId() {
return adDetailFileId;
}
public void setAdDetailFileId(String adDetailFileId) {
this.adDetailFileId = adDetailFileId;
}
public Integer getAdDetailFileConvertState() {
return adDetailFileConvertState;
}
public void setAdDetailFileConvertState(Integer adDetailFileConvertState) {
this.adDetailFileConvertState = adDetailFileConvertState;
}
public String getAdDetailFileUrl() {
return adDetailFileUrl;
}
public void setAdDetailFileUrl(String adDetailFileUrl) {
this.adDetailFileUrl = adDetailFileUrl;
}
public String getAdDetailTitle() {
return adDetailTitle;
}
public void setAdDetailTitle(String adDetailTitle) {
this.adDetailTitle = adDetailTitle;
}
public Long getAdDetailFilePilotSecond() {
return adDetailFilePilotSecond;
}
public void setAdDetailFilePilotSecond(Long adDetailFilePilotSecond) {
this.adDetailFilePilotSecond = adDetailFilePilotSecond;
}
public String getAdDetailFilePilotUrl() {
return adDetailFilePilotUrl;
}
public void setAdDetailFilePilotUrl(String adDetailFilePilotUrl) {
this.adDetailFilePilotUrl = adDetailFilePilotUrl;
}
public String getAdDetailFilePilotFinishTip() {
return adDetailFilePilotFinishTip;
}
public void setAdDetailFilePilotFinishTip(String adDetailFilePilotFinishTip) {
this.adDetailFilePilotFinishTip = adDetailFilePilotFinishTip;
}
public Boolean getAdFormMobileCheck() {
return adFormMobileCheck;
}
public void setAdFormMobileCheck(Boolean adFormMobileCheck) {
this.adFormMobileCheck = adFormMobileCheck;
}
public String getAdFormRemark() {
return adFormRemark;
}
public void setAdFormRemark(String adFormRemark) {
this.adFormRemark = adFormRemark;
}
public String getAdFormButton() {
return adFormButton;
}
public void setAdFormButton(String adFormButton) {
this.adFormButton = adFormButton;
}
public String getAdFormLink() {
return adFormLink;
}
public void setAdFormLink(String adFormLink) {
this.adFormLink = adFormLink;
}
public Boolean getIsTest() {
return isTest;
......@@ -487,6 +696,54 @@ public class AdvertisingSpaceDTO extends BaseDto {
this.isTest = isTest;
}
public List<AdvertisingBmOption> getAdvertisingBmOptionList() {
return advertisingBmOptionList;
}
public void setAdvertisingBmOptionList(List<AdvertisingBmOption> advertisingBmOptionList) {
this.advertisingBmOptionList = advertisingBmOptionList;
}
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 getAdDetailFileSize() {
return adDetailFileSize;
}
public void setAdDetailFileSize(Long adDetailFileSize) {
this.adDetailFileSize = adDetailFileSize;
}
public String getAdDetailFileName() {
return adDetailFileName;
}
public void setAdDetailFileName(String adDetailFileName) {
this.adDetailFileName = adDetailFileName;
}
public Long getAdDetailFileDuration() {
return adDetailFileDuration;
}
public void setAdDetailFileDuration(Long adDetailFileDuration) {
this.adDetailFileDuration = adDetailFileDuration;
}
@Override
public String toString() {
return "AdvertisingSpaceDTO{" +
......@@ -526,6 +783,27 @@ public class AdvertisingSpaceDTO extends BaseDto {
", agentName='" + agentName + '\'' +
", adviserId=" + adviserId +
", channelId=" + channelId +
"} " + super.toString();
", adDetailMode='" + adDetailMode + '\'' +
", adDetailCoverPic='" + adDetailCoverPic + '\'' +
", adDetailWelfarePic='" + adDetailWelfarePic + '\'' +
", adDetailInfo='" + adDetailInfo + '\'' +
", adDetailFileId='" + adDetailFileId + '\'' +
", adDetailFileConvertState=" + adDetailFileConvertState +
", adDetailFileUrl='" + adDetailFileUrl + '\'' +
", adDetailTitle='" + adDetailTitle + '\'' +
", adDetailFilePilotSecond=" + adDetailFilePilotSecond +
", adDetailFilePilotUrl='" + adDetailFilePilotUrl + '\'' +
", adDetailFilePilotFinishTip='" + adDetailFilePilotFinishTip + '\'' +
", adFormMobileCheck=" + adFormMobileCheck +
", adFormRemark='" + adFormRemark + '\'' +
", adFormButton='" + adFormButton + '\'' +
", adFormLink='" + adFormLink + '\'' +
", advertisingBmOptionList=" + advertisingBmOptionList +
", registerNum=" + registerNum +
", registerRate=" + registerRate +
", adDetailFileSize=" + adDetailFileSize +
", adDetailFileName='" + adDetailFileName + '\'' +
", adDetailFileDuration=" + adDetailFileDuration +
'}';
}
}
\ 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 java.util.Date;
import java.util.List;
/**
* @描述:用户报名信息
* @作者:zhuyajie
* @创建时间:20:19 2019/6/28
* @版本:1.0
*/
public class BmRegisterDTO extends BaseDto{
private Long id;
/**
*用户id
*/
private Long userId;
/**
*广告id
*/
private Long adId;
/**
*用户昵称
*/
private String nickName;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
/**
* 报名选项信息
*/
private List<BmRegisterItemDTO> registerItemDTOS;
/**
* 群二维码id
*/
private Long qrcodeId;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public List<BmRegisterItemDTO> getRegisterItemDTOS() {
return registerItemDTOS;
}
public void setRegisterItemDTOS(List<BmRegisterItemDTO> registerItemDTOS) {
this.registerItemDTOS = registerItemDTOS;
}
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
@Override
public String toString() {
return "BmRegisterDTO{" +
"id=" + id +
", userId=" + userId +
", adId=" + adId +
", nickName='" + nickName + '\'' +
", createTime=" + createTime +
", registerItemDTOS=" + registerItemDTOS +
", qrcodeId=" + qrcodeId +
'}';
}
}
package com.pcloud.book.advertising.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
import java.util.Date;
/**
* @描述:报名选项信息
* @作者:zhuyajie
* @创建时间:20:22 2019/6/28
* @版本:1.0
*/
public class BmRegisterItemDTO extends BaseDto{
/**
*报名记录ID
*/
private Long registerId;
/**
*选项ID
*/
private Long optionId;
/**
*选项清单ID
*/
private Long optionItemId;
/**
*选项值
*/
private String optionValue;
public Long getRegisterId() {
return registerId;
}
public void setRegisterId(Long registerId) {
this.registerId = registerId;
}
public Long getOptionId() {
return optionId;
}
public void setOptionId(Long optionId) {
this.optionId = optionId;
}
public Long getOptionItemId() {
return optionItemId;
}
public void setOptionItemId(Long optionItemId) {
this.optionItemId = optionItemId;
}
public String getOptionValue() {
return optionValue;
}
public void setOptionValue(String optionValue) {
this.optionValue = optionValue;
}
@Override
public String toString() {
return "BmRegisterItemDTO{" +
"registerId=" + registerId +
", optionId=" + optionId +
", optionItemId=" + optionItemId +
", optionValue='" + optionValue + '\'' +
'}';
}
}
package com.pcloud.book.advertising.dto;
import java.io.Serializable;
/**
*
* @ClassName: OptionType
* @Description: 选项类型
* @author Michael
* @date 2017年2月17日 下午12:50:47
*
*/
public class OptionType implements Serializable{
private static final long serialVersionUID = -3507316325248166878L;
/**
* 选项编码
*/
private String value;
/**
* 选项文字
*/
private String text;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public OptionType(String value, String text) {
super();
this.value = value;
this.text = text;
}
public OptionType() {
}
@Override
public String toString() {
return "OptionType [value=" + value + ", text=" + text + "]";
}
}
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;
/**
* 报表选项
*/
public class AdvertisingBmOption extends BaseEntity{
/**
*广告id
*/
private Long adId;
/**
*排序值
*/
private Long seq;
/**
*选项名称
*/
private String itemTitle;
/**
*选项描述
*/
private String itemDesc;
/**
*选项类型
*/
private String itemInputType;
/**
*选项数据类型
*/
private String itemDataType;
/**
*是否必填
*/
private Boolean required;
private Long createUser;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
private Long updateUser;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date updateTime;
/**
* 选项列表
*/
private List<AdvertisingBmOptionItem> optionItem;
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public Long getSeq() {
return seq;
}
public void setSeq(Long seq) {
this.seq = seq;
}
public String getItemTitle() {
return itemTitle;
}
public void setItemTitle(String itemTitle) {
this.itemTitle = itemTitle == null ? null : itemTitle.trim();
}
public String getItemDesc() {
return itemDesc;
}
public void setItemDesc(String itemDesc) {
this.itemDesc = itemDesc == null ? null : itemDesc.trim();
}
public String getItemInputType() {
return itemInputType;
}
public void setItemInputType(String itemInputType) {
this.itemInputType = itemInputType == null ? null : itemInputType.trim();
}
public String getItemDataType() {
return itemDataType;
}
public void setItemDataType(String itemDataType) {
this.itemDataType = itemDataType == null ? null : itemDataType.trim();
}
public Boolean getRequired() {
return required;
}
public void setRequired(Boolean required) {
this.required = required;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public List<AdvertisingBmOptionItem> getOptionItem() {
return optionItem;
}
public void setOptionItem(List<AdvertisingBmOptionItem> optionItem) {
this.optionItem = optionItem;
}
@Override
public String toString() {
return "AdvertisingBmOption{" +
"adId=" + adId +
", seq=" + seq +
", itemTitle='" + itemTitle + '\'' +
", itemDesc='" + itemDesc + '\'' +
", itemInputType='" + itemInputType + '\'' +
", itemDataType='" + itemDataType + '\'' +
", required=" + required +
", createUser=" + createUser +
", createTime=" + createTime +
", updateUser=" + updateUser +
", updateTime=" + updateTime +
", optionItem=" + optionItem +
'}';
}
}
\ 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 AdvertisingBmOptionItem extends BaseEntity{
/**
*选项ID
*/
private Long optionId;
/**
*父选项清单ID
*/
private Long parentId;
/**
*选项文字
*/
private String text;
/**
*选项图片url
*/
private String imgUrl;
private Long createUser;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
private Long updateUser;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date updateTime;
public Long getOptionId() {
return optionId;
}
public void setOptionId(Long optionId) {
this.optionId = optionId;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text == null ? null : text.trim();
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl == null ? null : imgUrl.trim();
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "AdvertisingBmOptionItem{" +
"optionId=" + optionId +
", parentId=" + parentId +
", text='" + text + '\'' +
", imgUrl='" + imgUrl + '\'' +
", createUser=" + createUser +
", createTime=" + createTime +
", updateUser=" + updateUser +
", updateTime=" + updateTime +
'}';
}
}
\ 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;
/**
* 报名记录
*/
public class AdvertisingBmRegister extends BaseEntity{
/**
*用户id
*/
private Long userId;
/**
*广告id
*/
private Long adId;
/**
*用户昵称
*/
private String nickName;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
/**
* 报名选项信息
*/
private List<AdvertisingBmRegisterItem> bmRegisterItemList;
/**
* 群二维码id
*/
private Long qrcodeId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName == null ? null : nickName.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public List<AdvertisingBmRegisterItem> getBmRegisterItemList() {
return bmRegisterItemList;
}
public void setBmRegisterItemList(List<AdvertisingBmRegisterItem> bmRegisterItemList) {
this.bmRegisterItemList = bmRegisterItemList;
}
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
@Override
public String toString() {
return "AdvertisingBmRegister{" +
"userId=" + userId +
", adId=" + adId +
", nickName='" + nickName + '\'' +
", createTime=" + createTime +
", bmRegisterItemList=" + bmRegisterItemList +
", qrcodeId=" + qrcodeId +
'}';
}
}
\ 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;
/**
* 报名记录选项内容
*/
public class AdvertisingBmRegisterItem extends BaseEntity{
/**
*用户id
*/
private Long userId;
/**
*广告id
*/
private Long adId;
/**
*报名记录ID
*/
private Long registerId;
/**
*选项ID
*/
private Long optionId;
/**
*选项清单ID
*/
private Long optionItemId;
/**
*选项值
*/
private String optionValue;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
/**
* 选项清单IDs,单选多选
*/
private List<Long> optionItemIds;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getAdId() {
return adId;
}
public void setAdId(Long adId) {
this.adId = adId;
}
public Long getRegisterId() {
return registerId;
}
public void setRegisterId(Long registerId) {
this.registerId = registerId;
}
public Long getOptionId() {
return optionId;
}
public void setOptionId(Long optionId) {
this.optionId = optionId;
}
public Long getOptionItemId() {
return optionItemId;
}
public void setOptionItemId(Long optionItemId) {
this.optionItemId = optionItemId;
}
public String getOptionValue() {
return optionValue;
}
public void setOptionValue(String optionValue) {
this.optionValue = optionValue == null ? null : optionValue.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public List<Long> getOptionItemIds() {
return optionItemIds;
}
public void setOptionItemIds(List<Long> optionItemIds) {
this.optionItemIds = optionItemIds;
}
@Override
public String toString() {
return "AdvertisingBmRegisterItem{" +
"userId=" + userId +
", adId=" + adId +
", registerId=" + registerId +
", optionId=" + optionId +
", optionItemId=" + optionItemId +
", optionValue='" + optionValue + '\'' +
", createTime=" + createTime +
", optionItemIds=" + optionItemIds +
'}';
}
}
\ No newline at end of file
......@@ -2,6 +2,8 @@ package com.pcloud.book.advertising.entity;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.pcloud.common.entity.BaseEntity;
/**
......@@ -85,6 +87,71 @@ public class AdvertisingSpace extends BaseEntity {
* advertising_space.is_open (是否打开)
*/
private Boolean isOpen;
/**
*广告详情方式
*/
private String adDetailMode;
/**
*广告详情封面
*/
private String adDetailCoverPic;
/**
*广告详情优惠图
*/
private String adDetailWelfarePic;
/**
*广告详情介绍
*/
private String adDetailInfo;
/**
*广告详情文件ID
*/
private String adDetailFileId;
/**
*广告详情文件转码状态
*/
private Integer adDetailFileConvertState;
/**
*广告详情文件路径
*/
private String adDetailFileUrl;
/**
*广告详情文件标题
*/
private String adDetailTitle;
/**
*广告详情文件试播秒数
*/
private Long adDetailFilePilotSecond;
/**
*广告详情文件试播路径
*/
private String adDetailFilePilotUrl;
/**
*广告详情文件试播结束提示
*/
private String adDetailFilePilotFinishTip;
/**
* 报名选项设置
*/
private List<AdvertisingBmOption> advertisingBmOptionList;
/**
*广告报名表单是否校验手机号
*/
private Boolean adFormMobileCheck;
/**
*广告报名表单备注
*/
private String adFormRemark;
/**
*广告报名表单提交按钮
*/
private String adFormButton;
/**
*广告报名表单跳转链接
*/
private String adFormLink;
/**
* 结算方式
......@@ -96,6 +163,20 @@ public class AdvertisingSpace extends BaseEntity {
*/
private BigDecimal priceEachTime;
/**
* 广告详情文件大小
*/
private Long adDetailFileSize;
/**
* 广告详情文件名称
*/
private String adDetailFileName;
/**
* 广告详情文件时长
*/
private Long adDetailFileDuration;
@Override
public Long getId() {
return id;
......@@ -230,6 +311,125 @@ public class AdvertisingSpace extends BaseEntity {
this.priceEachTime = priceEachTime;
}
public String getAdDetailMode() {
return adDetailMode;
}
public void setAdDetailMode(String adDetailMode) {
this.adDetailMode = adDetailMode;
}
public String getAdDetailCoverPic() {
return adDetailCoverPic;
}
public void setAdDetailCoverPic(String adDetailCoverPic) {
this.adDetailCoverPic = adDetailCoverPic;
}
public String getAdDetailWelfarePic() {
return adDetailWelfarePic;
}
public void setAdDetailWelfarePic(String adDetailWelfarePic) {
this.adDetailWelfarePic = adDetailWelfarePic;
}
public String getAdDetailInfo() {
return adDetailInfo;
}
public void setAdDetailInfo(String adDetailInfo) {
this.adDetailInfo = adDetailInfo;
}
public String getAdDetailFileId() {
return adDetailFileId;
}
public void setAdDetailFileId(String adDetailFileId) {
this.adDetailFileId = adDetailFileId;
}
public Integer getAdDetailFileConvertState() {
return adDetailFileConvertState;
}
public void setAdDetailFileConvertState(Integer adDetailFileConvertState) {
this.adDetailFileConvertState = adDetailFileConvertState;
}
public String getAdDetailFileUrl() {
return adDetailFileUrl;
}
public void setAdDetailFileUrl(String adDetailFileUrl) {
this.adDetailFileUrl = adDetailFileUrl;
}
public String getAdDetailTitle() {
return adDetailTitle;
}
public void setAdDetailTitle(String adDetailTitle) {
this.adDetailTitle = adDetailTitle;
}
public Long getAdDetailFilePilotSecond() {
return adDetailFilePilotSecond;
}
public void setAdDetailFilePilotSecond(Long adDetailFilePilotSecond) {
this.adDetailFilePilotSecond = adDetailFilePilotSecond;
}
public String getAdDetailFilePilotUrl() {
return adDetailFilePilotUrl;
}
public void setAdDetailFilePilotUrl(String adDetailFilePilotUrl) {
this.adDetailFilePilotUrl = adDetailFilePilotUrl;
}
public String getAdDetailFilePilotFinishTip() {
return adDetailFilePilotFinishTip;
}
public void setAdDetailFilePilotFinishTip(String adDetailFilePilotFinishTip) {
this.adDetailFilePilotFinishTip = adDetailFilePilotFinishTip;
}
public Boolean getAdFormMobileCheck() {
return adFormMobileCheck;
}
public void setAdFormMobileCheck(Boolean adFormMobileCheck) {
this.adFormMobileCheck = adFormMobileCheck;
}
public String getAdFormRemark() {
return adFormRemark;
}
public void setAdFormRemark(String adFormRemark) {
this.adFormRemark = adFormRemark;
}
public String getAdFormButton() {
return adFormButton;
}
public void setAdFormButton(String adFormButton) {
this.adFormButton = adFormButton;
}
public String getAdFormLink() {
return adFormLink;
}
public void setAdFormLink(String adFormLink) {
this.adFormLink = adFormLink;
}
public Boolean getIsTest() {
return isTest;
......@@ -239,6 +439,38 @@ public class AdvertisingSpace extends BaseEntity {
this.isTest = isOpen;
}
public List<AdvertisingBmOption> getAdvertisingBmOptionList() {
return advertisingBmOptionList;
}
public void setAdvertisingBmOptionList(List<AdvertisingBmOption> advertisingBmOptionList) {
this.advertisingBmOptionList = advertisingBmOptionList;
}
public Long getAdDetailFileSize() {
return adDetailFileSize;
}
public void setAdDetailFileSize(Long adDetailFileSize) {
this.adDetailFileSize = adDetailFileSize;
}
public String getAdDetailFileName() {
return adDetailFileName;
}
public void setAdDetailFileName(String adDetailFileName) {
this.adDetailFileName = adDetailFileName;
}
public Long getAdDetailFileDuration() {
return adDetailFileDuration;
}
public void setAdDetailFileDuration(Long adDetailFileDuration) {
this.adDetailFileDuration = adDetailFileDuration;
}
@Override
public String toString() {
return "AdvertisingSpace{" +
......@@ -257,8 +489,27 @@ public class AdvertisingSpace extends BaseEntity {
", updateTime=" + updateTime +
", isTest=" + isTest +
", isOpen=" + isOpen +
", adDetailMode='" + adDetailMode + '\'' +
", adDetailCoverPic='" + adDetailCoverPic + '\'' +
", adDetailWelfarePic='" + adDetailWelfarePic + '\'' +
", adDetailInfo='" + adDetailInfo + '\'' +
", adDetailFileId='" + adDetailFileId + '\'' +
", adDetailFileConvertState=" + adDetailFileConvertState +
", adDetailFileUrl='" + adDetailFileUrl + '\'' +
", adDetailTitle='" + adDetailTitle + '\'' +
", adDetailFilePilotSecond=" + adDetailFilePilotSecond +
", adDetailFilePilotUrl='" + adDetailFilePilotUrl + '\'' +
", adDetailFilePilotFinishTip='" + adDetailFilePilotFinishTip + '\'' +
", advertisingBmOptionList=" + advertisingBmOptionList +
", adFormMobileCheck=" + adFormMobileCheck +
", adFormRemark='" + adFormRemark + '\'' +
", adFormButton='" + adFormButton + '\'' +
", adFormLink='" + adFormLink + '\'' +
", settlementMethod='" + settlementMethod + '\'' +
", priceEachTime=" + priceEachTime +
"} " + super.toString();
", adDetailFileSize=" + adDetailFileSize +
", adDetailFileName='" + adDetailFileName + '\'' +
", adDetailFileDuration=" + adDetailFileDuration +
'}';
}
}
\ No newline at end of file
package com.pcloud.book.advertising.enums;
/**
* @描述:广告详情介绍方式
* @作者:zhuyajie
* @创建时间:14:37 2019/6/25
* @版本:1.0
*/
public enum AdDetailModeEnum {
IMG_TEXT("IMG_TEXT","图文介绍"),
AUDIO("AUDIO","音频试听"),
VIDEO("VIDEO","视频试看");
public final String code;
public final String name;
AdDetailModeEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static String getNameByCode(String code) {
AdDetailModeEnum[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3) {
AdDetailModeEnum methodEnum = var1[var3];
if (methodEnum.code.equals(code)) {
return methodEnum.name;
}
}
return null;
}
}
......@@ -34,5 +34,5 @@ public enum SettlementMethodEnum {
public static final String[] SETTLEMENT_METHOD_GATHER = {CPC.code, CPM.code, CPA.code, CPS.code};
public static final String[] SETTLEMENT_METHOD_NEED_PRICE_GATHER = {CPC.code, CPM.code};
public static final String[] SETTLEMENT_METHOD_NEED_PRICE_GATHER = {CPC.code, CPM.code, CPA.code};
}
package com.pcloud.book.advertising.facade;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.dto.TestParamDTO;
import com.pcloud.book.advertising.entity.*;
import com.pcloud.common.dto.ResponseDto;
......@@ -80,6 +81,22 @@ public interface AdvertisingSpaceFacade {
throws PermissionException, BizException, JsonParseException;
/**
* 客户端获取广告位信息
* @param userInfo 用户身份信息
* @param adId 广告位ID
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "客户端获取广告位信息", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "userInfo", value = "用户身份信息", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "adId", value = "广告位ID", required = false, dataType = "Long", paramType = "query")
})
@RequestMapping(value = "getAdInfo4Wechat", method = RequestMethod.GET)
ResponseDto<AdvertisingSpaceDTO> getAdInfo4Wechat(@CookieValue("userInfo") String userInfo, @RequestParam(value = "adId", required = false) Long adId);
/**
* 停用广告位
* @param token 用户身份信息
* @param advertisingSpace 广告位实体
......
package com.pcloud.book.advertising.facade;
import com.pcloud.book.advertising.entity.AdvertisingBmRegister;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
* 报名
*/
@FeignClient(value = "pcloud-service-book", qualifier = "bmFacadeCloud", path = "book/v1.0/bm")
@Api("报名应用FACADE接口类")
public interface BmFacade {
/**
* 获取报名应用选项类型
* @param token 用户身份信息
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取报名应用选项类型",httpMethod = "GET")
@RequestMapping(value = "getOptionType",method = RequestMethod.GET)
ResponseDto<?> getOptionType(@RequestHeader("token") String token)
throws PermissionException, BizException, JsonParseException;
/**
* 获取报名应用选项数据类型
* @param token 用户身份信息
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "获取报名应用选项数据类型",httpMethod = "GET")
@RequestMapping(value = "/getOptionDataType",method = RequestMethod.GET)
ResponseDto<?> getOptionDataType(@RequestHeader("token") String token)
throws PermissionException, BizException, JsonParseException;
/**
* 用户提交表单
* @param userInfo 用户身份信息
* @param bmRegister 用户实体
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
* postman
*/
@ApiOperation(value = "用户提交表单", httpMethod = "POST")
@RequestMapping(value = "/userSubmit4Wechat", method = RequestMethod.POST)
ResponseDto<?> userSubmit4Wechat(@CookieValue("userInfo") String userInfo,
@RequestBody @ApiParam AdvertisingBmRegister bmRegister)
throws PermissionException, BizException, JsonParseException;
/**
* @Title: getDetail4Wechat
* @Description:微信端获取个人报名详情
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "微信端获取个人报名详情", httpMethod = "GET")
@ApiImplicitParam(name = "adId", value = "广告id", dataType = "long", paramType = "query")
@RequestMapping(value = "/getDetail4Wechat", method = RequestMethod.GET)
ResponseDto<?> getDetail4Wechat(@CookieValue("userInfo") String userInfo, @RequestParam(value = "adId") Long adId)
throws PermissionException, BizException, JsonParseException;
/**
* @Description:导出报名信息-广告位
* @return
* @throws PermissionException
* @throws BizException
* @throws JsonParseException
*/
@ApiOperation(value = "导出报名信息",httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "adId",value = "广告位id",required = false,dataType = "Long",paramType = "query"),
@ApiImplicitParam(name = "qrcodeId",value = "群二维码id",required = false,dataType = "Long",paramType = "query")
})
@RequestMapping(value = "/exportRegisterInfoByAdId",method = RequestMethod.GET)
ResponseDto<Map<String, Object>> exportRegisterInfoByAdId(@RequestHeader("token")String token, @RequestParam("adId") Long adId,
@RequestParam(value = "qrcodeId",required = false) Long qrcodeId)
throws PermissionException, BizException, JsonParseException;
}
......@@ -82,6 +82,19 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
}
/**
* 客户端获取广告位信息
*/
@Override
@RequestMapping(value = "getAdInfo4Wechat", method = RequestMethod.GET)
public ResponseDto<AdvertisingSpaceDTO> getAdInfo4Wechat(@CookieValue("userInfo") String userInfo, @RequestParam(value = "adId", required = false) Long adId) {
if (null == adId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
Cookie.getUserInfo(userInfo);
return new ResponseDto<>(advertisingSpaceBiz.get(adId));
}
/**
* 停用广告位
*/
@Override
......
package com.pcloud.book.advertising.facade.impl;
import com.pcloud.book.advertising.biz.BmBiz;
import com.pcloud.book.advertising.entity.AdvertisingBmOption;
import com.pcloud.book.advertising.entity.AdvertisingBmRegister;
import com.pcloud.book.advertising.facade.BmFacade;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
/**
* 报名
*/
@RestController("bmFacade")
@RequestMapping("/bm")
public class BmFacadeImpl implements BmFacade {
@Autowired
private BmBiz bmBiz;
/**
* 获取选项类型
*/
@Override
@RequestMapping(value = "getOptionType",method = RequestMethod.GET)
public ResponseDto<?> getOptionType(@RequestHeader("token") String token)
throws PermissionException, BizException, JsonParseException {
SessionUtil.getToken4Redis(token);
return new ResponseDto<>(bmBiz.getOptionType());
}
/**
* 获取选项数据类型
*/
@RequestMapping(value = "/getOptionDataType",method = RequestMethod.GET)
@Override
public ResponseDto<?> getOptionDataType(@RequestHeader("token") String token)
throws PermissionException, BizException, JsonParseException {
SessionUtil.getToken4Redis(token);
return new ResponseDto<>(bmBiz.getOptionDataType());
}
/**
* 用户提交表单
*/
@Override
@RequestMapping(value = "/userSubmit4Wechat",method = RequestMethod.POST)
public ResponseDto<?> userSubmit4Wechat(@CookieValue("userInfo") String userInfo,
@RequestBody AdvertisingBmRegister bmRegister)
throws PermissionException, BizException, JsonParseException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
Long qrcodeId = Cookie.getId(userInfo, Cookie.QRCODE_ID);
if (bmRegister == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
bmRegister.setUserId(wechatUserId);
Long result = bmBiz.userSubmit(bmRegister, wechatUserId, qrcodeId);
return new ResponseDto<>(result);
}
/**
* 微信端获取个人报名详情
*/
@Override
@RequestMapping(value = "/getDetail4Wechat",method = RequestMethod.GET)
public ResponseDto<?> getDetail4Wechat(@CookieValue("userInfo") String userInfo, @RequestParam(value = "adId") Long adId)
throws PermissionException, BizException, JsonParseException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
Long qrcodeId = Cookie.getId(userInfo, Cookie.QRCODE_ID);
if (null == adId) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
return new ResponseDto<>(bmBiz.getDetail4Wechat(adId, wechatUserId,qrcodeId));
}
/**
* 报名信息导出
*/
@Override
@RequestMapping(value = "/exportRegisterInfoByAdId",method = RequestMethod.GET)
public ResponseDto<Map<String, Object>> exportRegisterInfoByAdId(
@RequestHeader("token")String token, @RequestParam("adId")Long adId,
@RequestParam(value = "qrcodeId",required = false) Long qrcodeId) throws PermissionException, BizException, JsonParseException {
if (null == adId){
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
SessionUtil.getInfoToken4Redis(token);
Map<String, Object> map =bmBiz.exportRegisterInfoByAdId(adId, qrcodeId);
return new ResponseDto<>(map);
}
}
......@@ -79,6 +79,25 @@ public class WechatGroupConsr {
}
}
@ParamLog("根据群号获取发广告机器人微信号")
public String getSendAdRobotByGroupId(String groupId) throws BizException{
log.info("【根据群号获取发广告机器人微信号,<START>.[groupId]=" + groupId + "]");
if (groupId == null) {
return null;
}
try {
return ResponseHandleUtil.parseResponse(groupMemberService.getSendAdRobotByGroupId(groupId), String.class);
} catch (BizException e) {
log.warn("根据群号获取发广告机器人微信号失败:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
log.error("根据群号获取发广告机器人微信号.[getSendAdRobotByGroupId]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
log.info("【根据群号获取发广告机器人微信号,<END>");
}
}
/**
* 根据昵称获取微信id
*/
......
......@@ -6,6 +6,7 @@ import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.GroupQrcodeBookVO;
import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO;
import com.pcloud.book.group.vo.ListQrcodeByClassifyParamVO;
import com.pcloud.book.group.vo.UpdateGroupQrcodeRequestVO;
......@@ -119,4 +120,14 @@ public interface GroupQrcodeBiz {
* @return
*/
List<Long> filterDeleteId(List<String> wxGroupIdList);
/**
* 获取编辑下二维码
* @param currentPage
* @param numPerPage
* @param name
* @param adviserId
* @return
*/
PageBeanNew<GroupQrcodeBookVO> listQrcodeByAdviser(Integer currentPage, Integer numPerPage, String name, Long adviserId);
}
......@@ -115,6 +115,14 @@ public interface WeixinQrcodeBiz {
List<BookWxQrcodeDTO> listAvailableGroupByPage(Integer currentPage, Integer numPerPage);
/**
* 分页获取人数超过10人的可用微信群
* @param currentPage
* @param numPerPage
* @return
*/
List<BookWxQrcodeDTO> listOver10AvailableGroupByPage(Integer currentPage, Integer numPerPage);
/**
* 所有群邀请新的机器人小号
* @param wxUserId 用户微信ID
*/
......
......@@ -28,6 +28,7 @@ import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.ClassifyVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.GroupQrcodeBookVO;
import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO;
import com.pcloud.book.group.vo.ListQrcodeByClassifyParamVO;
import com.pcloud.book.group.vo.UpdateGroupQrcodeRequestVO;
......@@ -455,4 +456,18 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
}
}
@Override
public PageBeanNew<GroupQrcodeBookVO> listQrcodeByAdviser(Integer currentPage, Integer numPerPage, String name, Long adviserId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("adviserId", adviserId);
paramMap.put("name", name);
//获取二维码列表
PageBeanNew<GroupQrcodeBookVO> pageBeanNew = groupQrcodeDao.listPageNew(new PageParam(currentPage,numPerPage), paramMap, "listQrcodeByAdviser");
if (pageBeanNew == null || ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return new PageBeanNew<>(currentPage,numPerPage, new ArrayList<>());
}
return pageBeanNew;
}
}
......@@ -318,6 +318,15 @@ public class WeixinQrcodeBizImpl implements WeixinQrcodeBiz {
}
@Override
@ParamLog("分页获取人数超过10人的可用微信群")
public List<BookWxQrcodeDTO> listOver10AvailableGroupByPage(Integer currentPage, Integer numPerPage) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("currentPage", currentPage);
paramMap.put("numPerPage", numPerPage);
return weixinQrcodeDao.listOver10AvailableGroupByPage(paramMap);
}
@Override
@ParamLog("所有群邀请新的机器人小号")
public void inviteNewRobot(String wxUserId) {
for(int i = 0; true ; i++) {
......
......@@ -139,9 +139,16 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> {
WeixinQrcode getByGroupId(String wechatGroupId);
/**
*
* 分页获取可用微信群
* @param paramMap 参数map
* @return
*/
List<BookWxQrcodeDTO> listAvailableGroupByPage(Map<String, Object> paramMap);
/**
* 分页获取人数超过10人的可用微信群
* @param paramMap
* @return
*/
List<BookWxQrcodeDTO> listOver10AvailableGroupByPage(Map<String, Object> paramMap);
}
......@@ -137,4 +137,9 @@ public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements We
public List<BookWxQrcodeDTO> listAvailableGroupByPage(Map<String, Object> paramMap) {
return this.getSqlSession().selectList(this.getStatement("listAvailableGroupByPage"), paramMap);
}
@Override
public List<BookWxQrcodeDTO> listOver10AvailableGroupByPage(Map<String, Object> paramMap) {
return this.getSqlSession().selectList(this.getStatement("listOver10AvailableGroupByPage"), paramMap);
}
}
......@@ -110,6 +110,14 @@ public class AdGroupQrcodeDTO implements Serializable {
* 投放时间
*/
private Date distributionTime;
/**
* 报名量
*/
private Long registerNum;
/**
* 报名率
*/
private BigDecimal registerRate;
public Long getGroupQrcodeId() {
return groupQrcodeId;
......@@ -272,6 +280,22 @@ public class AdGroupQrcodeDTO implements Serializable {
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;
}
@Override
public String toString() {
return "AdGroupQrcodeDTO{" +
......@@ -295,6 +319,8 @@ public class AdGroupQrcodeDTO implements Serializable {
", totalIncome=" + totalIncome +
", isOpen=" + isOpen +
", distributionTime=" + distributionTime +
", registerNum=" + registerNum +
", registerRate=" + registerRate +
'}';
}
}
......@@ -9,7 +9,6 @@ import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException;
import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -55,4 +54,14 @@ public interface GroupQrcodeFacade {
ResponseDto<GroupQrcodeBaseInfoVO> getBaseById(@RequestHeader("token") String token, @RequestParam("groupQrcodeId") Long groupQrcodeId)
throws BizException, JsonParseException, PermissionException;
@ApiOperation(value = "获取编辑下二维码", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "名称", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query")
})
@RequestMapping(value = "listQrcodeByAdviser", method = RequestMethod.GET)
ResponseDto<PageBeanNew> listQrcodeByAdviser(
@RequestHeader("token") String token, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage,@RequestParam(value = "name", required = false) String name) throws PermissionException;
}
package com.pcloud.book.group.facade.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.facade.GroupQrcodeFacade;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.GroupQrcodeBookVO;
import com.pcloud.book.group.vo.ListQrcodeByClassifyParamVO;
import com.pcloud.book.group.vo.UpdateGroupQrcodeRequestVO;
import com.pcloud.book.group.vo.WechatGroupNameVO;
......@@ -20,6 +22,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
......@@ -76,6 +79,19 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade {
return new ResponseDto<>(groupQrcodeBaseInfoVO == null ? new GroupQrcodeBaseInfoVO() : groupQrcodeBaseInfoVO);
}
@Override
@RequestMapping(value = "listQrcodeByAdviser", method = RequestMethod.GET)
public ResponseDto<PageBeanNew> listQrcodeByAdviser(
@RequestHeader("token") String token, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage, @RequestParam(value = "name", required = false) String name) throws PermissionException {
if (null == currentPage || null == numPerPage) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "缺少分页参数");
}
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
PageBeanNew<GroupQrcodeBookVO> pageBeanNew = groupQrcodeBiz.listQrcodeByAdviser(currentPage, numPerPage, name, adviserId);
return new ResponseDto<>(pageBeanNew);
}
@GetMapping("addUser")
ResponseDto<?> addUser(@RequestParam("weixinGroupId") String weixinGroupId, @RequestParam("userNumber") Integer userNumber)
throws BizException{
......
......@@ -97,6 +97,13 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService {
}
@Override
@GetMapping("listOver10AvailableGroupByPage")
public ResponseEntity<ResponseDto<List<BookWxQrcodeDTO>>> listOver10AvailableGroupByPage(@RequestParam("currentPage") Integer currentPage,
@RequestParam("numPerPage") Integer numPerPage) {
return ResponseHandleUtil.toResponse(weixinQrcodeBiz.listOver10AvailableGroupByPage(currentPage, numPerPage));
}
@Override
@GetMapping("inviteNewRobot")
public void inviteNewRobot(@RequestParam("wxUserId") String wxUserId) {
weixinQrcodeBiz.inviteNewRobot(wxUserId);
......
package com.pcloud.book.group.vo;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
/**
* @描述:群和图书信息
* @作者:zhuyajie
* @创建时间:14:37 2019/7/4
* @版本:1.0
*/
public class GroupQrcodeBookVO extends BaseDto{
@ApiModelProperty("群标识")
private Long groupQrcodeId;
@ApiModelProperty("群名称")
private String groupName;
@ApiModelProperty("群id")
private String wxGroupId;
@ApiModelProperty("书id")
private Long bookId;
@ApiModelProperty("书名称")
private String bookName;
@ApiModelProperty("书号")
private String isbn;
public Long getGroupQrcodeId() {
return groupQrcodeId;
}
public void setGroupQrcodeId(Long groupQrcodeId) {
this.groupQrcodeId = groupQrcodeId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getWxGroupId() {
return wxGroupId;
}
public void setWxGroupId(String wxGroupId) {
this.wxGroupId = wxGroupId;
}
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
@Override
public String toString() {
return "GroupQrcodeBookVO{" +
"groupQrcodeId=" + groupQrcodeId +
", groupName='" + groupName + '\'' +
", wxGroupId='" + wxGroupId + '\'' +
", bookId=" + bookId +
", bookName='" + bookName + '\'' +
", isbn='" + isbn + '\'' +
'}';
}
}
package com.pcloud.book.mq.topic;
import com.google.common.collect.Maps;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.ConvertEnum;
import com.pcloud.common.core.constant.MQQueueConstant;
import com.pcloud.common.core.dto.ConvertQueueDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.FileUtils;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.contentcenter.resource.enums.ResourceTypeEnum;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
/**
* @描述:文件转码
* @作者:zhuyajie
* @创建时间:11:31 2019/6/25
* @版本:1.0
*/
@Component("convertFileListener")
@RabbitListener(queues = MQQueueConstant.CONVERT_TO_BOOK)
public class ConvertFileListener {
private static final Logger LOGGER = LoggerFactory.getLogger(ConvertFileListener.class);
private static ConvertFileListener convertFileListener;
@Autowired
private AdvertisingSpaceBiz advertisingSpaceBiz;
/**
* 当转换过快,消息先一步到达资源中心时,找不到对应的记录就保存下来
*/
private static Map<String, ConvertQueueDto> cqds = Maps.newHashMap();
private static Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
LOGGER.info("开始轮询cqds");
//如果cqds没有记录,休眠60秒
if (MapUtils.isEmpty(cqds)) {
try {
Thread.sleep(1000 * 60);
} catch (InterruptedException e) {
LOGGER.error("pmrismap线程执行出错", e);
}
} else {
for (Map.Entry<String, ConvertQueueDto> e : cqds.entrySet()) {
if (e.getValue() != null) {
ConvertQueueDto convertFileDto = e.getValue();
LOGGER.warn("转码后信息>>>>>" + convertFileDto.toString());
String fileCategory = FileUtils.getGatherName(convertFileDto.getFileType());
String fileId = convertFileDto.getFileId();
String fileUrl = convertFileDto.getFileUrl();
if (ResourceTypeEnum.AUDIO.code.equals(fileCategory) || ResourceTypeEnum.VIDEO.code.equals(fileCategory)) {
List<AdvertisingSpace> filelist = convertFileListener.advertisingSpaceBiz.getUnConvertFile(fileId);
if (!ListUtils.isEmpty(filelist)) {
//更新
convertFileListener.advertisingSpaceBiz.updateFile(filelist, fileUrl);
cqds.remove(e.getKey());
} else {
if (convertFileDto.getProcessTimes() < 10) {
convertFileDto.setProcessTimes(convertFileDto.getProcessTimes() + 1);
LOGGER.info("音频资源 ,未找到对应记录,进入下一个循环!fileid=" + convertFileDto.getFileId());
} else {
cqds.remove(e.getKey());
}
}
}
} else {
// 当该key内无实体时,即清除
cqds.remove(e.getKey());
}
}
}
}
}
});
// 开始缓存处理
static {
t1.start();
}
@RabbitHandler
@ParamLog("文件转码")
public void process(ConvertQueueDto convertQueueDto) throws BizException {
//消息处理
update(convertQueueDto);
}
/**
* 更新数据库
*/
private void update(ConvertQueueDto convertFileDto) {
if (null == convertFileDto) {
return;
}
if (!ConvertEnum.BOOK.value.equals(convertFileDto.getFromType())) {
return;
}
String fileCategory = FileUtils.getGatherName(convertFileDto.getFileType());
//转换成功
if (convertFileDto.getState() == null || convertFileDto.getState()) {
String fileId = convertFileDto.getFileId();
String fileUrl = convertFileDto.getFileUrl();
// 修改点读书音频转码后的地址
if (ResourceTypeEnum.AUDIO.code.equals(fileCategory)) {
List<AdvertisingSpace> filelist = convertFileListener.advertisingSpaceBiz.getUnConvertFile(fileId);
if (ListUtils.isEmpty(filelist)) {
LOGGER.info("接收到转码状态时,数据库还未插入记录,先将音频转码信息放到缓存fileId=" + fileId + "convertFileDto=" + convertFileDto.toString());
cqds.put(fileId, convertFileDto);
} else {
convertFileListener.advertisingSpaceBiz.updateFile(filelist, fileUrl);
}
}
}
}
@PostConstruct
public void init() {
convertFileListener = this;
convertFileListener.advertisingSpaceBiz = this.advertisingSpaceBiz;
}
}
package com.pcloud.book.util.common;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
public class ExcelUtils {
public static CellStyle getColumnTopStyle(Workbook workbook) {
// 设置字体
Font font = workbook.createFont();
//设置字体大小
font.setFontHeightInPoints((short) 12);
//字体加粗
font.setBold(true);
//设置字体名字
font.setFontName("宋体");
//设置样式;
CellStyle style = workbook.createCellStyle();
//设置底边框;
style.setBorderBottom(BorderStyle.THIN);
//设置底边框颜色;
style.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//设置左边框;
style.setBorderLeft(BorderStyle.THIN);
//设置左边框颜色;
style.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//设置右边框;
style.setBorderRight(BorderStyle.THIN);
//设置右边框颜色;
style.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//设置顶边框;
style.setBorderTop(BorderStyle.THIN);
//设置顶边框颜色;
style.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//在样式用应用设置的字体;
style.setFont(font);
//设置自动换行;
style.setWrapText(true);
//设置水平对齐的样式为居中对齐;
style.setAlignment(HorizontalAlignment.CENTER);
//设置垂直对齐的样式为居中对齐;
style.setVerticalAlignment(VerticalAlignment.CENTER);
return style;
}
public static CellStyle getDataStyle(Workbook workbook) {
// 设置字体
Font font = workbook.createFont();
//设置字体大小
font.setFontHeightInPoints((short) 10);
//设置字体名字
font.setFontName("宋体");
//设置样式;
CellStyle style = workbook.createCellStyle();
//设置底边框;
style.setBorderBottom(BorderStyle.THIN);
//设置底边框颜色;
style.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//设置左边框;
style.setBorderLeft(BorderStyle.THIN);
//设置左边框颜色;
style.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//设置右边框;
style.setBorderRight(BorderStyle.THIN);
//设置右边框颜色;
style.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//设置顶边框;
style.setBorderTop(BorderStyle.THIN);
//设置顶边框颜色;
style.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
//在样式用应用设置的字体;
style.setFont(font);
//设置自动换行;
style.setWrapText(true);
//设置水平对齐的样式为居中对齐;
style.setAlignment(HorizontalAlignment.CENTER);
//设置垂直对齐的样式为居中对齐;
style.setVerticalAlignment(VerticalAlignment.CENTER);
return style;
}
}
<?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.BmOptionItemDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingBmOptionItem" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="option_id" property="optionId" jdbcType="BIGINT" />
<result column="parent_id" property="parentId" jdbcType="BIGINT" />
<result column="text" property="text" jdbcType="VARCHAR" />
<result column="img_url" property="imgUrl" jdbcType="VARCHAR" />
<result column="create_user" property="createUser" jdbcType="BIGINT" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_user" property="updateUser" jdbcType="BIGINT" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
id, option_id, parent_id, text, img_url, create_user, create_time, update_user, update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingBmOptionItem" useGeneratedKeys="true" keyProperty="id">
insert into advertising_bm_option_item (option_id, parent_id,
text, img_url, create_user, create_time
)
values (#{optionId,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT},
#{text,jdbcType=VARCHAR}, #{imgUrl,jdbcType=VARCHAR}, #{createUser,jdbcType=BIGINT}, NOW()
)
</insert>
<!-- 根据选项ID删除选项清单信息 -->
<delete id="deleteByOptionId" parameterType="java.lang.Long" >
delete from advertising_bm_option_item
where option_id = #{id,jdbcType=BIGINT}
</delete>
<select id="getByOptionId" resultMap="BaseResultMap" parameterType="java.lang.Long" >
select
<include refid="Base_Column_List" />
from advertising_bm_option_item
where option_id = #{optionId,jdbcType=BIGINT} and PARENT_ID=0
</select>
<select id="getValueById" resultType="String" parameterType="Long">
select text
from advertising_bm_option_item
where id = #{id,jdbcType=BIGINT}
</select>
</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.BmOptionDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingBmOption" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="ad_id" property="adId" jdbcType="BIGINT" />
<result column="seq" property="seq" jdbcType="BIGINT" />
<result column="item_title" property="itemTitle" jdbcType="VARCHAR" />
<result column="item_desc" property="itemDesc" jdbcType="VARCHAR" />
<result column="item_input_type" property="itemInputType" jdbcType="VARCHAR" />
<result column="item_data_type" property="itemDataType" jdbcType="VARCHAR" />
<result column="required" property="required" jdbcType="BIT" />
<result column="create_user" property="createUser" jdbcType="BIGINT" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_user" property="updateUser" jdbcType="BIGINT" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<collection property="optionItem" column="id"
ofType="productMatchOptionItem"
select="com.pcloud.book.advertising.dao.impl.BmOptionItemDaoImpl.getByOptionId" />
</resultMap>
<sql id="Base_Column_List" >
id, ad_id, seq, item_title, item_desc, item_input_type, item_data_type, required,
create_user, create_time, update_user, update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingBmOption" useGeneratedKeys="true" keyProperty="id">
insert into advertising_bm_option (ad_id, seq, item_title,
item_desc, item_input_type, item_data_type,
required, create_user, create_time
)
values (#{adId,jdbcType=BIGINT}, #{seq,jdbcType=BIGINT}, #{itemTitle,jdbcType=VARCHAR},
#{itemDesc,jdbcType=VARCHAR}, #{itemInputType,jdbcType=VARCHAR}, #{itemDataType,jdbcType=VARCHAR},
#{required,jdbcType=BIT}, #{createUser,jdbcType=BIGINT}, NOW()
)
</insert>
<!-- 根据广告ID获取选项表单 -->
<select id="getByAdId" resultMap="BaseResultMap" parameterType="map" >
select
<include refid="Base_Column_List" />
from advertising_bm_option
where ad_id = #{adId,jdbcType=BIGINT}
order by seq asc, id asc
</select>
<update id="update" parameterType="com.pcloud.book.advertising.entity.AdvertisingBmOption" >
update advertising_bm_option
<set >
<if test="seq != null" >
seq = #{seq,jdbcType=BIGINT},
</if>
<if test="itemTitle != null" >
item_title = #{itemTitle,jdbcType=VARCHAR},
</if>
<if test="itemDesc != null" >
item_desc = #{itemDesc,jdbcType=VARCHAR},
</if>
<if test="itemInputType != null" >
item_input_type = #{itemInputType,jdbcType=VARCHAR},
</if>
<if test="itemDataType != null" >
item_data_type = #{itemDataType,jdbcType=VARCHAR},
</if>
<if test="required != null" >
required = #{required,jdbcType=BIT},
</if>
update_user = #{updateUser,jdbcType=BIGINT},
update_time = NOW(),
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<delete id="deleteByIds" parameterType="list">
DELETE FROM advertising_bm_option
WHERE 1=1
AND id IN
<foreach collection = "list" index="index" item = "item" open = "(" separator= "," close = ")">
#{item}
</foreach>
</delete>
<select id="getOptionIdsByAdId" parameterType="Long" resultType="Long">
SELECT id
FROM advertising_bm_option
WHERE ad_id = #{adId,jdbcType=BIGINT}
</select>
</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.BmRegisterItemDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingBmRegisterItem" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="user_id" property="userId" jdbcType="BIGINT" />
<result column="ad_id" property="adId" jdbcType="BIGINT" />
<result column="register_id" property="registerId" jdbcType="BIGINT" />
<result column="option_id" property="optionId" jdbcType="BIGINT" />
<result column="option_item_id" property="optionItemId" jdbcType="BIGINT" />
<result column="option_value" property="optionValue" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
</resultMap>
<resultMap id="registerItemDtoMap" type="BmRegisterItemDTO" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="register_id" property="registerId" jdbcType="BIGINT" />
<result column="option_id" property="optionId" jdbcType="BIGINT" />
<result column="option_item_id" property="optionItemId" jdbcType="BIGINT" />
<result column="option_value" property="optionValue" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, user_id, ad_id, register_id, option_id, option_item_id, option_value, create_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingBmRegisterItem" useGeneratedKeys="true" keyProperty="id">
insert into advertising_bm_register_item (user_id, ad_id,
register_id, option_id, option_item_id,
option_value, create_time)
values (#{userId,jdbcType=BIGINT}, #{adId,jdbcType=BIGINT},
#{registerId,jdbcType=BIGINT}, #{optionId,jdbcType=BIGINT}, #{optionItemId,jdbcType=BIGINT},
#{optionValue,jdbcType=VARCHAR}, NOW())
</insert>
<select id="getRegisterItemByUser" resultMap="registerItemDtoMap" parameterType="java.lang.Long" >
SELECT
register_id,
option_id,
option_item_id,
option_value
FROM
advertising_bm_register_item a
LEFT JOIN advertising_bm_option b ON a.option_id = b.ID
WHERE
a.register_id = #{id}
GROUP BY
a.option_id
ORDER BY
b.seq ASC,
b.id ASC
</select>
</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.BmRegisterDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.advertising.entity.AdvertisingBmRegister" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="user_id" property="userId" jdbcType="BIGINT" />
<result column="ad_id" property="adId" jdbcType="BIGINT" />
<result column="nick_name" property="nickName" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="qrcode_id" property="qrcodeId" jdbcType="BIGINT" />
</resultMap>
<!-- 微信端用户详细信息 -->
<resultMap id="wechatDetailMap" type="BmRegisterDTO">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="user_id" property="userId" jdbcType="BIGINT" />
<result column="ad_id" property="adId" jdbcType="BIGINT" />
<result column="nick_name" property="nickName" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="qrcode_id" property="qrcodeId" jdbcType="BIGINT" />
<collection property="registerItemDTOS" column="id"
ofType="registerItemDtoMap"
select="com.pcloud.book.advertising.dao.impl.BmRegisterItemDaoImpl.getRegisterItemByUser" />
</resultMap>
<sql id="Base_Column_List" >
id, user_id, ad_id, nick_name, create_time, qrcode_id
</sql>
<insert id="insert" parameterType="com.pcloud.book.advertising.entity.AdvertisingBmRegister" useGeneratedKeys="true" keyProperty="id">
insert into advertising_bm_register (user_id, ad_id,
nick_name, create_time, qrcode_id)
values (#{userId,jdbcType=BIGINT}, #{adId,jdbcType=BIGINT},
#{nickName,jdbcType=VARCHAR}, NOW(), #{qrcodeId})
</insert>
<!-- 微信端获取个人报名信息 -->
<select id="getDetailByUser" resultMap="wechatDetailMap" parameterType="map" >
select
<include refid="Base_Column_List" />
from advertising_bm_register
where ad_id = #{adId,jdbcType=BIGINT}
and user_id = #{wechatUserId}
<if test="qrcodeId != null">
AND qrcode_id = #{qrcodeId}
</if>
ORDER BY create_time DESC
</select>
<select id="getRegisterCountByAdId" parameterType="map" resultType="Long">
SELECT
IFNULL(COUNT(1), 0)
FROM
advertising_bm_register
WHERE
ad_id = #{adId,jdbcType=BIGINT}
<if test="statisMonth != null">
AND DATE_FORMAT(create_time, "%Y-%m") = #{statisMonth}
</if>
</select>
<select id="getRegisterCountByAdIds" parameterType="list" resultType="Long">
SELECT
IFNULL(COUNT(1), 0)
FROM
advertising_bm_register
WHERE ad_id in
<foreach collection="list" item="item" open="(" separator="," close=")">
${item}
</foreach>
</select>
<select id="exportRegisterInfoById" parameterType="map" resultMap="wechatDetailMap">
select
<include refid="Base_Column_List" />
from advertising_bm_register
where ad_id = #{adId}
<if test="qrcodeId != null">
AND qrcode_id = #{qrcodeId}
</if>
ORDER BY create_time DESC
</select>
<select id="getRegisterCountByAdIdQrcodeId" parameterType="map" resultType="Long">
SELECT
IFNULL(COUNT(1), 0)
FROM
advertising_bm_register
WHERE
ad_id = #{adId,jdbcType=BIGINT}
AND qrcode_id = #{qrcodeId}
<if test="statisMonth != null">
AND DATE_FORMAT(create_time, "%Y-%m") = #{statisMonth}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -179,6 +179,8 @@
ifnull(cr.click_num, 0) * m.price_each_time
WHEN 'CPM' THEN
ifnull(er.exposure_num, 0) * m.price_each_time
WHEN 'CPA' THEN
ifnull(br.register_num, 0) * ifnull(m.price_each_time,0)
ELSE
0
END
......@@ -226,6 +228,18 @@
) cr ON cr.ad_id = b.ad_id
AND cr.book_id = b.book_id
AND cr.channel_id = b.channel_id
LEFT JOIN (
SELECT
ad_id,
COUNT(id) register_num
FROM
advertising_bm_register
WHERE
DATE_FORMAT(create_time, '%Y-%m-%d') = #{createDay}
AND qrcode_id IS NULL
GROUP BY
ad_id
) br ON br.ad_id = b.ad_id
WHERE
b.ad_id = s.id
AND s.id = m.ad_id
......@@ -275,6 +289,8 @@
ifnull(cr.click_num, 0) * m.price_each_time
WHEN 'CPM' THEN
ifnull(er.exposure_num, 0) * m.price_each_time
WHEN 'CPA' THEN
ifnull(br.register_num, 0) * ifnull(m.price_each_time,0)
ELSE
0
END
......@@ -328,6 +344,21 @@
AND cr.book_id = b.book_id
AND cr.channel_id = b.channel_id
AND cr.from_id = b.qrcode_id
LEFT JOIN (
SELECT
ad_id,
qrcode_id,
COUNT(id) register_num
FROM
advertising_bm_register
WHERE
DATE_FORMAT(create_time, '%Y-%m-%d') = #{createDay}
AND qrcode_id IS NOT NULL
GROUP BY
ad_id,
qrcode_id
) br ON br.ad_id = b.ad_id
AND br.qrcode_id = b.qrcode_id
WHERE
b.ad_id = s.id
AND s.id = m.ad_id
......
......@@ -432,4 +432,27 @@
</foreach>
</select>
<select id="listQrcodeByAdviser" parameterType="map" resultType="com.pcloud.book.group.vo.GroupQrcodeBookVO">
SELECT
t.id groupQrcodeId,
t.group_name groupName,
t.weixin_group_id wxGroupId,
t2.BOOK_ID bookId,
t2.BOOK_NAME bookName,
t2.ISBN isbn
FROM
book_group_qrcode t
INNER JOIN book_group_classify t1 ON t.classify_id = t1.id
INNER JOIN book t2 ON t1.book_id = t2.BOOK_ID
WHERE
t1.create_user = #{adviserId}
<if test="name != null">
AND (
t2.BOOK_NAME LIKE CONCAT('%', #{name}, '%')
OR t.group_name LIKE CONCAT('%', #{name}, '%')
OR t2.ISBN LIKE CONCAT('%', #{name}, '%')
)
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -238,5 +238,19 @@
LIMIT #{currentPage}, #{numPerPage}
</select>
<select id="listOver10AvailableGroupByPage" parameterType="map" resultType="bookWxQrcodeDTO">
SELECT
q.weixin_group_id AS weixinGroupId,
q.robot_wx_id AS robotWxId
FROM
`weixin_qrcode` q
LEFT JOIN book_group_qrcode bq ON q.weixin_group_id = bq.weixin_group_id
WHERE
q.use_state = 1
AND bq.user_number <![CDATA[ > ]]> 10
GROUP BY
q.weixin_group_id
LIMIT #{currentPage}, #{numPerPage}
</select>
</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