Commit 1427c769 by 高鹏

Merge branch 'zhuyajie' into 'master'

广告位增加是否测试和社群统计

See merge request rays/pcloud-book!31
parents 2d3fc92e c142ca08
package com.pcloud.book.group.dto;
import com.pcloud.common.dto.BaseDto;
/**
* @描述:平台端社群统计
* @作者:zhuyajie
* @创建时间:10:28 2019/6/27
* @版本:1.0
*/
public class GroupQrcodeInfo4Advertising extends BaseDto {
/**
* 微信群id
*/
private String wxGroupId;
/**
* 群二维码id
*/
private Long groupQrcodeId;
/**
* 微信群名称
*/
private String groupName;
/**
* 编辑id
*/
private Long adviserId;
/**
* 编辑名称
*/
private String adviserName;
/**
* 图书名称
*/
private String bookName;
/**
* 群分类名称
*/
private String classify;
/**
* 当前群人数
*/
private Integer userNumber;
/**
* 群二维码url
*/
private String qrcodeUrl;
/**
* 专业标签ID
*/
private Long proLabelId;
/**
* 专业标签名称
*/
private String proLabelName;
/**
* 深度标签ID
*/
private Long depLabelId;
/**
* 深度标签名称
*/
private String depLabelName;
/**
* 目的标签ID
*/
private Long purLabelId;
/**
* 目的标签名称
*/
private String purLabelName;
/**
* 出版社id
*/
private Long agentId;
/**
* 出版社名称
*/
private String agentName;
/**
* 渠道状态
*/
private Boolean isOpen;
/**
* 广告位数量
*/
private Integer advertisingSpaceNum;
public String getWxGroupId() {
return wxGroupId;
}
public void setWxGroupId(String wxGroupId) {
this.wxGroupId = wxGroupId;
}
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 Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
public Integer getUserNumber() {
return userNumber;
}
public void setUserNumber(Integer userNumber) {
this.userNumber = userNumber;
}
public String getQrcodeUrl() {
return qrcodeUrl;
}
public void setQrcodeUrl(String qrcodeUrl) {
this.qrcodeUrl = qrcodeUrl;
}
public Long getProLabelId() {
return proLabelId;
}
public void setProLabelId(Long proLabelId) {
this.proLabelId = proLabelId;
}
public Long getDepLabelId() {
return depLabelId;
}
public void setDepLabelId(Long depLabelId) {
this.depLabelId = depLabelId;
}
public Long getPurLabelId() {
return purLabelId;
}
public void setPurLabelId(Long purLabelId) {
this.purLabelId = purLabelId;
}
public Long getAgentId() {
return agentId;
}
public void setAgentId(Long agentId) {
this.agentId = agentId;
}
public Boolean getOpen() {
return isOpen;
}
public void setOpen(Boolean open) {
isOpen = open;
}
public Integer getAdvertisingSpaceNum() {
return advertisingSpaceNum;
}
public void setAdvertisingSpaceNum(Integer advertisingSpaceNum) {
this.advertisingSpaceNum = advertisingSpaceNum;
}
public String getAgentName() {
return agentName;
}
public void setAgentName(String agentName) {
this.agentName = agentName;
}
public String getAdviserName() {
return adviserName;
}
public void setAdviserName(String adviserName) {
this.adviserName = adviserName;
}
public String getProLabelName() {
return proLabelName;
}
public void setProLabelName(String proLabelName) {
this.proLabelName = proLabelName;
}
public String getDepLabelName() {
return depLabelName;
}
public void setDepLabelName(String depLabelName) {
this.depLabelName = depLabelName;
}
public String getPurLabelName() {
return purLabelName;
}
public void setPurLabelName(String purLabelName) {
this.purLabelName = purLabelName;
}
@Override
public String toString() {
return "GroupQrcodeInfo4Advertising{" +
"wxGroupId='" + wxGroupId + '\'' +
", groupQrcodeId=" + groupQrcodeId +
", groupName='" + groupName + '\'' +
", adviserId=" + adviserId +
", adviserName='" + adviserName + '\'' +
", bookName='" + bookName + '\'' +
", classify='" + classify + '\'' +
", userNumber=" + userNumber +
", qrcodeUrl='" + qrcodeUrl + '\'' +
", proLabelId=" + proLabelId +
", proLabelName='" + proLabelName + '\'' +
", depLabelId=" + depLabelId +
", depLabelName='" + depLabelName + '\'' +
", purLabelId=" + purLabelId +
", purLabelName='" + purLabelName + '\'' +
", agentId=" + agentId +
", agentName='" + agentName + '\'' +
", isOpen=" + isOpen +
", advertisingSpaceNum=" + advertisingSpaceNum +
'}';
}
}
...@@ -2,6 +2,7 @@ package com.pcloud.book.group.service; ...@@ -2,6 +2,7 @@ package com.pcloud.book.group.service;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO; import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO; import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO; import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -38,4 +39,19 @@ public interface BookGroupClassifyService { ...@@ -38,4 +39,19 @@ public interface BookGroupClassifyService {
@GetMapping("getProAssocGroupAndUserNumber") @GetMapping("getProAssocGroupAndUserNumber")
ResponseEntity<ResponseDto<ProAssocGroupAndUserNumberDTO>> getProAssocGroupAndUserNumber(@RequestParam("productId") Long productId); ResponseEntity<ResponseDto<ProAssocGroupAndUserNumberDTO>> getProAssocGroupAndUserNumber(@RequestParam("productId") Long productId);
@ApiOperation("根据微信群标识获取相关广告信息")
@PostMapping("listGroupQrcodeInfo4Advertising")
ResponseEntity<ResponseDto<Map<String, GroupQrcodeInfo4Advertising>>> listGroupQrcodeInfo4Advertising(@RequestBody List<String> wxGroupIds);
@ApiOperation("根据条件查询微信群列表")
@GetMapping("listQrcodeIdsByLabelQuery")
public ResponseEntity<ResponseDto<List<Long>>> listQrcodeIdsByLabelQuery(
@RequestParam(value = "query", required = false) String query,
@RequestParam(value = "proLabelId", required = false) Long proLabelId,
@RequestParam(value = "depLabelId", required = false) Long depLabelId,
@RequestParam(value = "purLabelId", required = false) Long purLabelId);
@ApiOperation("过滤被删除的群分类、群二维码")
@PostMapping("filterDeleteId")
ResponseEntity<ResponseDto<List<Long>>> filterDeleteId(@RequestBody List<String >wxGroupIdList);
} }
package com.pcloud.book.advertising.biz; package com.pcloud.book.advertising.biz;
import java.util.List;
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.entity.AdvertisingAdviserPermission; import com.pcloud.book.advertising.dto.QrcodeAdvertisingSpaceCountDTO;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; import com.pcloud.book.advertising.entity.*;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
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.PageParam; import com.pcloud.common.page.PageParam;
import java.util.List;
import java.util.Map;
/** /**
* Description 广告位业务逻辑层接口 * Description 广告位业务逻辑层接口
* @author PENG * @author PENG
...@@ -173,7 +170,7 @@ public interface AdvertisingSpaceBiz { ...@@ -173,7 +170,7 @@ public interface AdvertisingSpaceBiz {
* @return * @return
* @throws BizException * @throws BizException
*/ */
PageBean list(String name, PageParam pageParam, Boolean filterClose) throws BizException; PageBean list(String name, PageParam pageParam, Boolean filterClose, Boolean filterTest) throws BizException;
/** /**
* 书刊广告位明细 * 书刊广告位明细
...@@ -370,4 +367,23 @@ public interface AdvertisingSpaceBiz { ...@@ -370,4 +367,23 @@ public interface AdvertisingSpaceBiz {
* @throws BizException * @throws BizException
*/ */
AdGroupQrcodeDTO getGroupQrcodeInfo(Long qrcodeId) throws BizException; AdGroupQrcodeDTO getGroupQrcodeInfo(Long qrcodeId) throws BizException;
/**
* 获得关闭广告位的出版id
* @return
*/
List<Long> getCloseAgentId();
/**
* 获取广告位数量
* @param qrcodeIds
* @return
*/
Map<Long,QrcodeAdvertisingSpaceCountDTO> mapAdvertisingSpaceNum(List<Long> qrcodeIds);
/**
* 更新测试状态
* @param isTest
* @param id
*/
public void updateTestStatus(Boolean isTest, Long id);
} }
...@@ -3,32 +3,11 @@ package com.pcloud.book.advertising.biz.impl; ...@@ -3,32 +3,11 @@ package com.pcloud.book.advertising.biz.impl;
import com.pcloud.appcenter.app.dto.AppTypeDto; 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.dao.AdvertisingAdviserPermissionDao;
import com.pcloud.book.advertising.dao.AdvertisingAgentPermissionDao; import com.pcloud.book.advertising.dao.*;
import com.pcloud.book.advertising.dao.AdvertisingClickRecordDao; import com.pcloud.book.advertising.dto.*;
import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao; import com.pcloud.book.advertising.entity.*;
import com.pcloud.book.advertising.dao.AdvertisingExposureRecordDao; import com.pcloud.book.advertising.enums.*;
import com.pcloud.book.advertising.dao.AdvertisingIncomeDailyDao;
import com.pcloud.book.advertising.dao.AdvertisingMasterDao;
import com.pcloud.book.advertising.dao.AdvertisingSettlementMethodDao;
import com.pcloud.book.advertising.dao.AdvertisingSpaceDao;
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.WechatGroupClickUserDTO;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.book.advertising.entity.AdvertisingSettlementMethod;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.book.advertising.entity.DistributionWechatGroup;
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.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dao.BookDao; import com.pcloud.book.book.dao.BookDao;
...@@ -72,7 +51,6 @@ import com.sdk.wxgroup.SendArticleMessageVO; ...@@ -72,7 +51,6 @@ import com.sdk.wxgroup.SendArticleMessageVO;
import com.sdk.wxgroup.SendPicMessageVO; import com.sdk.wxgroup.SendPicMessageVO;
import com.sdk.wxgroup.SendTextMessageVO; import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK; import com.sdk.wxgroup.WxGroupSDK;
import org.apache.commons.collections.MapUtils; 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;
...@@ -84,13 +62,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -84,13 +62,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -1044,10 +1016,11 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -1044,10 +1016,11 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
* 获取广告位列表 * 获取广告位列表
*/ */
@Override @Override
public PageBean list(String name, PageParam pageParam, Boolean filterClose) throws BizException { public PageBean list(String name, PageParam pageParam, Boolean filterClose, Boolean filterTest) 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);
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<>());
...@@ -1883,4 +1856,20 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz { ...@@ -1883,4 +1856,20 @@ public class AdvertisingSpaceBizImpl implements AdvertisingSpaceBiz {
} }
return dto; return dto;
} }
@Override
public List<Long> getCloseAgentId() {
return advertisingAgentPermissionDao.getCloseAgentId();
}
@Override
public Map<Long, QrcodeAdvertisingSpaceCountDTO> mapAdvertisingSpaceNum(List<Long> qrcodeIds) {
return advertisingDistributionBookDao.mapAdvertisingSpaceNum(qrcodeIds);
}
@Override
public void updateTestStatus(Boolean isTest, Long id) {
advertisingSpaceDao.updateTestStatus(isTest, id);
}
} }
...@@ -3,6 +3,8 @@ package com.pcloud.book.advertising.dao; ...@@ -3,6 +3,8 @@ package com.pcloud.book.advertising.dao;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/** /**
* Description 广告位出版书刊权限数据访问层接口 * Description 广告位出版书刊权限数据访问层接口
* @author PENG * @author PENG
...@@ -16,4 +18,10 @@ public interface AdvertisingAgentPermissionDao extends BaseDao<AdvertisingAgentP ...@@ -16,4 +18,10 @@ public interface AdvertisingAgentPermissionDao extends BaseDao<AdvertisingAgentP
* @return * @return
*/ */
AdvertisingAgentPermission getByAgentId(Long agentId); AdvertisingAgentPermission getByAgentId(Long agentId);
/**
* 获得关闭广告位的出版id
* @return
*/
List<Long> getCloseAgentId();
} }
package com.pcloud.book.advertising.dao; package com.pcloud.book.advertising.dao;
import java.util.List; import com.pcloud.book.advertising.dto.QrcodeAdvertisingSpaceCountDTO;
import java.util.Map;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook; import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/** /**
* Description 广告位投放书籍数据访问层接口 * Description 广告位投放书籍数据访问层接口
* @author PENG * @author PENG
...@@ -32,4 +34,11 @@ public interface AdvertisingDistributionBookDao extends BaseDao<AdvertisingDistr ...@@ -32,4 +34,11 @@ public interface AdvertisingDistributionBookDao extends BaseDao<AdvertisingDistr
* @return * @return
*/ */
List<AdvertisingDistributionBook> getByAdId(Long adId); List<AdvertisingDistributionBook> getByAdId(Long adId);
/**
* 获取广告位数量
* @param qrcodeIds
* @return
*/
Map<Long, QrcodeAdvertisingSpaceCountDTO> mapAdvertisingSpaceNum(List<Long> qrcodeIds);
} }
...@@ -47,4 +47,16 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> { ...@@ -47,4 +47,16 @@ public interface AdvertisingSpaceDao extends BaseDao<AdvertisingSpace> {
* @return * @return
*/ */
List<AdvertisingSpaceDTO> getDTOByBookId(Map<String, Object> paramMap); List<AdvertisingSpaceDTO> getDTOByBookId(Map<String, Object> paramMap);
/**
* 更新测试状态
* @param isTest
* @param id
*/
public void updateTestStatus(Boolean isTest, Long id);
/**
* 根据id集合获取
*/
List<AdvertisingSpace> getByIds(List<Long> ids);
} }
...@@ -5,6 +5,8 @@ import com.pcloud.book.advertising.dao.AdvertisingAgentPermissionDao; ...@@ -5,6 +5,8 @@ import com.pcloud.book.advertising.dao.AdvertisingAgentPermissionDao;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; import com.pcloud.book.advertising.entity.AdvertisingAgentPermission;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import java.util.List;
/** /**
* Description 广告位出版书刊权限数据访问层接口实现类 * Description 广告位出版书刊权限数据访问层接口实现类
* @author PENG * @author PENG
...@@ -20,4 +22,9 @@ public class AdvertisingAgentPermissionDaoImpl extends BaseDaoImpl<AdvertisingAg ...@@ -20,4 +22,9 @@ public class AdvertisingAgentPermissionDaoImpl extends BaseDaoImpl<AdvertisingAg
public AdvertisingAgentPermission getByAgentId(Long agentId) { public AdvertisingAgentPermission getByAgentId(Long agentId) {
return super.getSqlSession().selectOne(getStatement("getByAgentId"), agentId); return super.getSqlSession().selectOne(getStatement("getByAgentId"), agentId);
} }
@Override
public List<Long> getCloseAgentId() {
return super.getSqlSession().selectList(getStatement("getCloseAgentId"));
}
} }
package com.pcloud.book.advertising.dao.impl; package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao; import com.pcloud.book.advertising.dao.AdvertisingDistributionBookDao;
import com.pcloud.book.advertising.dto.QrcodeAdvertisingSpaceCountDTO;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook; import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/** /**
* Description 广告位投放书籍数据访问层接口实现类 * Description 广告位投放书籍数据访问层接口实现类
* @author PENG * @author PENG
...@@ -38,4 +41,9 @@ public class AdvertisingDistributionBookDaoImpl extends BaseDaoImpl<AdvertisingD ...@@ -38,4 +41,9 @@ public class AdvertisingDistributionBookDaoImpl extends BaseDaoImpl<AdvertisingD
public List<AdvertisingDistributionBook> getByAdId(Long adId) { public List<AdvertisingDistributionBook> getByAdId(Long adId) {
return super.getSqlSession().selectList(getStatement("getByAdId"), adId); return super.getSqlSession().selectList(getStatement("getByAdId"), adId);
} }
@Override
public Map<Long, QrcodeAdvertisingSpaceCountDTO> mapAdvertisingSpaceNum(List<Long> qrcodeIds) {
return this.getSqlSession().selectMap(this.getStatement("mapAdvertisingSpaceNum"), qrcodeIds, "qrcodeId");
}
} }
package com.pcloud.book.advertising.dao.impl; package com.pcloud.book.advertising.dao.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.pcloud.book.advertising.dao.AdvertisingSpaceDao; import com.pcloud.book.advertising.dao.AdvertisingSpaceDao;
import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO; import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingSpace; import com.pcloud.book.advertising.entity.AdvertisingSpace;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* Description 广告位数据访问层接口实现类 * Description 广告位数据访问层接口实现类
* @author PENG * @author PENG
...@@ -55,4 +58,19 @@ public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> imple ...@@ -55,4 +58,19 @@ public class AdvertisingSpaceDaoImpl extends BaseDaoImpl<AdvertisingSpace> imple
public List<AdvertisingSpaceDTO> getDTOByBookId(Map<String, Object> paramMap) { public List<AdvertisingSpaceDTO> getDTOByBookId(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(getStatement("getDTOByBookId"), paramMap); return super.getSqlSession().selectList(getStatement("getDTOByBookId"), paramMap);
} }
@Override
public void updateTestStatus(Boolean isTest, Long id) {
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("isTest", isTest);
getSessionTemplate().update(getStatement("updateTestStatus"), map);
}
@Override
public List<AdvertisingSpace> getByIds(List<Long> ids) {
Map<String, Object> map = new HashMap<>();
map.put("ids", ids);
return getSessionTemplate().selectList(getStatement("getByIds"), map);
}
} }
...@@ -95,6 +95,11 @@ public class AdvertisingSpaceDTO extends BaseDto { ...@@ -95,6 +95,11 @@ public class AdvertisingSpaceDTO extends BaseDto {
private Boolean isOpen; private Boolean isOpen;
/** /**
* 是否测试
*/
private Boolean isTest;
/**
* 投放书刊数量 * 投放书刊数量
*/ */
private Integer bookNum; private Integer bookNum;
...@@ -473,6 +478,15 @@ public class AdvertisingSpaceDTO extends BaseDto { ...@@ -473,6 +478,15 @@ public class AdvertisingSpaceDTO extends BaseDto {
this.clickUserNum = clickUserNum; this.clickUserNum = clickUserNum;
} }
public Boolean getIsTest() {
return isTest;
}
public void setIsTest(Boolean isTest) {
this.isTest = isTest;
}
@Override @Override
public String toString() { public String toString() {
return "AdvertisingSpaceDTO{" + return "AdvertisingSpaceDTO{" +
...@@ -492,6 +506,7 @@ public class AdvertisingSpaceDTO extends BaseDto { ...@@ -492,6 +506,7 @@ public class AdvertisingSpaceDTO extends BaseDto {
", createTime=" + createTime + ", createTime=" + createTime +
", updateTime=" + updateTime + ", updateTime=" + updateTime +
", isOpen=" + isOpen + ", isOpen=" + isOpen +
", isTest=" + isTest +
", bookNum=" + bookNum + ", bookNum=" + bookNum +
", bookName='" + bookName + '\'' + ", bookName='" + bookName + '\'' +
", bookId=" + bookId + ", bookId=" + bookId +
......
package com.pcloud.book.advertising.dto;
import com.pcloud.common.dto.BaseDto;
/**
* @描述:
* @作者:zhuyajie
* @创建时间:11:27 2019/6/27
* @版本:1.0
*/
public class QrcodeAdvertisingSpaceCountDTO extends BaseDto{
/**
* 二维码id
*/
private Long qrcodeId;
/**
* 广告位数量
*/
private Integer advertisingSpaceNum;
public Long getQrcodeId() {
return qrcodeId;
}
public void setQrcodeId(Long qrcodeId) {
this.qrcodeId = qrcodeId;
}
public Integer getAdvertisingSpaceNum() {
return advertisingSpaceNum;
}
public void setAdvertisingSpaceNum(Integer advertisingSpaceNum) {
this.advertisingSpaceNum = advertisingSpaceNum;
}
@Override
public String toString() {
return "QrcodeAdvertisingSpaceCountDTO{" +
"qrcodeId=" + qrcodeId +
", advertisingSpaceNum=" + advertisingSpaceNum +
'}';
}
}
package com.pcloud.book.advertising.dto;
/**
* @描述:是否测试
* @作者:zhuyajie
* @创建时间:16:40 2019/6/27
* @版本:1.0
*/
public class TestParamDTO {
/**
* 是否测试
*/
private Boolean isTest;
/**
* 广告id
*/
private Long id;
public Boolean getTest() {
return isTest;
}
public void setTest(Boolean test) {
isTest = test;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public String toString() {
return "TestParamDTO{" +
"isTest=" + isTest +
", id=" + id +
'}';
}
}
...@@ -77,6 +77,11 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -77,6 +77,11 @@ public class AdvertisingSpace extends BaseEntity {
private Date updateTime; private Date updateTime;
/** /**
* 是否测试
*/
private Boolean isTest;
/**
* advertising_space.is_open (是否打开) * advertising_space.is_open (是否打开)
*/ */
private Boolean isOpen; private Boolean isOpen;
...@@ -225,6 +230,15 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -225,6 +230,15 @@ public class AdvertisingSpace extends BaseEntity {
this.priceEachTime = priceEachTime; this.priceEachTime = priceEachTime;
} }
public Boolean getIsTest() {
return isTest;
}
public void setIsTest(Boolean isTest) {
this.isTest = isOpen;
}
@Override @Override
public String toString() { public String toString() {
return "AdvertisingSpace{" + return "AdvertisingSpace{" +
...@@ -241,6 +255,7 @@ public class AdvertisingSpace extends BaseEntity { ...@@ -241,6 +255,7 @@ public class AdvertisingSpace extends BaseEntity {
", adPic='" + adPic + '\'' + ", adPic='" + adPic + '\'' +
", createTime=" + createTime + ", createTime=" + createTime +
", updateTime=" + updateTime + ", updateTime=" + updateTime +
", isTest=" + isTest +
", isOpen=" + isOpen + ", isOpen=" + isOpen +
", settlementMethod='" + settlementMethod + '\'' + ", settlementMethod='" + settlementMethod + '\'' +
", priceEachTime=" + priceEachTime + ", priceEachTime=" + priceEachTime +
......
package com.pcloud.book.advertising.facade; package com.pcloud.book.advertising.facade;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission; import com.pcloud.book.advertising.dto.TestParamDTO;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; import com.pcloud.book.advertising.entity.*;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
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.permission.PermissionException; import com.pcloud.common.permission.PermissionException;
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.*;
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 io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/** /**
* Description 广告位接口层接口 * Description 广告位接口层接口
...@@ -79,7 +70,7 @@ public interface AdvertisingSpaceFacade { ...@@ -79,7 +70,7 @@ public interface AdvertisingSpaceFacade {
* @throws BizException * @throws BizException
* @throws JsonParseException * @throws JsonParseException
*/ */
@ApiOperation(value = "修改广告位", httpMethod = "GET") @ApiOperation(value = "获取广告位信息", httpMethod = "GET")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"), @ApiImplicitParam(name = "token", value = "用户身份信息", required = false, dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "adId", value = "广告位ID", required = false, dataType = "Long", paramType = "query") @ApiImplicitParam(name = "adId", value = "广告位ID", required = false, dataType = "Long", paramType = "query")
...@@ -289,11 +280,13 @@ public interface AdvertisingSpaceFacade { ...@@ -289,11 +280,13 @@ public interface AdvertisingSpaceFacade {
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "int", paramType = "query"),
@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")
}) })
@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)
throws PermissionException, BizException, JsonParseException; throws PermissionException, BizException, JsonParseException;
/** /**
...@@ -843,4 +836,9 @@ public interface AdvertisingSpaceFacade { ...@@ -843,4 +836,9 @@ public interface AdvertisingSpaceFacade {
@RequestMapping(value = "getGroupQrcodeInfo", method = RequestMethod.GET) @RequestMapping(value = "getGroupQrcodeInfo", method = RequestMethod.GET)
ResponseDto<?> getGroupQrcodeInfo(@RequestHeader("token") String token, @RequestParam(value = "qrcodeId", required = false) Long qrcodeId) ResponseDto<?> getGroupQrcodeInfo(@RequestHeader("token") String token, @RequestParam(value = "qrcodeId", required = false) Long qrcodeId)
throws PermissionException, BizException, JsonParseException; throws PermissionException, BizException, JsonParseException;
@ApiOperation(value = "更新广告位测试状态", httpMethod = "POST")
@PostMapping("updateTestStatus")
public ResponseDto<?> updateTestStatus(@RequestHeader("token") String token, @RequestBody @ApiParam TestParamDTO testParamDTO) throws PermissionException;
} }
...@@ -2,13 +2,8 @@ package com.pcloud.book.advertising.facade.impl; ...@@ -2,13 +2,8 @@ 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.dto.AdvertisingSpaceDTO; import com.pcloud.book.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.book.advertising.entity.AdvertisingAdviserPermission; import com.pcloud.book.advertising.dto.TestParamDTO;
import com.pcloud.book.advertising.entity.AdvertisingAgentPermission; import com.pcloud.book.advertising.entity.*;
import com.pcloud.book.advertising.entity.AdvertisingClickRecord;
import com.pcloud.book.advertising.entity.AdvertisingDistributionBook;
import com.pcloud.book.advertising.entity.AdvertisingExposureRecord;
import com.pcloud.book.advertising.entity.AdvertisingMaster;
import com.pcloud.book.advertising.entity.AdvertisingSpace;
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;
...@@ -19,15 +14,11 @@ import com.pcloud.common.utils.SessionUtil; ...@@ -19,15 +14,11 @@ import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie; import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.*;
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.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -254,8 +245,9 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade { ...@@ -254,8 +245,9 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
@Override @Override
@RequestMapping(value = "list", method = RequestMethod.GET) @RequestMapping(value = "list", method = RequestMethod.GET)
public ResponseDto<?> list(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name, public ResponseDto<?> list(@RequestHeader("token") String token, @RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "numPerPage", required = false) Integer numPerPage, @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)
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;
...@@ -263,7 +255,10 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade { ...@@ -263,7 +255,10 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
if (null == filterClose) { if (null == filterClose) {
filterClose = true; filterClose = true;
} }
return new ResponseDto<>(advertisingSpaceBiz.list(name, new PageParam(currentPage, numPerPage), filterClose)); if (null == filterTest) {
filterTest = true;
}
return new ResponseDto<>(advertisingSpaceBiz.list(name, new PageParam(currentPage, numPerPage), filterClose, filterTest));
} }
/** /**
...@@ -681,4 +676,16 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade { ...@@ -681,4 +676,16 @@ public class AdvertisingSpaceFacadeImpl implements AdvertisingSpaceFacade {
SessionUtil.getToken4Redis(token); SessionUtil.getToken4Redis(token);
return new ResponseDto<>(advertisingSpaceBiz.getGroupQrcodeInfo(qrcodeId)); return new ResponseDto<>(advertisingSpaceBiz.getGroupQrcodeInfo(qrcodeId));
} }
@Override
@PostMapping("updateTestStatus")
public ResponseDto<?> updateTestStatus(@RequestHeader("token") String token, @RequestBody TestParamDTO testParamDTO) throws PermissionException {
SessionUtil.getToken4Redis(token);
if (null == testParamDTO || null == testParamDTO.getId() || null == testParamDTO.getTest()) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少参数");
}
advertisingSpaceBiz.updateTestStatus(testParamDTO.getTest(), testParamDTO.getId());
return new ResponseDto<>();
}
} }
package com.pcloud.book.group.biz; package com.pcloud.book.group.biz;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO; import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO; import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.vo.ClassifyQrcodeVO; import com.pcloud.book.group.vo.ClassifyQrcodeVO;
...@@ -95,4 +96,27 @@ public interface GroupQrcodeBiz { ...@@ -95,4 +96,27 @@ public interface GroupQrcodeBiz {
* @Date:2019/5/28 11:47 * @Date:2019/5/28 11:47
*/ */
void updateUserNumber(String weixinGroupId); void updateUserNumber(String weixinGroupId);
/**
* 群信息及广告信息
* @param wxGroupIds
* @return
*/
Map<String, GroupQrcodeInfo4Advertising> listGroupQrcodeInfo4Advertising(List<String> wxGroupIds);
/**
* 按条件查微信群
* @param query
* @param proLabelId
* @param depLabelId
* @param purLabelId
* @return
*/
List<Long> listQrcodeIdsByLabelQuery(String query, Long proLabelId, Long depLabelId, Long purLabelId);
/**
* 过滤删除的群二维码id
* @param wxGroupIdList
* @return
*/
List<Long> filterDeleteId(List<String> wxGroupIdList);
} }
package com.pcloud.book.group.biz.impl; package com.pcloud.book.group.biz.impl;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
import com.pcloud.book.advertising.dto.QrcodeAdvertisingSpaceCountDTO;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
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.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
...@@ -14,6 +18,7 @@ import com.pcloud.book.group.dto.ChangeGroupNameDTO; ...@@ -14,6 +18,7 @@ import com.pcloud.book.group.dto.ChangeGroupNameDTO;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO; import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO; import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO; import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO; import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.PushAddUserMessageDTO; import com.pcloud.book.group.dto.PushAddUserMessageDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO; import com.pcloud.book.group.dto.WeixinQrcodeDTO;
...@@ -37,8 +42,10 @@ import com.pcloud.common.page.PageParam; ...@@ -37,8 +42,10 @@ import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils; import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.sdk.wxgroup.WxGroupSDK; import com.sdk.wxgroup.WxGroupSDK;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -82,6 +89,10 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -82,6 +89,10 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
private PushGroupDao pushGroupDao; private PushGroupDao pushGroupDao;
@Autowired @Autowired
private AdviserConsr adviserConsr; private AdviserConsr adviserConsr;
@Autowired
private AdvertisingSpaceBiz advertisingSpaceBiz;
@Autowired
private LabelConsr labelConsr;
private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5); private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5);
...@@ -279,6 +290,86 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -279,6 +290,86 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
} }
} }
@Override
public Map<String, GroupQrcodeInfo4Advertising> listGroupQrcodeInfo4Advertising(List<String> wxGroupIds) {
Map<String, GroupQrcodeInfo4Advertising> resultMap = new HashMap<>();
List<GroupQrcodeInfo4Advertising> advertisingList = groupQrcodeDao.getGroupInfo4AdvertisingByWxGroupIds(wxGroupIds);
if (ListUtils.isEmpty(advertisingList)) {
return new HashMap<>();
}
List<Long> adviserIds = advertisingList.stream().filter(s -> s.getAdviserId() != null).map(GroupQrcodeInfo4Advertising::getAdviserId).distinct().collect(Collectors.toList());
List<Long> qrcodeIds = advertisingList.stream().filter(s -> s.getGroupQrcodeId() != null).map(GroupQrcodeInfo4Advertising::getGroupQrcodeId).distinct().collect(Collectors.toList());
List<Long> labelIds = new ArrayList<>();
List<Long> proLabels = advertisingList.stream().filter(s -> s.getProLabelId() != null).map(GroupQrcodeInfo4Advertising::getProLabelId).distinct().collect(Collectors.toList());
List<Long> depLabels = advertisingList.stream().filter(s -> s.getDepLabelId() != null).map(GroupQrcodeInfo4Advertising::getDepLabelId).distinct().collect(Collectors.toList());
List<Long> purLabels = advertisingList.stream().filter(s -> s.getPurLabelId() != null).map(GroupQrcodeInfo4Advertising::getPurLabelId).distinct().collect(Collectors.toList());
if (!ListUtils.isEmpty(proLabels)) {
labelIds.addAll(proLabels);
}
if (!ListUtils.isEmpty(depLabels)) {
labelIds.addAll(depLabels);
}
if (!ListUtils.isEmpty(purLabels)) {
labelIds.addAll(purLabels);
}
//关闭广告位的出版社
List<Long> closeAgentIds = advertisingSpaceBiz.getCloseAgentId();
//出版社信息
Map<Long, AdviserBaseInfoDto> baseInfoDtoMap = new HashMap<>();
Map<Long, String> adviserNameMap = new HashMap<>();
//获取广告位数量
Map<Long, QrcodeAdvertisingSpaceCountDTO> advertisingSpaceNumMap = new HashMap<>();
//标签
Map<Long, String> labelMap = new HashMap<>();
if (!ListUtils.isEmpty(adviserIds)) {
baseInfoDtoMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(adviserIds);
adviserNameMap = adviserConsr.getNames(adviserIds);
}
if (!ListUtils.isEmpty(qrcodeIds)) {
advertisingSpaceNumMap = advertisingSpaceBiz.mapAdvertisingSpaceNum(qrcodeIds);
}
if (!ListUtils.isEmpty(labelIds)) {
labelMap = labelConsr.getLabelName(labelIds);
}
for (GroupQrcodeInfo4Advertising advertising : advertisingList) {
if (!MapUtils.isEmpty(baseInfoDtoMap) && null != advertising.getAdviserId()) {
AdviserBaseInfoDto adviserBaseInfoDto = baseInfoDtoMap.get(advertising.getAdviserId());
if (null != adviserBaseInfoDto) {
advertising.setAgentId(adviserBaseInfoDto.getAgentId());
advertising.setAgentName(adviserBaseInfoDto.getAgentName());
}
}
if (!MapUtils.isEmpty(adviserNameMap) && null != advertising.getAdviserId()) {
advertising.setAdviserName(adviserNameMap.get(advertising.getAdviserId()));
}
if (!ListUtils.isEmpty(closeAgentIds) && null != advertising.getAgentId()) {
if (closeAgentIds.contains(advertising.getAgentId())) {
advertising.setOpen(false);
}
}
if (!MapUtils.isEmpty(advertisingSpaceNumMap) && null != advertising.getGroupQrcodeId()) {
QrcodeAdvertisingSpaceCountDTO dto = advertisingSpaceNumMap.get(advertising.getGroupQrcodeId());
if (null != dto) {
advertising.setAdvertisingSpaceNum(dto.getAdvertisingSpaceNum());
}
}
if (!MapUtils.isEmpty(labelMap)) {
if (null != advertising.getProLabelId() && labelMap.containsKey(advertising.getProLabelId())) {
advertising.setProLabelName(labelMap.get(advertising.getProLabelId()));
}
if (null != advertising.getDepLabelId() && labelMap.containsKey(advertising.getDepLabelId())) {
advertising.setDepLabelName(labelMap.get(advertising.getDepLabelId()));
}
if (null != advertising.getPurLabelId() && labelMap.containsKey(advertising.getPurLabelId())) {
advertising.setPurLabelName(labelMap.get(advertising.getPurLabelId()));
}
}
resultMap.put(advertising.getWxGroupId(), advertising);
}
return resultMap;
}
/** /**
* 重新分配一个群 * 重新分配一个群
*/ */
...@@ -331,5 +422,28 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -331,5 +422,28 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
weixinQrcodeBiz.updateUseState(weixinQrcodeId, QrcodeStatusEnum.OVER_NUMBER.value); weixinQrcodeBiz.updateUseState(weixinQrcodeId, QrcodeStatusEnum.OVER_NUMBER.value);
} }
@Override
public List<Long> listQrcodeIdsByLabelQuery(String query, Long proLabelId, Long depLabelId, Long purLabelId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("query", StringUtil.isEmpty(query) ? null : query);
paramMap.put("proLabelId",proLabelId);
paramMap.put("depLabelId",depLabelId);
paramMap.put("purLabelId",purLabelId);
List<Long> list = groupQrcodeDao.listQrcodeIdsByLabelQuery(paramMap);
if (ListUtils.isEmpty(list)){
list = new ArrayList<>();
}
return list;
}
@Override
public List<Long> filterDeleteId(List<String> wxGroupIdList) {
List<Long> qrcodeIds = groupQrcodeDao.filterDeleteQrcodeId(wxGroupIdList);
if (ListUtils.isEmpty(qrcodeIds)){
return new ArrayList<>();
}else {
return qrcodeIds;
}
}
} }
...@@ -3,6 +3,7 @@ package com.pcloud.book.group.dao; ...@@ -3,6 +3,7 @@ package com.pcloud.book.group.dao;
import com.pcloud.book.group.dto.ChangeGroupNameDTO; import com.pcloud.book.group.dto.ChangeGroupNameDTO;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO; import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO; import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO; import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.UpdateQrDTO; import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
...@@ -168,4 +169,25 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> { ...@@ -168,4 +169,25 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
* @param userCount * @param userCount
*/ */
List<GroupQrcode> getListByUserCount(Integer userCount); List<GroupQrcode> getListByUserCount(Integer userCount);
/**
* 群信息及广告位信息
* @param wxGroupIds
* @return
*/
List<GroupQrcodeInfo4Advertising>getGroupInfo4AdvertisingByWxGroupIds(List<String> wxGroupIds);
/**
* 按条件查微信群
* @param paramMap
* @return
*/
List<Long> listQrcodeIdsByLabelQuery(Map<String, Object> paramMap);
/**
* 过滤删除的群二维码id
* @param wxGroupIdList
* @return
*/
List<Long> filterDeleteQrcodeId(List<String> wxGroupIdList);
} }
...@@ -6,6 +6,7 @@ import com.pcloud.book.group.dao.GroupQrcodeDao; ...@@ -6,6 +6,7 @@ import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.ChangeGroupNameDTO; import com.pcloud.book.group.dto.ChangeGroupNameDTO;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO; import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO; import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO; import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.UpdateQrDTO; import com.pcloud.book.group.dto.UpdateQrDTO;
import com.pcloud.book.group.entity.GroupQrcode; import com.pcloud.book.group.entity.GroupQrcode;
...@@ -164,4 +165,20 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou ...@@ -164,4 +165,20 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
public List<GroupQrcode> getListByUserCount(Integer userCount) { public List<GroupQrcode> getListByUserCount(Integer userCount) {
return this.getSqlSession().selectList(this.getStatement("getListByUserCount"), userCount); return this.getSqlSession().selectList(this.getStatement("getListByUserCount"), userCount);
} }
@Override
public List<GroupQrcodeInfo4Advertising> getGroupInfo4AdvertisingByWxGroupIds(List<String> wxGroupIds) {
return this.getSqlSession().selectList(this.getStatement("getGroupInfo4AdvertisingByWxGroupIds"), wxGroupIds);
}
@Override
public List<Long> listQrcodeIdsByLabelQuery(Map<String, Object> paramMap) {
return this.getSqlSession().selectList(getStatement("listQrcodeIdsByLabelQuery"),paramMap);
}
@Override
public List<Long> filterDeleteQrcodeId(List<String> wxGroupIdList) {
return this.getSqlSession().selectList(this.getStatement("filterDeleteQrcodeId"), wxGroupIdList);
}
} }
package com.pcloud.book.group.service.impl; package com.pcloud.book.group.service.impl;
import com.pcloud.book.group.biz.BookGroupClassifyBiz; import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO; import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeBaseDTO; import com.pcloud.book.group.dto.GroupQrcodeBaseDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO; import com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO;
import com.pcloud.book.group.service.BookGroupClassifyService; import com.pcloud.book.group.service.BookGroupClassifyService;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -20,6 +22,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -20,6 +22,9 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
/** /**
* @author lily * @author lily
* @date 2019/4/28 20:23 * @date 2019/4/28 20:23
...@@ -29,6 +34,8 @@ import java.util.Map; ...@@ -29,6 +34,8 @@ import java.util.Map;
public class BookGroupClassifyServiceImpl implements BookGroupClassifyService { public class BookGroupClassifyServiceImpl implements BookGroupClassifyService {
@Autowired @Autowired
private BookGroupClassifyBiz bookGroupClassifyBiz; private BookGroupClassifyBiz bookGroupClassifyBiz;
@Autowired
private GroupQrcodeBiz groupQrcodeBiz;
@Override @Override
@GetMapping("getClassifyQrcodeInfo") @GetMapping("getClassifyQrcodeInfo")
...@@ -50,4 +57,35 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService { ...@@ -50,4 +57,35 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService {
ProAssocGroupAndUserNumberDTO proAssocGroupAndUserNumberDTO = bookGroupClassifyBiz.getProAssocGroupAndUserNumber(productId); ProAssocGroupAndUserNumberDTO proAssocGroupAndUserNumberDTO = bookGroupClassifyBiz.getProAssocGroupAndUserNumber(productId);
return ResponseHandleUtil.toResponse(proAssocGroupAndUserNumberDTO); return ResponseHandleUtil.toResponse(proAssocGroupAndUserNumberDTO);
} }
@Override
@PostMapping("listGroupQrcodeInfo4Advertising")
public ResponseEntity<ResponseDto<Map<String, GroupQrcodeInfo4Advertising>>> listGroupQrcodeInfo4Advertising(@RequestBody List<String> wxGroupIds) {
Map<String, GroupQrcodeInfo4Advertising> map = groupQrcodeBiz.listGroupQrcodeInfo4Advertising(wxGroupIds);
return ResponseHandleUtil.toResponse(map);
}
@Override
@ApiImplicitParams({
@ApiImplicitParam(name = "query", value = "书籍名称", dataType = "string",required = false, paramType = "query"),
@ApiImplicitParam(name = "proLabelId", value = "专业标签id", dataType = "long",required = false, paramType = "query"),
@ApiImplicitParam(name = "depLabelId", value = "深度标签id", dataType = "long",required = false, paramType = "query"),
@ApiImplicitParam(name = "purLabelId", value = "目的标签id", dataType = "string",required = false, paramType = "query")
})
@GetMapping("listQrcodeIdsByLabelQuery")
public ResponseEntity<ResponseDto<List<Long>>> listQrcodeIdsByLabelQuery(
@RequestParam(value = "query", required = false) String query,
@RequestParam(value = "proLabelId", required = false) Long proLabelId,
@RequestParam(value = "depLabelId", required = false) Long depLabelId,
@RequestParam(value = "purLabelId", required = false) Long purLabelId) {
List<Long> list = groupQrcodeBiz.listQrcodeIdsByLabelQuery(query, proLabelId, depLabelId, purLabelId);
return ResponseHandleUtil.toResponse(list);
}
@Override
@PostMapping("filterDeleteId")
public ResponseEntity<ResponseDto<List<Long>>> filterDeleteId(@RequestBody List<String >wxGroupIdList){
List<Long>qrcodeIds = groupQrcodeBiz.filterDeleteId(wxGroupIdList);
return ResponseHandleUtil.toResponse(qrcodeIds);
}
} }
...@@ -53,4 +53,5 @@ public class BookGroupServiceImpl implements BookGroupService { ...@@ -53,4 +53,5 @@ public class BookGroupServiceImpl implements BookGroupService {
public ResponseEntity<ResponseDto<BookGroupDTO>> getBaseInfoBySceneId(@RequestParam("sceneId") Long sceneId) throws BizException { public ResponseEntity<ResponseDto<BookGroupDTO>> getBaseInfoBySceneId(@RequestParam("sceneId") Long sceneId) throws BizException {
return ResponseHandleUtil.toResponse(bookGroupBiz.getBaseInfoBySceneId(sceneId)); return ResponseHandleUtil.toResponse(bookGroupBiz.getBaseInfoBySceneId(sceneId));
} }
} }
...@@ -62,4 +62,13 @@ ...@@ -62,4 +62,13 @@
</set> </set>
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</update> </update>
<select id="getCloseAgentId" resultType="Long">
SELECT DISTINCT
agent_id
FROM
advertising_agent_permission
WHERE
is_open = 0
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -266,4 +266,24 @@ ...@@ -266,4 +266,24 @@
</set> </set>
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</update> </update>
<resultMap id="QrcodeAdvertisingSpaceMap" type="QrcodeAdvertisingSpaceCountDTO">
<id column="qrcode_id" property="qrcodeId" jdbcType="BIGINT"/>
<result column="count" property="advertisingSpaceNum" jdbcType="VARCHAR"/>
</resultMap>
<select id="mapAdvertisingSpaceNum" resultMap="QrcodeAdvertisingSpaceMap" parameterType="list">
SELECT
qrcode_id,
count(DISTINCT id) count
FROM
advertising_distribution_book
WHERE
qrcode_id IN
<foreach collection = "list" index="index" item = "item" open = "(" separator= "," close = ")">
#{item}
</foreach>
GROUP BY
qrcode_id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
<result column="ad_pic" property="adPic" jdbcType="VARCHAR"/> <result column="ad_pic" property="adPic" 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="is_test" property="isTest" jdbcType="BIT"/>
<result column="is_open" property="isOpen" jdbcType="BIT"/> <result column="is_open" property="isOpen" jdbcType="BIT"/>
</resultMap> </resultMap>
...@@ -32,12 +33,13 @@ ...@@ -32,12 +33,13 @@
<result column="ad_pic" property="adPic" jdbcType="VARCHAR"/> <result column="ad_pic" property="adPic" 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="is_test" property="isTest" jdbcType="BIT"/>
<result column="is_open" property="isOpen" jdbcType="BIT"/> <result column="is_open" property="isOpen" jdbcType="BIT"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, ad_name, ad_position, ad_position_mode, ad_position_detail, master_id, ad_link, source_id, id, ad_name, ad_position, ad_position_mode, ad_position_detail, master_id, ad_link, source_id,
ad_title, ad_slogan, ad_pic, create_time, update_time, is_open ad_title, ad_slogan, ad_pic, create_time, update_time,is_test, is_open
</sql> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="Long"> <select id="getById" resultMap="BaseResultMap" parameterType="Long">
...@@ -127,6 +129,9 @@ ...@@ -127,6 +129,9 @@
<if test="filterClose == 1"> <if test="filterClose == 1">
AND is_open = 1 AND is_open = 1
</if> </if>
<if test="filterTest == 1">
AND (is_test = 0 OR is_test IS NULL)
</if>
order by order by
create_time desc create_time desc
</select> </select>
...@@ -232,6 +237,7 @@ ...@@ -232,6 +237,7 @@
create_time, create_time,
update_time, update_time,
is_open, is_open,
is_test,
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{adName,jdbcType=VARCHAR}, #{adName,jdbcType=VARCHAR},
...@@ -247,6 +253,7 @@ ...@@ -247,6 +253,7 @@
NOW(), NOW(),
NOW(), NOW(),
#{isOpen,jdbcType=BIT}, #{isOpen,jdbcType=BIT},
0,
</trim> </trim>
</insert> </insert>
...@@ -290,4 +297,12 @@ ...@@ -290,4 +297,12 @@
</set> </set>
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</update> </update>
<update id="updateTestStatus" parameterType="map">
UPDATE advertising_space
SET is_test = #{isTest}
WHERE
id = #{id}
</update>
</mapper> </mapper>
\ No newline at end of file
...@@ -351,4 +351,85 @@ ...@@ -351,4 +351,85 @@
select <include refid="Base_Column_List"/> from book_group_qrcode select <include refid="Base_Column_List"/> from book_group_qrcode
where user_number>=#{userCount} and is_delete=0 where user_number>=#{userCount} and is_delete=0
</select> </select>
<select id="getGroupInfo4AdvertisingByWxGroupIds" resultType="GroupQrcodeInfo4Advertising" parameterType="list">
SELECT
g.weixin_group_id wxGroupId,
g.id groupQrcodeId,
g.group_name groupName,
c.create_user adviserId,
b.BOOK_NAME bookName,
c.classify classify,
g.user_number userNumber,
g.qrcode_url qrcodeUrl,
bg.dep_label_id depLabelId,
bg.pro_label_id proLabelId,
bg.pur_label_id purLabelId,
IF (adp.is_open = 0, 0, 1) isOpen
FROM
book_group_qrcode g
LEFT JOIN book_group_classify c ON c.id = g.classify_id
AND c.is_delete = 0
AND g.is_delete = 0
LEFT JOIN book b ON c.book_id = b.book_id
LEFT JOIN book_group bg ON c.book_group_id = bg.id
LEFT JOIN advertising_adviser_permission adp ON adp.adviser_id = c.create_user
AND adp.channel_id = c.channel_id
AND adp.book_id = c.book_id
WHERE
c.create_user IS NOT NULL
AND g.weixin_group_id IN
<foreach collection = "list" index="index" item = "item" open = "(" separator= "," close = ")">
#{item}
</foreach>
</select>
<select id="listQrcodeIdsByLabelQuery" parameterType="map" resultType="String">
SELECT
DISTINCT g.id
FROM
book_group_qrcode g
LEFT JOIN book_group_classify c ON c.id = g.classify_id
AND c.is_delete = 0
AND g.is_delete = 0
LEFT JOIN book b ON c.book_id = b.book_id
LEFT JOIN book_group bg ON c.book_group_id = bg.id
WHERE
1 = 1
<if test="query != null">
AND (
book_name LIKE CONCAT('%', #{query},'%')
OR group_name LIKE CONCAT('%', #{query},'%')
OR classify LIKE CONCAT('%', #{query},'%')
)
</if>
<if test="depLabelId != null">
AND bg.dep_label_id = #{depLabelId}
</if>
<if test="proLabelId != null">
AND bg.pro_label_id = #{proLabelId}
</if>
<if test="purLabelId != null">
AND bg.pur_label_id = #{purLabelId}
</if>
AND g.weixin_group_id != ""
</select>
<select id="filterDeleteQrcodeId" resultType="Long" parameterType="list">
SELECT
g.id groupQrcodeId
FROM
book_group_qrcode g
LEFT JOIN book_group_classify c ON c.id = g.classify_id
AND c.is_delete = 0
AND g.is_delete = 0
WHERE
c.create_user IS NOT NULL
AND g.weixin_group_id IN
<foreach collection = "list" index="index" item = "item" open = "(" separator= "," close = ")">
#{item}
</foreach>
</select>
</mapper> </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