/** 取消预订 */ @PUT @Path("cancelorder") @Produces("application/json") public Representation cancelOrder(Representation entity) { JSONReader reader = new JSONValidatingReader(); HashMap result = null; HashMap returnInfo = new HashMap(); try { result = (HashMap) reader.read(entity.getText()); } catch (IOException e) { e.printStackTrace(); returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.json_format_error); return new JsonRepresentation(returnInfo); } if (result == null || !result.containsKey("sessionKey") || !result.containsKey("orderId")) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.json_format_error); return new JsonRepresentation(returnInfo); } String sessionKey = result.get("sessionKey").toString(); int orderId = Integer.parseInt(result.get("orderId").toString()); SLUser slUser = SLSessionManager.getSession(sessionKey); if (slUser == null) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.need_login); return new JsonRepresentation(returnInfo); } SLOrder slOrder = orderDao.getSLOrderByOrderId(orderId); if (!slOrder.getUserEmail().equals(slUser.getUserEmail()) && !slUser.getUserType().equals("管理员")) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.can_not_modify_other_person); return new JsonRepresentation(returnInfo); } slOrder.setStatus(ORDER_CANCElED); if (!orderDao.updateOrder(slOrder)) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.db_operate_error); return new JsonRepresentation(returnInfo); } returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.success); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.no_error); return new JsonRepresentation(returnInfo); }
/** 获取预订信息 */ @GET @Path("getorderinfo/{orderId}") @Produces("application/json") public Representation getOrderInfo(@PathParam("orderId") int orderId) { SLOrder slOrder = orderDao.getSLOrderByOrderId(orderId); if (slOrder == null) { HashMap returnInfo = new HashMap(); returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.no_such_order); return new JsonRepresentation(returnInfo); } slOrder.setTheBook(bookDao.queryByISBN(slOrder.getBookISBN())); slOrder.setTheUser(userDao.getSLUserByEmail(slOrder.getUserEmail())); JsonRepresentation ret = new JsonRepresentation(slOrder); try { ret.getJsonObject().put(RestCallInfo.REST_STATUS, RestCallStatus.success); ret.getJsonObject().put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.no_error); } catch (JSONException e) { e.printStackTrace(); } return ret; }
/** 预订图书 */ @PUT @Path("orderbook") @Produces("application/json") public Representation orderBook(Representation entity) { JSONReader reader = new JSONValidatingReader(); HashMap result = null; HashMap returnInfo = new HashMap(); try { result = (HashMap) reader.read(entity.getText()); } catch (IOException e) { e.printStackTrace(); returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.json_format_error); return new JsonRepresentation(returnInfo); } if (result == null || !result.containsKey("sessionKey") || !result.containsKey("bookISBN")) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.json_format_error); return new JsonRepresentation(returnInfo); } String sessionKey = result.get("sessionKey").toString(); String bookISBN = result.get("bookISBN").toString(); SLUser slUser = SLSessionManager.getSession(sessionKey); if (slUser == null) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.need_login); return new JsonRepresentation(returnInfo); } // 如果还有的借,不能预订 if (bookDao.queryByISBN(bookISBN).getBookAvailableQuantity() > 0) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put( RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.can_not_order_while_you_can_borrow); return new JsonRepresentation(returnInfo); } // 先检查是否已借! if (borrowDao.isUserBookBorrowed(slUser.getUserEmail(), bookISBN)) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.already_borrowed); return new JsonRepresentation(returnInfo); } // 再检查是否已预订! if (orderDao.isUserBookOrdered(slUser.getUserEmail(), bookISBN)) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.already_ordered); return new JsonRepresentation(returnInfo); } // 插入记录 SLOrder slOrder = new SLOrder(); Calendar c = Calendar.getInstance(); Date orderDate = c.getTime(); slOrder.setUserEmail(slUser.getUserEmail()); slOrder.setBookISBN(bookISBN); slOrder.setOrderDate(orderDate); slOrder.setStatus(ORDER_INQUEUE); if (!orderDao.orderBook(slOrder)) { returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.fail); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.db_operate_error); return new JsonRepresentation(returnInfo); } // 发送邮件 slOrder.setTheBook(bookDao.queryByISBN(bookISBN)); slOrder.setTheUser(userDao.getSLUserByEmail(slOrder.getUserEmail())); emailUtil.sendOrderSuccessEmail(slOrder); returnInfo.put(RestCallInfo.REST_STATUS, RestCallStatus.success); returnInfo.put(RestCallInfo.REST_ERROR_CODE, RestCallErrorCode.no_error); return new JsonRepresentation(returnInfo); }