diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java index e3f3c3ac..9d8de1b0 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java @@ -346,7 +346,7 @@ public class AccountServiceImpl extends ServiceImpl impl } else { log.info("房间需要补差价,但用户余额不足 roomid {} 已支付 {} 仍需要补差价:{}", roomData.getRoomId(),roomData.getPayCoin() + roomData.getPayIncome(),diff); } - }else{ + }else if(diff < 0){ // 退钱逻辑 long incsCoin = 0L; // 需要退的金额 long incsIncomeCoin = 0L; // 需要退的收益金额 @@ -362,6 +362,7 @@ public class AccountServiceImpl extends ServiceImpl impl incsIncomeCoin = roomData.getPayIncome(); } } + log.info("roomid={},进入退钱逻辑 本次退余额:{}, 退收益:{} 最终消费余额:{},消费收益:{},",roomData.getRoomId(),incsCoin, incsIncomeCoin, payCoin, payIncome); if(incsCoin > 0){ payCoin = payCoin - incsCoin; baseMapper.incsCoin(callUserData.getId(), incsCoin); @@ -416,4 +417,33 @@ public class AccountServiceImpl extends ServiceImpl impl return resp; } + public static void main(String[] args) { + long incsCoin = 0L; // 需要退的金额 + long incsIncomeCoin = 0L; // 需要退的收益金额 + int diff = 40; + RoomData roomData = new RoomData(); + roomData.setPayCoin(100); + roomData.setPayIncome(0); + Long payCoin = Long.valueOf(roomData.getPayCoin()); // 已经支付的余额 + Long payIncome = Long.valueOf(roomData.getPayIncome()); // 已经支付的收益 + if(roomData.getPayCoin() > diff){ // 消费的金额大于待退款金额 + incsCoin = diff; + }else { + if(roomData.getPayIncome() > (diff - roomData.getPayCoin())){ // 消费金额不够退,但是收益金额扣扣费 + incsCoin = roomData.getPayCoin(); + incsIncomeCoin = roomData.getPayIncome() - (diff - roomData.getPayCoin()); + } else { // 消费金额不够退 余额也不够退 能退多少是多少 + incsCoin = roomData.getPayCoin(); + incsIncomeCoin = roomData.getPayIncome(); + } + } + if(incsCoin > 0){ + payCoin = payCoin - incsCoin; + } + if(incsIncomeCoin > 0){ + payIncome = payIncome - incsIncomeCoin; + } + log.info("roomid={},进入退钱逻辑 本次退余额:{}, 退收益:{} 最终消费余额:{},消费收益:{},",roomData.getRoomId(),incsCoin, incsIncomeCoin, payCoin, payIncome); + } + }