瀏覽代碼

fix 退款时银河币不足,从退款金额里扣

zwhui 2 年之前
父節點
當前提交
afc3c92212

+ 14 - 2
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -180,6 +180,9 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
     private final CouponMapper couponMapper;
 
     private final UserGalaxycoinRecordMapper userGalaxycoinRecordMapper;
+
+    private final UserMapper userMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -683,6 +686,15 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         }
         BigDecimal refundMoney = refundReq.getRefundMoney();
         BigDecimal money = orderDon.getMoney();
+        //查询用户是否有足够的银河币
+        User user = userMapper.selectById(orderDon.getUserId());
+        if (user != null){
+            BigDecimal galaxycoin = user.getGalaxycoin();
+            if (refundMoney.compareTo(galaxycoin) > 0){
+                BigDecimal remainGalaxycoin = (refundMoney.subtract(galaxycoin)).divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_EVEN);
+                refundMoney = refundMoney.subtract(remainGalaxycoin);
+            }
+        }
         //余额退款
         if (OrderDon.Type.BALANCE.getType().equals(refundType)) {
             BigDecimal balance = orderDon.getBalance();
@@ -749,7 +761,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 userBenefitsService.updateGalaxycoin(orderDon.getUserId(), orderDon.getMOid(), galaxycoin, UserGalaxycoinRecord.Source.refund_return);
             }
             //退款多少扣除多少银河币
-            BigDecimal refundGalaxycoin = orderDon.getRefundMoney().add(orderDon.getBalance());
+            BigDecimal refundGalaxycoin = orderDon.getRefundMoney().add(orderDon.getRefundBalance());
             if (refundGalaxycoin.compareTo(BigDecimal.ZERO) > 0) {
                 UserGalaxycoinRecord userGalaxycoinRecord = userGalaxycoinRecordMapper.selectOne(Wrappers.lambdaQuery(UserGalaxycoinRecord.class)
                         .eq(UserGalaxycoinRecord::getMOid, orderDon.getMOid())
@@ -757,7 +769,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                         .last("limit 1"));
                 //存在下单返银河币
                 if (userGalaxycoinRecord != null) {
-                    userBenefitsService.updateGalaxycoin(orderDon.getUserId(), orderDon.getMOid(), refundGalaxycoin.negate(), UserGalaxycoinRecord.Source.refund_return);
+                    userBenefitsService.updateGalaxycoin(orderDon.getUserId(), orderDon.getMOid(), refundGalaxycoin.negate(), UserGalaxycoinRecord.Source.refund_deduct);
                 }
             }
 

+ 10 - 8
netflix-service/src/main/java/com/cyksj/service/user/impl/UserBenefitsServiceImpl.java

@@ -199,14 +199,16 @@ public class UserBenefitsServiceImpl implements UserBenefitsService {
 			User user = userMapper.selectById(userId);
 			if (user == null) break;
 			Integer success = userMapper.updateGalaxycoin(user.getId(), addGalaxycoin, user.getGalaxycoin());
-			if (success == 1) break;
-			UserGalaxycoinRecord record = new UserGalaxycoinRecord();
-			record.setMOid(mOid);
-			record.setUserId(userId);
-			record.setGalaxycoin(addGalaxycoin);
-			record.setSource(source);
-			record.setRemark(source.getDesc());
-			userGalaxycoinRecordMapper.insert(record);
+			if (success == 1) {
+				UserGalaxycoinRecord record = new UserGalaxycoinRecord();
+				record.setMOid(mOid);
+				record.setUserId(userId);
+				record.setGalaxycoin(addGalaxycoin);
+				record.setSource(source);
+				record.setRemark(source.getDesc());
+				userGalaxycoinRecordMapper.insert(record);
+				break;
+			}
 		}
 	}
 }