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