From 76388afc59b66335dcf630e5ed30beccbe7aeb5b Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 28 Aug 2025 17:29:05 +0800
Subject: [PATCH] 新股修改
---
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java | 141 ++++++++++++++++++++++++++++-------------------
src/main/java/com/nq/service/impl/UserAssetsServices.java | 16 ++--
src/main/java/com/nq/service/impl/EchoServices.java | 4
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 2
src/main/java/com/nq/utils/UserPointUtil.java | 2
5 files changed, 96 insertions(+), 69 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/EchoServices.java b/src/main/java/com/nq/service/impl/EchoServices.java
index 14faec9..3aef24d 100644
--- a/src/main/java/com/nq/service/impl/EchoServices.java
+++ b/src/main/java/com/nq/service/impl/EchoServices.java
@@ -182,11 +182,11 @@
} else {
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(aml));
}
- 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()));
if(null != userPosition){
userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered());
userPositionMapper.updateById(userPosition);
- }
+ }*/
userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(money));
userAssetsMapper.updateById(userAssets);
orderEchoBean.setState("2");
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index eb2f2f3..990e06c 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -103,7 +103,7 @@
@Override
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")){
@@ -134,10 +134,10 @@
}else{
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
}
- if(null != userPosition){
+ /*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");
@@ -146,9 +146,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();
@@ -212,7 +212,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();
@@ -324,10 +324,10 @@
extracted(userAssets);
}
- 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());
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index a9db5bb..5533181 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -1473,7 +1473,7 @@
userPosition.setOrderStayDays(Integer.valueOf(0));
userPosition.setOrderStayFee(new BigDecimal("0"));
- userPosition.setAmountToBeCovered(amountToBeCovered);
+ //userPosition.setAmountToBeCovered(amountToBeCovered);
userPosition.setNewId(stockSubscribe.getNewlistId());
int ret = 0;
ret = this.userPositionMapper.insert(userPosition);
diff --git a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
index 7a624dc..0d3aeb4 100644
--- a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -157,7 +157,7 @@
}*/
//需要资金
- BigDecimal needBound;
+ /*BigDecimal needBound;
//杠杆账户只需初始数量资金
if (isLever) {
needBound = bound.divide(new BigDecimal(model.getLever()));
@@ -167,8 +167,8 @@
if(userAssets.getAvailableBalance().compareTo(needBound) < 0){
return ServerResponse.createByErrorMsg("账户余额不足", request);
}
+ String before = userAssets.getAvailableBalance().toString();*/
- String before = userAssets.getAvailableBalance().toString();
if(stockSubscribe.getType() == 1){
model.setUserId(user.getId());
model.setNewName(stockSubscribe.getName());
@@ -185,7 +185,7 @@
userStockSubscribe.setNewStockId(stockSubscribe.getNewlistId());
ret = userStockSubscribeMapper.insert(userStockSubscribe);
- BigDecimal subtract = userAssets.getAvailableBalance().subtract(bound);
+ /*BigDecimal subtract = userAssets.getAvailableBalance().subtract(bound);
if(subtract.compareTo(BigDecimal.ZERO) >= 0){
userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(bound));
userAssets.setAvailableBalance(subtract);
@@ -207,7 +207,7 @@
moneyLog.setUserId(user.getId()+"");
moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
moneyLog.setCreateTime(new Date());
- moneyLogMapper.insert(moneyLog);
+ moneyLogMapper.insert(moneyLog);*/
if (ret > 0) {
return ServerResponse.createBySuccessMsg("申购成功",request);
} else {
@@ -216,13 +216,13 @@
}else{
// BigDecimal bound;
-// if(stockSubscribe.getMinPrice() != null || stockSubscribe.getMinPrice().compareTo(BigDecimal.ZERO)<0){
+// if(stockSubscribe.getMinPrice() != null && stockSubscribe.getMinPrice().compareTo(BigDecimal.ZERO) > 0) {
// bound = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getMinPrice());
// }else{
// bound = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice());
// }
//
- BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.US.getCode(), user.getId());
+ BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(stockSubscribe.getStockType(), user.getId());
if(useEnaAmount.compareTo(bound)<0){
return ServerResponse.createByErrorMsg("余额不足,配售失败",request);
}
@@ -290,58 +290,84 @@
UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(stockSubscribe.getStockType(), userStockSubscribe.getUserId());
if (model.getStatus() == 3 && model.getApplyNumber() != null){
if(stockSubscribe.getType() == 1){
- model.setBond((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNumber())));
+ BigDecimal bound;
+ if(stockSubscribe.getMinPrice() != null && stockSubscribe.getMinPrice().compareTo(BigDecimal.ZERO) > 0) {
+ bound = new BigDecimal(model.getApplyNumber()).multiply(stockSubscribe.getMinPrice());
+ }else{
+ bound = new BigDecimal(model.getApplyNumber()).multiply(stockSubscribe.getPrice());
+ }
+ model.setBond(bound);
model.setDbMoney(model.getDbMoney());
if(null == userAssets){
return ServerResponse.createByErrorMsg("客户资金账户不存在");
}
- int applyNumber = userStockSubscribe.getApplyNums() - model.getApplyNumber();
- BigDecimal refundPrice = BigDecimal.ZERO;
String before = userAssets.getAvailableBalance().toString();
- if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) <= 0){
- if(applyNumber > 0){
- //需要退回的资金
- refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
- /*//如果不是默认货币需要转换金额
- if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
- refundPrice = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), refundPrice);
- }*/
- userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(refundPrice));
- userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(refundPrice));
- }
+ BigDecimal subtract = userAssets.getAvailableBalance().subtract(bound);
+ if(subtract.compareTo(BigDecimal.ZERO) >= 0){
+ userAssets.setAvailableBalance(subtract);
}else{
- if(applyNumber > 0){
- refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
- /*//如果不是默认货币需要转换金额
- if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
- refundPrice = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), refundPrice);
- }*/
- BigDecimal subtract = refundPrice.subtract(userAssets.getAmountToBeCovered());
- if(subtract.compareTo(BigDecimal.ZERO) <= 0){//如果退回的资金不足补足待补则直接减
- userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().subtract(refundPrice));
- }else{//如果退回的资金足够填补待补资金还有剩余,则返回余额
- userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(refundPrice).add(userAssets.getAmountToBeCovered()));
- userAssets.setAmountToBeCovered(BigDecimal.ZERO);
- userAssets.setAvailableBalance(subtract);
- }
- }
+ userAssets.setAvailableBalance(BigDecimal.ZERO);
+ userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(subtract.abs()));
}
- //如果退回资金 add交易记录MEX
- if (refundPrice.compareTo(BigDecimal.ZERO) > 0) {
- MoneyLog moneyLog = new MoneyLog();
- EUserAssets eUserAssets = EUserAssets.BUY_RT;
- moneyLog.setDescs(eUserAssets.getDesc());
- moneyLog.setBeFore(before);
- moneyLog.setAfter(userAssets.getAvailableBalance().toString());
- moneyLog.setAmount(refundPrice.toString());
- moneyLog.setAccectType(stockSubscribe.getStockType());
- moneyLog.setType(eUserAssets.getCode());
- moneyLog.setUserId(userAssets.getUserId()+"");
- moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
- moneyLog.setCreateTime(new Date());
- moneyLogMapper.insert(moneyLog);
- }
+ //交易记录
+ MoneyLog moneyLog = new MoneyLog();
+ EUserAssets eUserAssets = EUserAssets.BUY;
+ moneyLog.setDescs(eUserAssets.getDesc());
+ moneyLog.setBeFore(before);
+ moneyLog.setAfter(userAssets.getAvailableBalance().toString());
+ moneyLog.setAmount(bound.negate().toString());
+ moneyLog.setAccectType(stockSubscribe.getStockType());
+ moneyLog.setType(eUserAssets.getCode());
+ moneyLog.setUserId(userStockSubscribe.getUserId()+"");
+ moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
+ moneyLog.setCreateTime(new Date());
+ moneyLogMapper.insert(moneyLog);
+
+// BigDecimal refundPrice = BigDecimal.ZERO;
+// if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) <= 0){
+// if(applyNumber > 0){
+// //需要退回的资金
+// refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
+// /*//如果不是默认货币需要转换金额
+// if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
+// refundPrice = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), refundPrice);
+// }*/
+// userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(refundPrice));
+// userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(refundPrice));
+// }
+// }else{
+// if(applyNumber > 0){
+// refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
+// /*//如果不是默认货币需要转换金额
+// if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
+// refundPrice = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), refundPrice);
+// }*/
+// BigDecimal subtract = refundPrice.subtract(userAssets.getAmountToBeCovered());
+// if(subtract.compareTo(BigDecimal.ZERO) <= 0){//如果退回的资金不足补足待补则直接减
+// userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().subtract(refundPrice));
+// }else{//如果退回的资金足够填补待补资金还有剩余,则返回余额
+// userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(refundPrice).add(userAssets.getAmountToBeCovered()));
+// userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+// userAssets.setAvailableBalance(subtract);
+// }
+// }
+// }
+// //如果退回资金 add交易记录MEX
+// if (refundPrice.compareTo(BigDecimal.ZERO) > 0) {
+// MoneyLog moneyLog = new MoneyLog();
+// EUserAssets eUserAssets = EUserAssets.BUY_RT;
+// moneyLog.setDescs(eUserAssets.getDesc());
+// moneyLog.setBeFore(before);
+// moneyLog.setAfter(userAssets.getAvailableBalance().toString());
+// moneyLog.setAmount(refundPrice.toString());
+// moneyLog.setAccectType(stockSubscribe.getStockType());
+// moneyLog.setType(eUserAssets.getCode());
+// moneyLog.setUserId(userAssets.getUserId()+"");
+// moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
+// moneyLog.setCreateTime(new Date());
+// moneyLogMapper.insert(moneyLog);
+// }
ret = userStockSubscribeMapper.update1(model);
userAssetsMapper.updateById(userAssets);
iUserPositionService.newStockToPosition(model.getId(),userAssets.getAmountToBeCovered());//转持仓
@@ -360,16 +386,17 @@
ret = userStockSubscribeMapper.update1(model);
}
}else if (model.getStatus() == 2){
- BigDecimal bond = (stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNums()));
- BigDecimal subtractMoney = bond.subtract(userAssets.getAmountToBeCovered());//需要退回的钱
- userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(subtractMoney.abs()));
- userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(subtractMoney));
- userAssets.setAmountToBeCovered(BigDecimal.ZERO);
- userAssetsMapper.updateById(userAssets);
+ if(stockSubscribe.getType() == 2){ //配售退回资金
+ BigDecimal bond = (stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNums()));
+ BigDecimal subtractMoney = bond.subtract(userAssets.getAmountToBeCovered());//需要退回的钱
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(subtractMoney.abs()));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(subtractMoney));
+ userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+ userAssetsMapper.updateById(userAssets);
+ }
ret = userStockSubscribeMapper.update1(model);
}else if (model.getStatus() == 5){
return iUserPositionService.newStockToPosition(model.getId(),BigDecimal.ZERO);
-
}
if(ret>0 && model.getStatus() == 3 ){
//给用户推送消息
diff --git a/src/main/java/com/nq/utils/UserPointUtil.java b/src/main/java/com/nq/utils/UserPointUtil.java
index 2f4d8e7..ac1c628 100644
--- a/src/main/java/com/nq/utils/UserPointUtil.java
+++ b/src/main/java/com/nq/utils/UserPointUtil.java
@@ -63,7 +63,7 @@
}else{
userPositionVO.setNow_price(position.getSellOrderPrice().toString());
}
- userPositionVO.setAmountToBeCovered(position.getAmountToBeCovered());
+ //userPositionVO.setAmountToBeCovered(position.getAmountToBeCovered());
return userPositionVO;
}
--
Gitblit v1.9.3