|
|
@@ -1575,4 +1575,80 @@ public class PurchaseServiceImpl implements PurchaseService {
|
|
|
public Logistics findByLgtId(Long lgtId) {
|
|
|
return logisticsDao.findOne(lgtId);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 卖家取消订单,释放库存
|
|
|
+ *
|
|
|
+ * @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 (!org.springframework.util.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";
|
|
|
+ }
|
|
|
}
|