|
|
@@ -1,16 +1,15 @@
|
|
|
package com.uas.platform.b2c.fa.payment.service.impl;
|
|
|
|
|
|
+import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
|
|
|
+import com.uas.platform.b2c.common.account.model.Enterprise;
|
|
|
import com.uas.platform.b2c.core.config.SysConf;
|
|
|
import com.uas.platform.b2c.core.support.SystemSession;
|
|
|
import com.uas.platform.b2c.core.utils.FastjsonUtils;
|
|
|
-import com.uas.platform.b2c.fa.payment.dao.BankInfoDao;
|
|
|
-import com.uas.platform.b2c.fa.payment.dao.BankTransAssociateDao;
|
|
|
-import com.uas.platform.b2c.fa.payment.dao.BankTransferDao;
|
|
|
-import com.uas.platform.b2c.fa.payment.model.BankInfo;
|
|
|
-import com.uas.platform.b2c.fa.payment.model.BankTransAssociate;
|
|
|
-import com.uas.platform.b2c.fa.payment.model.BankTransfer;
|
|
|
+import com.uas.platform.b2c.fa.payment.dao.*;
|
|
|
+import com.uas.platform.b2c.fa.payment.model.*;
|
|
|
import com.uas.platform.b2c.fa.payment.service.BankInfoService;
|
|
|
import com.uas.platform.b2c.fa.payment.service.BankTransferService;
|
|
|
+import com.uas.platform.b2c.fa.payment.service.InstallmentService;
|
|
|
import com.uas.platform.b2c.logistics.dao.ReceiptDao;
|
|
|
import com.uas.platform.b2c.logistics.model.Receipt;
|
|
|
import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
|
|
|
@@ -90,10 +89,16 @@ public class BankTransferServiceImpl implements BankTransferService {
|
|
|
|
|
|
private final BankTransAssociateDao transAssociateDao;
|
|
|
|
|
|
+ private final EnterpriseDao enterpriseDao;
|
|
|
+
|
|
|
+ private final InstallmentService installmentService;
|
|
|
+
|
|
|
@Autowired
|
|
|
- public BankTransferServiceImpl(BankInfoDao bankInfoDao, BankTransAssociateDao transAssociateDao) {
|
|
|
+ public BankTransferServiceImpl(BankInfoDao bankInfoDao, BankTransAssociateDao transAssociateDao, EnterpriseDao enterpriseDao, InstallmentService installmentService) {
|
|
|
this.bankInfoDao = bankInfoDao;
|
|
|
this.transAssociateDao = transAssociateDao;
|
|
|
+ this.enterpriseDao = enterpriseDao;
|
|
|
+ this.installmentService = installmentService;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -255,34 +260,45 @@ public class BankTransferServiceImpl implements BankTransferService {
|
|
|
public BankTransfer save(BankTransfer bankTransfer, String order) {
|
|
|
// 将转账信息的ID保存到订单类型中
|
|
|
String[] orderIds = order.split("-");
|
|
|
+ BankTransfer saveBankTransfer = new BankTransfer();
|
|
|
|
|
|
- bankTransfer.setPayUseruu(SystemSession.getUser().getUserUU());
|
|
|
- bankTransfer.setPayenuu(SystemSession.getUser().getEnterprise() != null ? SystemSession.getUser().getEnterprise().getUu() : null);
|
|
|
- if (bankTransfer.getPayenuu() == null) {
|
|
|
- bankTransfer.setDissociative(Type.PERSONAL.value());
|
|
|
- } else {
|
|
|
- bankTransfer.setDissociative(Type.ENTERPRISING.value());
|
|
|
- }
|
|
|
- bankTransfer.setCollectUseruu(sysConf.getAdminUU()); // 收款方 设置为应鹏账号
|
|
|
- bankTransfer.setCollectenuu(sysConf.getEnUU()); // 收款方设置为B2C的uu
|
|
|
- bankTransfer.setBanktranssn(EncodingRulesConstant.BANKTRANSFER.replace("_TIMESTAP_NUMBER", createNumberService.getTimeNumber("trade$bank_transfer", 8)));
|
|
|
- bankTransfer.setTranferCreateTime(new Date());
|
|
|
- bankTransfer.setOperateType(Type.MALL.value());
|
|
|
-
|
|
|
- BankTransfer saveBankTransfer = bankTransferDao.save(bankTransfer);
|
|
|
+ if (com.uas.platform.b2c.core.constant.Type.PAIDTOVENDOR.name().equals(bankTransfer.getType())) {// 付款类型为分期付款
|
|
|
+ if (orderIds.length > 1)
|
|
|
+ throw new IllegalOperatorException("多张订单合并付款只能向平台支付,如需直接支付给卖家,请前往 订单中心 进行单张支付");
|
|
|
|
|
|
- for (String orderId : orderIds) {
|
|
|
- Order orderN = orderService.findByOrId(orderId);
|
|
|
- if (orderN == null) {
|
|
|
- throw new IllegalOperatorException("您要操作的订单不存在:" + orderId);
|
|
|
+ Order orderN = orderService.findByOrId(orderIds[0]);
|
|
|
+ if (orderN == null)
|
|
|
+ throw new IllegalOperatorException("您要操作的订单不存在:" + orderIds[0]);
|
|
|
+ if (orderN.getStatus() != Status.TOBEPAID.value()) {
|
|
|
+ throw new IllegalOperatorException("您操作的订单不在待付款状态:" + orderIds[0]);
|
|
|
}
|
|
|
|
|
|
- if (orderN.getStatus() != Status.TOBEPAID.value()) {
|
|
|
- throw new IllegalOperatorException("您操作的订单不在待付款状态:" + orderId);
|
|
|
+ bankTransfer.setPayUseruu(SystemSession.getUser().getUserUU());
|
|
|
+ bankTransfer.setPayenuu(SystemSession.getUser().getEnterprise() != null ? SystemSession.getUser().getEnterprise().getUu() : null);
|
|
|
+ if (bankTransfer.getPayenuu() == null) {
|
|
|
+ bankTransfer.setDissociative(Type.PERSONAL.value());
|
|
|
+ } else {
|
|
|
+ bankTransfer.setDissociative(Type.ENTERPRISING.value());
|
|
|
}
|
|
|
|
|
|
+ List<BankInfo> bankInfos = bankInfoService.getEnterpriseBankInfoContainsStatus(Type.SUP.value(), Status.ALLOW.value(), orderN.getSellerenuu());
|
|
|
+ if (CollectionUtils.isEmpty(bankInfos))
|
|
|
+ throw new IllegalOperatorException("卖家收款账户不存在,请联系卖家");
|
|
|
+ Enterprise enterprise = enterpriseDao.findByUu(orderN.getSellerenuu());
|
|
|
+ if (enterprise == null)
|
|
|
+ throw new IllegalOperatorException("卖家企业不存在,请联系管理员");
|
|
|
+
|
|
|
+ bankTransfer.setCollectUseruu(enterprise.getEnAdminuu());
|
|
|
+ bankTransfer.setCollectenuu(orderN.getSellerenuu());
|
|
|
+
|
|
|
+ bankTransfer.setBanktranssn(EncodingRulesConstant.BANKTRANSFER.replace("_TIMESTAP_NUMBER", createNumberService.getTimeNumber("trade$bank_transfer", 8)));
|
|
|
+ bankTransfer.setTranferCreateTime(new Date());
|
|
|
+ bankTransfer.setOperateType(Type.SUP.value());
|
|
|
+
|
|
|
+ saveBankTransfer = bankTransferDao.save(bankTransfer);
|
|
|
+
|
|
|
BankTransAssociate bankTransAssociate = new BankTransAssociate();
|
|
|
- bankTransAssociate.setBtaTableserNum(orderId);
|
|
|
+ bankTransAssociate.setBtaTableserNum(orderIds[0]);
|
|
|
bankTransAssociate.setBtaBanktranssn(saveBankTransfer.getBanktranssn());
|
|
|
btaDao.save(bankTransAssociate);
|
|
|
|
|
|
@@ -316,7 +332,74 @@ public class BankTransferServiceImpl implements BankTransferService {
|
|
|
}
|
|
|
purchaseDao.save(purchases);
|
|
|
orderDao.save(orderN);
|
|
|
+ // 单期分期付款
|
|
|
+ installmentService.paidInstallment(bankTransfer, orderN.getId());
|
|
|
+ } else {
|
|
|
+ bankTransfer.setPayUseruu(SystemSession.getUser().getUserUU());
|
|
|
+ bankTransfer.setPayenuu(SystemSession.getUser().getEnterprise() != null ? SystemSession.getUser().getEnterprise().getUu() : null);
|
|
|
+ if (bankTransfer.getPayenuu() == null) {
|
|
|
+ bankTransfer.setDissociative(Type.PERSONAL.value());
|
|
|
+ } else {
|
|
|
+ bankTransfer.setDissociative(Type.ENTERPRISING.value());
|
|
|
+ }
|
|
|
+
|
|
|
+ bankTransfer.setCollectUseruu(sysConf.getAdminUU()); // 收款方 设置为应鹏账号
|
|
|
+ bankTransfer.setCollectenuu(sysConf.getEnUU()); // 收款方设置为B2C的uu
|
|
|
+
|
|
|
+ bankTransfer.setBanktranssn(EncodingRulesConstant.BANKTRANSFER.replace("_TIMESTAP_NUMBER", createNumberService.getTimeNumber("trade$bank_transfer", 8)));
|
|
|
+ bankTransfer.setTranferCreateTime(new Date());
|
|
|
+ bankTransfer.setOperateType(Type.MALL.value());
|
|
|
+
|
|
|
+ saveBankTransfer = bankTransferDao.save(bankTransfer);
|
|
|
+
|
|
|
+ for (String orderId : orderIds) {
|
|
|
+ Order orderN = orderService.findByOrId(orderId);
|
|
|
+ if (orderN == null) {
|
|
|
+ throw new IllegalOperatorException("您要操作的订单不存在:" + orderId);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (orderN.getStatus() != Status.TOBEPAID.value()) {
|
|
|
+ throw new IllegalOperatorException("您操作的订单不在待付款状态:" + orderId);
|
|
|
+ }
|
|
|
+
|
|
|
+ BankTransAssociate bankTransAssociate = new BankTransAssociate();
|
|
|
+ bankTransAssociate.setBtaTableserNum(orderId);
|
|
|
+ bankTransAssociate.setBtaBanktranssn(saveBankTransfer.getBanktranssn());
|
|
|
+ btaDao.save(bankTransAssociate);
|
|
|
+
|
|
|
+ orderN.setBanktfid(saveBankTransfer.getId());
|
|
|
+ Long userUU = SystemSession.getUser().getUserUU();
|
|
|
+ orderN.setStatusPaid(userUU);
|
|
|
+ Set<OrderDetail> orderDetails = orderN.getOrderDetails();
|
|
|
+ for (OrderDetail orderDetail : orderDetails) {
|
|
|
+ if(orderDetail.getStatus().intValue() == Status.TOBEPAID.value()) {
|
|
|
+ orderDetail.setStatusPaid(userUU);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ orderN.setBuyaccount(bankTransfer.getJsonPament());
|
|
|
+ orderN.setSelleraccount(bankTransfer.getJsonReceive());
|
|
|
+ orderN.setPaytime(new Date());
|
|
|
+ orderN.setPaytype(Type.Payment_CompanyTransfer_Code.value());
|
|
|
+
|
|
|
+ //修改采购单的状态
|
|
|
+ List<Purchase> purchases = purchaseDao.findByOrderid(orderN.getOrderid());
|
|
|
+ for (Purchase purchase : purchases) {
|
|
|
+ if(purchase.getStatus().intValue() == Status.TOBECONFIRMED.value()) {
|
|
|
+ Set<PurchaseDetail> purchaseDetails = purchase.getPurchaseDetails();
|
|
|
+ for (PurchaseDetail purchaseDetail : purchaseDetails) {
|
|
|
+ if(purchaseDetail.getStatus().intValue() == Status.TOBECONFIRMED.value()) {
|
|
|
+ purchaseDetail.setStatusPaid(userUU);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ purchase.setStatusPaid(userUU);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ purchaseDao.save(purchases);
|
|
|
+ orderDao.save(orderN);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
return saveBankTransfer;
|
|
|
}
|
|
|
|