Browse Source

买家同意、不同意卖家取消订单申请

wangyc 8 years ago
parent
commit
1413af5afb

+ 22 - 0
src/main/java/com/uas/platform/b2c/trade/order/controller/OrderController.java

@@ -576,6 +576,28 @@ public class OrderController {
 		return orderService.releaseOrder(orderid, reason);
 	}
 
+	/**
+	 * 买家同意卖家发起的取消订单申请
+	 * @param orderid
+	 * @return
+	 */
+	@RequestMapping(value = "simpleinfo/ones/{orderid}/release/audit", method = RequestMethod.PUT)
+	public String aduitReleaseOrder(@PathVariable String orderid) {
+		logger.log("买家订单管理", "同意取消订单申请", "根据订单号: " + orderid + "取消订单,释放库存");
+		return orderService.aduitReleaseOrder(orderid);
+	}
+
+	/**
+	 * 买家不同意卖家发起的取消订单申请
+	 * @param orderid
+	 * @return
+	 */
+	@RequestMapping(value = "simpleinfo/ones/{orderid}/release/unaudit", method = RequestMethod.PUT)
+	public String unaduitReleaseOrder(@PathVariable String orderid) {
+		logger.log("买家订单管理", "不同意取消订单申请");
+		return orderService.unaduitReleaseOrder(orderid);
+	}
+
 	/**
 	 * 失效订单 (因确认是订单批次库存不足)
 	 *

+ 1 - 1
src/main/java/com/uas/platform/b2c/trade/order/controller/PurchaseController.java

@@ -608,6 +608,6 @@ public class PurchaseController {
 	@RequestMapping(value = "simpleinfo/ones/{purchaseId}/release", method = RequestMethod.PUT)
 	public String release(@PathVariable String purchaseId, @RequestBody String reason) {
 		logger.log("卖家订单管理", "取消订单", "根据订单号: " + purchaseId + "取消订单,释放库存");
-		return purchaseService.release(purchaseId);
+		return purchaseService.release(purchaseId, reason);
 	}
 }

+ 9 - 0
src/main/java/com/uas/platform/b2c/trade/order/model/Order.java

@@ -1454,6 +1454,15 @@ public class Order extends Document implements Serializable {
 		this.statushistory = addStatusHistory(this.statushistory, uu, this.status);
 	}
 
+	/**
+	 * 卖家申请取消订单(未完全付完)
+	 * @param uu
+	 */
+	public void setStatusCancelToBeConfirmed(Long uu) {
+		this.status = com.uas.platform.b2c.core.constant.Status.CANCELTOBECONFIRMED.value();
+		this.statushistory = addStatusHistory(this.statushistory, uu, this.status);
+	}
+
 	/**
 	 * 售后中(只能单次单次的售后,暂时先这么处理)
 	 *

+ 14 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/OrderService.java

@@ -399,6 +399,20 @@ public interface OrderService {
 	 */
 	String releaseOrder(String orderid, String reason);
 
+	/**
+	 * 买家同意卖家发起的取消订单申请
+	 * @param orderid 订单号
+	 * @return
+	 */
+	String aduitReleaseOrder(String orderid);
+
+	/**
+	 * 买家不同意卖家发起的取消订单申请
+	 * @param orderid 订单号
+	 * @return
+	 */
+	String unaduitReleaseOrder(String orderid);
+
 	/**
 	 * 失效订单 (因确认是订单批次库存不足)
 	 *

+ 2 - 1
src/main/java/com/uas/platform/b2c/trade/order/service/PurchaseService.java

@@ -404,7 +404,8 @@ public interface PurchaseService {
 	 * 卖家取消订单,释放库存
 	 *
 	 * @param purchaseId the purchaseId
+	 * @param reason 取消原因
 	 * @return string string
 	 */
-	String release(String purchaseId);
+	String release(String purchaseId, String reason);
 }

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

@@ -4,7 +4,7 @@ import com.alibaba.dubbo.common.json.JSON;
 import com.alibaba.dubbo.common.json.ParseException;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.uas.api.b2c_erp.buyer.model.*;
+import com.uas.api.b2c_erp.buyer.model.B2cOrder;
 import com.uas.api.exception.B2CException;
 import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
 import com.uas.platform.b2c.common.account.dao.UserDao;
@@ -21,10 +21,8 @@ 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;
@@ -59,8 +57,6 @@ import com.uas.platform.b2c.trade.order.dao.OrderDetailDao;
 import com.uas.platform.b2c.trade.order.dao.OrderIndexDetailDao;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
 import com.uas.platform.b2c.trade.order.model.*;
-import com.uas.platform.b2c.trade.order.model.Purchase;
-import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
 import com.uas.platform.b2c.trade.order.service.OrderDetailService;
 import com.uas.platform.b2c.trade.order.service.OrderService;
 import com.uas.platform.b2c.trade.order.service.PurchaseService;
@@ -2084,6 +2080,65 @@ public class OrderServiceImpl implements OrderService {
         return orderPage;
     }
 
+    @Override
+    public String unaduitReleaseOrder(String orderid) {
+        Order order = orderDao.findByOrderid(orderid);
+        List<Purchase> purchase = purchaseDao.findByOrderid(orderid);
+        if (purchase == null)
+            throw new IllegalOperatorException("此订单不存在");
+        if (order == null) {
+            throw new IllegalOperatorException("此订单不存在");
+        }
+
+        if (order.getInstallmentId() == null) {
+            throw new IllegalOperatorException("此订单付款方式非直接付款给卖家,您无法取消,请重新确认订单信息");
+        }
+        Installment installment = installmentDao.findOne(order.getInstallmentId());
+        if (installment == null) {
+            throw new IllegalOperatorException("订单:" + order.getOrderid() + "分期信息有误,请重新确认或联系客服");
+        }
+
+        Long uu = SystemSession.getUser().getUserUU();
+        Set<OrderDetail> orderDetails = order.getOrderDetails();
+        for (OrderDetail orderDetail : orderDetails) {
+            if (orderDetail.getStatus().equals(com.uas.platform.b2c.core.constant.Status.CANCELTOBECONFIRMED.value())) {
+                if (com.uas.platform.b2c.core.constant.Status.PAID.value() == installment.getInstallmentDetails().get(installment.getCurrentNo().intValue()).getStatus().intValue()) {
+                    order.setStatusPaid(uu);
+                    orderDetail.setStatusPaid(uu);
+                }
+
+                if (com.uas.platform.b2c.core.constant.Status.MONEYRECEIVED.value() == installment.getInstallmentDetails().get(installment.getCurrentNo().intValue()).getStatus().intValue()) {
+                    order.setStatusToBePaidAgain(uu);
+                    orderDetail.setStatusToBePaidAgain(uu);
+                }
+
+            }
+        }
+
+        for (Purchase purchase1 : purchase) {
+            int puStatus = purchase1.getStatus().intValue();
+            purchase1.setStatusToBePaidAgain(uu);
+            for (PurchaseDetail detail : purchase1.getPurchaseDetails()) {
+                if (puStatus == detail.getStatus().intValue()) {
+                    detail.setStatusToBePaidAgain(uu);
+                }
+            }
+        }
+
+        purchaseDao.save(purchase);
+        orderDao.save(order);
+        return "success";
+    }
+
+    @Override
+    public String aduitReleaseOrder(String orderid) {
+        Order order = orderDao.findByOrderid(orderid);
+        if (order == null) {
+            throw new IllegalOperatorException("此订单不存在");
+        }
+        return releaseOrder(orderid, order.getUnavailableReason());
+    }
+
     /**
      * 取消订单,释放库存
      *

+ 4 - 1
src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseServiceImpl.java

@@ -1584,7 +1584,7 @@ public class PurchaseServiceImpl implements PurchaseService {
 	 */
 	@Transactional
 	@Override
-	public String release(String purchaseId) {
+	public String release(String purchaseId,  String reason) {
 		Purchase purchase = purchaseDao.findByPurchaseid(purchaseId);
 		if (purchase == null)
 			throw new IllegalOperatorException("订单不存在");
@@ -1613,6 +1613,7 @@ public class PurchaseServiceImpl implements PurchaseService {
 				Set<String> uuids = new HashSet<>();
 				order.setStatusUnAvailablePersonal(uu);
 				order.setUnavailableTime(new Date());
+				order.setUnavailableReason(reason);
 				Set<OrderDetail> orderDetails = order.getOrderDetails();
 				for (OrderDetail orderDetail : orderDetails) {
 					if (orderDetail.getStatus().equals(Status.CONFIRMED.value())
@@ -1644,6 +1645,8 @@ public class PurchaseServiceImpl implements PurchaseService {
 				}
 			} else {// 买家已付款,卖家发起取消申请
 				Set<OrderDetail> orderDetails = order.getOrderDetails();
+				order.setStatusCancelToBeConfirmed(uu);
+				order.setUnavailableReason(reason);
 				for (OrderDetail orderDetail : orderDetails) {
 					if (orderDetail.getStatus().equals(com.uas.platform.b2c.core.constant.Status.PAID.value())
 							|| orderDetail.getStatus().equals(com.uas.platform.b2c.core.constant.Status.TOBEPAIDAGAGIN.value())) {