|
|
@@ -1579,76 +1579,92 @@ public class PurchaseServiceImpl implements PurchaseService {
|
|
|
/**
|
|
|
* 卖家取消订单,释放库存
|
|
|
*
|
|
|
- * @param orderid
|
|
|
+ * @param purchaseId
|
|
|
* @return string string
|
|
|
*/
|
|
|
@Transactional
|
|
|
@Override
|
|
|
- public String releaseByVendor(String orderid) {
|
|
|
- Order order = orderDao.findByOrderid(orderid);
|
|
|
+ public String release(String purchaseId) {
|
|
|
+ Purchase purchase = purchaseDao.findByPurchaseid(purchaseId);
|
|
|
+ if (purchase == null)
|
|
|
+ throw new IllegalOperatorException("订单不存在");
|
|
|
+ Order order = orderDao.findByOrderid(purchase.getOrderid());
|
|
|
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().getEnterprise() == null) {
|
|
|
+ throw new IllegalOperatorException("您的企业信息有误,请重新选择企业");
|
|
|
}
|
|
|
- if (SystemSession.getUser().getUserUU() == null) {
|
|
|
- throw new IllegalOperatorException("您当前的账号不存在或未登录!请重新登录");
|
|
|
+ if (!SystemSession.getUser().getEnterprise().getUu().equals(purchase.getInstallment().getSellerenuu())) {
|
|
|
+ throw new IllegalOperatorException("该订单不属于当前企业,请重新确认信息");
|
|
|
}
|
|
|
- if (SystemSession.getUser().getUserUU() != order.getInstallment().getSellerenuu()) {
|
|
|
- throw new IllegalOperatorException("您当前的账号登录异常!请重新登录");
|
|
|
+ if (purchase.getInstallmentId() == null) {
|
|
|
+ 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("此订单已付款,不可取消订单");
|
|
|
+ Installment installment = installmentDao.findOne(purchase.getInstallmentId());
|
|
|
+ if (installment == null) {
|
|
|
+ throw new IllegalOperatorException("订单:" + order.getOrderid() + "分期信息有误,请重新确认或联系客服");
|
|
|
}
|
|
|
- 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<>();
|
|
|
+
|
|
|
+ Date sysDate = new Date();
|
|
|
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 (!org.springframework.util.CollectionUtils.isEmpty(purchases)) {
|
|
|
- for (Purchase purchase : purchases) {
|
|
|
+ if (sysDate.after(installment.getInstallmentDetails().get(0).getDeadline())) {// 当前时间已将超过一期的截止时间
|
|
|
+ if (com.uas.platform.b2c.core.constant.Status.TOBEPAID.value() == installment.getStatus().intValue()) {// 买家未付款,直接取消
|
|
|
+ Set<String> uuids = new HashSet<>();
|
|
|
+ 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 (!org.springframework.util.CollectionUtils.isEmpty(purchases)) {
|
|
|
+ for (Purchase purchase1: purchases) {
|
|
|
+ int puStatus = purchase1.getStatus().intValue();
|
|
|
+ purchase1.setStatusUnAvailablePersonal(uu);
|
|
|
+ purchase1.setUnavailableTime(new Date());
|
|
|
+ for (PurchaseDetail detail : purchase1.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);
|
|
|
+ }
|
|
|
+ } else {// 买家已付款,卖家发起取消申请
|
|
|
+ Set<OrderDetail> orderDetails = order.getOrderDetails();
|
|
|
+ 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())) {
|
|
|
+ orderDetail.setStatusCancelToBeConfirmed(uu);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
int puStatus = purchase.getStatus().intValue();
|
|
|
- purchase.setStatusUnAvailablePersonal(uu);
|
|
|
- purchase.setUnavailableTime(new Date());
|
|
|
+ purchase.setStatusCancelToBeConfirmed(uu);
|
|
|
for (PurchaseDetail detail : purchase.getPurchaseDetails()) {
|
|
|
if (puStatus == detail.getStatus().intValue()) {
|
|
|
- detail.setStatusUnAvailablePersonal(uu);
|
|
|
- detail.setUnavailableTime(new Date());
|
|
|
+ detail.setStatusCancelToBeConfirmed(uu);
|
|
|
}
|
|
|
}
|
|
|
+ purchaseDao.save(purchase);
|
|
|
+ orderDao.save(order);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ throw new IllegalOperatorException("买家未逾期付款,您不可取消");
|
|
|
}
|
|
|
- purchaseDao.save(purchases);
|
|
|
- orderDao.save(order);
|
|
|
- for (String uuid : uuids) {
|
|
|
- goodsService.updateComponentTradeInfos(uuid);
|
|
|
- }
|
|
|
+
|
|
|
return "success";
|
|
|
}
|
|
|
}
|