Commit f9a9a15b by 田超

Merge branch 'feature/1003702' into 'master'

feat: [1003702] 平台端出版社项目数据一览

See merge request rays/pcloud-book!1004
parents 5c319c0e 8410ff4e
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 编辑做书品种统计信息
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel("编辑做书品种统计信息")
public class BookVarietyStatsDto implements Serializable {
/**
* 累计做书品种数
*/
@ApiModelProperty("累计做书品种数")
private Integer varietyTotal;
/**
* 上季度做书品种数
*/
@ApiModelProperty("上季度做书品种数")
private Integer varietyLastQuarter;
/**
* 本季度做书品种数
*/
@ApiModelProperty("本季度做书品种数")
private Integer varietyThisQuarter;
/**
* 累计印册量
*/
@ApiModelProperty("累计印册量")
private Integer printTotal;
/**
* 上季度印册量
*/
@ApiModelProperty("上季度印册量")
private Integer printLastQuarter;
/**
* 本季度印册量
*/
@ApiModelProperty("本季度印册量")
private Integer printThisQuarter;
/**
* 累计扫码人数
*/
@ApiModelProperty("累计扫码人数")
private Integer scanUserTotal;
/**
* 上季度扫码人数
*/
@ApiModelProperty("上季度扫码人数")
private Integer scanUserLastQuarter;
/**
* 本季度扫码人数
*/
@ApiModelProperty("本季度扫码人数")
private Integer scanUserThisQuarter;
/**
* 累计浏览人数
*/
@ApiModelProperty("累计浏览人数")
private Integer browseUserTotal;
/**
* 上季度浏览人数
*/
@ApiModelProperty("上季度浏览人数")
private Integer browseUserLastQuarter;
/**
* 本季度浏览人数
*/
@ApiModelProperty("本季度浏览人数")
private Integer browseUserThisQuarter;
/**
* 累计扫码量
*/
@ApiModelProperty("累计扫码量")
private Integer scanTotal;
/**
* 上季度扫码量
*/
@ApiModelProperty("上季度扫码量")
private Integer scanLastQuarter;
/**
* 本季度扫码量
*/
@ApiModelProperty("本季度扫码量")
private Integer scanThisQuarter;
/**
* 累计浏览量
*/
@ApiModelProperty("累计浏览量")
private Integer browseTotal;
/**
* 上季度浏览量
*/
@ApiModelProperty("上季度浏览量")
private Integer browseLastQuarter;
/**
* 本季度浏览量
*/
@ApiModelProperty("本季度浏览量")
private Integer browseThisQuarter;
}
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 编辑做书品种统计信息 请求参数
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel("编辑做书品种统计信息 请求参数")
public class BookVarietyStatsRequestDto implements Serializable {
private static final long serialVersionUID = -1377926071522171617L;
@ApiModelProperty("出版社ID")
private Long agentId;
@ApiModelProperty("出版社编辑ID列表")
private List<Long> adviserIds;
}
package com.pcloud.book.book.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* ERP 图书印册量
*/
@Data
@ApiModel("ERP 图书印册量")
public class ERPPublishNumDTO {
@ApiModelProperty("编辑ID")
private Long adviserId;
@ApiModelProperty("渠道ID")
private Long channelId;
@ApiModelProperty("图书ID")
private Long bookId;
@ApiModelProperty("印册量")
private Long expectPublishNum;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createDate;
}
package com.pcloud.book.book.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel("ERP图书信息")
public class ErpBookInfoDTO {
@ApiModelProperty("项目编号")
private String projectNumber;
@ApiModelProperty("erp编号")
private String erpNumber;
@ApiModelProperty("出版物名称")
private String bookName;
@ApiModelProperty("RAYS编辑ID")
private Integer raysAdviserId;
@ApiModelProperty("关联RAYS书刊ID")
private Integer raysBookId;
@ApiModelProperty("关联RAYS渠道ID")
private Integer raysChannelId;
@ApiModelProperty("编辑id")
private Long adviserId;
@ApiModelProperty("ISBN")
private String isbn;
@ApiModelProperty("印册量")
private Long publishNum;
@ApiModelProperty("立项时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date buildTime;
}
......@@ -3,7 +3,17 @@
*/
package com.pcloud.book.book.service;
import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.AviserBookInfoParam;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountAndAdviserIdDTO;
import com.pcloud.book.book.dto.BookCountByAdvisersDto;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.BookRightsSettingDTO;
import com.pcloud.book.book.dto.BookVarietyStatsDto;
import com.pcloud.book.book.dto.BookVarietyStatsRequestDto;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
......@@ -13,7 +23,12 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
......@@ -140,4 +155,8 @@ public interface BookAdviserService {
@ApiOperation("获取书下资源总数(包括现代纸书、1V1、小睿、社群码)")
@GetMapping("mapResourceTotalCount")
ResponseEntity<ResponseDto<Map<String, BookResourceStatisticsDTO>>> mapResourceTotalCount(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO);
@ApiOperation(value = "获取编辑做书品种数统计信息", httpMethod = "POST")
@PostMapping("/getAdviserBookVarietyStats")
ResponseEntity<ResponseDto<Map<Long, BookVarietyStatsDto>>> getAdviserBookVarietyStats(@RequestBody List<BookVarietyStatsRequestDto> requestDtos) throws BizException;
}
......@@ -4,15 +4,31 @@
package com.pcloud.book.book.biz;
import com.pcloud.book.base.dto.CountDto;
import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.AdviserManageDto;
import com.pcloud.book.book.dto.AviserBookInfoParam;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountAndAdviserIdDTO;
import com.pcloud.book.book.dto.BookCountByAdvisersDto;
import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.BookRightsSettingDTO;
import com.pcloud.book.book.dto.BookVarietyStatsDto;
import com.pcloud.book.book.dto.BookVarietyStatsRequestDto;
import com.pcloud.book.book.dto.QrcodeStatisticsDTO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.ErpAdviserBookVO;
import com.pcloud.book.book.vo.PcloudAdviserBookVO;
import com.pcloud.book.book.vo.QrCodeVO;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -268,4 +284,10 @@ public interface BookAdviserBiz {
Map<String, BookAdviserDto> getBookInfoByBookIds(List<Long> bookIds, List<Long> adviserIds, List<Long> channelIds);
BookAdviserDto getBookByBookIdAdviserId(Long bookId, Long adviserId);
Map<Long,BookVarietyStatsDto> getAdviserBookVarietyStats(List<BookVarietyStatsRequestDto> requestDtos);
PageBeanNew<AgentBookStatsDetailVO> getAgentBookStatsDetail(Long agentId, String name, Date startDate, Date endDate, Integer isRay, Integer currentPage, Integer numPerPage);
void exportAgentBookStatsDetail(Long agentId, String name, Date startDate, Date endDate, Integer isRay);
}
......@@ -10,7 +10,10 @@ import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountAndAdviserIdDTO;
import com.pcloud.book.book.dto.BookCountByAdvisersDto;
import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
......@@ -289,4 +292,10 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
List<BookAdviserDto> getBookInfoByBookIds(List<Long> bookIds, List<Long> adviserIds, List<Long> channelIds);
BookAdviserDto getBookByBookIdAdviserId(Long bookId, Long adviserId);
List<BookAdviserDto> getAdviserBookVarietyStats(List<Long> adviserIds);
List<ERPPublishNumDTO> getErpPublishNumQueryParams(List<Long> adviserIds);
List<AgentBookStatsDetailVO> getAgentBookStatsDetail(List<ErpBookInfoDTO> raysBookIds, Integer isRay, String name, List<Long> advisers);
}
......@@ -3,10 +3,22 @@
*/
package com.pcloud.book.book.dao.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Maps;
import com.pcloud.book.book.dao.BookAdviserDao;
import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.AdviserManageDto;
import com.pcloud.book.book.dto.AviserBookInfoParam;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountAndAdviserIdDTO;
import com.pcloud.book.book.dto.BookCountByAdvisersDto;
import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
......@@ -316,4 +328,27 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
paramMap.put("adviserId", adviserId);
return super.getSqlSession().selectOne(this.getStatement("getBookByBookIdAdviserId"), paramMap);
}
@Override
public List<BookAdviserDto> getAdviserBookVarietyStats(List<Long> adviserIds) {
return super.getSqlSession().selectList(this.getStatement("getAdviserBookVarietyStats"), MapUtil.of("adviserIds",adviserIds));
}
@Override
public List<ERPPublishNumDTO> getErpPublishNumQueryParams(List<Long> adviserIds) {
return super.getSqlSession().selectList(getStatement("getErpPublishNumQueryParams"),MapUtil.of("adviserIds",adviserIds));
}
@Override
public List<AgentBookStatsDetailVO> getAgentBookStatsDetail(List<ErpBookInfoDTO> raysBookIds, Integer isRay, String name, List<Long> advisers) {
Map<String, Object> map = new HashMap<>();
if (StrUtil.isNotBlank(name) && name.startsWith("BK")){
map.put("bookNo", name.substring(2));
}
map.put("raysBookIds", CollUtil.isEmpty(raysBookIds) ? null : raysBookIds);
map.put("isRay", isRay);
map.put("name", name);
map.put("advisers", advisers);
return super.getSqlSession().selectList(getStatement("getAgentBookStatsDetail"), map);
}
}
......@@ -11,16 +11,28 @@ import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.PcloudAdviserBookVO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException;
import io.swagger.annotations.*;
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;
import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
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 java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -252,4 +264,28 @@ public interface BookAdviserFacade {
@PostMapping("getBookInfoByBookIds")
ResponseDto<?> getBookInfoByBookIds(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO);
@ApiOperation("出版社作书数据列表明细")
@RequestMapping(value = "/getAgentBookStatsDetail", method = RequestMethod.GET)
ResponseDto<PageBeanNew<AgentBookStatsDetailVO>> getAgentBookStatsDetail(
@RequestHeader("token") String token,
@RequestParam(value = "agentId") Long agentId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "isRay", required = false) Integer isRay,
@RequestParam(value = "currentPage") Integer currentPage,
@RequestParam(value = "numPerPage") Integer numPerPage
) throws BizException;
@ApiOperation("出版社作书数据列表明细导出")
@RequestMapping(value = "/exportAgentBookStatsDetail", method = RequestMethod.GET)
ResponseDto<?> exportAgentBookStatsDetail(
@RequestHeader("token") String token,
@RequestParam(value = "agentId") Long agentId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "isRay", required = false) Integer isRay
) throws BizException;
}
......@@ -3,19 +3,29 @@
*/
package com.pcloud.book.book.facade.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.pcloud.book.base.dto.CountDto;
import com.pcloud.book.book.biz.BookAdviserBiz;
import com.pcloud.book.book.dto.AdviserManageDto;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.BookDataStatisticsDTO;
import com.pcloud.book.book.dto.BookQrcodeStatisticsDTO;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.QrcodeStatisticsDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.facade.BookAdviserFacade;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.PcloudAdviserBookVO;
import com.pcloud.book.book.vo.QrCodeVO;
import com.pcloud.channelcenter.qrcode.entity.QrcodeScene;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.ParamChecker;
import com.pcloud.common.utils.SessionUtil;
import io.swagger.annotations.ApiModelProperty;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -27,17 +37,12 @@ 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 com.pcloud.book.base.dto.CountDto;
import com.pcloud.book.book.biz.BookAdviserBiz;
import com.pcloud.book.book.dto.AdviserManageDto;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.facade.BookAdviserFacade;
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 java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @描述:顾问书籍管理接口实现类
......@@ -266,4 +271,44 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
public ResponseDto<?> getBookInfoByBookIds(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO) {
return new ResponseDto<>(bookAdviserBiz.getBookInfoByBookIds(mapResourceTotalCountDTO.getBookIds(), mapResourceTotalCountDTO.getAdviserIds(), mapResourceTotalCountDTO.getChannelIds()));
}
@Override
@RequestMapping(value = "/getAgentBookStatsDetail", method = RequestMethod.GET)
public ResponseDto<PageBeanNew<AgentBookStatsDetailVO>> getAgentBookStatsDetail(
@RequestHeader("token") String token,
@RequestParam(value = "agentId") Long agentId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "isRay", required = false) Integer isRay,
@RequestParam(value = "currentPage") Integer currentPage,
@RequestParam(value = "numPerPage") Integer numPerPage
) throws BizException {
SessionUtil.getToken4Redis(token);
ParamChecker.checkPageParamIsAbsent(currentPage,numPerPage,"分页参数错误");
DateTime start = Objects.isNull(DateUtil.parse(startDate))?null: DateUtil.beginOfDay(DateUtil.parse(startDate));
DateTime end =Objects.isNull(DateUtil.parse(endDate))?null:DateUtil.beginOfDay(DateUtil.parse(endDate));
// 开始结束同一天 则结束时间后延一天
if (Objects.nonNull(start) && Objects.equals(start,end)){
end = DateUtil.offsetDay(end.toJdkDate(),1);
}
return new ResponseDto<>(bookAdviserBiz.getAgentBookStatsDetail(agentId, name, start, end, isRay, currentPage, numPerPage));
}
@Override
@RequestMapping(value = "/exportAgentBookStatsDetail", method = RequestMethod.GET)
public ResponseDto<?> exportAgentBookStatsDetail(
@RequestHeader("token") String token,
@RequestParam(value = "agentId") Long agentId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "isRay", required = false) Integer isRay
) throws BizException {
SessionUtil.getToken4Redis(token);
DateTime start = Objects.isNull(DateUtil.parse(startDate))?null: DateUtil.beginOfDay(DateUtil.parse(startDate));
DateTime end =Objects.isNull(DateUtil.parse(endDate))?null:DateUtil.beginOfDay(DateUtil.parse(endDate));
bookAdviserBiz.exportAgentBookStatsDetail(agentId, name, start, end, isRay);
return new ResponseDto<>();
}
}
......@@ -5,7 +5,17 @@ package com.pcloud.book.book.service.impl;
import com.pcloud.book.book.biz.BookAdviserBiz;
import com.pcloud.book.book.biz.BookRaysClassifyBiz;
import com.pcloud.book.book.dto.*;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.AviserBookInfoParam;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookCountAndAdviserIdDTO;
import com.pcloud.book.book.dto.BookCountByAdvisersDto;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookResourceStatisticsDTO;
import com.pcloud.book.book.dto.BookRightsSettingDTO;
import com.pcloud.book.book.dto.BookVarietyStatsDto;
import com.pcloud.book.book.dto.BookVarietyStatsRequestDto;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.service.BookAdviserService;
import com.pcloud.common.dto.ResponseDto;
......@@ -13,7 +23,13 @@ import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ResponseHandleUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
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.List;
import java.util.Map;
......@@ -149,4 +165,10 @@ public class BookAdviserServiceImpl implements BookAdviserService {
public ResponseEntity<ResponseDto<Map<String, BookResourceStatisticsDTO>>> mapResourceTotalCount(@RequestBody MapResourceTotalCountDTO mapResourceTotalCountDTO) {
return ResponseHandleUtil.toResponse(bookAdviserBiz.mapResourceTotalCount(mapResourceTotalCountDTO.getAdviserIds(), mapResourceTotalCountDTO.getBookIds(), mapResourceTotalCountDTO.getChannelIds()));
}
@Override
@PostMapping("/getAdviserBookVarietyStats")
public ResponseEntity<ResponseDto<Map<Long, BookVarietyStatsDto>>> getAdviserBookVarietyStats(@RequestBody List<BookVarietyStatsRequestDto> requestDtos) throws BizException {
return ResponseHandleUtil.toResponse(bookAdviserBiz.getAdviserBookVarietyStats(requestDtos));
}
}
package com.pcloud.book.book.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 出版社做书数据列表明细
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel("出版社做书数据列表明细")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AgentBookStatsDetailVO implements Serializable {
private static final long serialVersionUID = 9125134175050870278L;
/**
* 书名
*/
@ApiModelProperty("书名")
private String bookName;
/**
* ISBN
*/
@ApiModelProperty("ISBN")
private String isbn;
/**
* 序号
*/
@ApiModelProperty("序号")
private String serialNumber;
/**
* ERP编号
*/
@ApiModelProperty("ERP编号")
private String erpNumber;
/**
* 项目编号
*/
@ApiModelProperty("项目编号")
private String projectNumber;
/**
* 图书ID
*/
@ApiModelProperty("图书ID")
private Long bookId;
/**
* 二维码列表
*/
@ApiModelProperty("二维码列表")
private List<QrcodeInfoDto> qrcodeList;
/**
* 编辑名称
*/
@ApiModelProperty("编辑名称")
private String adviserName;
/**
* 编辑ID
*/
@ApiModelProperty("编辑ID")
private Long adviserId;
/**
* 是否小睿书
*/
@ApiModelProperty("是否小睿书")
private Integer isRay;
/**
* 立项时间
*/
@ApiModelProperty("立项时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date toProjectTime;
/**
* 印册量
*/
@ApiModelProperty("印册量")
private Integer expectPublishNum;
/**
* 总浏览量
*/
@ApiModelProperty("总浏览量")
private Integer browseTotal;
/**
* 总浏览人数
*/
@ApiModelProperty("总浏览人数")
private Integer browseUserTotal;
/**
* 总扫码量
*/
@ApiModelProperty("总扫码量")
private Integer scanTotal;
/**
* 总扫码人数
*/
@ApiModelProperty("总扫码人数")
private Integer scanUserTotal;
/**
* 总成交金额
*/
@ApiModelProperty("总成交金额")
private BigDecimal amountTotal;
/**
* bookAdviserId
*/
@ApiModelProperty("bookAdviserId")
private Long bookAdviserId;
/**
* channelId
*/
@ApiModelProperty("channelId")
private Long channelId;
/**
* bookGroupId
*/
@ApiModelProperty("bookGroupId")
private Long bookGroupId;
}
package com.pcloud.book.book.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 出版社作书数据列表-二维码信息
*
* @author guiq
* @version 1.0
* @since 2020年9月24日
*/
@Data
@ApiModel("出版社作书数据列表-二维码信息")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class QrcodeInfoDto implements Serializable {
private static final long serialVersionUID = 3951537842280735854L;
/**
* 印码位置
*/
@ApiModelProperty("印码位置")
private String locationName;
/**
* 二维码地址
*/
@ApiModelProperty("二维码地址")
private String qrcodeUrl;
}
......@@ -3,6 +3,8 @@
*/
package com.pcloud.book.consumer.analysisengine;
import cn.hutool.core.collection.CollUtil;
import com.pcloud.analysisengine.browse.dto.BookBrowseAndScanStatsDTO;
import com.pcloud.analysisengine.browse.dto.BookServeBrowseCountParameterDTO;
import com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto;
import com.pcloud.analysisengine.browse.dto.GroupBrowseStatisticVO;
......@@ -12,12 +14,12 @@ import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -181,4 +183,18 @@ public class BrowseRecordConsr {
return map;
}
@ParamLog("获取图书扫码量,浏览量")
public List<BookBrowseAndScanStatsDTO> getBookBrowseAndScanStats(List<BookBrowseAndScanStatsDTO> dtos) {
if (CollUtil.isEmpty(dtos)){
return new ArrayList<>();
}
List<BookBrowseAndScanStatsDTO> bookBrowseAndScanStatsDTOS = new ArrayList<>();
try {
bookBrowseAndScanStatsDTOS = ResponseHandleUtil.parseList(browseRecordService.getBookBrowseAndScanStats(dtos), BookBrowseAndScanStatsDTO.class);
} catch (Exception e) {
LOGGER.error("获取图书扫码量,浏览量失败,err:{}", e.getMessage(), e);
}
return bookBrowseAndScanStatsDTOS;
}
}
package com.pcloud.book.consumer.erp;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.dto.CreateBookResultVO;
import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
......@@ -18,6 +21,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -161,4 +166,75 @@ public class ErpConsr {
throw new BookBizException(BookBizException.INVOKE_CONTENT_ERROR, "创建书刊之后同步去更新erp信息~!");
}
}
@ParamLog("获取图书印册量")
public List<ERPPublishNumDTO> getBookExpectPublishNum(List<ERPPublishNumDTO> dtos) {
if (CollUtil.isEmpty(dtos)) {
return new ArrayList<>();
}
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
try {
HttpResponse response = HttpUtils.doPost(domain, "/erp/project4Third/getBookExpectPublishNum", "POST", headers, new HashMap<>(), JSONObject.toJSONString(dtos));
String entityString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONObject.parseObject(entityString);
if (jsonObject.getInteger("errCode") != 0) {
throw new BizException(jsonObject.getString("message"));
}
return JSONObject.parseArray(jsonObject.getJSONArray("data").toJSONString(), ERPPublishNumDTO.class);
} catch (Exception e) {
LOGGER.error("获取图书印册量失败 [projectService.getBookExpectPublishNum]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_CONTENT_ERROR, "获取图书印册量失败!");
}
}
@ParamLog("模糊查询图书信息")
public List<ErpBookInfoDTO> searchBookInfo(String name, List<Long> advisers, Date startTime, Date endTime) {
if (CollUtil.isEmpty(advisers)) {
return new ArrayList<>();
}
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
Map<String, Object> params = new HashMap<>();
params.put("name", name);
params.put("advisers", advisers);
params.put("startTime", startTime);
params.put("endTime", endTime);
try {
HttpResponse response = HttpUtils.doPost(domain, "/erp/project4Third/searchBookInfo", "GET", headers, new HashMap<>(), JSONObject.toJSONString(params));
String entityString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONObject.parseObject(entityString);
if (jsonObject.getInteger("errCode") != 0) {
throw new BizException(jsonObject.getString("message"));
}
return JSONObject.parseArray(jsonObject.getJSONArray("data").toJSONString(), ErpBookInfoDTO.class);
} catch (Exception e) {
LOGGER.error("模糊查询图书信息 [projectService.searchBookInfo]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_CONTENT_ERROR, "模糊查询图书信息失败!");
}
}
@ParamLog("模糊查询erp图书ID")
public List<ErpBookInfoDTO> searchRaysBookId(List<ErpBookInfoDTO> erpBookInfoDTOS) {
if (CollUtil.isEmpty(erpBookInfoDTOS)) {
return new ArrayList<>();
}
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
try {
HttpResponse response = HttpUtils.doPost(domain, "/erp/project4Third/searchRaysBookId", "GET", headers, new HashMap<>(), JSONObject.toJSONString(erpBookInfoDTOS));
String entityString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONObject.parseObject(entityString);
if (jsonObject.getInteger("errCode") != 0) {
throw new BizException(jsonObject.getString("message"));
}
return JSONObject.parseArray(jsonObject.getJSONArray("data").toJSONString(), ErpBookInfoDTO.class);
} catch (Exception e) {
LOGGER.error("模糊查询图书信息 [projectService.searchBookInfo]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_CONTENT_ERROR, "模糊查询erp图书ID失败!");
}
}
}
package com.pcloud.book.consumer.trade;
import com.pcloud.book.base.exception.BookBizException;
import cn.hutool.core.collection.CollUtil;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.facade.tradecenter.dto.Amount4BookAdviserDto;
import com.pcloud.facade.tradecenter.dto.BookGroupSaleSearchDto;
import com.pcloud.facade.tradecenter.dto.BookIncomeQueryVo;
import com.pcloud.facade.tradecenter.dto.ClassifyPayDetailDto;
......@@ -264,4 +265,17 @@ public class TradeConsr {
}
return map;
}
public List<Amount4BookAdviserDto> getAmount4BookAdviser(List<Amount4BookAdviserDto> requestDtos) {
if (CollUtil.isEmpty(requestDtos)) {
return new ArrayList<>();
}
try {
return ResponseHandleUtil.parseList(orderFormService.getAmount4BookAdviser(requestDtos), Amount4BookAdviserDto.class);
} catch (Exception e) {
LOGGER.error("查询编辑图书交易额失败.[getAmount4BookAdviser]:{}", e.getMessage(), e);
}
return new ArrayList<>();
}
}
......@@ -4,6 +4,7 @@
package com.pcloud.book.consumer.user;
import com.pcloud.channelcenter.base.exceptions.ChannelBizException;
import com.pcloud.channelcenter.qrcode.dto.AdviserQrcodeSceneDTO;
import com.pcloud.channelcenter.qrcode.dto.MapResourceCountDTO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
......@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -249,4 +251,16 @@ public class ChannelConsr {
throw new ChannelBizException(ChannelBizException.PARAM_IS_NULL, "获取二维码位置失败");
}
}
public List<AdviserQrcodeSceneDTO> listQrcodeSceneByBookAdviserIds(List<AdviserQrcodeSceneDTO> bookAdviserIds) {
if (CollectionUtils.isEmpty(bookAdviserIds)) {
return new ArrayList<>();
}
try {
return ResponseHandleUtil.parseList(qrcodeSceneService.listQrcodeSceneByBookAdviserIds(bookAdviserIds), AdviserQrcodeSceneDTO.class);
} catch (Exception e) {
LOGGER.error("批量获取二维码及其印码位置 失败:{} ", e.getMessage(), e);
}
return new ArrayList<>();
}
}
package com.pcloud.book.consumer.wechatgroup;
import cn.hutool.core.collection.CollUtil;
import com.dcg.coolq.sdk.CoolQSDK;
import com.dcg.coolq.sdk.message.vos.send.PrivateMsgSendVO;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.pcloud.book.applet.dto.SpecialBookDTO;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
......@@ -14,6 +14,7 @@ import com.pcloud.common.utils.json.JSONUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO;
import com.pcloud.wechatgroup.group.dto.GroupRobotDTO;
import com.pcloud.wechatgroup.group.dto.GroupScanUserStatsDTO;
import com.pcloud.wechatgroup.group.dto.GroupUserCountDTO;
import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import com.pcloud.wechatgroup.group.dto.RobotReplyDTO;
......@@ -37,7 +38,7 @@ import com.pcloud.wechatgroup.selfrobot.dto.SelfRobotDTO;
import com.pcloud.wechatgroup.selfrobot.dto.SendMessageDTO;
import com.pcloud.wechatgroup.selfrobot.dto.UserRobotDTO;
import com.pcloud.wechatgroup.selfrobot.service.SelfRobotService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
......@@ -50,8 +51,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component("wechatGroupConsr")
public class WechatGroupConsr {
......@@ -792,4 +791,29 @@ public class WechatGroupConsr {
}
return map;
}
@ParamLog("根据编辑列表获取社群书扫码统计信息")
public List<GroupScanUserStatsDTO> getBookGroupScanStats(List<Long> adviserIds){
List<GroupScanUserStatsDTO> list = new ArrayList<>();
try{
list = ResponseHandleUtil.parseList(groupMemberService.getBookGroupScanStats(adviserIds),GroupScanUserStatsDTO.class);
}catch (Exception e){
log.error("根据编辑列表获取社群书扫码统计信息.[getBookGroupScanStats]失败, err:{}", e.getMessage(), e);
}
return list;
}
@ParamLog("根据bookGroupIds获取社群书扫码统计信息")
public List<GroupScanUserStatsDTO> getAdviserBookGroupScanStats(List<Long> bookAdviserIds){
if (CollUtil.isEmpty(bookAdviserIds)){
return new ArrayList<>();
}
List<GroupScanUserStatsDTO> list = new ArrayList<>();
try{
list = ResponseHandleUtil.parseList(groupMemberService.getAdviserBookGroupScanStats(bookAdviserIds),GroupScanUserStatsDTO.class);
}catch (Exception e){
log.error("根据bookGroupIds获取社群书扫码统计信息.[getAdviserBookGroupScanStats]失败, err:{}", e.getMessage(), e);
}
return list;
}
}
......@@ -869,4 +869,110 @@
ORDER BY IS_MAIN_EDITOR DESC,IS_DELETE ASC
LIMIT 1
</select>
<select id="getAdviserBookVarietyStats" parameterType="map" resultType="com.pcloud.book.book.dto.BookAdviserDto">
SELECT
BOOK_ID AS bookId,
ADVISER_ID adviserId,
CREATED_DATE createdDate
FROM
book_adviser
WHERE
IS_DELETE = 0
<if test="null != adviserIds and adviserIds.size > 0">
AND ADVISER_ID IN
<foreach collection="adviserIds" open="(" item="item" close=")" separator=",">
#{item}
</foreach>
</if>
</select>
<select id="getErpPublishNumQueryParams" parameterType="map" resultType="com.pcloud.book.book.dto.ERPPublishNumDTO">
SELECT
ADVISER_ID AS adviserId,
CHANNEL_ID AS channelId,
BOOK_ID AS bookId,
CREATED_DATE AS createDate
FROM
book_adviser
WHERE
IS_DELETE = 0 AND ADVISER_ID IN
<foreach collection="adviserIds" item="item" close=")" open="(" separator=",">
#{item}
</foreach>
GROUP BY
ADVISER_ID,
CHANNEL_ID,
BOOK_ID
</select>
<select id="getAgentBookStatsDetail" parameterType="map" resultType="com.pcloud.book.book.vo.AgentBookStatsDetailVO">
SELECT
tb.bookAdviserId,
tb.channelId,
tb.bookName,
tb.isbn,
tb.bookId,
tb.adviserId,
tb.isRay,
tb.serialNumber,
tb.bookGroupId
FROM (
SELECT
ba.BOOK_ADVISER_ID AS bookAdviserId,
ba.CHANNEL_ID AS channelId,
b.BOOK_NAME AS bookName,
b.ISBN AS isbn,
b.BOOK_ID AS bookId,
ba.ADVISER_ID AS adviserId,
IF(ba.is_open_robot_process OR bg.join_group_type = 4, 1, 0) AS isRay,
b.SERIAL_NUMBER AS serialNumber,
bg.id AS bookGroupId
FROM
book_adviser ba
LEFT JOIN book b ON ba.BOOK_ID = b.BOOK_ID
LEFT JOIN book_group bg on ba.BOOK_ID = bg.book_id AND ba.CHANNEL_ID = bg.channel_id AND ba.ADVISER_ID = bg.create_user
<where>
ba.ADVISER_ID IN
<foreach collection="advisers" separator="," close=")" item="it" open="(">
${it}
</foreach>
<if test="raysBookIds != null and raysBookIds.size > 0 or name != null">
AND (
<if test="raysBookIds != null and raysBookIds.size > 0">
<foreach collection="raysBookIds" open="(" item="item" close=")" separator="OR">( 1=1
<if test="item.adviserId != null">
AND ba.ADVISER_ID =${item.adviserId}
</if>
<if test="item.raysChannelId != null">
AND ba.CHANNEL_ID=${item.raysChannelId}
</if>
<if test="item.raysBookId != null">
AND ba.BOOK_ID=${item.raysBookId}
</if>
)
</foreach>
<if test="name != null">
OR
</if>
</if>
<if test="name != null">
(
b.BOOK_NAME LIKE CONCAT('%',#{name},'%') OR b.ISBN LIKE CONCAT('%',#{name},'%')
<if test="bookNo != null">
OR b.BOOK_ID LIKE CONCAT('%',#{bookNo},'%')
</if>
)
</if>
)
</if>
</where>
) tb
<if test="isRay != null">
where tb.isRay = #{isRay}
</if>
ORDER BY tb.bookAdviserId DESC
</select>
</mapper>
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