|
@@ -60,6 +60,8 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
private CartSellerMapper cartSellerMapper;
|
|
|
@Resource
|
|
|
private RemoteCallService remoteCallService;
|
|
|
+ @Resource
|
|
|
+ private PayOrderMapper payOrderMapper;
|
|
|
|
|
|
/**
|
|
|
* 生成订单
|
|
@@ -163,7 +165,7 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
//订单应付总额
|
|
|
String orderShouldPayFee = (String) payInfo.get("orderShouldPayFee");
|
|
|
orderParamBo.setOrderShouldPayFee(Double.parseDouble(orderShouldPayFee));
|
|
|
- // 运费标志:0包邮 -1到付 1遵循运费规则
|
|
|
+ // 运费标志:0包邮 -1到付 1遵循运费规则
|
|
|
Integer postageFlag = (Integer) payInfo.get("postageFlag");
|
|
|
// 运费
|
|
|
String postage = (String) payInfo.get("postage");
|
|
@@ -966,42 +968,46 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
boolean isPaySuccessFlag = false;
|
|
|
// 余额支付标识,0不使用,1使用
|
|
|
if (1 == orderParamBo.getBalancePayFlag()) {
|
|
|
- // 抵扣后用户剩余可用余额
|
|
|
- Double lastAbleUserMoney;
|
|
|
- // 抵扣后账户余额
|
|
|
- Double lastUserMoney = orderParamBo.getUserMoney();
|
|
|
- // 部分抵扣
|
|
|
+ // 订单总额>账户余额 部分抵扣
|
|
|
if (MathUtil.compare(payTotalFee.get(), orderParamBo.getAbleUserMoney()) > 0) {
|
|
|
balancePayFee.set(orderParamBo.getAbleUserMoney());
|
|
|
payableAmount.set(MathUtil.sub(payTotalFee.get(), balancePayFee.get()).doubleValue());
|
|
|
- // 余额抵扣用完
|
|
|
- lastAbleUserMoney = 0d;
|
|
|
if (3 != orderParamBo.getCartType()) {
|
|
|
// 部收款待发货
|
|
|
mainOrder.setStatus(21);
|
|
|
- lastUserMoney = MathUtil.sub(orderParamBo.getUserMoney(), balancePayFee.get()).doubleValue();
|
|
|
}
|
|
|
mainOrder.setReceiptStatus(2);
|
|
|
+ // 线上+线下只够部分抵扣,线上线下可用都置为0
|
|
|
+ payOrderMapper.updateMoneyByUserId(0d, 0d, 0d, orderParamBo.getUserId());
|
|
|
+ log.info("【提交订单】>>>>>更新用户余额,抵扣后剩余:[userMoney:" + 0 + "] ,ableUserMoney:" + 0);
|
|
|
} else {
|
|
|
// 全部用余额抵扣, 直接变成支付完成
|
|
|
balancePayFee.set(payTotalFee.get());
|
|
|
payableAmount.set(0d);
|
|
|
- lastAbleUserMoney = MathUtil.sub(orderParamBo.getAbleUserMoney(), balancePayFee.get()).doubleValue();
|
|
|
if (3 != orderParamBo.getCartType()) {
|
|
|
// 已收款待发货
|
|
|
mainOrder.setStatus(31);
|
|
|
- lastUserMoney = MathUtil.sub(orderParamBo.getUserMoney(), balancePayFee.get()).doubleValue();
|
|
|
}
|
|
|
mainOrder.setReceiptStatus(3);
|
|
|
mainOrder.setPayFlag(1);
|
|
|
isPaySuccessFlag = true;
|
|
|
+ // 线上余额全付
|
|
|
+ if (MathUtil.compare(orderParamBo.getOnlineMoney(), balancePayFee) > 0) {
|
|
|
+ Double onlineMoney = MathUtil.sub(orderParamBo.getOnlineMoney(), balancePayFee).doubleValue();
|
|
|
+ Double availableMoney = MathUtil.sub(orderParamBo.getAbleUserMoney(), balancePayFee).doubleValue();
|
|
|
+ payOrderMapper.updateOnlineMoneyByUserId(onlineMoney, availableMoney, orderParamBo.getUserId());
|
|
|
+ log.info("【提交订单】>>>>>更新用户余额,抵扣后剩余:[userMoney:" + availableMoney + "] ,ableUserMoney:" + availableMoney);
|
|
|
+ } else {
|
|
|
+ //线上余额不够,线上全抵
|
|
|
+ Double userMoney = MathUtil.sub(orderParamBo.getUserMoney(), MathUtil.sub(balancePayFee, orderParamBo.getOnlineMoney())).doubleValue();
|
|
|
+ //更新线上/线下余额 线上置为0,全部抵扣
|
|
|
+ payOrderMapper.updateMoneyByUserId(userMoney, MathUtil.sub(orderParamBo.getAbleUserMoney(), balancePayFee).doubleValue(), 0d, orderParamBo.getUserId());
|
|
|
+ }
|
|
|
}
|
|
|
- // 抵扣后更新用户余额
|
|
|
- submitMapper.updateUserMoney(lastUserMoney, lastAbleUserMoney, orderParamBo.getUserId());
|
|
|
- log.info("【提交订单】>>>>>更新用户余额,抵扣后剩余:[userMoney:" + lastUserMoney + "] ,ableUserMoney:" + lastAbleUserMoney);
|
|
|
// 支付时间
|
|
|
mainOrder.setPayTime(curDateStr);
|
|
|
} else {
|
|
|
+ //不用余额的情况下真是支付金额赋值为订单总额
|
|
|
payableAmount.set(payTotalFee.get());
|
|
|
}
|
|
|
// 余额支付金额
|
|
@@ -1274,26 +1280,57 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
return ResponseJson.error("订单地址异常!", null);
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- *保存余额到余额收支记录
|
|
|
+ /**
|
|
|
+ * 保存余额到余额收支记录
|
|
|
*/
|
|
|
// 余额支付标识,0不使用,1使用
|
|
|
if (1 == orderParamBo.getBalancePayFlag() && MathUtil.compare(balancePayFee.get(), 0) > 0) {
|
|
|
- // 余额支付标识,0不使用,1使用
|
|
|
- //保存余额到余额收支记录
|
|
|
- BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
- balanceRecord.setUserId(mainOrder.getUserId());
|
|
|
- balanceRecord.setType(2);
|
|
|
- balanceRecord.setBalanceType(1);
|
|
|
- balanceRecord.setAddDate(new Date());
|
|
|
- balanceRecord.setAmount(balancePayFee.get());
|
|
|
- balanceRecord.setOrderId(mainOrder.getOrderId());
|
|
|
- balanceRecord.setRemark("机构自主订单");
|
|
|
- balanceRecord.setDelFlag(0);
|
|
|
- // 保存 余额收支记录
|
|
|
- baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
- log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + mainOrder.getOrderId());
|
|
|
-
|
|
|
+ Double onlineMoney = orderParamBo.getOnlineMoney();
|
|
|
+ if (MathUtil.compare(onlineMoney, balancePayFee) > 0) {
|
|
|
+ //保存余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
+ balanceRecord.setUserId(orderParamBo.getUserId());
|
|
|
+ balanceRecord.setType(2);
|
|
|
+ balanceRecord.setBalanceType(10);
|
|
|
+ balanceRecord.setAddDate(new Date());
|
|
|
+ balanceRecord.setAmount(balancePayFee.doubleValue());
|
|
|
+ balanceRecord.setOrderId(mainOrder.getOrderId());
|
|
|
+ balanceRecord.setRemark("订单支付,余额抵扣");
|
|
|
+ balanceRecord.setDelFlag(0);
|
|
|
+ // 保存 余额收支记录
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
+ log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + mainOrder.getOrderId());
|
|
|
+ } else {//线上不够,线上全抵,剩余线下
|
|
|
+ if (onlineMoney > 0) {
|
|
|
+ // 线上>0有抵扣的情况下保存线上余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
+ balanceRecord.setUserId(orderParamBo.getUserId());
|
|
|
+ balanceRecord.setType(2);
|
|
|
+ balanceRecord.setBalanceType(10);
|
|
|
+ balanceRecord.setAddDate(new Date());
|
|
|
+ balanceRecord.setAmount(onlineMoney);
|
|
|
+ balanceRecord.setOrderId(mainOrder.getOrderId());
|
|
|
+ balanceRecord.setRemark("订单支付,余额抵扣");
|
|
|
+ balanceRecord.setDelFlag(0);
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
+ log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + mainOrder.getOrderId());
|
|
|
+ }
|
|
|
+ if (MathUtil.sub(balancePayFee, orderParamBo.getOnlineMoney()).doubleValue() > 0) {
|
|
|
+ // 保存线下余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord1 = new BalanceRecordPo();
|
|
|
+ balanceRecord1.setUserId(orderParamBo.getUserId());
|
|
|
+ balanceRecord1.setType(2);
|
|
|
+ balanceRecord1.setBalanceType(1);
|
|
|
+ balanceRecord1.setAddDate(new Date());
|
|
|
+ balanceRecord1.setAmount(MathUtil.sub(balancePayFee, orderParamBo.getOnlineMoney()).doubleValue());
|
|
|
+ balanceRecord1.setOrderId(mainOrder.getOrderId());
|
|
|
+ balanceRecord1.setRemark("订单支付,余额抵扣");
|
|
|
+ balanceRecord1.setDelFlag(0);
|
|
|
+ // 保存 余额收支记录
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord1);
|
|
|
+ log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + mainOrder.getOrderId());
|
|
|
+ }
|
|
|
+ }
|
|
|
// 保存余额抵扣到收款记录(自主订单)
|
|
|
if (3 != orderParamBo.getCartType()) {
|
|
|
Integer orderId = mainOrder.getOrderId();
|
|
@@ -1565,7 +1602,6 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
mainOrder.setClauseName("无条款");
|
|
|
// 是否返佣订单
|
|
|
mainOrder.setRebateFlag(0);
|
|
|
- mainOrder.setSpId(rechargeDto.getServiceProviderId());
|
|
|
/*
|
|
|
* 保存主订单数据,返回订单Id
|
|
|
*/
|
|
@@ -1643,7 +1679,6 @@ public class SubmitServiceImpl implements SubmitService {
|
|
|
rechargeProduct.setSingleCmFee(rechargeDto.getPrice());
|
|
|
rechargeProduct.setNotOutStore(0);
|
|
|
rechargeProduct.setBuyAgainFlag(0);
|
|
|
- rechargeProduct.setName(rechargeDto.getName());
|
|
|
/*
|
|
|
* 保存 订单商品
|
|
|
*/
|