SSH(struts+spring+hibernate)迅速开发--第九章 下订单(1)

第九章 下订单

 

类似用户注册和浏览定购商品功能的实现,我们分布实现下订单的功能。

我们在这里实现得比较简单,具体逻辑是在下订单前,先需要用户填写收货人的信息,比如收货人名称、收货人地址以及收货人电话等信息,然后根据购物车里面的商品信息,形成一个有效的订单信息,放入Torderorder_detail表里面。具体清单如下:

OrderServices.java

/**

 *

 */

package cn.com.book.demo.services;

 

/**

 * @author Noble.Yang

 *

 */

public interface OrderServices {

       /**

        * 提交一个用户定单

        * */

    public boolean submitOrder(UserOrder userOrder, String userName);

}

 

OrderServicesImpl.java

/**

 *

 */

package cn.com.book.demo.services.impl;

 

import java.util.Date;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

 

import cn.com.book.demo.hibernate.dao.OrderDetail;

import cn.com.book.demo.hibernate.dao.OrderDetailDAO;

import cn.com.book.demo.hibernate.dao.ShopDAO;

import cn.com.book.demo.hibernate.dao.Torder;

import cn.com.book.demo.hibernate.dao.TorderDAO;

import cn.com.book.demo.hibernate.dao.Tuser;

import cn.com.book.demo.hibernate.dao.TuserDAO;

import cn.com.book.demo.services.OrderServices;

import cn.com.book.demo.services.UserOrder;

import cn.com.book.demo.services.UserOrderItem;

 

/**

 * @author Noble.Yang

 *

 */

public class OrderServicesImpl implements OrderServices {

    private TorderDAO orderDAO = null;

    private OrderDetailDAO orderDetailDAO = null;

    private TuserDAO tuserDAO = null;

    private ShopDAO shopDAO = null;

       public void setOrderDAO(TorderDAO orderDAO) {

              this.orderDAO = orderDAO;

       }

       public void setOrderDetailDAO(OrderDetailDAO orderDetailDAO) {

              this.orderDetailDAO = orderDetailDAO;

       }

       public void setTuserDAO(TuserDAO tuserDAO){

              this.tuserDAO = tuserDAO;

       }

       public void setShopDAO(ShopDAO shopDAO){

              this.shopDAO = shopDAO;

       }

       /* (non-Javadoc)

        * @see cn.com.book.demo.services.OrderServices#submitOrder(cn.com.book.demo.services.UserOrder)

        */

       public boolean submitOrder(UserOrder userOrder, String userName) {

              boolean bool = false;

              this.initDAO();

              List list = this.tuserDAO.findByUserName(userName);

              if(userOrder != null && list != null && list.size()>0){

                     Tuser user = (Tuser)list.get(0);

                    

                     Torder order = new Torder();

                     order.setOrderTime(new Date());

                     order.setRAddress(userOrder.getSendAddress());

                     order.setRName(userOrder.getReceiveName());

                     order.setRPhone(userOrder.getReceivePhone());

                     order.setTuser(user);

                    

                     // 设置定单子项

                     List items = userOrder.getOrderItems();

                     Set details = order.getOrderDetails();

                     OrderDetail detail = null;

                     if(items != null){

                            for(int i=0; i<items.size(); i++){

                                   UserOrderItem oItem = (UserOrderItem)items.get(i);

                                   if(oItem != null){

                                          detail = new OrderDetail();

                                          detail.setAmount(oItem.getAmount());

                                          detail.setAPrice(oItem.getSinglePrice() * oItem.getAmount());

                                          detail.setTorder(order);

                                          detail.setSPrice(oItem.getSinglePrice());

                                          detail.setShop(this.shopDAO.findById(oItem.getShopID()));

                                         

                                          if(details == null){

                                                 details = new HashSet();

                                          }

                                          details.add(detail);

                                   }

                            }

                     }

                    

                     this.orderDAO.attachDirty(order);

                     bool = true;

              }

             

              return bool;

       }

   

       private void initDAO(){

              if(this.orderDAO == null){

                     this.orderDAO = new TorderDAO();

              }

              if(this.orderDetailDAO == null){

                     this.orderDetailDAO = new OrderDetailDAO();

              }

              if(this.tuserDAO == null){

                     this.tuserDAO = new TuserDAO();

              }

              if(this.shopDAO == null){

                     this.shopDAO = new ShopDAO();

              }

       }

}

 

applicationContext-service.xml中的注册内容

       <!-- 定单处理服务 -->

       <bean id="orderServiceProxy" parent="baseServiceProxy">

              <property name="target">

                     <ref bean="orderService" />

              </property>

 

              <property name="transactionAttributes">

                     <props>

                            <prop key="submit*">PROPAGATION_REQUIRED</prop>

                            <!--

                            <prop key="findShopsMsg">PROPAGATION_REQUIRED</prop>

                             -->

                            <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>

                     </props>

              </property>

       </bean>

       <bean id="orderService"

             class="cn.com.book.demo.services.impl.OrderServicesImpl">

           <property name="orderDAO">

               <ref bean="TorderDAO"/>

           </property>

           <property name="orderDetailDAO">

               <ref bean="OrderDetailDAO"/>

           </property>

           <property name="tuserDAO">

               <ref bean="TuserDAO"/>

           </property>

           <property name="shopDAO">

               <ref bean="ShopDAO"/>

           </property>

       </bean>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值