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