YunaiV 3 years ago
commit a532ba0579

@ -40,6 +40,8 @@ public interface MpMenuConvert {
@Mappings({
@Mapping(source = "menuKey", target = "key"),
@Mapping(source = "children", target = "subButtons"),
@Mapping(source = "miniProgramAppId", target = "appId"),
@Mapping(source = "miniProgramPagePath", target = "pagePath"),
})
WxMenuButton convert(MpMenuSaveReqVO.Menu bean);

@ -39,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
@ -345,7 +346,8 @@ public class PayOrderServiceImpl implements PayOrderService {
.channelId(channel.getId()).channelCode(channel.getCode())
.successTime(notify.getSuccessTime()).extensionId(orderExtension.getId()).no(orderExtension.getNo())
.channelOrderNo(notify.getChannelOrderNo()).channelUserId(notify.getChannelUserId())
.channelFeeRate(channel.getFeeRate()).channelFeePrice(MoneyUtils.calculateRatePrice(order.getPrice(), channel.getFeeRate()))
.channelFeeRate(channel.getFeeRate())
.channelFeePrice(MoneyUtils.calculateRatePrice(order.getPrice(), channel.getFeeRate(), 0, RoundingMode.HALF_UP).intValue())
.build());
if (updateCounts == 0) { // 校验状态,必须是待支付
throw exception(ORDER_STATUS_IS_NOT_WAITING);

@ -3,25 +3,25 @@ package cn.iocoder.yudao.module.pay.util;
import java.math.BigDecimal;
import java.math.RoundingMode;
import cn.hutool.core.util.NumberUtil;
/**
*
*
* @author
*/
public class MoneyUtils {
/**
*
*
* @param price
* @param rate 56.77% 56.77
* @return
*/
public static Integer calculateRatePrice(Integer price, Double rate) {
return new BigDecimal(price)
.multiply(BigDecimal.valueOf(rate)) // 乘以
.setScale(0, RoundingMode.HALF_UP) // 四舍五入
.intValue();
}
/**
*
*
* @param price
* @param rate 56.77% 56.77
* @param scale
* @param roundingMode
*/
public static BigDecimal calculateRatePrice(Number price, Number rate, int scale, RoundingMode roundingMode) {
return NumberUtil.toBigDecimal(price).multiply(NumberUtil.toBigDecimal(rate)) // 乘以
.divide(BigDecimal.valueOf(100), scale, roundingMode); // 除以100
}
}

Loading…
Cancel
Save