Commit d91af14d by 裴大威

Merge branch 'feat-1002741' into 'master'

1002741书刊导入es

See merge request rays/pcloud-book!638
parents 9ce8fb7b 59acfb01
...@@ -26,6 +26,7 @@ import com.pcloud.book.consumer.message.TemplateConsr; ...@@ -26,6 +26,7 @@ import com.pcloud.book.consumer.message.TemplateConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.BookcaseConsr; import com.pcloud.book.consumer.user.BookcaseConsr;
import com.pcloud.book.consumer.user.ChannelConsr; import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.group.biz.BookGroupBiz; import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.core.constant.SceneCode; import com.pcloud.common.core.constant.SceneCode;
...@@ -45,6 +46,7 @@ import org.springframework.stereotype.Component; ...@@ -45,6 +46,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -103,6 +105,9 @@ public class BookAppealBizImpl implements BookAppealBiz { ...@@ -103,6 +105,9 @@ public class BookAppealBizImpl implements BookAppealBiz {
@Autowired @Autowired
private BookGroupBiz bookGroupBiz; private BookGroupBiz bookGroupBiz;
@Autowired
private ESBookAndAdviserBiz esBookAndAdviserBiz;
/** /**
* 书刊申诉 * 书刊申诉
*/ */
...@@ -313,6 +318,7 @@ public class BookAppealBizImpl implements BookAppealBiz { ...@@ -313,6 +318,7 @@ public class BookAppealBizImpl implements BookAppealBiz {
} }
// 批量修改图书编辑关联关系 // 批量修改图书编辑关联关系
bookAdviserDao.insert(bookMainAdviserDto.getBookAdviserList()); bookAdviserDao.insert(bookMainAdviserDto.getBookAdviserList());
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookId));
// 新增申诉编辑图书与二维码关联关系 // 新增申诉编辑图书与二维码关联关系
ThreadPoolUtils.OTHER_THREAD_POOL.execute(() -> { ThreadPoolUtils.OTHER_THREAD_POOL.execute(() -> {
recoverBookQrcodeAssoc(bookId, bookAppealDto.getChannelId(), appealAdviserId); recoverBookQrcodeAssoc(bookId, bookAppealDto.getChannelId(), appealAdviserId);
...@@ -367,6 +373,7 @@ public class BookAppealBizImpl implements BookAppealBiz { ...@@ -367,6 +373,7 @@ public class BookAppealBizImpl implements BookAppealBiz {
bookAdviser.setIsMainEditor(true); bookAdviser.setIsMainEditor(true);
bookAdviser.setSecondTempletId(secondTempletId); bookAdviser.setSecondTempletId(secondTempletId);
bookAdviserDao.insert(bookAdviser); bookAdviserDao.insert(bookAdviser);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookId));
// 恢复申诉编辑图书与二维码关联关系 // 恢复申诉编辑图书与二维码关联关系
recoverBookQrcodeAssoc(bookId, channelId, declarant); recoverBookQrcodeAssoc(bookId, channelId, declarant);
} }
......
...@@ -2,6 +2,7 @@ package com.pcloud.book.book.biz.impl; ...@@ -2,6 +2,7 @@ package com.pcloud.book.book.biz.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -11,6 +12,8 @@ import java.util.stream.Collectors; ...@@ -11,6 +12,8 @@ import java.util.stream.Collectors;
import com.pcloud.book.book.dto.BookRightsSettingDTO; import com.pcloud.book.book.dto.BookRightsSettingDTO;
import com.pcloud.book.rightsSetting.biz.RightsSettingBiz; import com.pcloud.book.rightsSetting.biz.RightsSettingBiz;
import com.pcloud.book.rightsSetting.dto.RightsSettingDto; import com.pcloud.book.rightsSetting.dto.RightsSettingDto;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -111,6 +114,9 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -111,6 +114,9 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
@Autowired @Autowired
private RightsSettingBiz rightsSettingBiz; private RightsSettingBiz rightsSettingBiz;
@Autowired
private ESBookAndAdviserBiz esBookAndAdviserBiz;
@Override @Override
public List<BookDto> listByAdviserId(Long adviserId) { public List<BookDto> listByAdviserId(Long adviserId) {
if(null == adviserId) { if(null == adviserId) {
...@@ -158,6 +164,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -158,6 +164,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
// 默认是主编辑 // 默认是主编辑
bookAdviser.setIsMainEditor(true); bookAdviser.setIsMainEditor(true);
bookAdviserDao.insert(bookAdviser); bookAdviserDao.insert(bookAdviser);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookAdviser.getBookId()));
} catch (DataIntegrityViolationException e) { } catch (DataIntegrityViolationException e) {
throw new BookBizException(BookBizException.DB_DML_FAIL, "该书刊已经被别的编辑添加过"); throw new BookBizException(BookBizException.DB_DML_FAIL, "该书刊已经被别的编辑添加过");
} catch (Exception e) { } catch (Exception e) {
...@@ -245,6 +252,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -245,6 +252,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
} }
LOGGER.info("【书籍-编辑】删除编辑和书籍的推广信息,<START>.[bookId]=" + bookId); LOGGER.info("【书籍-编辑】删除编辑和书籍的推广信息,<START>.[bookId]=" + bookId);
bookAdviserDao.deleteByBook(bookId); bookAdviserDao.deleteByBook(bookId);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookId));
} }
/** /**
...@@ -260,6 +268,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -260,6 +268,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
try { try {
LOGGER.info("【书籍-编辑】批量删除书刊的推广信息,<START>.[bookIds]=" + bookIds.toString()); LOGGER.info("【书籍-编辑】批量删除书刊的推广信息,<START>.[bookIds]=" + bookIds.toString());
bookAdviserDao.deleteByBooks(bookIds); bookAdviserDao.deleteByBooks(bookIds);
esBookAndAdviserBiz.updateBookAndAdviserToES(bookIds);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("【书籍-编辑】批量删除书刊的推广信息,<ERROR>.[bookAdviserDao.deleteByBooks]" + e.getMessage(), e); LOGGER.error("【书籍-编辑】批量删除书刊的推广信息,<ERROR>.[bookAdviserDao.deleteByBooks]" + e.getMessage(), e);
throw new BookBizException(BookBizException.DB_DML_FAIL, "批量删除书刊的推广信息失败"); throw new BookBizException(BookBizException.DB_DML_FAIL, "批量删除书刊的推广信息失败");
...@@ -379,6 +388,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -379,6 +388,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
paramMap.put("bookId", bookId); paramMap.put("bookId", bookId);
paramMap.put("channelId", channelId); paramMap.put("channelId", channelId);
bookAdviserDao.deleteByBookAndChannel(paramMap); bookAdviserDao.deleteByBookAndChannel(paramMap);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookId));
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("【编辑书刊】根据书籍和渠道删除书籍编辑关联信息,<ERROR>.[deleteByBookAndChannel]:" + e.getMessage(), e); LOGGER.error("【编辑书刊】根据书籍和渠道删除书籍编辑关联信息,<ERROR>.[deleteByBookAndChannel]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.DB_DML_FAIL, "根据书籍和渠道删除书籍编辑关联信息失败"); throw new BookBizException(BookBizException.DB_DML_FAIL, "根据书籍和渠道删除书籍编辑关联信息失败");
...@@ -487,6 +497,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -487,6 +497,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
LOGGER.info("【书籍-编辑】编辑设置书籍推广信息,<START>.[bookAdviser]=" + bookAdviser.toString()); LOGGER.info("【书籍-编辑】编辑设置书籍推广信息,<START>.[bookAdviser]=" + bookAdviser.toString());
// 默认是主编辑 // 默认是主编辑
bookAdviserDao.insert(bookAdviser); bookAdviserDao.insert(bookAdviser);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookAdviser.getBookId()));
} catch (Exception e) { } catch (Exception e) {
LOGGER.warn("【书籍-编辑】编辑设置书籍推广信息,<ERROR>.[BookAdviserDao.insert]" + e.getMessage(), e); LOGGER.warn("【书籍-编辑】编辑设置书籍推广信息,<ERROR>.[BookAdviserDao.insert]" + e.getMessage(), e);
} }
...@@ -559,6 +570,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -559,6 +570,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
bookAdviser.setDepLabelId(book.getDepLabelId()); bookAdviser.setDepLabelId(book.getDepLabelId());
bookAdviser.setPurLabelId(book.getPurLabelId()); bookAdviser.setPurLabelId(book.getPurLabelId());
bookAdviserDao.updateBookTemplet(bookAdviser); bookAdviserDao.updateBookTemplet(bookAdviser);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookAdviser.getBookId()));
} }
/** /**
...@@ -727,6 +739,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -727,6 +739,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
paramMap.put("verLabelId",verLabelId); paramMap.put("verLabelId",verLabelId);
paramMap.put("areaLabelId",areaLabelId); paramMap.put("areaLabelId",areaLabelId);
bookAdviserDao.updateBook4Adviser(paramMap); bookAdviserDao.updateBook4Adviser(paramMap);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookId));
if (BookConstant.BOOK_ADVISER_DELETE.equals(deleteStatus)) { if (BookConstant.BOOK_ADVISER_DELETE.equals(deleteStatus)) {
bookGroupBiz.deleteByBookId(bookId, channelId, adviserId); bookGroupBiz.deleteByBookId(bookId, channelId, adviserId);
} }
...@@ -753,6 +766,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -753,6 +766,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
public void setBookTemplet(BookAdviser bookAdviser) { public void setBookTemplet(BookAdviser bookAdviser) {
LOGGER.info("设置图书使用模板【START】bookAdviser="+bookAdviser); LOGGER.info("设置图书使用模板【START】bookAdviser="+bookAdviser);
bookAdviserDao.updateBookTemplet(bookAdviser); bookAdviserDao.updateBookTemplet(bookAdviser);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(bookAdviser.getBookId()));
} }
@Override @Override
@ParamLog(value = "获取图书基本信息", isBefore = false, isAfterReturn = false) @ParamLog(value = "获取图书基本信息", isBefore = false, isAfterReturn = false)
...@@ -777,6 +791,13 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -777,6 +791,13 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
public void refactorData(Long parentId,Long originTempletId, Long secondTempletId) { public void refactorData(Long parentId,Long originTempletId, Long secondTempletId) {
LOGGER.info("begin refactorData"); LOGGER.info("begin refactorData");
int effectRows = bookAdviserDao.updateBookBySecondTempletId(parentId,originTempletId,secondTempletId); int effectRows = bookAdviserDao.updateBookBySecondTempletId(parentId,originTempletId,secondTempletId);
try {
List<Long> bookIds=bookAdviserDao.getBookIdsByTempletId(originTempletId);
esBookAndAdviserBiz.updateBookAndAdviserToES(bookIds);
}catch (Exception e){
LOGGER.error("更新编辑和书es失败"+originTempletId);
}
LOGGER.info("refactorData effect rows : {}",effectRows); LOGGER.info("refactorData effect rows : {}",effectRows);
LOGGER.info("end refactorData"); LOGGER.info("end refactorData");
} }
......
...@@ -252,4 +252,6 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> { ...@@ -252,4 +252,6 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
* @return * @return
*/ */
long setIsPrint(BookAdviser bookAdviser); long setIsPrint(BookAdviser bookAdviser);
List<Long> getBookIdsByTempletId(Long templetId);
} }
...@@ -9,6 +9,7 @@ import com.pcloud.book.book.dto.BookInfoAnalysicsDTO; ...@@ -9,6 +9,7 @@ import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.vo.BookSaleVO; import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.SearchBookVO; import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.List; import java.util.List;
...@@ -337,4 +338,12 @@ public interface BookDao extends BaseDao<Book> { ...@@ -337,4 +338,12 @@ public interface BookDao extends BaseDao<Book> {
void updateBookQualifyInfo(Map<String, Object> map); void updateBookQualifyInfo(Map<String, Object> map);
SearchBookVO getBookInfoByBookGroupId(Map<String, Object> paramMap); SearchBookVO getBookInfoByBookGroupId(Map<String, Object> paramMap);
Integer count();
List<ESBookAndAdviser> findAllBookAndAdviser(Long maxId, Integer offset);
List<ESBookAndAdviser> findBookAndAdviserByBookIds(List<Long> bookIds);
Map<Long,BookDto> getMapByBookIds(List<Long> bookIds);
} }
...@@ -251,4 +251,11 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book ...@@ -251,4 +251,11 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
public long setIsPrint(BookAdviser bookAdviser) { public long setIsPrint(BookAdviser bookAdviser) {
return super.getSqlSession().update(getStatement("setIsPrint"), bookAdviser); return super.getSqlSession().update(getStatement("setIsPrint"), bookAdviser);
} }
@Override
public List<Long> getBookIdsByTempletId(Long templetId) {
Map<String,Object> map = Maps.newHashMap();
map.put("templetId",templetId);
return getSqlSession().selectList(getStatement("getBookIdsByTempletId"),map);
}
} }
...@@ -11,6 +11,7 @@ import com.pcloud.book.book.dto.BookInfoAnalysicsDTO; ...@@ -11,6 +11,7 @@ import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.vo.BookSaleVO; import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.SearchBookVO; import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -344,4 +345,30 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -344,4 +345,30 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
public SearchBookVO getBookInfoByBookGroupId(Map<String, Object> paramMap) { public SearchBookVO getBookInfoByBookGroupId(Map<String, Object> paramMap) {
return super.getSqlSession().selectOne(super.getStatement("getBookInfoByBookGroupId"), paramMap); return super.getSqlSession().selectOne(super.getStatement("getBookInfoByBookGroupId"), paramMap);
} }
@Override
public Integer count() {
return super.getSqlSession().selectOne(getStatement("count"));
}
@Override
public List<ESBookAndAdviser> findAllBookAndAdviser(Long maxId, Integer offset) {
Map<String, Object> map = new HashMap<>();
map.put("maxId", maxId);
map.put("offset", offset);
return super.getSqlSession().selectList(getStatement("findAllBookAndAdviser"), map);
}
@Override
public List<ESBookAndAdviser> findBookAndAdviserByBookIds(List<Long> bookIds) {
Map<String, Object> map = new HashMap<>();
map.put("bookIds", bookIds);
return super.getSqlSession().selectList(getStatement("findBookAndAdviserByBookIds"), map);
}
@Override
public Map<Long, BookDto> getMapByBookIds(List<Long> bookIds) {
return super.getSqlSession().selectMap(super.getStatement("getMapByBookIds"), bookIds, "bookId");
}
} }
...@@ -741,4 +741,5 @@ public interface BookFacade { ...@@ -741,4 +741,5 @@ public interface BookFacade {
public ResponseDto<?> getBookInfoByBookGroupId( public ResponseDto<?> getBookInfoByBookGroupId(
@RequestParam(value = "bookGroupId") Long bookGroupId @RequestParam(value = "bookGroupId") Long bookGroupId
) throws PermissionException, JsonParseException, BizException; ) throws PermissionException, JsonParseException, BizException;
} }
package com.pcloud.book.es.biz;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import org.springframework.data.domain.Page;
import java.util.List;
/**
* @Description
* @Author ruansiyuan
* @Date 2020/4/13 12:21
**/
public interface ESBookAndAdviserBiz {
void addAllBookAndAdviserToES();
void updateBookAndAdviserToES(List<Long> bookIds);
Page<ESBookAndAdviser> getAdviserBooks4ES(String keyword, Long templetId, Long secondTempletId, Integer currentPage, Integer numPerPage);
}
package com.pcloud.book.es.biz.impl;
import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.book.es.repository.BookAndAdviserRepository;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.index.query.WildcardQueryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
/**
* @Description
* @Author ruansiyuan
* @Date 2020/4/13 12:21
**/
@Component("esBookAndAdviserBiz")
public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(ESBookAndAdviserBizImpl.class);
@Autowired
private BookDao bookDao;
@Autowired
private BookAndAdviserRepository bookAndAdviserRepository;
@ParamLog("导入全部book和bookAdviser")
@Transactional(rollbackFor = Exception.class)
@Override
public void addAllBookAndAdviserToES() {
Integer count = bookDao.count();
LOGGER.info("总数:" + count);
if (null == count || count <= 0) {
return;
}
Long maxId = 0L;
Integer index = 0;
Integer offset = 10000;
while (index * offset < count) {
List<ESBookAndAdviser> list = bookDao.findAllBookAndAdviser(maxId, offset);
if (ListUtils.isEmpty(list)) {
break;
}
bookAndAdviserRepository.save(list);
maxId = Long.valueOf(list.get(list.size() - 1).getBookId());
index += 1;
}
}
@ParamLog("更新书和编辑书")
@Override
public void updateBookAndAdviserToES(List<Long> bookIds) {
if(bookIds==null){
return;
}
try {
List<ESBookAndAdviser> list = bookDao.findBookAndAdviserByBookIds(bookIds);
if (ListUtils.isEmpty(list)){
return;
}
bookAndAdviserRepository.save(list);
}catch (Exception e){
LOGGER.error("更新书和编辑书出错:"+bookIds.toString());
}
}
@Override
public Page<ESBookAndAdviser> getAdviserBooks4ES(String keyword, Long templetId, Long secondTempletId, Integer currentPage, Integer numPerPage) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("isBookDelete", 0))
.filter(Objects.isNull(templetId) ? QueryBuilders.boolQuery() : QueryBuilders.termQuery("templetId", templetId))
.filter(Objects.isNull(secondTempletId) ? QueryBuilders.boolQuery() : QueryBuilders.termQuery("secondTempletId", secondTempletId));
BoolQueryBuilder should = QueryBuilders.boolQuery()
.should(StringUtil.isEmpty(keyword) ? QueryBuilders.boolQuery() : QueryBuilders.wildcardQuery("bookName", "*" + keyword + "*"))
.should(StringUtil.isEmpty(keyword) ? QueryBuilders.boolQuery() : QueryBuilders.wildcardQuery("isbn", "*" + keyword + "*"));
BoolQueryBuilder should1 = QueryBuilders.boolQuery()
.should(QueryBuilders.termQuery("isBookAdviserDelete", 0))
.should(QueryBuilders.termQuery("isAdviserBook", 0));
boolQueryBuilder.must(should);
boolQueryBuilder.must(should1);
Sort sort=new Sort(Sort.Direction.DESC, "isAdviserBook","lastModifiedDate", "bookId");
PageRequest pageRequest = new PageRequest(currentPage, numPerPage,sort);
Page<ESBookAndAdviser> search = bookAndAdviserRepository.search(boolQueryBuilder, pageRequest);
return search;
}
}
package com.pcloud.book.es.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldIndex;
import org.springframework.data.elasticsearch.annotations.FieldType;
import java.io.Serializable;
import java.util.Date;
/**
* @Description
* @Author ruansiyuan
* @Date 2020/4/13 14:29
**/
@Data
@Document(indexName = "book", type = "book_and_adviser")
public class ESBookAndAdviser {
/**
* 书籍标识
*/
@Id
private String bookId;
/**
* 编辑书id
*/
private String bookAdviserId;
/**
* 编辑标识
*/
private String adviserId;
/**
* 渠道标识
*/
private String channelId;
/**
* 模板标识
*/
private String templetId;
/**
* 第二级类型
*/
private String secondTempletId;
/**
* 是否是主编辑
*/
private Boolean isMainEditor;
/**
* 类型编码
*/
private String typeCode;
/**
* 书籍ISBN码
*/
@Field(type = FieldType.String, index = FieldIndex.not_analyzed)
private String isbn;
/**
* 书籍名称
*/
@Field(type = FieldType.String, index = FieldIndex.not_analyzed)
private String bookName;
/**
* 是否删除(书)
*/
private String isBookDelete;
/**
* 是否删除(编辑书)
*/
private String isBookAdviserDelete;
/**
* 最后更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastModifiedDate;
/**
* 是否编辑书刊
*/
private String isAdviserBook;
}
package com.pcloud.book.es.facade;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/6/13 16:43
**/
@RestController("eesBookAndAdviserFacade")
@RequestMapping("esBookAndAdviser")
public class ESBookAndAdviserFacade {
@Autowired
private ESBookAndAdviserBiz esBookAndAdviserBiz;
@ApiOperation("添加所有的书和编辑书到es")
@PostMapping("addAllBookAndAdviserToES")
public ResponseDto<?> addAllBookAndAdviserToES() throws BizException {
esBookAndAdviserBiz.addAllBookAndAdviserToES();
return new ResponseDto<>();
}
@ApiOperation("从es中获取编辑书")
@GetMapping("getAdviserBooks4ES")
public List<ESBookAndAdviser> getAdviserBooks4ES(
@RequestParam(value = "keyword", required = false) String keyword,
@RequestParam(value = "templetId", required = false) Long templetId,
@RequestParam(value = "secondTempletId", required = false) Long secondTempletId,
@RequestParam(value = "currentPage") Integer currentPage,
@RequestParam(value = "numPerPage") Integer numPerPage
) throws BizException {
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
return esBookAndAdviserBiz.getAdviserBooks4ES(keyword,templetId,secondTempletId,currentPage,numPerPage).getContent();
}
}
package com.pcloud.book.es.repository;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface BookAndAdviserRepository extends ElasticsearchRepository<ESBookAndAdviser, String> {
}
...@@ -2237,4 +2237,90 @@ ...@@ -2237,4 +2237,90 @@
limit 1 limit 1
</select> </select>
<!--获取全表数量-->
<select id="count" resultType="Integer">
select count(1) from BOOK
</select>
<!--查询所有-->
<select id="findAllBookAndAdviser" parameterType="map" resultType="com.pcloud.book.es.entity.ESBookAndAdviser">
SELECT
B.BOOK_ID bookId,
B.ISBN isbn,
B.BOOK_NAME bookName,
B.IS_DELETE isBookDelete,
B.TYPE_CODE typeCode,
IF(A.IS_DELETE is NULL, 0, A.IS_DELETE) isBookAdviserDelete,
IF(A.CHANNEL_ID is NULL, 0, A.CHANNEL_ID) channelId,
IF(A.ADVISER_ID is NULL, 0, A.ADVISER_ID) adviserId,
IF(A.IS_MAIN_EDITOR is NULL, "", A.IS_MAIN_EDITOR) isMainEditor,
IF(A.TEMPLET_ID is NULL, 0, A.TEMPLET_ID) templetId,
IF(A.SECOND_TEMPLET_ID is NULL, 0, A.SECOND_TEMPLET_ID) secondTempletId,
IF(A.LAST_MODIFIED_DATE is NULL, "2001-01-01 00:00:00", A.LAST_MODIFIED_DATE) lastModifiedDate,
IF(A.BOOK_ADVISER_ID is NULL, 0, A.BOOK_ADVISER_ID) bookAdviserId,
IF(A.BOOK_ADVISER_ID is NULL, 0, 1) isAdviserBook
FROM
BOOK B
LEFT JOIN BOOK_ADVISER A ON A.BOOK_ID = B.BOOK_ID and A.IS_MAIN_EDITOR=1
WHERE B.BOOK_ID>#{maxId}
GROUP BY B.BOOK_ID
limit #{offset}
</select>
<!--根据书id集合查询-->
<select id="findBookAndAdviserByBookIds" parameterType="map" resultType="com.pcloud.book.es.entity.ESBookAndAdviser">
SELECT
B.BOOK_ID bookId,
B.ISBN isbn,
B.BOOK_NAME bookName,
B.IS_DELETE isBookDelete,
B.TYPE_CODE typeCode,
IF(A.IS_DELETE is NULL, 0, A.IS_DELETE) isBookAdviserDelete,
IF(A.CHANNEL_ID is NULL, 0, A.CHANNEL_ID) channelId,
IF(A.ADVISER_ID is NULL, 0, A.ADVISER_ID) adviserId,
IF(A.IS_MAIN_EDITOR is NULL, "", A.IS_MAIN_EDITOR) isMainEditor,
IF(A.TEMPLET_ID is NULL, 0, A.TEMPLET_ID) templetId,
IF(A.SECOND_TEMPLET_ID is NULL, 0, A.SECOND_TEMPLET_ID) secondTempletId,
IF(A.LAST_MODIFIED_DATE is NULL, "2001-01-01 00:00:00", A.LAST_MODIFIED_DATE) lastModifiedDate,
IF(A.BOOK_ADVISER_ID is NULL, 0, A.BOOK_ADVISER_ID) bookAdviserId,
IF(A.BOOK_ADVISER_ID is NULL, 0, 1) isAdviserBook
FROM
BOOK B
LEFT JOIN BOOK_ADVISER A ON A.BOOK_ID = B.BOOK_ID and A.IS_MAIN_EDITOR=1
WHERE B.BOOK_ID in
<foreach collection="bookIds" index="i" item="item" open="(" separator="," close=")">
${item}
</foreach>
GROUP BY B.BOOK_ID
</select>
<!-- 批量获取书籍信息 -->
<select id="getMapByBookIds" resultMap="bookMap" parameterType="list">
SELECT
b.BOOK_ID,
b.ISBN,
b.ISSN,
b.BOOK_NAME,
b.REMARK,
b.AUTHOR,
b.PUBLISH,
b.PUBLISH_DATE,
b.COVER_IMG,
b.AD_IMG,
b.ORIGIN_NAME,
b.BOOK_PRICE,
b.TYPE_CODE,
b.SERIAL_NUMBER,
b.CREATED_DATE,
t.TYPE_NAME
FROM
BOOK b
INNER JOIN BOOK_TYPE t ON b.TYPE_CODE = t.TYPE_CODE
WHERE
b.BOOK_ID IN
<foreach collection="list" index="i" item="item" open="(" separator="," close=")">
${item}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -633,4 +633,12 @@ ...@@ -633,4 +633,12 @@
and CHANNEL_ID = #{channelId} and CHANNEL_ID = #{channelId}
</if> </if>
</update> </update>
<!--根据模板id查询bookId集合-->
<select id="getBookIdsByTempletId" parameterType="map">
select distinct book_id
from book_adviser
WHERE
TEMPLET_ID = #{templetId}
</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