1. The resources include:
- Source code (front-end and back-end source code + sql script)
- Supporting documents
- One-click project launch
- Help with remote control screen debugging
Source code and documents plus the WeChat business card or private letter below the article to receive it~
2. Technical introduction
It adopts the most popular development mode of front-end and back-end separation. The front-end uses Vue, the back-end uses Springboot framework, and the database uses Mysql.
3. Project development background
In the process of buying books using mobile phones, users may not be able to confirm which kind of books should be purchased, or which books in a category of books are of higher quality and have better ratings, and then help users make the most accurate choice. A book recommendation system.
The original intention of project development is to provide self-recommendation of books that users may be interested in according to users' preferences, to provide the most popular book recommendations, and to provide functions such as collection and cancellation of collections. Users can view the books they have collected. The purpose of this project is to provide users with a book recommendation system that integrates complete functions such as book recommendation, book detail, book collection, and book classification.
4. Project functional structure
- Login module: Contains functions related to user login.
- My module: contains the current login information, log out, view my favorites and other functions.
- Book recommendation function: including popular books on the home page, book recommendation, book list and other functions.
- Book details module: Contains detailed information such as sitting, publisher, and introduction of a book.
- Book search module: Search for books that meet the conditions according to the book name.
- Book Collection Module: Contains functions related to displaying the books collected by the user and operating the books collected by the user.
package com.pis.book.service.impl; import com.pis.book.common.ResponseResult; import com.pis.book.domain.*; import com.pis.book.mapper.BooksCollectionMapper; import com.pis.book.mapper.BooksDetailMapper; import com.pis.book.mapper.BooksHotMapper; import com.pis.book.service.BookService; import com.pis.book.vo.BookDetailVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Random; @Service public class BookServiceImpl implements BookService { @Autowired private BooksHotMapper booksHotMapper; @Autowired private BooksDetailMapper booksDetailMapper; @Autowired private BooksCollectionMapper booksCollectionMapper; /** * @Description Get a list of popular books * @return */ @Override public ResponseResult getHotBooks() { List<BookDetailVo> bookDetailVos = new ArrayList<BookDetailVo>(); List<BooksHot> booksHots = new ArrayList<BooksHot>(); List<BooksHot> bookHostsList = booksHotMapper.selectByExample(new BooksHotCondition()); int count = 4; for(int i= 0 ; i<count ; i++) { int index = new Random().nextInt(bookHostsList.size()); booksHots.add(bookHostsList.get(index)); bookHostsList.remove(index); } for(int i = 0 ; i<booksHots.size() ; i++) { BooksDetail booksDetail = booksDetailMapper.selectByPrimaryKey(booksHots.get(i).getBookId()); bookDetailVos.add(assembleBookDetailVo(booksDetail)); } return new ResponseResult("1",bookDetailVos); } /** * @Descrioption:you may also like * @return */ @Override public ResponseResult getGuessYouLike(String userId) { List<BookDetailVo> bookDetailVos = new ArrayList<BookDetailVo>(); List<BooksDetail> booksDetails = new ArrayList<BooksDetail>(); if(userId == null || "".equals(userId)) { //not logged in List<BooksDetail> booksDetailList = booksDetailMapper.selectByExample(new BooksDetailCondition()); int count = 4; for(int i = 0 ; i<count ; i++) { int index = new Random().nextInt(booksDetailList.size()); booksDetails.add(booksDetailList.get(index)); booksDetailList.remove(index); } for(int i = 0 ; i<booksDetails.size() ; i++) { bookDetailVos.add(assembleBookDetailVo(booksDetails.get(i))); } return new ResponseResult("1",bookDetailVos); } else { //Has logged //Query the types of books this user follows BooksCollectionCondition booksCollectionCondition = new BooksCollectionCondition(); booksCollectionCondition.createCriteria().andUserIdEqualTo(userId); List<BooksCollection> bookCollectionList = booksCollectionMapper.selectByExample(booksCollectionCondition); if(bookCollectionList == null || bookCollectionList.size() == 0) { //No favorites yet List<BooksDetail> booksDetailList = booksDetailMapper.selectByExample(new BooksDetailCondition()); int count = 4; for(int i = 0 ; i<count ; i++) { int index = new Random().nextInt(booksDetailList.size()); booksDetails.add(booksDetailList.get(index)); booksDetailList.remove(index); } for(int i = 0 ; i<booksDetails.size() ; i++) { bookDetailVos.add(assembleBookDetailVo(booksDetails.get(i))); } return new ResponseResult("1",bookDetailVos); } else { //Favorites int index = new Random().nextInt(bookCollectionList.size()); String bookTypeId = bookCollectionList.get(index).getBookTypeId(); BooksDetailCondition booksDetailCondition = new BooksDetailCondition(); booksDetailCondition.createCriteria().andBookTypeIdEqualTo(bookTypeId); List<BooksDetail> booksDetails1 = booksDetailMapper.selectByExample(booksDetailCondition); for(int i = 0 ; i<booksDetails1.size() ; i++) { int index1 = new Random().nextInt(booksDetails1.size()); booksDetails.add(booksDetails1.get(index1)); booksDetails1.remove(booksDetails1.get(index1)); } for(int i = 0 ; i<booksDetails.size() ; i++) { bookDetailVos.add(assembleBookDetailVo(booksDetails.get(i))); } return new ResponseResult("1",bookDetailVos); } } } /** * @Description:Query book details by id * @param bookId * @return */ @Override public ResponseResult getBookDetailById(String bookId) { BooksDetail booksDetail = booksDetailMapper.selectByPrimaryKey(bookId); BookDetailVo bookDetailVo = assembleBookDetailVo(booksDetail); return new ResponseResult("1",bookDetailVo); } /** * @Description:Find the corresponding book by book name * @param bookTitle * @return */ @Override public ResponseResult searchBookDetailByTitle(String bookTitle) { List<BookDetailVo> bookDetailVos = new ArrayList<BookDetailVo>(); List<BooksDetail> booksDetailList = booksDetailMapper.selectByBookTitle(bookTitle); for(int i = 0 ; i<booksDetailList.size() ; i++) { bookDetailVos.add(assembleBookDetailVo1(booksDetailList.get(i))); } return new ResponseResult("1",bookDetailVos); } /** * @Desciption:Query corresponding books by book type * @param typeId * @return */ @Override public ResponseResult searchDetailByType(String typeId) { List<BookDetailVo> bookDetailVos = new ArrayList<BookDetailVo>(); BooksDetailCondition booksDetailCondition = new BooksDetailCondition(); booksDetailCondition.createCriteria().andBookTypeIdEqualTo(typeId); List<BooksDetail> booksDetailList = booksDetailMapper.selectByExampleWithBLOBs(booksDetailCondition); for(int i = 0 ; i<booksDetailList.size() ; i++) { bookDetailVos.add(assembleBookDetailVo1(booksDetailList.get(i))); } return new ResponseResult("1",bookDetailVos); } private BookDetailVo assembleBookDetailVo(BooksDetail booksDetail) { BookDetailVo bookDetailVo = new BookDetailVo(); bookDetailVo.setId(booksDetail.getId()); bookDetailVo.setBookAuthor(booksDetail.getBookAuthor()); bookDetailVo.setBookDetailImg(booksDetail.getBookDetailImg()); bookDetailVo.setBookIntroduction(booksDetail.getBookIntroduction()); bookDetailVo.setBookMainImg(booksDetail.getBookMainImg()); bookDetailVo.setBookPrice(booksDetail.getBookPrice()); bookDetailVo.setBookPublisher(booksDetail.getBookPublisher()); bookDetailVo.setBookTitle(booksDetail.getBookTitle()); bookDetailVo.setBookTypeId(booksDetail.getBookTypeId()); bookDetailVo.setBookTypeName(booksDetail.getBookTypeName()); return bookDetailVo; } private BookDetailVo assembleBookDetailVo1(BooksDetail booksDetail) { BookDetailVo bookDetailVo = new BookDetailVo(); bookDetailVo.setId(booksDetail.getId()); bookDetailVo.setBookAuthor(booksDetail.getBookAuthor()); bookDetailVo.setBookDetailImg(booksDetail.getBookDetailImg()); bookDetailVo.setBookIntroduction(booksDetail.getBookIntroduction().substring(0,30)+"..."); bookDetailVo.setBookMainImg(booksDetail.getBookMainImg()); bookDetailVo.setBookPrice(booksDetail.getBookPrice()); bookDetailVo.setBookPublisher(booksDetail.getBookPublisher()); bookDetailVo.setBookTitle(booksDetail.getBookTitle()); bookDetailVo.setBookTypeId(booksDetail.getBookTypeId()); bookDetailVo.setBookTypeName(booksDetail.getBookTypeName()); return bookDetailVo; } }