Bläddra i källkod

bugfix:钱数不四舍五入+店铺我的钱包钱数展示问题

lyx 3 månader sedan
förälder
incheckning
a5b70dd409

+ 2 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreUser.java

@@ -129,4 +129,6 @@ public class StoreUser extends Model<StoreUser> {
     private String userImage;
     @TableField(exist = false)
     private String jianjie;
+    @TableField(exist = false)
+    private String moneyStr;
 }

+ 3 - 3
alien-store/src/main/java/shop/alien/store/service/LifeUserOrderService.java

@@ -853,7 +853,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
     private static void calcExpectIncome(LifeUserOrderVo lifeUserOrderVo) {
         // 退款记录
         List<OrderCouponMiddle> orderCouponMiddleList = lifeUserOrderVo.getOrderCouponMiddleList();
-        List<OrderCouponMiddle> refundList = orderCouponMiddleList.stream().filter(x -> x.getStatus() == 5).collect(Collectors.toList());
+        List<OrderCouponMiddle> refundList = orderCouponMiddleList.stream().filter(x -> x.getStatus() == OrderStatusEnum.REFUND.getStatus()).collect(Collectors.toList());
         lifeUserOrderVo.setRefundList(refundList);
         // 预计收入
         // 退款金额
@@ -862,14 +862,14 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
             refundAmount = refundList.stream().map(OrderCouponMiddle::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
         }
         // 预计收入
-        BigDecimal expectIncome = new BigDecimal(lifeUserOrderVo.getPrice()).subtract(refundAmount);
+        BigDecimal expectIncome = new BigDecimal(lifeUserOrderVo.getFinalPrice()).subtract(refundAmount);
         String commissionRateStr = lifeUserOrderVo.getCommissionRate();
         BigDecimal commissionRate = BigDecimal.ZERO;
         if (org.apache.commons.lang3.StringUtils.isNotBlank(commissionRateStr)) {
             try {
                 // 将字符串转换为 BigDecimal,并除以 100(转换为小数)
                 commissionRate = new BigDecimal(commissionRateStr)
-                        .divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP);
+                        .divide(new BigDecimal("100"), 4, RoundingMode.DOWN);
                 // 保留 4 位小数,四舍五入(确保计算精度)
             } catch (NumberFormatException e) {
                 // 处理非数字格式的异常(如 commissionRate 为空或非法字符)

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/impl/StoreIncomeDetailsRecordServiceImpl.java

@@ -283,7 +283,7 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
         List<StoreIncomeDetailsRecord> list = this.list(wrapper);
         int income = 0;
         income += list.stream().mapToInt(StoreIncomeDetailsRecord::getMoney).sum();
-        return new BigDecimal(income).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString();
+        return new BigDecimal(income).divide(new BigDecimal(100), 2, RoundingMode.DOWN).toString();
     }
 
     /**

+ 3 - 2
alien-store/src/main/java/shop/alien/store/service/impl/StoreUserServiceImpl.java

@@ -34,6 +34,8 @@ import shop.alien.util.common.JwtUtil;
 
 import java.io.File;
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.Instant;
@@ -106,13 +108,12 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
             long correct = duration.toMillis();
             storeUserVo.setCountdown(correct);
         }
-
         if (null == user) return new StoreUserVo();
         BeanUtils.copyProperties(user, storeUserVo);
+        storeUserVo.setMoneyStr(new BigDecimal(storeUserVo.getMoney()).divide(new BigDecimal(100), 2, RoundingMode.DOWN).toString());
         return storeUserVo;
     }
 
-
     /**
      * token
      *