String deliveryId = request.getParameter("deliveryId");
String orderAddressId = request.getParameter("orderAddressId");
if(isNumber(deliveryId)&&isNumber(orderAddressId)){
List<Orders> orderList = orderService.queryOrders("from Orders o where o.id=?", new Object[]{Long.parseLong(orderId.trim())});
if(null!=orderList&&orderList.size()>0){
Orders order = orderList.get(0);
if(order.getStatus()>=Orders.STATUS_PAID){
//已付款
FareWay farway = farewayDao.getFareWayById(Integer.parseInt(deliveryId.trim()));
request.setAttribute("farway", farway);
request.setAttribute("order", order);
request.setAttribute("url", MemberURLConst.URL_ORDER_DETAIL);
return new ModelAndView(MemberURLConst.URL_BASE);
}
order.setConfirmtime(new Date());
Address addr = findAddressById(orderAddressId);
if(null!=addr){
order.setAdrreessname(addr.getName());
order.setAddresscity(addr.getCity());
order.setAddressname(addr.getAddress());
order.setAddressprovince(addr.getProvince());
order.setAddressregion(addr.getRegion());
order.setAddresstel(addr.getTel());
order.setAddresszipcode(addr.getZipcode());
}
order.setFareway(deliveryId);
String fare = request.getParameter("fare");
double farevalue =0.0;
if(fare==null)fare = "0";
try{
farevalue = Double.parseDouble(fare.trim());
}catch (Exception e) {
}
order.setFare(farevalue);
User user = userCardService.findUserById(RunTimeUser.getRunTimeUser(request).getId());
double balance = user.getCard().getScore();
List<OrderProduct> ops = judgeProductInventory(order);
this.orderService.updateOrder(order);
if(ops.size()>0){
//库存不足
StringBuffer sb = new StringBuffer();
for(int i=0;i<ops.size();i++){
sb.append(ops.get(i).getName()+"、");
}
sb.append("库存不足。");
request.setAttribute("errmsg", sb.toString());
request.setAttribute("url", "/member/queryShoppCart.do");
return shopcartView;
}else{
if(balance<order.getScore()){
//用户积分不够
request.setAttribute("errmsg", "对不起,您的积分不够。");
request.setAttribute("url", "/member/queryShoppCart.do");
return shopcartView;
}
//库存够
if(order.getFare()==0.00){
user.getCard().setScore(balance-order.getScore());
userCardService.updateUser(user);
order.setStatus(Orders.STATUS_PAID);
order.setPaytime(new Date());
orderService.updateOrder(order);
}else{
//调用支付宝接口
request.setAttribute("order", order);
try {
request.getRequestDispatcher("/payment.do").forward(request, response);
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
RunTimeUser.getRunTimeUser(request).updateUser(user);
FareWay farway = farewayDao.getFareWayById(Integer.parseInt(deliveryId.trim()));
request.setAttribute("farway", farway);
request.setAttribute("order", order);
request.setAttribute("url", MemberURLConst.URL_ORDER_DETAIL);
if("3".equals(deliveryId))
{
//交易完成,需要发送订单信息
List<OrderProduct> _ops = orderProductDao.findOrderProduct(order);
boolean flag = false;
for(OrderProduct _op : _ops)
{
if("1".equals(_op.getProduct().getCategory().getSendMsg()))
{
flag = true;
break;
}
}
String content = "";
int i=1;
for(OrderProduct _op : _ops)
{
if(_ops.size() == 1)
content += _op.getProduct().getName();
else
content +=i+"、"+ _op.getProduct().getName();
i++;
}
if(flag)
{
ShoppingInfo info = new ShoppingInfo();
info.setOrdersId(orderId);
info.setIsUsed(false);
info.setMobile(user.getMobile());
info.setOrderTime(order.getConfirmtime());
info.setTradeTime(new Date());
info.setTradeNode(System.currentTimeMillis()+"");
info.setContent(content);
this.shoppingInfoDao.createShoppingInfo(info);