@Override public BusinessResult buy(String userId, String bookId) throws DataAccessException { UserBook userBook = new UserBook(); User user = mutableDataAccess.findById(User.class, userId); Book book = mutableDataAccess.findById(Book.class, bookId); Map<String, Object> map = new HashMap<String, Object>(); map.put("userId", userId); map.put("bookId", bookId); List<UserBook> userBooks = mutableDataAccess.paging(UserBook.class, 1, 1, map); if (userBooks.size() > 0) { if (userBooks.get(0).isHasBuyed() && book.getPrice() > 0) { return new BusinessResult(BusinessResult.ResultStatus.FAIL, "该书已经购买,不需要重复购买"); } userBook = userBooks.get(0); } userBook.setBookId(bookId); userBook.setUserId(userId); if (book.getPrice() <= 0) { userBook.setHasBuyed(userBook.isHasBuyed()); mutableDataAccess.save(userBook); return new BusinessResult(BusinessResult.ResultStatus.OK, "免费书籍,已经保存到书架上"); } else { if (user.getCredits() < book.getPrice()) { return new BusinessResult(BusinessResult.ResultStatus.FAIL, "购买失败,您的信用值余额不足,请充值"); } else { user.setCredits(user.getCredits() - book.getPrice()); userBook.setHasBuyed(true); userBook.setUser(user); userBook.setBook(book); mutableDataAccess.save(user); book.setSellAmount(book.getSellAmount() + 1); mutableDataAccess.save(book); mutableDataAccess.save(userBook); return new BusinessResult(BusinessResult.ResultStatus.OK, "购买成功,已经保存到书架上"); } } }
@Override public BusinessResult addToBookshelf(String userId, String bookId) throws DataAccessException { Map<String, Object> map = new HashMap<String, Object>(); map.put("userId", userId); map.put("bookId", bookId); List<UserBook> userBooks = mutableDataAccess.paging(UserBook.class, 1, 1, map); if (userBooks.size() > 0) { return new BusinessResult(BusinessResult.ResultStatus.FAIL, "该书已经在你的书架中了,无需再添加"); } final UserBook userBook = new UserBook(); userBook.setHasBuyed(false); userBook.setUserId(userId); userBook.setBookId(bookId); userBook.setUser(mutableDataAccess.findById(User.class, userId)); userBook.setBook(mutableDataAccess.findById(Book.class, bookId)); mutableDataAccess.save(userBook); Book book = mutableDataAccess.findById(Book.class, bookId); book.setUserFavoriteAmount(book.getUserFavoriteAmount() + 1); mutableDataAccess.save(book); return new BusinessResult(BusinessResult.ResultStatus.OK, "加入书架成功"); }