|
@@ -1,11 +1,21 @@
|
|
|
package com.sf.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.sf.dto.resp.HomeBookRespDto;
|
|
|
+import com.sf.entity.BookInfo;
|
|
|
import com.sf.entity.HomeBook;
|
|
|
+import com.sf.mapper.BookInfoMapper;
|
|
|
import com.sf.mapper.HomeBookMapper;
|
|
|
import com.sf.service.IHomeBookService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 小说推荐 服务实现类
|
|
@@ -17,4 +27,51 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class HomeBookServiceImpl extends ServiceImpl<HomeBookMapper, HomeBook> implements IHomeBookService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private HomeBookMapper homeBookMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BookInfoMapper bookInfoMapper;
|
|
|
+
|
|
|
+ // 去到home_book表中取数据
|
|
|
+ // 再使用book_id去book_info表中找到关联数据
|
|
|
+ @Override
|
|
|
+ public List<HomeBookRespDto> allHomeBook() {
|
|
|
+ List<HomeBookRespDto> list = new ArrayList<>();
|
|
|
+
|
|
|
+ List<HomeBook> homeBookList = homeBookMapper.selectList(null);
|
|
|
+ // 取出所有的book_id
|
|
|
+ List<Long> bookIdList = new ArrayList<>();
|
|
|
+// for (HomeBook homeBook : homeBookList) {
|
|
|
+// bookIdList.add(homeBook.getBookId());
|
|
|
+// }
|
|
|
+ homeBookList.forEach(homeBook -> {
|
|
|
+ bookIdList.add(homeBook.getBookId());
|
|
|
+ });
|
|
|
+
|
|
|
+ // 使用in
|
|
|
+ // select * from book_info where id in ('','','');
|
|
|
+ LambdaQueryWrapper<BookInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(BookInfo::getId, bookIdList);
|
|
|
+ List<BookInfo> bookInfoList = bookInfoMapper.selectList(queryWrapper);
|
|
|
+ // Map<BookId,BookInfo>
|
|
|
+ // 使用了stream流的收集方法collect() 每一个BookInfo中的id作为key 每一个BookInfo自身作为value
|
|
|
+ Map<Long, BookInfo> collected =
|
|
|
+ bookInfoList.stream().collect(Collectors.toMap(BookInfo::getId, t -> t));
|
|
|
+
|
|
|
+ homeBookList.forEach(homeBook -> {
|
|
|
+ BookInfo bookInfo = collected.get(homeBook.getBookId());
|
|
|
+ HomeBookRespDto homeBookRespDto = HomeBookRespDto.builder()
|
|
|
+ .type(homeBook.getType().intValue()) // byte -> int
|
|
|
+ .bookId(homeBook.getBookId())
|
|
|
+ .picUrl(bookInfo.getPicUrl())
|
|
|
+ .bookName(bookInfo.getBookName())
|
|
|
+ .authorName(bookInfo.getAuthorName())
|
|
|
+ .bookDesc(bookInfo.getBookDesc())
|
|
|
+ .build();
|
|
|
+ list.add(homeBookRespDto);
|
|
|
+ });
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
}
|