From d147df97cffc18ac764719041b2a4dda8311921c Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 14 Jan 2026 16:02:04 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserAssetsServices.java | 94 +++++++++++++++++++++++++++++++++++------------
1 files changed, 70 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 8a4123b..975cc10 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -77,9 +77,7 @@
List<UserAssets> userAssetsList = userAssetsMapper.selectList(queryWrapper);
List<EStockType> stockTypes = Arrays.asList(
EStockType.US,
- EStockType.HK,
- EStockType.IN,
- EStockType.TW
+ EStockType.JP
);
for (EStockType stockType : stockTypes) {
//是否存在记录
@@ -101,9 +99,9 @@
}
@Override
- public ServerResponse updateUserAssets(Integer id, String amt,String type) {
+ public ServerResponse updateUserAssets(Integer id, String amt,String type, String accectType) {
UserAssets userAssets = userAssetsMapper.selectById(id);
- UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
+ //UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
// 0 入款 1是扣钱 2 是充值 3 是提币
BigDecimal bigAmt = new BigDecimal(amt);
if(type.equals("0") || type.equals("1")){
@@ -119,20 +117,25 @@
userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
userAssets.setAmountToBeCovered(BigDecimal.ZERO);
userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
- if(null != userPosition){
- userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered());
- }
}else{
- BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(bigAmt);
- userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(bigAmt));
- userAssets.setAmountToBeCovered(amountToBeCovered);
- if(null != userPosition){
- userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered());
+ BigDecimal subtract = bigAmt.subtract(userAssets.getHandlingChargeWritten());
+ if(subtract.compareTo(BigDecimal.ZERO) >= 0) {
+ BigDecimal decimal = bigAmt.subtract(userAssets.getAmountToBeCovered());
+ decimal = decimal.subtract(userAssets.getHandlingChargeWritten());
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(bigAmt.subtract(userAssets.getHandlingChargeWritten())));
+ userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+ userAssets.setAmountToBeCovered(decimal.negate());
+ }else{
+ userAssets.setHandlingChargeWritten(userAssets.getHandlingChargeWritten().subtract(bigAmt));
}
}
}else{
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
}
+ /*if(null != userPosition){
+ userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
+ userPositionMapper.updateById(userPosition);
+ }*/
}else{
if(userAssets.getAvailableBalance().compareTo(BigDecimal.ZERO) <= 0){
return ServerResponse.createByErrorMsg("客户账户余额为0");
@@ -141,9 +144,9 @@
}
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
}
- if(null != userPosition){
+ /*if(null != userPosition){
userPositionMapper.updateById(userPosition);
- }
+ }*/
if( userAssetsMapper.updateById(userAssets)>0){
// saveUserRecharge(userAssets.getUserId(),bigAmt);
return ServerResponse.createBySuccess();
@@ -152,7 +155,7 @@
}
}else{
if(type.equals("2")){
- return userRechargeService.createOrder(userAssets.getUserId(),1,bigAmt.intValue(),"1");
+ return userRechargeService.createOrder(userAssets.getUserId(),1,bigAmt.intValue(),"1", accectType);
}else{
return ServerResponse.createBySuccess();
}
@@ -207,7 +210,7 @@
amount = exchangeAmountByRate(accetType, amount);
}*/
UserAssets userAssets = assetsByTypeAndUserId(accetType, userId);
- UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
+ //UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
String type = eUserAssets.getDesc();
String before = userAssets.getAvailableBalance().toString();
accetType = userAssets.getAccectType();
@@ -227,8 +230,15 @@
userAssets.setAmountToBeCovered(BigDecimal.ZERO);
userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
}else{
- BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
- userAssets.setAmountToBeCovered(amountToBeCovered);
+ BigDecimal subtract = amount.subtract(userAssets.getHandlingChargeWritten());
+ if(subtract.compareTo(BigDecimal.ZERO) >= 0) {
+ BigDecimal decimal = amount.subtract(userAssets.getAmountToBeCovered());
+ decimal = decimal.subtract(userAssets.getHandlingChargeWritten());
+ userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+ userAssets.setAmountToBeCovered(decimal.negate());
+ }else{
+ userAssets.setHandlingChargeWritten(userAssets.getHandlingChargeWritten().subtract(amount));
+ }
}
}else{
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
@@ -237,7 +247,33 @@
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALCULATE_PROFIT_AND_LOSS.getCode())){
extracted(amount, userAssets);
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TRANSFER.getCode())){
- userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ if (amount.compareTo(BigDecimal.ZERO) > 0) { //转换加钱,先补待补资金
+ if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+ BigDecimal availableBalance = amount.subtract(userAssets.getAmountToBeCovered());
+ availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
+ if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
+ userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+ userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+ }else{
+ BigDecimal subtract = amount.subtract(userAssets.getHandlingChargeWritten());
+ if(subtract.compareTo(BigDecimal.ZERO) >= 0) {
+ BigDecimal decimal = amount.subtract(userAssets.getAmountToBeCovered());
+ decimal = decimal.subtract(userAssets.getHandlingChargeWritten());
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.subtract(userAssets.getHandlingChargeWritten())));
+ userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+ userAssets.setAmountToBeCovered(decimal.negate());
+ }else{
+ userAssets.setHandlingChargeWritten(userAssets.getHandlingChargeWritten().subtract(amount));
+ }
+ }
+ }else{
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ }
+ } else { //扣钱
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ }
eUserAssets.setDesc(desc);
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TOP_UP.getCode())){
if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
@@ -284,12 +320,22 @@
userAssets.setCumulativeProfitAndLoss(userAssets.getCumulativeProfitAndLoss().add(amount));
}
extracted(userAssets);
+ }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.PENDING_ORDER_FREEZE.getCode())){
+ // 挂单冻结资金:从可用余额转到冻结金额
+ // amount 是负数,表示扣除
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.negate()));
+ }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.PENDING_ORDER_UNFREEZE.getCode())){
+ // 取消挂单解冻资金:从冻结金额转回可用余额
+ // amount 是正数,表示增加
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
}
- if(null != userPosition){
+ /*if(null != userPosition){
userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
userPositionMapper.updateById(userPosition);
- }
+ }*/
String after = userAssets.getAvailableBalance().toString();
MoneyLog moneyLog = new MoneyLog();
moneyLog.setDescs(eUserAssets.getDesc());
@@ -395,8 +441,8 @@
@Override
public BigDecimal exchangeAmountByRate(String fromType, String toType, BigDecimal amount) throws Exception {
- EStockType stockType = EStockType.getEStockTypeByCode(fromType);
- EStockType toStockType = EStockType.getEStockTypeByCode(toType);
+ EStockType stockType = EStockType.getEStockTypeBySymbol(fromType);
+ EStockType toStockType = EStockType.getEStockTypeBySymbol(toType);
ExchangeRate exchangeRate = exchangeRateRepository.findExchangeRateByCurrencyAndConversionCurrency(
stockType.getSymbol(), toStockType.getSymbol()).orElse(null);
if (exchangeRate != null) {
--
Gitblit v1.9.3