现金充值BUG
This commit is contained in:
@ -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.setDebtAmount(BigDecimal.ZERO);
|
moneyDO.setCashAmount(BigDecimal.ZERO);
|
||||||
cashNewAmount = moneyDO.getCashAmount();
|
moneyDO.setDebtAmount(computeMoney);
|
||||||
|
cashNewAmount = BigDecimal.ZERO;
|
||||||
|
}else {
|
||||||
|
moneyDO.setCashAmount(computeMoney.add(moneyDO.getCashAmount()));
|
||||||
|
moneyDO.setDebtAmount(BigDecimal.ZERO);
|
||||||
|
cashNewAmount = moneyDO.getCashAmount();
|
||||||
|
}
|
||||||
|
|
||||||
moneyService.updateById(moneyDO);
|
moneyService.updateById(moneyDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user