Browse Source

Merge branch 'master' of https://github.com/YunaiV/ruoyi-vue-pro

YunaiV 1 year ago
parent
commit
a532ba0579

+ 2 - 0
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/menu/MpMenuConvert.java

@@ -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);
 

+ 3 - 1
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java

@@ -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);

+ 14 - 14
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/util/MoneyUtils.java

@@ -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
+	}
 
 }