|
@@ -194,64 +194,22 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
//保存收款记录
|
|
|
productService.saveDiscernReceipt(balancePayFee, orderId, "【订单支付,余额抵扣】");
|
|
|
}
|
|
|
- //可用=可用-本次抵扣
|
|
|
availableMoney = MathUtil.sub(availableMoney, balancePayFee).doubleValue();
|
|
|
- //区分扣多少线上扣多少线下,优先线上余额
|
|
|
- Double onlineMoney = baseMapper.getonlineMoney(order.getUserId());
|
|
|
- //线上余额>本次抵扣,全抵线上
|
|
|
- if (onlineMoney > balancePayFee) {
|
|
|
- onlineMoney = MathUtil.sub(onlineMoney, balancePayFee).doubleValue();
|
|
|
- payOrderMapper.updateOnlineMoneyByUserId(onlineMoney, availableMoney, order.getUserId());
|
|
|
- log.info("【订单支付,余额抵扣】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
|
|
|
- //保存余额到余额收支记录
|
|
|
- BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
- balanceRecord.setUserId(order.getUserId());
|
|
|
- balanceRecord.setType(2);
|
|
|
- balanceRecord.setBalanceType(10);
|
|
|
- balanceRecord.setAddDate(new Date());
|
|
|
- balanceRecord.setAmount(balancePayFee);
|
|
|
- balanceRecord.setOrderId(orderId);
|
|
|
- balanceRecord.setRemark("订单支付,余额抵扣");
|
|
|
- balanceRecord.setDelFlag(0);
|
|
|
- // 保存 余额收支记录
|
|
|
- baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
- log.info("【订单支付,余额抵扣】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + orderId);
|
|
|
- } else {//线上不够,线上全抵,剩余线下
|
|
|
- //线下=原线下-(本次抵扣-线上)
|
|
|
- userMoney = MathUtil.sub(userMoney, MathUtil.sub(balancePayFee, onlineMoney)).doubleValue();
|
|
|
- //更新线上/线下余额 线上置为0,全部抵扣
|
|
|
- payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, 0d, order.getUserId());
|
|
|
- log.info("【订单支付,余额抵扣】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
|
|
|
- if (onlineMoney > 0) {
|
|
|
- // 线上>0有抵扣的情况下保存线上余额到余额收支记录
|
|
|
- BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
- balanceRecord.setUserId(order.getUserId());
|
|
|
- balanceRecord.setType(2);
|
|
|
- balanceRecord.setBalanceType(10);
|
|
|
- balanceRecord.setAddDate(new Date());
|
|
|
- balanceRecord.setAmount(onlineMoney);
|
|
|
- balanceRecord.setOrderId(orderId);
|
|
|
- balanceRecord.setRemark("订单支付,余额抵扣");
|
|
|
- balanceRecord.setDelFlag(0);
|
|
|
- baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
- log.info("【订单支付,线上/线下余额抵扣】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + orderId);
|
|
|
- }
|
|
|
- if (userMoney > 0) {
|
|
|
- // 保存线下余额到余额收支记录
|
|
|
- BalanceRecordPo balanceRecord1 = new BalanceRecordPo();
|
|
|
- balanceRecord1.setUserId(order.getUserId());
|
|
|
- balanceRecord1.setType(2);
|
|
|
- balanceRecord1.setBalanceType(1);
|
|
|
- balanceRecord1.setAddDate(new Date());
|
|
|
- balanceRecord1.setAmount(userMoney);
|
|
|
- balanceRecord1.setOrderId(orderId);
|
|
|
- balanceRecord1.setRemark("订单支付,余额抵扣");
|
|
|
- balanceRecord1.setDelFlag(0);
|
|
|
- // 保存 余额收支记录
|
|
|
- baseMapper.insertBalanceRecord(balanceRecord1);
|
|
|
- }
|
|
|
- log.info("【订单支付,线上/线下余额抵扣】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + orderId);
|
|
|
- }
|
|
|
+ payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, order.getUserId());
|
|
|
+ log.info("【订单支付,余额抵扣】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
|
|
|
+ //保存余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
+ balanceRecord.setUserId(order.getUserId());
|
|
|
+ balanceRecord.setType(2);
|
|
|
+ balanceRecord.setBalanceType(1);
|
|
|
+ balanceRecord.setAddDate(new Date());
|
|
|
+ balanceRecord.setAmount(balancePayFee);
|
|
|
+ balanceRecord.setOrderId(orderId);
|
|
|
+ balanceRecord.setRemark("订单支付,余额抵扣");
|
|
|
+ balanceRecord.setDelFlag(0);
|
|
|
+ // 保存 余额收支记录
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
+ log.info("【订单支付,余额抵扣】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + orderId);
|
|
|
}
|
|
|
Map<String, Object> map = new HashMap<>(2);
|
|
|
map.put("order", order);
|
|
@@ -344,20 +302,7 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
// orderCommonService.getDiscernReceiptAndSetOrder(order);
|
|
|
// boolean payButton = order.isPayButton();
|
|
|
|
|
|
- //判断线上/线下余额
|
|
|
-// Double userMoney = orderCommonMapper.findUserMoney(orderId);
|
|
|
-// Double onlineMoney = orderCommonMapper.findOnlineMoney(orderId);
|
|
|
-// userMoney = userMoney == null ? 0 : userMoney;
|
|
|
-// onlineMoney = onlineMoney == null ? 0 : onlineMoney;
|
|
|
-// if (MathUtil.compare(totalCostPrice, order.getPayableAmount()) > 0 || order.getPayableAmount() <= 0.01) {
|
|
|
-// map.put("onlinePay", 2);
|
|
|
-// } else if (userMoney > 0 && onlineMoney > 0 && !"31".equals(order.getStatus())) {
|
|
|
-// //当线上余额和线下余额两者都抵扣了但只抵扣了部分订单金额,订单只能走线下支付,点击提交订单,跳转到线下支付页面
|
|
|
-// map.put("onlinePay", 2);
|
|
|
-// } else {
|
|
|
-// map.put("onlinePay", 1);
|
|
|
-// }
|
|
|
- //线上支付优化,订单商品中有没设置分帐帐号的无法线上
|
|
|
+ //todo 线上支付优化,订单商品中有没设置分帐帐号的无法线上
|
|
|
Integer num = orderCommonMapper.findSplitCode(orderId);
|
|
|
if (num > 0) {
|
|
|
map.put("onlinePay", 2);
|
|
@@ -909,25 +854,22 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
}
|
|
|
}
|
|
|
if (rechargeFlag > 0) {
|
|
|
- // 线上账户余额
|
|
|
- double oldUserMoney = baseMapper.getonlineMoney(order.getUserId());
|
|
|
- // 充值算线下余额
|
|
|
+ // 账户余额
|
|
|
+ double oldUserMoney = baseMapper.getUserMoney(order.getUserId());
|
|
|
double userMoney = MathUtil.add(oldUserMoney, amount).doubleValue();
|
|
|
// 可用余额
|
|
|
Double oldAvailableMoney = baseMapper.getAbleUserMoney(order.getUserId());
|
|
|
- // 可用余额=之前的可用+充值
|
|
|
double availableMoney = MathUtil.add(oldAvailableMoney, amount).doubleValue();
|
|
|
- //充值线上余额
|
|
|
- payOrderMapper.updateOnlineMoneyByUserId(userMoney, availableMoney, order.getUserId());
|
|
|
+ payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, order.getUserId());
|
|
|
log.info("【支付异步回调】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
|
|
|
//保存余额到余额收支记录
|
|
|
BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
balanceRecord.setUserId(order.getUserId());
|
|
|
balanceRecord.setType(1);
|
|
|
if (rechargeFlag == 1) {
|
|
|
- balanceRecord.setBalanceType(16);
|
|
|
+ balanceRecord.setBalanceType(6);
|
|
|
} else {
|
|
|
- balanceRecord.setBalanceType(17);
|
|
|
+ balanceRecord.setBalanceType(7);
|
|
|
}
|
|
|
balanceRecord.setAddDate(new Date());
|
|
|
balanceRecord.setAmount(amount);
|
|
@@ -1107,14 +1049,6 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
String currentTime = format.format(calendar.getTime());
|
|
|
// 查询未分账已支付收款
|
|
|
List<OrderReceiptRelationPo> orderRelations = payOrderMapper.getUndividedPaidReceipt(currentTime);
|
|
|
- // 上面过滤了余额抵扣, 把线上余额抵扣单补充到list里面,线上余额抵扣的金额视为正常收款金额进行分账
|
|
|
- List<OrderReceiptRelationPo> onlineRelations = payOrderMapper.getOnlineBalance(currentTime);
|
|
|
- if (null != onlineRelations && onlineRelations.size() > 0) {
|
|
|
- // 过滤不足分账金额的单
|
|
|
- onlineRelations.removeIf(o -> o.getAssociateAmount() < 0.01);
|
|
|
- // 把线上余额抵扣订单加入分账
|
|
|
- orderRelations.addAll(onlineRelations);
|
|
|
- }
|
|
|
if (null != orderRelations && orderRelations.size() > 0) {
|
|
|
for (OrderReceiptRelationPo orderRelation : orderRelations) {
|
|
|
log.info("【延时分账】>>>>>>>>>>订单id:" + orderRelation.getOrderId() + ",进入延时分账");
|