SSH综合项目实战(快递) -- day09 收派业务、客户在线下单
2017-09-12 11:30
267 查看
一、取派业务
1、创建取派业务模块,导入实体类
package com.itheima.bos.domain.take_delivery; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import com.itheima.bos.domain.base.Area; import com.itheima.bos.domain.base.Courier; /** * @description:订单实体类 */ @Entity @Table(name = "T_ORDER") public class Order { @Id @GeneratedValue @Column(name = "C_ID") private Integer id;// 主键 @Column(name = "C_ORDER_NUM") private String orderNum;// 订单号 @Column(name = "C_TELEPHONE") private String telephone; // 来电号码 @Column(name = "C_CUSTOMER_ID") private Integer customer_id; // 客户编号 @Column(name = "C_SEND_NAME") private String sendName; // 寄件人姓名 @Column(name = "C_SEND_MOBILE") private String sendMobile;// 寄件人电话 @Column(name = "C_SEND_COMPANY") private String sendCompany;// 寄件人公司 @OneToOne @JoinColumn(name = "C_SEND_AREA_ID") private Area sendArea; // 寄件人省市区信息 @Column(name = "C_SEND_ADDRESS") private String sendAddress;// 寄件人详细地址信息 @Column(name = "C_REC_NAME") private String recName;// 收件人姓名 @Column(name = "C_REC_MOBILE") private String recMobile;// 收件人电话 @Column(name = "C_REC_COMPANY") private String recCompany;// 收件人公司 @OneToOne @JoinColumn(name = "C_REC_AREA_ID") private Area recArea; // 收件人省市区信息 @Column(name = "C_REC_ADDRESS") private String recAddress;// 收件人详细地址信息 @Column(name = "C_SEND_PRO_NUM") private String sendProNum; // 快递产品类型编号:速运当日、速运次日、速运隔日 @Column(name = "C_GOODS_TYPE") private String goodsType;// 托寄物类型:文件、衣服 、食品、电子商品 @Column(name = "C_PAY_TYPE_NUM") private String payTypeNum;// 支付类型编号:寄付日结、寄付月结、到付 @Column(name = "C_WEIGHT") private Double weight;// 托寄物重量 @Column(name = "C_REMARK") private String remark; // 备注 @Column(name = "C_SEND_MOBILE_MSG") private String sendMobileMsg; // 给快递员捎话 // 分单类型 1 自动分单 2 人工分单 @Column(name = "C_ORDER_TYPE") private String orderType; // 订单状态 1 待取件 2 运输中 3 已签收 4 异常 @Column(name = "C_STATUS") private String status; // 下单时间 @Column(name = "C_ORDER_TIME") private Date orderTime; // 运单 @OneToOne(mappedBy = "order") private WayBill wayBill; // 工单 @OneToMany(mappedBy = "order") private Set<WorkBill> workBills = new HashSet<WorkBill>(0); @ManyToOne @JoinColumn(name = "C_COURIER_ID") private Courier courier; public Integer getId() { return id; } public Integer getCustomer_id() { return customer_id; } public void setCustomer_id(Integer customer_id) { this.customer_id = customer_id; } public void setId(Integer id) { this.id = id; } public String getOrderNum() { return orderNum; } public void setOrderNum(String orderNum) { this.orderNum = orderNum; } public String getSendName() { return sendName; } public void setSendName(String sendName) { this.sendName = sendName; } public String getSendMobile() { return sendMobile; } public void setSendMobile(String sendMobile) { this.sendMobile = sendMobile; } public String getSendCompany() { return sendCompany; } public void setSendCompany(String sendCompany) { this.sendCompany = sendCompany; } public Area getSendArea() { return sendArea; } public void setSendArea(Area sendArea) { this.sendArea = sendArea; } public String getSendAddress() { return sendAddress; } public void setSendAddress(String sendAddress) { this.sendAddress = sendAddress; } public String getRecName() { return recName; } public void setRecName(String recName) { this.recName = recName; } public String getRecMobile() { return recMobile; } public void setRecMobile(String recMobile) { this.recMobile = recMobile; } public String getRecCompany() { return recCompany; } public void setRecCompany(String recCompany) { this.recCompany = recCompany; } public Area getRecArea() { return recArea; } public void setRecArea(Area recArea) { this.recArea = recArea; } public String getRecAddress() { return recAddress; } public void setRecAddress(String recAddress) { this.recAddress = recAddress; } public String getSendProNum() { return sendProNum; } public void setSendProNum(String sendProNum) { this.sendProNum = sendProNum; } public String getGoodsType() { return goodsType; } public void setGoodsType(String goodsType) { this.goodsType = goodsType; } public String getPayTypeNum() { return payTypeNum; } public void setPayTypeNum(String payTypeNum) { this.payTypeNum = payTypeNum; } public Double getWeight() { return weight; } public void setWeight(Double weight) { this.weight = weight; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public Date getOrderTime() { return orderTime; } public void setOrderTime(Date orderTime) { this.orderTime = orderTime; } public WayBill getWayBill() { return wayBill; } public void setWayBill(WayBill wayBill) { this.wayBill = wayBill; } public Set<WorkBill> getWorkBills() { return workBills; } public void setWorkBills(Set<WorkBill> workBills) { this.workBills = workBills; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public String getSendMobileMsg() { return sendMobileMsg; } public void setSendMobileMsg(String sendMobileMsg) { this.sendMobileMsg = sendMobileMsg; } @Override public String toString() { return "Order [id=" + id + ", orderNum=" + orderNum + ", telephone=" + telephone + ", customer_id=" + customer_id + ", sendName=" + sendName + ", sendMobile=" + sendMobile + ", sendCompany=" + sendCompany + ", sendArea=" + sendArea + ", sendAddress=" + sendAddress + ", recName=" + recName + ", recMobile=" + recMobile + ", recCompany=" + recCompany + ", recArea=" + recArea + ", recAddress=" + recAddress + ", sendProNum=" + sendProNum + ", goodsType=" + goodsType + ", payTypeNum=" + payTypeNum + ", weight=" + weight + ", remark=" + remark + ", sendMobileMsg=" + sendMobileMsg + ", orderTime=" + orderTime + ", wayBill=" + wayBill + ", workBills=" + workBills + "]"; } public Courier getCourier() { return courier; } public void setCourier(Courier courier) { this.courier = courier; } public String getOrderType() { return orderType; } public void setOrderType(String orderType) { this.orderType = orderType; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } }
package com.itheima.bos.domain.take_delivery; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; import com.itheima.bos.domain.base.Area; /** * @description:运单实体类 */ @Entity @Table(name = "T_WAY_BILL") public class WayBill { @Id @GeneratedValue @Column(name = "C_ID") private Integer id; @Column(name = "C_WAY_BILL_NUM", unique = true) private String wayBillNum; // 运单编号 @OneToOne @JoinColumn(name = "C_ORDER_ID") private Order order; // 订单信息 @Column(name = "C_SEND_NAME") private String sendName; // 寄件人姓名 @Column(name = "C_SEND_MOBILE") private String sendMobile;// 寄件人电话 @Column(name = "C_SEND_COMPANY") private String sendCompany;// 寄件人公司 @OneToOne @JoinColumn(name = "C_SEND_AREA_ID") private Area sendArea; // 寄件人省市区信息 @Column(name = "C_SEND_ADDRESS") private String sendAddress;// 寄件人详细地址信息 @Column(name = "C_REC_NAME") private String recName;// 收件人姓名 @Column(name = "C_REC_MOBILE") private String recMobile;// 收件人电话 @Column(name = "C_REC_COMPANY") private String recCompany;// 收件人公司 @OneToOne @JoinColumn(name = "C_REC_AREA_ID") private Area recArea; // 收件人省市区信息 @Column(name = "C_REC_ADDRESS") private String recAddress;// 收件人详细地址信息 @Column(name = "C_SEND_PRO_NUM") private String sendProNum; // 快递产品类型编号:速运当日、速运次日、速运隔日 @Column(name = "C_GOODS_TYPE") private String goodsType;// 托寄物类型:文件、衣服 、食品、电子商品 @Column(name = "C_PAY_TYPE_NUM") private String payTypeNum;// 支付类型编号:寄付日结、寄付月结、到付 @Column(name = "C_WEIGHT") private Double weight;// 托寄物重量 @Column(name = "C_REMARK") private String remark; // 备注 @Column(name = "C_NUM") private Integer num; // 原件数 @Column(name = "C_ARRIVE_CITY") private String arriveCity; // 到达地 @Column(name = "C_FEEITEMNUM") private Integer feeitemnum; // 实际件数 @Column(name = "C_ACTLWEIT") private Double actlweit; // 实际重量 @Column(name = "C_VOL") private String vol; // 体积 输入格式为1*1*1*1,表示长*宽*高*数量 @Column(name = "C_FLOADREQR") private String floadreqr; // 配载要求 (比如录入1=无,2=禁航,4=禁航空铁路) @Column(name = "C_WAY_BILL_TYPE") private String wayBillType; // 运单类型(类型包括:正常单据、异单、调单) /* * 运单状态: 1 待发货、 2 派送中、3 已签收、4 异常 */ @Column(name = "C_SIGN_STATUS") private Integer signStatus; // 签收状态 /* 11a1c * 1、新增修改单据状态为“否” 2、作废时需将状态置为“是” 3、取消作废时需要将状态置为“否” */ @Column(name = "C_DELTAG") private String delTag; // 作废标志 public String getArriveCity() { return arriveCity; } public void setArriveCity(String arriveCity) { this.arriveCity = arriveCity; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getWayBillNum() { return wayBillNum; } public void setWayBillNum(String wayBillNum) { this.wayBillNum = wayBillNum; } public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } public String getSendName() { return sendName; } public void setSendName(String sendName) { this.sendName = sendName; } public String getSendMobile() { return sendMobile; } public void setSendMobile(String sendMobile) { this.sendMobile = sendMobile; } public String getSendCompany() { return sendCompany; } public void setSendCompany(String sendCompany) { this.sendCompany = sendCompany; } public Area getSendArea() { return sendArea; } public void setSendArea(Area sendArea) { this.sendArea = sendArea; } public String getSendAddress() { return sendAddress; } public void setSendAddress(String sendAddress) { this.sendAddress = sendAddress; } public String getRecName() { return recName; } public void setRecName(String recName) { this.recName = recName; } public String getRecMobile() { return recMobile; } public void setRecMobile(String recMobile) { this.recMobile = recMobile; } public String getRecCompany() { return recCompany; } public void setRecCompany(String recCompany) { this.recCompany = recCompany; } public Area getRecArea() { return recArea; } public void setRecArea(Area recArea) { this.recArea = recArea; } public String getRecAddress() { return recAddress; } public void setRecAddress(String recAddress) { this.recAddress = recAddress; } public String getSendProNum() { return sendProNum; } public void setSendProNum(String sendProNum) { this.sendProNum = sendProNum; } public String getGoodsType() { return goodsType; } public void setGoodsType(String goodsType) { this.goodsType = goodsType; } public String getPayTypeNum() { return payTypeNum; } public void setPayTypeNum(String payTypeNum) { this.payTypeNum = payTypeNum; } public Double getWeight() { return weight; } public void setWeight(Double weight) { this.weight = weight; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public Integer getFeeitemnum() { return feeitemnum; } public void setFeeitemnum(Integer feeitemnum) { this.feeitemnum = feeitemnum; } public Double getActlweit() { return actlweit; } public void setActlweit(Double actlweit) { this.actlweit = actlweit; } public String getVol() { return vol; } public void setVol(String vol) { this.vol = vol; } public String getFloadreqr() { return floadreqr; } public void setFloadreqr(String floadreqr) { this.floadreqr = floadreqr; } public String getWayBillType() { return wayBillType; } public void setWayBillType(String wayBillType) { this.wayBillType = wayBillType; } public Integer getSignStatus() { return signStatus; } public void setSignStatus(Integer signStatus) { this.signStatus = signStatus; } public String getDelTag() { return delTag; } public void setDelTag(String delTag) { this.delTag = delTag; } }
package com.itheima.bos.domain.take_delivery; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Table; import com.itheima.bos.domain.base.Courier; /** * @description:工单 */ @Entity @Table(name = "T_WORK_BILL") public class WorkBill { @Id @GeneratedValue @Column(name = "C_ID") private Integer id; // 主键 @Column(name = "C_TYPE") private String type; // 工单类型 新,追,销 /* * 新单:没有确认货物状态的 已通知:自动下单下发短信 已确认:接到短信,回复收信确认信息 已取件:已经取件成功,发回确认信息 生成工作单 * 已取消:销单 * */ @Column(name = "C_PICKSTATE") private String pickstate; // 取件状态 @Column(name = "C_BUILDTIME") private Date buildtime; // 工单生成时间 @Column(name = "C_ATTACHBILLTIMES") private Integer attachbilltimes; // 追单次数 @Column(name = "C_REMARK") private String remark; // 订单备注 @Column(name = "C_SMSNUMBER") private String smsNumber; // 短信序号 @OneToOne @JoinColumn(name = "C_COURIER") private Courier courier;// 快递员 @ManyToOne @JoinColumn(name = "C_ORDER_ID") private Order order; // 订单 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getPickstate() { return pickstate; } public void setPickstate(String pickstate) { this.pickstate = pickstate; } public Date getBuildtime() { return buildtime; } public void setBuildtime(Date buildtime) { this.buildtime = buildtime; } public Integer getAttachbilltimes() { return attachbilltimes; } public void setAttachbilltimes(Integer attachbilltimes) { this.attachbilltimes = attachbilltimes; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public String getSmsNumber() { return smsNumber; } public void setSmsNumber(String smsNumber) { this.smsNumber = smsNumber; } public Courier getCourier() { return courier; } public void setCourier(Courier courier) { this.courier = courier; } public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } }
2、启动项目,自动建表
二、客户在线下单功能
1、在线下单页面 -- order.html
2、基于百度地图实现客户下单页面详细地址自动补全
(1)、导入百度地图的js资源文件<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=4IU3oIAMpZhfWZsMu7xzqBBAf6vMHcoa"> </script>
(2)、在页面中提供input输入框,并编写js代码
<input name="sendAddress" id="sendAddress" type="text" class="form-control" placeholder="街道详细(精确到门牌号) " required="required"> <!-- 使用百度地图api实现自动补全功能 --> <script type="text/javascript"> $(function(){ //使用百度地图的自动补全控件 var ac = new BMap.Autocomplete({ input:"sendAddress" }); }); </script>
(3)、页面实现的效果
3、省市区三级联动效果实现
(1)、引入city-picker相关的资源文件(2)、使用data-toggle方式实现三级联动的html页面代码
4、给页面的提交按钮绑定点击事件
5、编写后台Dao层代码
(1)、orderDaopackage com.itheima.bos.dao.take_delivery; import org.springframework.data.jpa.repository.JpaRepository; import com.itheima.bos.domain.take_delivery.Order; public interface OrderDao extends JpaRepository<Order, Integer> { }
(2)、扩展AreaDao中的方法
//根据省市地区获取区域对象 public Area findByProvinceAndCityAndDistrict(String province, String city, String district);
(3)、扩展CRM系统中的CustomerDao中的方法
/** * 根据客户住址查询定区id * @param telephone * @param password * @return */ @Query("select fixedAreaId from Customer where address = ?") public String findFixedAreaIdByAddress(String address);
(4)、编写WorkBillDao接口
package com.itheima.bos.dao.take_delivery; import org.springframework.data.jpa.repository.JpaRepository; import com.itheima.bos.domain.take_delivery.WorkBill; public interface WorkBillDao extends JpaRepository<WorkBill, Integer> { }
6、编写后台bos_management_service系统中Service层发布服务的代码
(1)、扩展CRM系统中的service方法接口:
/** * 根据客户住址查询定区id * @param telephone * @param password * @return */ public String findFixedAreaIdByAddress(String address);
实现类:
/** * 根据客户住址查询定区id * @param telephone * @param password * @return */ public String findFixedAreaIdByAddress(String address) { return dao.findFixedAreaIdByAddress(address); }
(2)、创建订单接口和实现类
(3)、OrderService接口
package com.itheima.bos.service.take_delivery; import javax.jws.WebService; import com.itheima.bos.domain.take_delivery.Order; @WebService public interface OrderService { /** * 保存订单,实现自动分单的功能 * @param order */ public void saveOrder(Order order); }
(4)、OrderServiceImpl实现类
package com.itheima.bos.service.take_delivery.impl; import java.util.Date; import java.util.Iterator; import java.util.Set; import java.util.UUID; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.itheima.bos.dao.base.AreaDao; import com.itheima.bos.dao.base.FixedAreaDao; import com.itheima.bos.dao.take_delivery.OrderDao; import com.itheima.bos.dao.take_delivery.WorkBillDao; import com.itheima.bos.domain.base.Area; import com.itheima.bos.domain.base.Courier; import com.itheima.bos.domain.base.FixedArea; import com.itheima.bos.domain.base.SubArea; import com.itheima.bos.domain.take_delivery.Order; import com.itheima.bos.domain.take_delivery.WorkBill; import com.itheima.bos.service.take_delivery.OrderService; import com.itheima.crm.service.CustomerService; /** * 订单管理的服务层实现类 * @author Administrator * */ @Service @Transactional public class OrderServiceImpl implements OrderService { @Autowired private OrderDao orderDao; @Autowired private AreaDao areaDao; @Autowired private CustomerService crmProxy; @Autowired private FixedAreaDao fixedAreaDao; @Autowired private WorkBillDao workBillDao; /** * 保存订单,实现自动分单的功能 * @param order */ public void saveOrder(Order order) { //1、根据订单中区域信息(省市地区)查询数据库,获取持久态区域对象 Area sendArea = order.getSendArea(); Area recArea = order.getRecArea(); //查询发件人地址 if(sendArea != null){ Area osendArea = areaDao.findByProvinceAndCityAndDistrict(sendArea.getProvince(),sendArea.getCity(),sendArea.getDistrict()); order.setSendArea(osendArea); } //查询收件人地址 if(recArea != null){ Area orecArea = areaDao.findByProvinceAndCityAndDistrict(recArea.getProvince(), recArea.getCity(), recArea.getDistrict()); order.setRecArea(orecArea); } //2、保存订单信息 order.setOrderTime(new Date()); order.setOrderNum(UUID.randomUUID().toString()); orderDao.save(order); //3、基于CRM地址库完全匹配法实现自动分单 if(StringUtils.isNotBlank(order.getSendAddress())){ //根据发件人地址获取定区id String fixedAreaId = crmProxy.findFixedAreaIdByAddress(order.getSendAddress()); if(fixedAreaId != null){ //根据定区id获取定区对象 FixedArea fixedArea = fixedAreaDao.findOne(fixedAreaId); Set<Courier> couriers = fixedArea.getCouriers();//获取定区关联的快递员集合 Iterator<Courier> iterator = couriers.iterator(); if(iterator.hasNext()){ //查询到定区id,可以完成自动分单 order.setOrderType("自动分单");//设置分单类型 Courier courier = iterator.next(); order.setCourier(courier); //为快递员生成一个工单 WorkBill workBill = new WorkBill(); workBill.setAttachbilltimes(0); workBill.setBuildtime(new Date()); workBill.setCourier(courier); workBill.setOrder(order); workBill.setPickstate("新单"); workBill.setRemark(order.getRemark()); workBill.setSmsNumber("123"); workBill.setType("新"); //保存工单 workBillDao.save(workBill); //调用短信平台,为快递员发送短信 -- 略 // TODO return; //如果基于CRM地址库实现自动分单成立,则直接退出方法 } } } //4、如果基于CRM地址库分区实现自动分单不成立,则进行基于分区关键字匹配法实现自动分单 if(order.getSendArea() != null){ //获得指定区域中包含的所有分区 Set<SubArea> subareas = order.getSendArea().getSubareas(); for (SubArea subArea : subareas) { String keyWords = subArea.getKeyWords();//获取分区关键字 String assistKeyWords = subArea.getAssistKeyWords();//获取辅助关键字 if(order.getSendAddress().contains(keyWords) || order.getSendAddress().contains(assistKeyWords)){ //用户输入的地址,在指定分区内,根据分区,获取当前分区内的定区 FixedArea fixedArea = subArea.getFixedArea(); //根据定区找到当前定区中的快递员 Set<Courier> couriers = fixedArea.getCouriers(); Iterator<Courier> iterator = couriers.iterator(); if(iterator.hasNext()){ //查询到定区id,可以完成自动分单 order.setOrderType("自动分单");//设置分单类型 Courier courier = iterator.next(); order.setCourier(courier); //为快递员生成一个工单 WorkBill workBill = new WorkBill(); workBill.setAttachbilltimes(0); workBill.setBuildtime(new Date()); workBill.setCourier(courier); workBill.setOrder(order); workBill.setPickstate("新单"); workBill.setRemark(order.getRemark()); workBill.setSmsNumber("123"); workBill.setType("新"); //保存工单 workBillDao.save(workBill); //调用短信平台,为快递员发送短信 -- 略 // TODO return; //如果基于CRM地址库实现自动分单成立,则直接退出方法 } } } } //5、如果以上两种方式都没有完成自动分单,转入人工调整 order.setOrderType("人工分单"); } }
7、在后台项目bos_web中编写发布webService服务的配置
(1)、在web.xml中配置CXFServlet(2)、在spring的核心配置文件中引入约束,并配置注册服务
<!-- 注册订单服务 --> <jaxws:server id="orderService" address="/order"> <jaxws:serviceBean> <ref bean="orderServiceImpl" /> </jaxws:serviceBean> </jaxws:server>
8、生成CRM服务系统的客户端代码以及bos_management_web服务的客户端代码
9、前台系统中编写OrderAction中添加订单的方法
(1)、依赖domain项目(2)、导入生成的订单服务代码并注册订单服务的客户端配置
<!-- 注册订单服务的客户端代理对象,用于通过WebService访问订单服务 --> <jaxws:client id="orderClient" address="http://localhost:8080/bos_management_web/service/order" serviceClass="com.itheima.bos_fore.service.OrderService"> </jaxws:client>
(3)、编写OrderAciton
package com.itheima.bos_fore.action.take_delivery; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.itheima.bos.domain.base.Area; import com.itheima.bos.domain.take_delivery.Order; import com.itheima.bos_fore.service.OrderService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; /** * 订单业务的动作类 * * @author Administrator * */ @Controller @Namespace("/") @ParentPackage("struts-default") @Scope("prototype") public class OrderAction extends ActionSupport implements ModelDriven<Order> { private Order model = new Order(); public Order getModel() { return model; } // 属性驱动,封装页面传递的发件人和收件人的地址信息 private String recAreaInfo; private String sendAreaInfo; public void setRecAreaInfo(String recAreaInfo) { this.recAreaInfo = recAreaInfo; } public void setSendAreaInfo(String sendAreaInfo) { this.sendAreaInfo = sendAreaInfo; } // 注入订单服务的代理对象 @Autowired private OrderService orderProxy; /** * 保存订单,并实现自动分单功能 */ @Action(value = "orderAction_add", results = { @Result(name = "success", type = "redirect", location = "/order-success.html") }) public String add() { // 封装寄件人信息到model对象中 if (StringUtils.isNotBlank(sendAreaInfo)) { String[] info = sendAreaInfo.split("/"); String province = info[0]; String city = info[1]; String district = info[2]; // 封装寄件人地址信息 Area sendArea = new Area(); sendArea.setProvince(province); sendArea.setCity(city); sendArea.setDistrict(district); model.setSendArea(sendArea); } // 封装收件人信息到model对象中 if (StringUtils.isNotBlank(recAreaInfo)) { String[] info = recAreaInfo.split("/"); String province = info[0]; String city = info[1]; String district = info[2]; // 封装寄件人地址信息 Area recArea = new Area(); recArea.setProvince(province); recArea.setCity(city); recArea.setDistrict(district); model.setRecArea(recArea); } // 通过webService调用后台系统,保存订单信息 orderProxy.saveOrder(model); return SUCCESS; } }
相关文章推荐
- SSH综合项目实战(快递) -- day07 定区关联快递员、搭建前台、客户注册
- SSH综合项目实战(快递) -- day01 环境搭建及easyui、ztree使用介绍
- SSH综合项目实战(快递) -- day05 分区功能、定区功能、CXF整合spring
- SSH综合项目实战(快递) -- day10 activeMQ、JQueryEasyUI行编辑功能
- SSH综合项目实战(快递) -- day15 highcharts实现图形报表
- SSH综合项目实战(快递) -- day11 shiro权限控制、后台用户登录
- SSH综合项目实战(快递) -- day13 角色数据管理、用户数据管理
- SSH综合项目实战(快递) -- day04 快递员分页查询、POI读取Excel、代码重构
- SSH综合项目实战(快递) -- day08 邮箱激活、用户登录、city-picker
- SSH实战项目——在线商品拍卖网
- SSM综合项目实战(TTSC) -- day09 Solr,搜索系统
- JAVAEE——SSH项目实战03:新增客户、数据字典、文件上传和修改客户
- 项目外包,类似QQ这样界面的客户端,要求界面漂亮,功能是帮助客户完成在线业务的功能。
- JAVAEE——SSH项目实战02:客户列表和BaseDao封装
- JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密
- 第105讲 Spark Streaming电商广告点击综合案例在线点击统计实战项目第一天
- SSH项目实战---图书销售及后台管理系统
- 快递在线下单API接口
- 【SSH项目实战】国税协同平台-14.系统、子系统首页&登录功能1
- 【SSH网上商城项目实战07】Struts2和Json的整合