Commit b25f4680 by 郑勇

feat: [1009365] 抖音魔方项目(邹慕白图书)

parent 3b86e1cc
......@@ -349,4 +349,10 @@ public interface BookService {
*/
@PostMapping("getServeListWithBookId")
ResponseEntity<ResponseDto<Map<Long,List<ListBookResourceDto>>>> getServeListWithBookId (@RequestBody List<Long> sceneIds);
/**
* 获取魔方书刊列表
*/
@GetMapping("getMoFangBookIds")
ResponseEntity<ResponseDto<List<Long>>> getMoFangBookIds (@RequestParam(value = "mofangId") Long mofangId);
}
......@@ -19,6 +19,8 @@ import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Map;
......@@ -841,11 +843,19 @@ public interface BookBiz {
/**
* 查询魔方书刊
*/
PageBeanNew<MoFangBookDto> listMoFangBook(String keyWords,Integer currentPage,Integer numPerPage);
PageBeanNew<MoFangBookDto> listMoFangBook(String keyWords, Integer currentPage, Integer numPerPage, Integer type);
/**
* 魔方二维码
*/
Map<Long,String> listMoFangScene();
/**
* 导入魔方邹慕白数据
*/
void importZouMuBai(MultipartFile multipartFile);
MoFangSceneVO getMoFangScene(Long sceneId);
List<Long> getMoFangBookIds(Long mofangId);
}
......@@ -3,16 +3,11 @@
*/
package com.pcloud.book.book.biz.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.pcloud.analysisengine.qrcode.dto.BookScanStatistics4OfficialAccountsDTO;
import com.pcloud.analysisengine.qrcode.dto.BookScanStatistics4OfficialAccountsReqDTO;
import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto;
......@@ -81,7 +76,6 @@ import com.pcloud.book.book.dto.EditionAnalysisResultVO;
import com.pcloud.book.book.dto.EditionAnalysisVO;
import com.pcloud.book.book.dto.ErpBookApprovalDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.vo.MoFangBookDto;
import com.pcloud.book.book.dto.MoFangSceneDto;
import com.pcloud.book.book.dto.ProjectOrderSheetDTO;
import com.pcloud.book.book.dto.ProjectRelateVO;
......@@ -96,6 +90,7 @@ import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.entity.BookLink;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.book.book.entity.EditionRecord;
import com.pcloud.book.book.entity.MofangZmb;
import com.pcloud.book.book.entity.NoviceGuideDelete;
import com.pcloud.book.book.entity.QrcodeSceneErp;
import com.pcloud.book.book.entity.SeriesBook;
......@@ -111,7 +106,10 @@ import com.pcloud.book.book.vo.BookResourceNumDTO;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.MoFangBookDto;
import com.pcloud.book.book.vo.MoFangSceneVO;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.vo.ZouMuBaiVO;
import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO;
import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO;
......@@ -202,6 +200,7 @@ import com.pcloud.resourcecenter.product.dto.SpecificationDto;
import com.pcloud.universe.commons.paging.Pagination;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.usercenter.party.agent.dto.SaleAgentDTO;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -213,6 +212,7 @@ import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.math.BigDecimal;
......@@ -240,6 +240,14 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.ExcelReader;
import static com.pcloud.book.util.common.ThreadPoolUtils.REMOTE_CALL_POOL;
/**
......@@ -4781,40 +4789,89 @@ public class BookBizImpl implements BookBiz {
}
@Override
public PageBeanNew<MoFangBookDto> listMoFangBook(String keyWords, Integer currentPage, Integer numPerPage) {
public PageBeanNew<MoFangBookDto> listMoFangBook(String keyWords, Integer currentPage, Integer numPerPage, Integer type) {
type = null == type ? 1 : type;
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("keyWords",keyWords);
paramMap.put("type",type);
PageBeanNew<MoFangBookDto> listPageNew = bookDao.listPageNew(new PageParam(currentPage, numPerPage), paramMap, "listMoFangBook");
if (listPageNew == null || ListUtils.isEmpty(listPageNew.getRecordList())) {
return new PageBeanNew<>(currentPage,numPerPage,null==listPageNew ? 0 : listPageNew.getTotalCount(),new ArrayList<>());
}
//填充书刊下面的rays码
fillSceneInfo(listPageNew.getRecordList());
fillSceneInfo(listPageNew.getRecordList(),type);
return listPageNew;
}
private void fillSceneInfo(List<MoFangBookDto> list) {
List<Long> bookIds = list.stream().map(a -> a.getBookId()).collect(Collectors.toList());
private void fillSceneInfo(List<MoFangBookDto> list,Integer type) {
if(type==1) {
dealXy(list);
}
if(type==3){
dealZmb(list);
}
}
/**
* 邹慕白
* @param list
*/
private void dealZmb(List<MoFangBookDto> list) {
List<Long> bookIds = new ArrayList<>();
Map<Long, List<Long>> zmbBookMap = new HashMap<>();
List<Long> mofangIds = list.stream().map(a -> a.getId()).collect(Collectors.toList());
List<MofangZmb> zmbBook = bookDao.getZmbBook(mofangIds);
if (CollUtil.isNotEmpty(zmbBook)) {
zmbBookMap = zmbBook.stream().collect(Collectors.groupingBy(a -> a.getMofangId(), Collectors.mapping(a -> a.getBookId(), Collectors.toList())));
bookIds = zmbBook.stream().map(a -> a.getBookId()).distinct().collect(Collectors.toList());
}
Map<Long, List<QrcodeSceneDto>> sceneMap = channelConsr.listRaysCode(bookIds);
for (MoFangBookDto dto : list) {
if(CollUtil.isNotEmpty(sceneMap) && null!=dto.getBookId() && sceneMap.containsKey(dto.getBookId())){
List<QrcodeSceneDto> qrcodeSceneDtos = sceneMap.get(dto.getBookId());
if(CollUtil.isNotEmpty(qrcodeSceneDtos)){
for (QrcodeSceneDto sceneDto : qrcodeSceneDtos) {
if(StrUtil.isNotBlank(sceneDto.getUrl())){
if(sceneDto.getUrl().contains("?")){
sceneDto.setUrl(sceneDto.getUrl() + "&douyin=1");
}else{
sceneDto.setUrl(sceneDto.getUrl() + "?douyin=1");
}
}
if (CollUtil.isNotEmpty(zmbBookMap) && null != dto.getId() && zmbBookMap.containsKey(dto.getId())) {
List<Long> zmbBookIds = zmbBookMap.get(dto.getId());
List<QrcodeSceneDto> qrcodeSceneDtos = new ArrayList<>();
for (Long zmbBookId : zmbBookIds) {
if (CollUtil.isNotEmpty(sceneMap.get(zmbBookId))) {
qrcodeSceneDtos.addAll(sceneMap.get(zmbBookId));
}
}
dealUrl(qrcodeSceneDtos);
dto.setSceneList(qrcodeSceneDtos);
}
}
}
/**
* 北教小雨
* @param list
*/
private void dealXy(List<MoFangBookDto> list) {
List<Long> bookIds = list.stream().map(a -> a.getBookId()).collect(Collectors.toList());
Map<Long, List<QrcodeSceneDto>> sceneMap = channelConsr.listRaysCode(bookIds);
for (MoFangBookDto dto : list) {
if (CollUtil.isNotEmpty(sceneMap) && null != dto.getBookId() && sceneMap.containsKey(dto.getBookId())) {
List<QrcodeSceneDto> qrcodeSceneDtos = sceneMap.get(dto.getBookId());
dealUrl(qrcodeSceneDtos);
dto.setSceneList(qrcodeSceneDtos);
}
}
}
private void dealUrl(List<QrcodeSceneDto> qrcodeSceneDtos) {
if(CollUtil.isNotEmpty(qrcodeSceneDtos)){
for (QrcodeSceneDto sceneDto : qrcodeSceneDtos) {
if(StrUtil.isNotBlank(sceneDto.getUrl())){
if(sceneDto.getUrl().contains("?")){
sceneDto.setUrl(sceneDto.getUrl() + "&douyin=1");
}else{
sceneDto.setUrl(sceneDto.getUrl() + "?douyin=1");
}
}
}
}
}
@Override
public Map<Long, String> listMoFangScene() {
List<MoFangSceneDto> list = bookDao.listMoFangScene();
......@@ -4823,4 +4880,50 @@ public class BookBizImpl implements BookBiz {
}
return list.stream().collect(Collectors.toMap(a->a.getSceneId(),a->a.getLinkUrl(),(v1,v2)->v2));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void importZouMuBai(MultipartFile multipartFile) {
List<ZouMuBaiVO> configs = null;
try {
ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(multipartFile.getInputStream());
reader.addHeaderAlias("书名","bookName");
reader.addHeaderAlias("封面URL","coverImg");
reader.addHeaderAlias("bookid","bookIds");
configs = reader.readAll(ZouMuBaiVO.class);
} catch (Exception e) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"数据格式填写有误,请按照模板填写!");
}
for (ZouMuBaiVO config : configs) {
config.setType(3);
bookDao.insertMofangBook(config);
String[] split = config.getBookIds().trim().split(",");
List<MofangZmb> zmbList = new ArrayList<>();
Arrays.stream(split).forEach(e->{
MofangZmb build = MofangZmb.builder().mofangId(config.getId()).bookId(Long.valueOf(e)).build();
zmbList.add(build);
});
bookDao.insertMofangZmb(zmbList);
}
}
@Override
public MoFangSceneVO getMoFangScene(Long sceneId) {
return bookDao.getMoFangScene(sceneId);
}
@Override
public List<Long> getMoFangBookIds(Long mofangId) {
MoFangBookDto mofangBook = bookDao.getMoFangBookById(mofangId);
if(null==mofangBook){
return new ArrayList<>();
}
if(null!=mofangBook.getType() && mofangBook.getType()==3){
return bookDao.getZmbBookIds(mofangId);
}
if(null!=mofangBook.getBookId()){
return CollUtil.toList(mofangBook.getBookId());
}
return new ArrayList<>();
}
}
......@@ -9,9 +9,13 @@ import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.dto.MoFangSceneDto;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.MofangZmb;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.MoFangBookDto;
import com.pcloud.book.book.vo.MoFangSceneVO;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.book.vo.ZouMuBaiVO;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDao;
import com.pcloud.common.page.PageBean;
......@@ -399,4 +403,16 @@ public interface BookDao extends BaseDao<Book> {
Integer getListPage4AdviserCount(Map<String, Object> paramMap);
List<MoFangSceneDto> listMoFangScene();
void insertMofangBook(ZouMuBaiVO vo);
void insertMofangZmb(List<MofangZmb> zmbList);
List<MofangZmb> getZmbBook(List<Long> mofangIds);
MoFangSceneVO getMoFangScene(Long sceneId);
MoFangBookDto getMoFangBookById(Long mofangId);
List<Long> getZmbBookIds(Long mofangId);
}
......@@ -12,9 +12,13 @@ import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.dto.MoFangSceneDto;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.MofangZmb;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.MoFangBookDto;
import com.pcloud.book.book.vo.MoFangSceneVO;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.book.vo.ZouMuBaiVO;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.page.PageBean;
......@@ -506,4 +510,42 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
public List<MoFangSceneDto> listMoFangScene() {
return getSessionTemplate().selectList(getStatement("listMoFangScene"));
}
@Override
public void insertMofangBook(ZouMuBaiVO vo) {
getSessionTemplate().insert(getStatement("insertMofangBook"),vo);
}
@Override
public void insertMofangZmb(List<MofangZmb> list) {
getSessionTemplate().insert(getStatement("insertMofangZmb"),list);
}
@Override
public List<MofangZmb> getZmbBook(List<Long> mofangIds) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("mofangIds", mofangIds);
return getSessionTemplate().selectList(getStatement("getZmbBook"), paramMap);
}
@Override
public MoFangSceneVO getMoFangScene(Long sceneId) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("sceneId", sceneId);
return getSessionTemplate().selectOne(getStatement("getMoFangScene"), paramMap);
}
@Override
public MoFangBookDto getMoFangBookById(Long mofangId) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("mofangId", mofangId);
return getSessionTemplate().selectOne(getStatement("getMoFangBookById"), paramMap);
}
@Override
public List<Long> getZmbBookIds(Long mofangId) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("mofangId", mofangId);
return getSessionTemplate().selectList(getStatement("getZmbBookIds"), paramMap);
}
}
package com.pcloud.book.book.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName com.pcloud.book.book.entity.MofangZmb
* @Author David
* @Description
* @Date 2023/1/5 11:09
* @Version 1.0
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MofangZmb {
private Long id;
private Long mofangId;
private Long bookId;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty("修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
}
......@@ -50,6 +50,7 @@ import com.pcloud.wechatgroup.message.enums.IsSystem;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -60,6 +61,8 @@ 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 org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -1548,10 +1551,11 @@ public class BookFacadeImpl implements BookFacade {
*/
@RequestMapping(value = "listMoFangBook", method = RequestMethod.GET)
public ResponseDto<?> listMoFangBook(@RequestParam(value = "keyWords", required = false) String keyWords,
@RequestParam(value = "type", required = false) Integer type,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage)
throws BizException, PermissionException {
return new ResponseDto<>(bookBiz.listMoFangBook(keyWords, currentPage, numPerPage));
return new ResponseDto<>(bookBiz.listMoFangBook(keyWords, currentPage, numPerPage,type));
}
/**
......@@ -1563,4 +1567,29 @@ public class BookFacadeImpl implements BookFacade {
return new ResponseDto<>(bookBiz.listMoFangScene());
}
/**
* 导入魔方邹慕白数据
*/
@RequestMapping(value = "importZouMuBai", method = RequestMethod.POST)
public void importZouMuBai(MultipartHttpServletRequest request) throws Exception {
List<MultipartFile> files = request.getFiles("file");
if (files.size() == 0) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "上传内容为空!");
}
MultipartFile multipartFile = files.get(0);
if (multipartFile == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "数据包内容为空!");
}
bookBiz.importZouMuBai(multipartFile);
}
/**
* 魔方二维码
*/
@RequestMapping(value = "getMoFangScene", method = RequestMethod.GET)
public ResponseDto<?> getMoFangScene(@RequestParam(value = "sceneId") Long sceneId)
throws BizException, PermissionException {
return new ResponseDto<>(bookBiz.getMoFangScene(sceneId));
}
}
......@@ -330,4 +330,10 @@ public class BookServiceImpl implements BookService {
public ResponseEntity<ResponseDto<Map<Long, List<ListBookResourceDto>>>> getServeListWithBookId(@RequestBody List<Long> sceneIds) {
return ResponseHandleUtil.toResponse(resourcePageBiz.getServeListWithBookId(sceneIds));
}
@Override
@GetMapping("getMoFangBookIds")
public ResponseEntity<ResponseDto<List<Long>>> getMoFangBookIds(@RequestParam(value = "mofangId") Long mofangId) {
return ResponseHandleUtil.toResponse(bookBiz.getMoFangBookIds(mofangId));
}
}
......@@ -47,4 +47,8 @@ public class MoFangBookDto extends BaseDto {
* rays码列表
*/
private List<QrcodeSceneDto> sceneList;
private Integer type;
private Long id;
}
/**
*
*/
package com.pcloud.book.book.vo;
import lombok.Data;
/**
* 魔方书刊
*/
@Data
public class MoFangSceneVO {
private Long sceneId;
private String linkUrl;
private Integer type;
}
package com.pcloud.book.book.vo;
import lombok.Data;
/**
* 邹慕白书刊
*/
@Data
public class ZouMuBaiVO {
private Long id;
private String bookName;
private String coverImg;
private String bookIds;
private Integer type;
}
\ No newline at end of file
......@@ -3441,16 +3441,21 @@
<select id="listMoFangBook" parameterType="map" resultType="com.pcloud.book.book.vo.MoFangBookDto">
select
id id,
book_id bookId,
resource_count resourceCount,
jump_url jumpUrl,
book_name bookName,
cover_img coverImg
cover_img coverImg,
type type
from mofang_book
where 1=1
<if test="keyWords !=null and keyWords!=''">
and book_name like concat('%',#{keyWords},'%')
</if>
<if test="type !=null">
and type = #{type}
</if>
</select>
<select id="listMoFangScene" resultType="com.pcloud.book.book.dto.MoFangSceneDto">
......@@ -3459,4 +3464,56 @@
link_url linkUrl
from mofang_scene
</select>
<insert id="insertMofangBook" parameterType="com.pcloud.book.book.vo.ZouMuBaiVO" useGeneratedKeys="true" keyProperty="id" >
insert into
mofang_book (book_name,cover_img,type,create_time,update_time)
values
(#{bookName}, #{coverImg}, #{type}, now(), now())
</insert>
<insert id="insertMofangZmb" parameterType="java.util.List">
insert into
mofang_zmb (mofang_id,book_id,create_time,update_time)
values
<foreach collection="list" index="index" item="item" separator=",">
(#{item.mofangId}, #{item.bookId}, now(), now())
</foreach>
</insert>
<select id="getZmbBook" parameterType="map" resultType="com.pcloud.book.book.entity.MofangZmb">
select
mofang_id mofangId,
book_id bookId
from mofang_zmb
where mofang_id in
<foreach collection="mofangIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getMoFangScene" parameterType="map" resultType="com.pcloud.book.book.vo.MoFangSceneVO">
select
scene_id sceneId,
link_url linkUrl,
type type
from mofang_scene
where scene_id=#{sceneId}
limit 1
</select>
<select id="getMoFangBookById" parameterType="map" resultType="com.pcloud.book.book.vo.MoFangBookDto">
select
book_id bookId,
type type
from mofang_book
where id = #{mofangId}
</select>
<select id="getZmbBookIds" parameterType="map" resultType="Long">
select
book_id
from mofang_zmb
where mofang_id = #{mofangId}
</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