예제 #1
0
  @Override
  public String execute() throws Exception {
    try {

      // 获取购物车信息
      ActionContext actionContext = ActionContext.getContext();
      Map websession = actionContext.getSession();
      Cart theCart = (Cart) websession.get("cart");
      Vector<Booklist> booksincart = theCart.getBookincart();
      Map<Integer, Integer> amountmap = theCart.getAmountmap();
      int totalprice = theCart.getTotal_price();

      User theUser = (User) websession.get("user");
      int user_id = 0;
      if (theUser != null) {
        user_id = theUser.getId();
      }
      // 将购物车信息写入数据库
      Session session = HibernateUtil.getSessionFactory().getCurrentSession();
      session.beginTransaction();
      session
          .createQuery("delete from Cart where user_id = ?")
          .setString(0, user_id + "")
          .executeUpdate();
      session.getTransaction().commit();

      Cart temCart = new Cart();
      temCart.setUser_id(user_id);
      Set<Integer> keys = amountmap.keySet();
      for (int i = 0; i < booksincart.size(); i++) {
        temCart.setBook_id(booksincart.get(i).getId());
        temCart.setTotal_amount(amountmap.get(temCart.getBook_id()));
        Session insertsession = HibernateUtil.getSessionFactory().getCurrentSession();
        insertsession.beginTransaction();
        insertsession.save(temCart);
        insertsession.getTransaction().commit();
      }

      // 删除用户session
      websession.clear();
      return SUCCESS;
    } catch (Exception e) {
      e.printStackTrace();
      return ERROR;
    }
  }
  @Override
  public String execute() throws Exception {
    try {
      String book_id = this.id;

      Session session = HibernateUtil.getSessionFactory().getCurrentSession();
      session.beginTransaction();
      session
          .createQuery("delete from Booklist where id = ?")
          .setString(0, book_id)
          .executeUpdate();
      session.getTransaction().commit();
      return SUCCESS;

    } catch (Exception e) {
      e.printStackTrace();
      return ERROR;
    }
  }
  @Override
  public String execute() throws Exception {
    try {
      String bookname = this.bookname;
      String operator = this.operator;
      ActionContext actionContext = ActionContext.getContext();
      Map websession = actionContext.getSession();
      Cart theCart = (Cart) websession.get("cart");

      Vector<Booklist> currentbooks = theCart.getBookincart();
      Map<Integer, Integer> amountmap = theCart.getAmountmap();
      int totalprice = theCart.getTotal_price();
      // 减少商品
      if (operator.equals("-")) {
        for (int i = 0; i < currentbooks.size(); i++) {
          if (currentbooks.get(i).getBookname().equals(bookname)) {
            int id = currentbooks.get(i).getId();
            int temamount = amountmap.get(id);
            int oneprice = currentbooks.get(i).getPrice();
            totalprice -= oneprice;
            if (temamount != 1) amountmap.put(id, temamount - 1);
            else {
              amountmap.remove(id);
              currentbooks.remove(i);
            }
            break;
          }
        }
        // 存session
        theCart.setAmountmap(amountmap);
        theCart.setBookincart(currentbooks);
        theCart.setTotal_price(totalprice);
        websession.put("cart", theCart);
      }

      // 增加商品
      if (operator.equals("1")) {
        // 搜索是否已经是cart里面的商品
        Boolean already = false;
        for (int i = 0; i < currentbooks.size(); i++) {
          if (currentbooks.get(i).getBookname().equals(bookname)) {
            int id = currentbooks.get(i).getId();
            int temamount = amountmap.get(id);
            int oneprice = currentbooks.get(i).getPrice();
            totalprice += oneprice;

            amountmap.put(id, temamount + 1);
            already = true;
            break;
          }
        }
        if (already == false) {
          Session session = HibernateUtil.getSessionFactory().getCurrentSession();
          session.beginTransaction();
          List allbooks = session.createQuery("from Booklist").list();
          session.getTransaction().commit();
          for (int j = 0; j < allbooks.size(); j++) {
            Booklist theBook = (Booklist) allbooks.get(j);
            if (theBook.getBookname().equals(bookname)) {
              int id = theBook.getId();
              int oneprice = theBook.getPrice();
              totalprice += oneprice;

              currentbooks.add(theBook);
              amountmap.put(id, 1);
              break;
            }
          }
        }
        // 存session
        theCart.setAmountmap(amountmap);
        theCart.setBookincart(currentbooks);
        theCart.setTotal_price(totalprice);
        websession.put("cart", theCart);
      }
      return SUCCESS;

    } catch (Exception e) {
      e.printStackTrace();
      return ERROR;
    }
  }