1. 程式人生 > >圖書館接口設計

圖書館接口設計

log lean als tar 初始化 www. hashmap bject 訂單號

任務需求:實現圖書1.預定2.下單3.準備4.借書5.還書6.收藏幾個相關功能接口;

一。需要的幾個實體:

1.圖書:本數據庫中沒有圖書,每當預定或者收藏以及借書的時候,從數據庫中看是否有,沒有的話就往數據庫中添加一本書。

2.借書卡:借書卡裏面主要有userid,還有自身主鍵id,數據是從一卡通添加時添加(主要userID以及cardid)預定收藏以及其他的時候是通過userid獲取的借書卡

3.訂單:訂單是下單後也就是提交預定時生成的訂單。

4.預定:相當於購物車,在提交預定的時候購物車狀態設為失效

5.借書:維護當前正在出借尚未歸還的書,主要是一個cardID一個bookID

6.還書:當還書時,刪除借書表對應信息,還書表中插入對應字段

沒有用收藏表,直接把收藏的書id拼串到借書卡表裏了

二。具體實現

(1)預定:分為1.添加預定。2.刪除預定。3.預定列表。

添加預定:初始化購物車狀態生效,書籍信息拼裝id串放入購物車表也就是預定表中,可重復,考慮到借多本同一樣書情況

預定列表:直接將書串查到對應信息拼裝成接口需要的信息,傳出;

(2)下單:就是提交預定,具體作用:生成訂單,插入訂單表,失效購物車。判斷訂單書數目與已借書數量和是否大於5

(3)準備:準備書的過程,管理員操作,當訂單所有書籍都準備狀態改為已處理,有的書籍可能館藏沒有(未準備好),未處理狀態的訂單也可提交借書,只不過沒有準備好的書籍不能出借,但是訂單狀態改為已借出。具體策略:書本id前加標識位,想了想為方便用0。

(4)借書:兩種狀態,一種提交訂單號借書,另外一種狀態管理員直接提交書籍信息借書,訂單要判斷id有標識位的出借,沒有的不借。每個借書卡最多只能借5本,需要效驗。

(5)還書:從借書表移除,還書表添加。

(6)收藏:添加收藏,刪除收藏,收藏列表

添加收藏:註意判斷重復添加。

註:模糊查詢均查最新一條數據。

數據庫相關結構:

技術分享

轉載請附帶網址:http://www.cnblogs.com/handsomecui

主要功能代碼演示:

/**
     * 拼裝id去重
     * @param bookIds
     * @param s
     * @return
     */
    private
String handleBookIds(String bookIds, String s) { if(bookIds == null || "".equals(bookIds)){ bookIds = s; }else{ String[] needAdds = s.split(","); String[] bs = bookIds.split(","); for(int i = 0; i < needAdds.length; i++){ boolean flag = true; for(int j = 0; j < bs.length; j++){ if(needAdds[i].equals(bs[j])){ flag = false; break; } } if(flag){ bookIds += needAdds[i]+","; } } } return bookIds; } /** * 獲取借書卡id * @return */ private String getCardId() { Card card = new Card(); String user_ID = this.user.getUserId(); card.setUserId(user_ID); Card card2 = cardService.selectBySelective(card); if(card2 == null){ return null; } else{ return card2.getId(); } } /** * 拼裝Book為book對象 * @param bookMap * @return */ private Book getBookObject(Map<String, Object> bookMap) { String title = (String)bookMap.get("title"); String author = (String)bookMap.get("author"); String number = (String)bookMap.get("number"); String hold = (String)bookMap.get("hold"); Book book = new Book(); book.setAuther(author); book.setTitle(title); book.setNumber(number); book.setHold(hold); Book book2 = bookService.selectBySelective(book); return book2; } /** * 處理圖書館是否有這本書 * @param bookMap */ private void handleIsHaveBook(Map<String, Object> bookMap) { String title = (String)bookMap.get("title"); String author = (String)bookMap.get("author"); String number = (String)bookMap.get("number"); String hold = (String)bookMap.get("hold"); Book book = new Book(); book.setAuther(author); book.setTitle(title); book.setNumber(number); book.setHold(hold); Book book2 = bookService.selectBySelective(book); if(book2 != null){//有書 book2.setHold(hold); bookService.updateByPrimaryKey(book2); }else{// bookService.insert(book); } } /** * 通過借書卡號獲取預定信息 * @param cardId * @return */ private Reserve getReservebyCardId(String cardId) { Reserve reserve = new Reserve(); reserve.setCardId(cardId); Reserve reserve2 = reserveService.selectBySelective(reserve); return reserve2; } /** * 通過id封裝Book * @param bookIds * @return */ private List<Map<String, Object>> putBookByIds(String bookIds) { List<Map<String,Object>> list = new ArrayList<Map<String, Object>>(); if(bookIds != null){ String[] ids = bookIds.split(","); for(String id : ids){ Book book = bookService.selectByPrimaryKey(Long.valueOf(id)); Map<String,Object> BOOK = new HashMap<String, Object>(); BOOK.put("title", book.getTitle()); BOOK.put("author", book.getAuther()); BOOK.put("number", book.getNumber()); BOOK.put("hold", book.getHold()); list.add(BOOK); } } return list; } /** * 添加標識位,判斷是否全部準備 * @param order * @param bookId * @return 未準備書數量 */ private int addFlagToBookIdsAndJudgeIsFinish(Order order, Long bookId) { String bookIds = order.getBookIds(); String[] split = bookIds.split(","); String newBookIds = ""; int num = 0; boolean isFinish = true; if(split != null){ boolean flag = false; for(String e : split){ if(e.length() <= 1 || e.charAt(0) != ‘0‘){ num++; isFinish = false; } String bookid = e; if(!flag&&(e.length() <= 1 || e.charAt(0) != ‘0‘)){ Long bid = Long.valueOf(e); if(bid == bookId){ bookid = "0"+bookid; flag = true; } } newBookIds += bookid+","; } order.setBookIds(newBookIds); } if(isFinish){ order.setType("1"); } orderService.updateByPrimaryKeyWithBLOBs(order); return num; }

圖書館接口設計