2022首次更文挑战第15天 | 电影系统的订票功能

212 阅读2分钟

「这是我参与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";
}