Goods:生成订单

OrderServlet #createOrder

 1 /*
 2      *
 3      * 生成订单
 4      */
 5     public String createOrder(HttpServletRequest req, HttpServletResponse resp)
 6             throws ServletException, IOException {
 7         //获取所有购物车条目ID 查询之
 8         String cartItemIds=req.getParameter("cartItemIds");
 9         List<CartItem> cartItemList=cartItemService.loadCartItems(cartItemIds);
10         //创建订单 order
11         Order order=new Order();
12         order.setOid(CommonUtils.uuid());
13
14         order.setOrdertime(String.format("%tF %<tT", new Date()));
15         order.setStatus(1);//表示未付款
16         order.setAddress(req.getParameter("address"));
17         User owner=(User) req.getSession().getAttribute("sessionUser");
18         order.setOwner(owner);
19
20
21         BigDecimal total=new BigDecimal("0");
22         for(CartItem cartItem:cartItemList)
23         {
24             total=total.add(new BigDecimal(cartItem.getSubtotal()+""));
25         }
26         order.setTotal(total.doubleValue());
27
28
29         //创建List<OrderItem>
30         List<OrderItem> orderItemList =new ArrayList<OrderItem>();
31         for(CartItem cartItem:cartItemList)
32         {
33             OrderItem orderItem=new OrderItem();
34             orderItem.setOrderItemId(CommonUtils.uuid()); //设置主键
35             orderItem.setQuantity(cartItem.getQuantity());
36             orderItem.setSubtotal(cartItem.getSubtotal());
37             orderItem.setBook(cartItem.getBook());
38             orderItem.setOrder(order);
39             orderItemList.add(orderItem);
40
41
42         }
43             order.setOrderItemList(orderItemList);
44
45
46             //调用service完成添加
47             orderService.createOrder(order);
48
49             //删除购物车条目
50             cartItemService.batchDelete(cartItemIds);
51             //保存订单
52             req.setAttribute("order", order);
53             return "f:/jsps/order/ordersucc.jsp";
54
55
56     }

OrderDao

public void add(Order order) throws SQLException
    {

        //插入订单
        String sql="insert into t_order values(?,?,?,?,?,?)";
        Object[] params={order.getOid(),order.getOrdertime(),
        order.getTotal(),order.getStatus(),order.getAddress(),order.getOwner().getUid()    };
        qr.update(sql);

        //循环遍历订单的所有条目 让每个条目生成一个object数组 多个条目生成object[][]数组  执行批处理 完成插入订单条目

        sql="insert into t_orderitem values(?,?,?,?,?,?,?,?)";
        int len=order.getOrderItemList().size();
        Object[][] objs=new Object[len][];
        for(int i=0;i<len;i++)
        {

            OrderItem item=order.getOrderItemList().get(i);
            objs[i]=new Object[]{item.getOrderItemId(),item.getQuantity(),
                    item.getSubtotal(),item.getBook().getBid(),
                    item.getBook().getBname(),item.getBook().getCurrPrice(),
                    item.getBook().getImage_b(),order.getOid()};
        }

        qr.batch(sql,objs);
    }
    
时间: 2024-11-07 20:55:52

Goods:生成订单的相关文章

生成订单:三个表(Products,Orders,OrderItem)

1.有三个表(Product上,Orders,OrderItem) 分别创建对应的三个实体类 OrderItem中有外键Order_id 参考Orders中的id :Product_id参考Product中的id:Orders中有外键User_id参考User中的id sql 代码: CREATE DATABASE day2017_04_05; USE day2017_04_05; CREATE TABLE `user` ( `id` INT(11) AUTO_INCREMENT, `usern

Thinkphp 生成订单号小案例

Thinkphp 生成订单号小案例小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢思梦PHP就带领大家去解读一下生成订单号的问题!首先,订单号我们要明确它有有3个性质:1.唯一性 2.不可推测性 3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复.况且满足这些条件的同时订单号还要足够的短.不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程

生成订单号

生成订单号,最大的问题是要考虑高并发的时候.在网上找的一些方案往往在这种情况下难以适用,比如,查询订单序列最大数,根据系统时间生成等. 再考虑另一种可行的方案:数据库递增序列,没错,确实能解决高并发的问题,但在集群等情况下对数据库压力比较大,而且有些数据库对递增序列没有很好的支持,同时递增序列的位数是一直增加的,也有可能会超出数据库表字段限制. 最好的方案是用java的uuid工具类生成唯一的字符串,然后再取这个字符串对象的hashcode值,因为字符串的值是唯一的,它的hashcode也是唯一

estore商城案例(四、五)------添加购物车&amp;购物车显示/生成订单&amp;在线支付

一.添加购物车 1.获得商品id提交到servlet程序 2.根据id获取product对象 3.判断seesion中是否有存在购物车session.没有的话表示  添加的第一件商品  需要先创建session:有的话直接在session里添加获得的produce(添加product 要先判断session中是否存在对应的商品,存在话直接修改商品数量,没有的话新添加这个商品). servlet程序代码: 1 public void doGet(HttpServletRequest request

网上图书商城项目学习笔记-018生成订单

一.流程分析 1.订单模块介绍 2.生成订单流程 二.代码 1.view层 (1)showitem.jsp 1 <form id="form1" action="<c:url value='/OrderServlet'/>" method="post"> 2 <input type="hidden" name="cartItemIds" value="${cartIt

用户扫码微信二维码生成订单(三)

官方API:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 首先要修改/lib/HttpService.cs 把Get和Post中的的设置代理服务器代码进行隐藏: 修改前: WebProxy proxy = new WebProxy();proxy.Address = new Uri(WxPayConfig.PROXY_URL);request.Proxy = proxy; 修改后: //WebProxy proxy =

根据时间生成订单

package util; import java.util.Date; import java.util.Random; import java.util.UUID; /** * 生成订单Id * */ public class OrderInfoIdUtil { public static String getOrderInfoId(){ Random rd=new Random(); int m1=rd.nextInt(24);//生成0-23的随机数 int m2=rd.nextInt(

生成订单号 、生成优惠券号 前四位大写字母 后六位数字

// 生成订单号 public static String setRandomChar() { String str = ""; for (int i = 0; i < 10; i++) { int ch = (int) (10 * (Math.random())); str = str + ch; } return str; } // 生成优惠券号 前四位大写字母 后六位数字 public static String genCouponCode() { String str =

PHP生成订单号(产品号+年的后2位+月+日+订单号)

require '../common.inc.php'; /* * 产品号+年的后2位+月+日+订单数 * @param [Int] $prodcutId 产品号 * @param [Int] $tradeItemid 订单号 * @return [String] 返回生成订单号串 */ function getTradeNO($prodcutId,$tradeItemid){ if(!is_integer($prodcutId)||!is_integer($tradeItemid))retur