现金充值BUG

This commit is contained in:
zt
2025-01-02 11:07:31 +08:00
parent 6e9c0c21bc
commit 10d4be9be3

View File

@ -26,9 +26,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.iocoder.yudao.module.member.service.amount.LockManager.getUserLock; import static cn.iocoder.yudao.module.member.service.amount.LockManager.getUserLock;
@ -61,16 +59,17 @@ public class CashRechargeServiceImpl implements CashRechargeService {
@Override @Override
public void rechargeByAdmin(List<Long> userIds, Long groupId, BigDecimal money, Long storeId,Boolean group) { public void rechargeByAdmin(List<Long> userIds, Long groupId, BigDecimal money, Long storeId,Boolean group) {
List<Long> memberList = new ArrayList<>();
Set<Long> memberSet = new HashSet<>();
MemberGroupDO memberGroupDO = memberGroupMapper.selectById(groupId); MemberGroupDO memberGroupDO = memberGroupMapper.selectById(groupId);
if (group) { if (group) {
memberList.addAll(memberGroupMapper.getMemberList(groupId)); memberSet.addAll(memberGroupMapper.getMemberList(groupId));
} else { } else {
memberList.addAll(userIds); memberSet.addAll(userIds);
} }
//明细列表 //明细列表
ArrayList<CardDO> addList = new ArrayList<>(); ArrayList<CardDO> addList = new ArrayList<>();
List<Long> memberList = new ArrayList<>(memberSet);
for (Long userId : memberList) { for (Long userId : memberList) {
BigDecimal wxNewMoney; BigDecimal wxNewMoney;
@ -78,13 +77,15 @@ public class CashRechargeServiceImpl implements CashRechargeService {
BigDecimal cashNewAmount; BigDecimal cashNewAmount;
String name; String name;
BigDecimal computeMoney = money;
synchronized (getUserLock(userId)) { synchronized (getUserLock(userId)) {
MemberUserDO memberUserDO = userMapper.selectById(userId); MemberUserDO memberUserDO = userMapper.selectById(userId);
MoneyDO moneyDO = moneyService.getMoney(userId, storeId); MoneyDO moneyDO = moneyService.getMoney(userId, storeId);
BigDecimal debtAmount = BigDecimal.ZERO; BigDecimal debtAmount = BigDecimal.ZERO;
if (ObjectUtil.isEmpty(moneyDO)) { if (ObjectUtil.isEmpty(moneyDO)) {
MoneyDO add = new MoneyDO(); MoneyDO add = new MoneyDO();
add.setCashAmount(money); add.setCashAmount(computeMoney);
add.setDebtAmount(debtAmount); add.setDebtAmount(debtAmount);
add.setUserId(userId); add.setUserId(userId);
add.setCarteenId(storeId); add.setCarteenId(storeId);
@ -93,10 +94,17 @@ public class CashRechargeServiceImpl implements CashRechargeService {
} else { } else {
debtAmount = moneyDO.getDebtAmount(); debtAmount = moneyDO.getDebtAmount();
//金额变动 //金额变动
money = money.add(debtAmount); computeMoney = computeMoney.add(debtAmount);
moneyDO.setCashAmount(money.add(moneyDO.getCashAmount())); if(computeMoney.compareTo(BigDecimal.ZERO) < 0){
moneyDO.setCashAmount(BigDecimal.ZERO);
moneyDO.setDebtAmount(computeMoney);
cashNewAmount = BigDecimal.ZERO;
}else {
moneyDO.setCashAmount(computeMoney.add(moneyDO.getCashAmount()));
moneyDO.setDebtAmount(BigDecimal.ZERO); moneyDO.setDebtAmount(BigDecimal.ZERO);
cashNewAmount = moneyDO.getCashAmount(); cashNewAmount = moneyDO.getCashAmount();
}
moneyService.updateById(moneyDO); moneyService.updateById(moneyDO);
} }