瀏覽代碼

fix 余额支付

zwhui 2 年之前
父節點
當前提交
5a02286bc2

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -56,6 +56,11 @@ public class OrderDon extends BaseEntity implements Serializable {
      */
     private String currency;
 
+    /**
+     * 汇率
+     */
+    private BigDecimal rate;
+
     /**
      * 海外支付金额
      */

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OrderPayRequest.java

@@ -41,6 +41,11 @@ public class OrderPayRequest {
      */
     private String currency;
 
+    /**
+     * 汇率
+     */
+    private BigDecimal rate;
+
     /**
      * 推荐人id
      */

+ 4 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -266,6 +266,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDon.setMoney(payRequest.getDonMoney());
 		orderDon.setRealMoney(payRequest.getDonMoney());
 		orderDon.setCurrency(payRequest.getCurrency());
+		orderDon.setRate(payRequest.getRate());
 		List<Long> dpSkuIds = payRequest.getDpSkuIds();
 		if (CollUtil.isNotEmpty(dpSkuIds)) {
 			if (dpSkuIds.size() > 1) {
@@ -1979,6 +1980,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			}
 			BigDecimal userBalance = user.getBalance();
 			//扣除余额 是否成功
+			if (!"USD".equals(orderDon.getCurrency())){
+				subBalance = subBalance.divide(orderDon.getRate(),2,RoundingMode.HALF_UP);
+			}
 			Integer success = userMapper.deductBalance(user.getId(), subBalance, userBalance);
 			if (success != 1) throw BusinessRuntimeException.getInstance(I18nMessageUtil.getI18nMsg("user_balance_not_enough"));
 			orderDon.setBalance(subBalance);