From 88db0094dae7ed1b4be1ee11194b1aef6e5d69c9 Mon Sep 17 00:00:00 2001
From: dd <gitluke@outlook.com>
Date: Tue, 10 Feb 2026 10:25:15 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserAssetsServices.java | 103 +++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 83 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 239a16e..b4665b5 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -10,6 +10,7 @@
import com.nq.pojo.*;
import com.nq.service.IUserAssetsServices;
import com.nq.utils.KeyUtils;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -23,6 +24,7 @@
/**
* 用户资产
*/
+@Slf4j
@Service
public class UserAssetsServices implements IUserAssetsServices {
@@ -49,9 +51,6 @@
@Override
public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
- if(accetType.equals("SZHB")){
- accetType = "US";
- }
QueryWrapper<UserAssets> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("accect_type",accetType);
queryWrapper.eq("user_id",userId);
@@ -85,19 +84,24 @@
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){
@@ -157,9 +161,6 @@
@Override
public BigDecimal getAvailableBalance(String accetType, Integer userId) {
- if(accetType.equals("SZHB")){
- accetType = "US";
- }
return assetsByTypeAndUserId(accetType,userId).getAvailableBalance();
}
@@ -168,7 +169,7 @@
public Boolean availablebalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, String desc, String descType) {
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();
String accectType = userAssets.getAccectType();
@@ -183,10 +184,15 @@
BigDecimal availableBalance = amount.subtract(userAssets.getAmountToBeCovered());
availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
+ //冻结 扣除的已补金额
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
+
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
userAssets.setAmountToBeCovered(BigDecimal.ZERO);
userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
}else{
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
+
BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
userAssets.setAmountToBeCovered(amountToBeCovered);
}
@@ -205,13 +211,20 @@
availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
- userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()).add(userAssets.getHandlingCharge()));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
userAssets.setAmountToBeCovered(BigDecimal.ZERO);
userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
}else{
- BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
- userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(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.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));
@@ -238,8 +251,58 @@
extracted(userAssets);
}
+// 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());
+ moneyLog.setBeFore(before);
+ moneyLog.setAfter(after);
+ moneyLog.setAmount(amount.toString());
+ moneyLog.setAccectType(accectType);
+ moneyLog.setType(eUserAssets.getCode());
+ moneyLog.setUserId(userId+"");
+ moneyLog.setSymbol(EStockType.getEStockTypeByCode(accetType).getSymbol());
+ moneyLog.setCreateTime(new Date());
+ moneyLogMapper.insert(moneyLog);
+ return userAssetsMapper.updateById(userAssets)>1;
+ }
+
+ //平仓返回保证金
+ @Override
+ public Boolean availablebalanceSell(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, BigDecimal fzAmount) {
+
+ UserAssets userAssets = assetsByTypeAndUserId(accetType,userId);
+ UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
+ String before = userAssets.getAvailableBalance().toString();
+ String accectType = userAssets.getAccectType();
+ if(Objects.equals(eUserAssets.getCode(), EUserAssets.CLOSE_POSITION_RETURN_SECURITY_DEPOSIT.getCode())){
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(fzAmount));
+ 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.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
+
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
+ userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+ userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+ }else{
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
+
+ BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
+ userAssets.setAmountToBeCovered(amountToBeCovered);
+ }
+ }else{
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ }
+ }
+
if(null != userPosition){
- userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered());
+ userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
userPositionMapper.updateById(userPosition);
}
String after = userAssets.getAvailableBalance().toString();
--
Gitblit v1.9.3