3
0
Fork 0

## Opt - 重复下单,保持上次金额不随机减

This commit is contained in:
sangelxiu1 2025-07-23 14:08:46 +08:00
parent 972d18549e
commit 6263f4e9ab
1 changed files with 42 additions and 39 deletions

View File

@ -1,5 +1,6 @@
package com.hzs.third.pay.controller.api;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hzs.activity.base.IActivityServiceApi;
import com.hzs.common.core.annotation.RepeatSubmitSimple;
@ -130,47 +131,49 @@ public class PayController {
}
onlinePayment.setExtParam(param.getExtParam());
// 业务金额
BigDecimal businessMoney = null;
// 实际支付金额随机立减之后
BigDecimal amount = null;
if(ObjectUtil.isEmpty(onlinePayment.getPkId())) {
// 业务金额
BigDecimal businessMoney = null;
// 实际支付金额随机立减之后
BigDecimal amount = null;
// 部分业务金额随机立减
switch (payBusinessType) {
case MEMBER_ORDER:
// 会员订单
R<BigDecimal> orderResult = iSaOrderServiceApi.getRetailPayOrder(userId, param.getBusinessCode());
if (orderResult.isSuccess()) {
businessMoney = orderResult.getData().setScale(2, BigDecimal.ROUND_HALF_UP);
} else {
return AjaxResult.error(orderResult.getMsg());
}
break;
case RECHARGE:
// 充值
R<CuMemberRecharge> rechargeResult = iMemberTradeServiceApi.selectMemberRechargeByCodeAndPkMember(param.getBusinessCode(), userId);
if (rechargeResult.isSuccess()) {
businessMoney = rechargeResult.getData().getRechargeAmount().setScale(2, BigDecimal.ROUND_HALF_UP);
} else {
return AjaxResult.error(rechargeResult.getMsg());
}
break;
case TICKET:
// 购票
R<BigDecimal> ticketResult = iTicketServiceApi.getTicketPayOrder(userId, param.getBusinessCode());
if (ticketResult.isSuccess()) {
businessMoney = ticketResult.getData();
} else {
return AjaxResult.error(ticketResult.getMsg());
}
break;
default:
// 部分业务金额随机立减
switch (payBusinessType) {
case MEMBER_ORDER:
// 会员订单
R<BigDecimal> orderResult = iSaOrderServiceApi.getRetailPayOrder(userId, param.getBusinessCode());
if (orderResult.isSuccess()) {
businessMoney = orderResult.getData().setScale(2, BigDecimal.ROUND_HALF_UP);
} else {
return AjaxResult.error(orderResult.getMsg());
}
break;
case RECHARGE:
// 充值
R<CuMemberRecharge> rechargeResult = iMemberTradeServiceApi.selectMemberRechargeByCodeAndPkMember(param.getBusinessCode(), userId);
if (rechargeResult.isSuccess()) {
businessMoney = rechargeResult.getData().getRechargeAmount().setScale(2, BigDecimal.ROUND_HALF_UP);
} else {
return AjaxResult.error(rechargeResult.getMsg());
}
break;
case TICKET:
// 购票
R<BigDecimal> ticketResult = iTicketServiceApi.getTicketPayOrder(userId, param.getBusinessCode());
if (ticketResult.isSuccess()) {
businessMoney = ticketResult.getData();
} else {
return AjaxResult.error(ticketResult.getMsg());
}
break;
default:
}
// 更新业务金额
onlinePayment.setBusinessMoney(businessMoney);
amount = PayUtil.handleAmountRandom(businessMoney);
// 暂存于实际支付金额部分业务进行随机立减
onlinePayment.setPayMoney(amount);
}
// 更新业务金额
onlinePayment.setBusinessMoney(businessMoney);
amount = PayUtil.handleAmountRandom(businessMoney);
// 暂存于实际支付金额部分业务进行随机立减
onlinePayment.setPayMoney(amount);
// 结果实体
R payResult = null;