Browse Source

买家中心--订单中心和订单详情页 增加分期付款信息

zengchao 8 years ago
parent
commit
492567346b

+ 99 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java

@@ -21,8 +21,10 @@ import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.fa.payment.dao.BankTransferDao;
 import com.uas.platform.b2c.fa.payment.dao.InstallmentDao;
+import com.uas.platform.b2c.fa.payment.dao.InstallmentDetailDao;
 import com.uas.platform.b2c.fa.payment.model.BankTransfer;
 import com.uas.platform.b2c.fa.payment.model.Installment;
+import com.uas.platform.b2c.fa.payment.model.InstallmentDetail;
 import com.uas.platform.b2c.fa.payment.service.BankInfoService;
 import com.uas.platform.b2c.fa.settlement.dao.BillDao;
 import com.uas.platform.b2c.fa.settlement.dao.BillInfoDao;
@@ -1523,6 +1525,15 @@ public class OrderServiceImpl implements OrderService {
     @Override
     public Order buyerOrderDetail(String orderid) {
         Order order = orderDao.findOrderByOrderid(orderid);
+        //买家中心--订单详情页 增加分期付款信息
+        Long installmentId = order.getInstallmentId();
+        if (installmentId != null) {
+            Installment installment = installmentDao.findOne(installmentId);
+            if (installment == null) {
+                throw new IllegalOperatorException("订单:" + order.getOrderid() + "分期信息有误,请重新确认或联系客服");
+            }
+            order.setInstallment(installment);
+        }
         Set<OrderDetail> orderDetails = order.getOrderDetails();
         for (OrderDetail orderDetail : orderDetails) {
             Goods goods = goodsService.findGoodsByBatchCode(orderDetail.getBatchCode());
@@ -1885,6 +1896,18 @@ public class OrderServiceImpl implements OrderService {
             order.setPuExInfoMapToJson(puExInfoMap);
         }
 
+        //买家中心--订单中心 增加分期付款信息
+        for (Order order : pageOrders) {
+            Long installmentId = order.getInstallmentId();
+            if (installmentId != null) {
+                Installment installment = installmentDao.findOne(installmentId);
+                if (installment == null) {
+                    throw new IllegalOperatorException("订单:" + order.getOrderid() + "分期信息有误,请重新确认或联系客服");
+                }
+                order.setInstallment(installment);
+            }
+        }
+
         modelMap.addAttribute("content", pageOrders.getContent());
         modelMap.addAttribute("totalElements", pageOrders.getTotalElements());
         modelMap.addAttribute("totalPages", pageOrders.getTotalPages());
@@ -2125,6 +2148,82 @@ public class OrderServiceImpl implements OrderService {
         return "success";
     }
 
+    /**
+     * 卖家取消订单,释放库存
+     *
+     * @param orderid
+     * @return string string
+     */
+    @Transactional
+    @Override
+    public String releaseByVendor(String orderid) {
+        Order order = orderDao.findByOrderid(orderid);
+        if (order == null) {
+            throw new IllegalOperatorException("此订单不存在");
+        }
+        Long installmentId = order.getInstallmentId();
+        if (installmentId != null) {
+            Installment installment = installmentDao.findOne(installmentId);
+            if (installment == null) {
+                throw new IllegalOperatorException("订单:" + order.getOrderid() + "分期信息有误,请重新确认或联系客服");
+            }
+            order.setInstallment(installment);
+        }
+        if (SystemSession.getUser().getUserUU() == null) {
+            throw new IllegalOperatorException("您当前的账号不存在或未登录!请重新登录");
+        }
+        if (SystemSession.getUser().getUserUU() != order.getInstallment().getSellerenuu()) {
+            throw new IllegalOperatorException("您当前的账号登录异常!请重新登录");
+        }
+        Set<Integer> status = new HashSet<>();
+        Collections.addAll(status, Status.TOBECONFIRMED.value(), Status.TOBEPAID.value(), Status.CONFIRMED.value());
+        if (!status.contains(order.getStatus())) {
+            throw new IllegalOperatorException("此订单已付款,不可取消订单");
+        }
+        Date dateDeadline = order.getInstallment().getInstallmentDetails().get(0).getDeadline();
+        Date datePaidData = order.getInstallment().getInstallmentDetails().get(0).getPaidDate();
+        Date newDate = new Date();
+        if (dateDeadline.after(datePaidData) && datePaidData != null) {
+            throw new IllegalOperatorException("买家已付款且付款日期没有超过截止期限,不可取消订单");
+        }
+        if (dateDeadline.after(newDate) && datePaidData == null) {
+            throw new IllegalOperatorException("没有超过付款截止日期,不可取消订单");
+        }
+        Set<String> uuids = new HashSet<>();
+        Long uu = SystemSession.getUser().getUserUU();
+        order.setStatusUnAvailablePersonal(uu);
+        order.setUnavailableTime(new Date());
+        Set<OrderDetail> orderDetails = order.getOrderDetails();
+        for (OrderDetail orderDetail : orderDetails) {
+            if (orderDetail.getStatus().equals(Status.CONFIRMED.value())
+                    || orderDetail.getStatus().equals(Status.TOBEPAID.value())) {
+                uuids.add(orderDetail.getUuid());
+                orderDetail.setStatusUnAvailablePersonal(uu);
+                goodsService.releaseReserve(orderDetail.getBatchCode(), orderDetail.getNumber());
+            }
+        }
+        List<Purchase> purchases = purchaseDao.findByOrderid(order.getOrderid());
+        if (!CollectionUtils.isEmpty(purchases)) {
+            for (Purchase purchase : purchases) {
+                int puStatus = purchase.getStatus().intValue();
+                purchase.setStatusUnAvailablePersonal(uu);
+                purchase.setUnavailableTime(new Date());
+                for (PurchaseDetail detail : purchase.getPurchaseDetails()) {
+                    if (puStatus == detail.getStatus().intValue()) {
+                        detail.setStatusUnAvailablePersonal(uu);
+                        detail.setUnavailableTime(new Date());
+                    }
+                }
+            }
+        }
+        purchaseDao.save(purchases);
+        orderDao.save(order);
+        for (String uuid : uuids) {
+            goodsService.updateComponentTradeInfos(uuid);
+        }
+        return "success";
+    }
+
 
     // TODO 查询接口 支持类型 :现货
     @Override