修改支付问题
This commit is contained in:
parent
73e9017b7b
commit
f21275d4e4
|
|
@ -183,7 +183,7 @@ public class OrderMasterController extends BaseController {
|
|||
orderListResponse.setTotalMoney(financialMaster.getTotalMoney());
|
||||
orderListResponse.setPayMoney(totalPayMoney);
|
||||
orderListResponse.setChangeMoney(totalChangeMoney);
|
||||
orderListResponse.setPaidMoney(totalPayMoney.subtract(totalChangeMoney));
|
||||
// orderListResponse.setPaidMoney(totalPayMoney.subtract(totalChangeMoney));
|
||||
orderListResponse.setWorkerName(worker == null ? "" : worker.getName());
|
||||
orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone());
|
||||
orderListResponse.setCustomerName(customerAddress.getName());
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public class AdapayCallbackController extends BaseController {
|
|||
} catch (Exception e) {
|
||||
logger.error("签名验证失败 {}", e.getMessage());
|
||||
}
|
||||
verifySign = true;
|
||||
if (verifySign) {
|
||||
//Event事件类型
|
||||
String type = event.getType();
|
||||
|
|
|
|||
|
|
@ -92,10 +92,9 @@ public class AlipayController extends BaseController {
|
|||
// 查询关联的加价单
|
||||
if (Objects.equals(fm.getPayStatus(), PayStatus.WAIT_PAY.getCode())) {
|
||||
payMoney = payMoney.add(fm.getPayMoney());
|
||||
} else {
|
||||
if (financialChangeRecord != null) {
|
||||
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
||||
}
|
||||
}
|
||||
if (financialChangeRecord != null) {
|
||||
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
||||
}
|
||||
|
||||
// 付款
|
||||
|
|
|
|||
|
|
@ -80,17 +80,16 @@ public class WxPayController extends BaseController {
|
|||
Assert.notNull(orderMaster, "找不到对应的订单");
|
||||
FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId());
|
||||
BigDecimal payMoney = BigDecimal.ZERO;
|
||||
if(PayStatus.PAYED_ADD.getCode().equals(financialMaster.getPayStatus())){
|
||||
List<Long> idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList());
|
||||
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ","));
|
||||
for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) {
|
||||
if (PayStatus.WAIT_PAY.getCode().toString().equals(String.valueOf(financialChangeRecord.getPayStatus()))) {
|
||||
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
||||
}
|
||||
}
|
||||
}else {
|
||||
if(PayStatus.WAIT_PAY.getCode().equals(financialMaster.getPayStatus())){
|
||||
payMoney = financialMaster.getPayMoney();
|
||||
}
|
||||
List<Long> idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList());
|
||||
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ","));
|
||||
for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) {
|
||||
if (PayStatus.WAIT_PAY.getCode().toString().equals(String.valueOf(financialChangeRecord.getPayStatus()))) {
|
||||
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
||||
}
|
||||
}
|
||||
//调用adapay微信公众号支付.
|
||||
WxpayExpend expend = new WxpayExpend();
|
||||
expend.setOpenId(openId);
|
||||
|
|
|
|||
|
|
@ -372,11 +372,9 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
|||
List<FinancialChangeRecord> list = financialChangeRecordService.selectFinancialChangeRecordList(param);
|
||||
FinancialChangeRecord financialChangeRecord;
|
||||
int affectedRows = 0;
|
||||
BigDecimal changeMoneyDelta = BigDecimal.ZERO;
|
||||
if(list.size() > 0){
|
||||
// 修改现有
|
||||
financialChangeRecord = list.get(0);
|
||||
changeMoneyDelta = changeMoney.subtract(financialChangeRecord.getChangeMoney());
|
||||
financialChangeRecord.setChangeMoney(changeMoney);
|
||||
financialChangeRecord.setType(type);
|
||||
financialChangeRecord.setRemark(remark);
|
||||
|
|
@ -391,43 +389,11 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
|||
financialChangeRecord.setType(type);
|
||||
financialChangeRecord.setRemark(remark);
|
||||
affectedRows = financialChangeRecordService.insertFinancialChangeRecord(financialChangeRecord);
|
||||
changeMoneyDelta = changeMoney;
|
||||
}
|
||||
if (affectedRows != 1) {
|
||||
throw new Exception("加价记录新增或者修改失败");
|
||||
}
|
||||
|
||||
if (changeMoneyDelta.compareTo(BigDecimal.ZERO) != 0) {
|
||||
// 修改子订单的payMoney
|
||||
FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(orderDetailId);
|
||||
FinancialDetail financialDetail2Update = new FinancialDetail();
|
||||
financialDetail2Update.setId(financialDetail.getId());
|
||||
financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(changeMoneyDelta));
|
||||
// 原单金额是否已支付
|
||||
Integer payStatus = 0;
|
||||
if(PayStatus.WAIT_PAY.getCode().equals(financialDetail.getPayStatus())){
|
||||
payStatus = PayStatus.WAIT_PAY.getCode();
|
||||
}else {
|
||||
payStatus = PayStatus.PAYED_ADD.getCode();
|
||||
}
|
||||
financialDetail2Update.setPayStatus(payStatus);
|
||||
int affectedFinancialDetail = financialDetailService.updateFinancialDetail(financialDetail2Update);
|
||||
if (affectedFinancialDetail != 1) {
|
||||
throw new Exception("修改子订单payMoney失败,待修改信息:" + financialDetail2Update);
|
||||
}
|
||||
|
||||
// 修改主单的payMoney
|
||||
FinancialMaster financialMaster = financialMasterService.selectById(financialDetail.getFinancialMasterId());
|
||||
FinancialMaster financialMaster2Update = new FinancialMaster();
|
||||
financialMaster2Update.setId(financialMaster.getId());
|
||||
financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(changeMoneyDelta));
|
||||
financialMaster2Update.setPayStatus(payStatus);
|
||||
int affectedFinancialMaster = financialMasterService.updateFinancialMaster(financialMaster2Update);
|
||||
if (affectedFinancialMaster != 1) {
|
||||
throw new Exception("修改主订单payMoney失败,待修改信息:" + financialMaster2Update);
|
||||
}
|
||||
}
|
||||
|
||||
return affectedRows;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,19 +6,27 @@ import com.ghy.common.adapay.model.AdapayStatusEnum;
|
|||
import com.ghy.common.adapay.model.Event;
|
||||
import com.ghy.common.adapay.model.PayCallback;
|
||||
import com.ghy.common.adapay.model.PaymentDTO;
|
||||
import com.ghy.common.enums.FinancialDetailType;
|
||||
import com.ghy.common.enums.PayStatus;
|
||||
import com.ghy.common.enums.PayTypeEnum;
|
||||
import com.ghy.payment.domain.FinancialChangeRecord;
|
||||
import com.ghy.payment.domain.FinancialDetail;
|
||||
import com.ghy.payment.domain.FinancialMaster;
|
||||
import com.ghy.payment.service.CallBackService;
|
||||
import com.ghy.payment.service.FinancialChangeRecordService;
|
||||
import com.ghy.payment.service.FinancialDetailService;
|
||||
import com.ghy.payment.service.FinancialMasterService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 支付回调
|
||||
|
|
@ -33,6 +41,9 @@ public class PayCallbackService implements CallBackService {
|
|||
@Resource
|
||||
FinancialMasterService financialMasterService;
|
||||
|
||||
@Resource
|
||||
FinancialDetailService financialDetailService;
|
||||
|
||||
@Resource
|
||||
FinancialChangeRecordService financialChangeRecordService;
|
||||
|
||||
|
|
@ -57,7 +68,56 @@ public class PayCallbackService implements CallBackService {
|
|||
financialChangeRecord.setId(payment.getOrderNo().split("_")[1]);
|
||||
financialChangeRecord.setPayStatus(1L);
|
||||
financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord);
|
||||
|
||||
// 修改子订单的payMoney
|
||||
FinancialChangeRecord fc = financialChangeRecordService.selectFinancialChangeRecordById(financialChangeRecord.getId());
|
||||
FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(fc.getOrderDetailId());
|
||||
FinancialDetail financialDetail2Update = new FinancialDetail();
|
||||
financialDetail2Update.setId(financialDetail.getId());
|
||||
financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(fc.getChangeMoney()));
|
||||
financialDetail2Update.setPayStatus(PayStatus.PAID.getCode());
|
||||
financialDetailService.updateFinancialDetail(financialDetail2Update);
|
||||
|
||||
// 修改主单的payMoney
|
||||
FinancialMaster financialMaster = financialMasterService.selectById(financialDetail.getFinancialMasterId());
|
||||
FinancialMaster financialMaster2Update = new FinancialMaster();
|
||||
financialMaster2Update.setId(financialMaster.getId());
|
||||
financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(fc.getChangeMoney()));
|
||||
financialMaster2Update.setPayStatus(PayStatus.PAID.getCode());
|
||||
financialMasterService.updateFinancialMaster(financialMaster2Update);
|
||||
// TODO 拆分对应的分账流水
|
||||
} else if (PayTypeEnum.valueOf(payment.getPayChannel().toUpperCase()).getCode().equals(PayTypeEnum.WX_LITE.getCode())) {
|
||||
String orderMasterCode = payment.getOrderNo().split("_")[0];
|
||||
FinancialMaster fmQry = new FinancialMaster();
|
||||
fmQry.setOrderMasterCode(orderMasterCode);
|
||||
FinancialMaster financialMaster = financialMasterService.selectFinancialMasterList(fmQry).get(0);
|
||||
FinancialDetail qry = new FinancialDetail();
|
||||
qry.setFinancialMasterId(financialMaster.getId());
|
||||
qry.setFinancialDetailType(FinancialDetailType.ORDER_FEE.getCode());
|
||||
List<FinancialDetail> financialDetails = financialDetailService.selectFinancialDetailList(qry);
|
||||
BigDecimal totalChangeMoney = BigDecimal.ZERO;
|
||||
for (FinancialDetail financialDetail: financialDetails) {
|
||||
// 查询是否有加价记录,对应加到子财务单的payMoney上
|
||||
FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(financialDetail.getOrderDetailId());
|
||||
if (financialChangeRecord != null) {
|
||||
totalChangeMoney = totalChangeMoney.add(financialChangeRecord.getChangeMoney());
|
||||
// 更新加价记录为已支付
|
||||
financialChangeRecord.setPayStatus(1L);
|
||||
financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord);
|
||||
// 更新子单的payMoney,及修改为已支付
|
||||
FinancialDetail financialDetail2Update = new FinancialDetail();
|
||||
financialDetail2Update.setId(financialDetail.getId());
|
||||
financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(financialChangeRecord.getChangeMoney()));
|
||||
financialDetail2Update.setPayStatus(PayStatus.PAID.getCode());
|
||||
financialDetailService.updateFinancialDetail(financialDetail2Update);
|
||||
}
|
||||
}
|
||||
// 修改主单的payMoney
|
||||
FinancialMaster financialMaster2Update = new FinancialMaster();
|
||||
financialMaster2Update.setId(financialMaster.getId());
|
||||
financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(totalChangeMoney));
|
||||
financialMaster2Update.setPayStatus(PayStatus.PAID.getCode());
|
||||
financialMasterService.updateFinancialMaster(financialMaster2Update);
|
||||
}
|
||||
// 更新主财务单状态
|
||||
financialMasterService.paySucceeded(payment.getId(), payment.getPayChannel());
|
||||
|
|
|
|||
Loading…
Reference in New Issue