「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」
这一篇讲电影系统中,如何电影订票与查看自己订的电影票。
在电影列表那里,做个预定功能。预定,就是指电影下单,购买了该电影的电影票。
public String orderSubmit()
{
Map session= ServletActionContext.getContext().getSession();
Cart cart = (Cart)session.get("cart");
TUser user=(TUser)session.get("user");
TOrder order=new TOrder();
order.setOrderBianhao(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));
order.setOrderDate(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()));
order.setOrderZhuangtai("no");//未受理
order.setOrderUserId(user.getUserId());
order.setOrderJine(cart.getTotalPrice());
System.out.println(odderFukuangfangshi+"%%%%%%%%%");
order.setOdderFukuangfangshi(odderFukuangfangshi);
order.setOdderSonghuodizhi(odderSonghuodizhi);
orderDAO.save(order);
for (Iterator it = cart.getItems().values().iterator(); it.hasNext();)
{
TOrderItem orderItem = (TOrderItem) it.next();
orderItem.setOrderId(order.getOrderId());
orderItem.setGoodsId(orderItem.getGoods().getGoodsId());
goodsDAO.getHibernateTemplate().bulkUpdate("update TGoods set goodsKucun=goodsKucun-"+orderItem.getGoodsQuantity() +" where goodsId="+orderItem.getGoods().getGoodsId());
orderItemDAO.save(orderItem);
}
cart.getItems().clear();
session.put("cart", cart);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("order", order);
return ActionSupport.SUCCESS;
}
需要注意的是,这里有个Cart作为临时对象,保存电影其他信息,传递参数往下做其他功能。首先保存的是order对象信息,指电影订单对象,下单时间,价格,下单人等等。接着才是保存orderItem对象信息,指的是订单详情。里面用了for循环,表示有可能买电影票的人,买了不止一张票,有可能是情侣,所以需要买两张票。主要的还是关联电影详情。另外,还有一步,就是,购买电影之后,库存数量会进行扣减。库存为0,表示电影票卖完了。
public String addToCart()
{
TGoods goods=goodsDAO.findById(goodsId);
TOrderItem orderItem=new TOrderItem();
orderItem.setGoods(goods);
orderItem.setGoodsQuantity(quantity);
Map session= ServletActionContext.getContext().getSession();
Cart cart = (Cart)session.get("cart");
cart.addGoods(goodsId, orderItem);
session.put("cart",cart);
//this.setMessage("");
this.setPath("myCart.action");
return "succeed";
}
在order表,和orderItem表插入数据,关于order表插入的数据,主要内容是:订单编号,订单日期,价格,用户编号。关于orderItem表插入的数据,主要内容是,订单编号,电影编号,电影票数量
查询订单的话,主要为order表数据,订单详情是根据orderid查询出orderItem表数据。
查询自己的订单:
public String myOrder()
{
Map session= ServletActionContext.getContext().getSession();
TUser user=(TUser)session.get("user");
String sql="from TOrder where orderUserId="+user.getUserId();
List orderList=orderDAO.getHibernateTemplate().find(sql);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("orderList", orderList);
return ActionSupport.SUCCESS;
}
同样,管理员界面一样可以查询所有用户的电影订单,首页查询的只是自己下单的电影订单。此外,管理员还有着删除订单的功能。看如下代码:
public String orderDelByAd()
{
TOrder order=orderDAO.findById(orderId);
orderDAO.delete(order);
String sql="delete from TOrderItem where orderId="+orderId;
orderItemDAO.getHibernateTemplate().bulkUpdate(sql);
this.setMessage("删除成功");
this.setPath("orderMana.action");
return "succeed";
}