|
@@ -43,6 +43,7 @@ import java.time.LocalDateTime;
|
|
import java.time.temporal.TemporalAdjuster;
|
|
import java.time.temporal.TemporalAdjuster;
|
|
import java.time.temporal.TemporalAdjusters;
|
|
import java.time.temporal.TemporalAdjusters;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.concurrent.locks.ReentrantLock;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -80,13 +81,14 @@ public class WxTransferService {
|
|
@Autowired
|
|
@Autowired
|
|
DBHelper dbHelper;
|
|
DBHelper dbHelper;
|
|
|
|
|
|
|
|
+// private final ReentrantLock lock = new ReentrantLock();
|
|
|
|
|
|
/**
|
|
/**
|
|
* 发起提现
|
|
* 发起提现
|
|
* @param param
|
|
* @param param
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
-// @Transactional
|
|
|
|
|
|
+ @Transactional
|
|
public ResultContent transfer(WalletTransferParam param){
|
|
public ResultContent transfer(WalletTransferParam param){
|
|
String userId = authHelper.getCurrentUser().getUserId();
|
|
String userId = authHelper.getCurrentUser().getUserId();
|
|
OperateDisable operateDisable = operateDisableDao.findTopByUserIdAndType(userId, OperateType.TRANSFER);
|
|
OperateDisable operateDisable = operateDisableDao.findTopByUserIdAndType(userId, OperateType.TRANSFER);
|
|
@@ -97,7 +99,6 @@ public class WxTransferService {
|
|
operateDisableDao.delete(operateDisable);
|
|
operateDisableDao.delete(operateDisable);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
Wallet wallet = walletDao.findTop1ById(param.getWalletId());
|
|
Wallet wallet = walletDao.findTop1ById(param.getWalletId());
|
|
//校验提现规则
|
|
//校验提现规则
|
|
validTransfer(param.getTotal(), wallet);
|
|
validTransfer(param.getTotal(), wallet);
|
|
@@ -142,7 +143,7 @@ public class WxTransferService {
|
|
wxTransferBatch.setFailReason("提现失败请一小时后再次尝试");
|
|
wxTransferBatch.setFailReason("提现失败请一小时后再次尝试");
|
|
wxTransferBatchDao.save(wxTransferBatch);
|
|
wxTransferBatchDao.save(wxTransferBatch);
|
|
//失败做一次补偿
|
|
//失败做一次补偿
|
|
- return transfer(param);
|
|
|
|
|
|
+ return ResultContent.build(ResultState.Fail);
|
|
}
|
|
}
|
|
// wxTransferBatch.setBatchNo(outBatchNo);
|
|
// wxTransferBatch.setBatchNo(outBatchNo);
|
|
// wxTransferBatch.setDetailNo(outDetailNo);
|
|
// wxTransferBatch.setDetailNo(outDetailNo);
|
|
@@ -155,8 +156,9 @@ public class WxTransferService {
|
|
wxTransferBatch.setTransferStatus(TransferStatus.PROCESSING);
|
|
wxTransferBatch.setTransferStatus(TransferStatus.PROCESSING);
|
|
wxTransferBatchDao.save(wxTransferBatch);
|
|
wxTransferBatchDao.save(wxTransferBatch);
|
|
|
|
|
|
- wallet.setAmount(wallet.getAmount().subtract(param.getTotal()));
|
|
|
|
- wallet.setTodayTransferAmount(wallet.getTodayTransferAmount().add(param.getTotal()));
|
|
|
|
|
|
+ Wallet currentWallet = walletDao.findTop1ById(param.getWalletId());
|
|
|
|
+ wallet.setAmount(currentWallet.getAmount().subtract(param.getTotal()));
|
|
|
|
+ wallet.setTodayTransferAmount(currentWallet.getTodayTransferAmount().add(param.getTotal()));
|
|
walletDao.save(wallet);
|
|
walletDao.save(wallet);
|
|
return ResultContent.build(ResultState.Success);
|
|
return ResultContent.build(ResultState.Success);
|
|
}
|
|
}
|