From e64cc04da1568aff094c687fa18682b8d435f0b1 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 08 Oct 2024 20:07:36 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java | 12 ++++++------
src/main/java/com/nq/service/impl/UserAssetsServices.java | 16 ++++++++++++----
src/main/java/com/nq/pojo/UserAssets.java | 3 +++
src/main/java/com/nq/enums/EUserAssets.java | 1 -
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 5 ++++-
src/main/java/com/nq/service/impl/UserServiceImpl.java | 4 ++--
6 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/nq/enums/EUserAssets.java b/src/main/java/com/nq/enums/EUserAssets.java
index 20a9382..4036884 100644
--- a/src/main/java/com/nq/enums/EUserAssets.java
+++ b/src/main/java/com/nq/enums/EUserAssets.java
@@ -8,7 +8,6 @@
HANDLING_CHARGE("HANDLING_CHARGE","手续费"),
- NEW_HANDLING_CHARGE("NEW_HANDLING_CHARGE","新股手续费"),
CALCULATE_PROFIT_AND_LOSS("CALCULATE_PROFIT_AND_LOSS","计算盈亏"),
CLOSE_POSITION_RETURN_SECURITY_DEPOSIT("CLOSE_POSITION_RETURN_SECURITY","平仓返回保证金"),
diff --git a/src/main/java/com/nq/pojo/UserAssets.java b/src/main/java/com/nq/pojo/UserAssets.java
index 2650c0c..c70df1b 100644
--- a/src/main/java/com/nq/pojo/UserAssets.java
+++ b/src/main/java/com/nq/pojo/UserAssets.java
@@ -48,6 +48,9 @@
// 冻结金额
private BigDecimal freezeMoney;
+ // 手续费欠款
+ private BigDecimal handlingChargeWritten;
+
// 累计盈亏 0 正 1 负
private Integer isZf;
}
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index cde2574..ceb0015 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -78,10 +78,12 @@
if(type.equals("0")){
if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
BigDecimal availableBalance = bigAmt.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);
if(null != userPosition){
userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered());
}
@@ -178,9 +180,11 @@
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CLOSE_POSITION_RETURN_SECURITY_DEPOSIT.getCode())){
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.setAmountToBeCovered(BigDecimal.ZERO);
+ userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
}else{
BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
userAssets.setAmountToBeCovered(amountToBeCovered);
@@ -197,10 +201,12 @@
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TOP_UP.getCode())){
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 amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
@@ -213,8 +219,13 @@
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.abs()));
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.HANDLING_CHARGE.getCode())){
+ if(userAssets.getAvailableBalance().compareTo(amount.abs()) >= 0){
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount.negate()));
+ }else {
+ userAssets.setHandlingChargeWritten(userAssets.getHandlingChargeWritten().add(amount.abs()));
+ }
userAssets.setHandlingCharge(userAssets.getHandlingCharge().add(amount.abs()));
- userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount.negate()));
+
extracted(amount.negate(),userAssets);
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CONSTRAINT_CLOSE_POSITION.getCode())){
userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
@@ -224,9 +235,6 @@
userAssets.setCumulativeProfitAndLoss(userAssets.getCumulativeProfitAndLoss().add(amount));
}
extracted(userAssets);
- }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.NEW_HANDLING_CHARGE.getCode())){
- userAssets.setHandlingCharge(userAssets.getHandlingCharge().add(amount.abs()));
- extracted(amount.negate(),userAssets);
}
if(null != userPosition){
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 2d81d03..71e4b52 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -1336,7 +1336,7 @@
return ServerResponse.createByErrorMsg("新股转持仓失败");
}
userAssetsMapper.updateById(userAssets);
- iUserAssetsServices.availablebalanceChange("IN", userAssets.getUserId(), EUserAssets.NEW_HANDLING_CHARGE, buy_fee_amt, "", "");
+ iUserAssetsServices.availablebalanceChange("IN", userAssets.getUserId(), EUserAssets.HANDLING_CHARGE, buy_fee_amt, "", "");
if (ret > 0) {
userStockSubscribe.setStatus(5);
userStockSubscribeMapper.update1(userStockSubscribe);
@@ -1675,7 +1675,10 @@
// 创建UserPosition对象
UserPosition userPosition = getUserPosition(dzId,num, user, stockDz, nowPrice, stock, buyAmt);
userPositionMapper.insert(userPosition);
+ BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.BUY_HANDLING_CHARGE.getCode()).getCValue()) ;
+ BigDecimal buy_fee_amt = siteSettingBuyFee.multiply(buyAmt);
userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
+ iUserAssetsServices.availablebalanceChange("IN", userAssets.getUserId(), EUserAssets.HANDLING_CHARGE, buy_fee_amt, "", "");
return ServerResponse.createBySuccess("购买成功", request);
}
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 03d92ad..3fef22f 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -522,7 +522,7 @@
rUserAssets.setHandlingCharge(hMoney.toString());
rUserAssets.setProfitAndLoss(profitAndLose.toString());
rUserAssets.setIsZf(userAssets.getIsZf());
- rUserAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().toString());
+ rUserAssets.setAmountToBeCovered((userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()).toString()));
BigDecimal rate = rateServices.currencyRate(
EStockType.getEStockTypeByCode(userAssets.getAccectType()),EStockType.US);
@@ -538,7 +538,7 @@
BigDecimal totleMoneyUSD = totalAssets;
if(totalAssets.compareTo(BigDecimal.ZERO)>0){
- totleMoneyUSD = totleMoneyUSD.multiply(rate);
+ totleMoneyUSD = totleMoneyUSD.multiply(rate).subtract(new BigDecimal(rUserAssets.getHandlingCharge()));
}
BigDecimal cumulativeProfitAndLossUSD = hProfitAndLose;
diff --git a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
index 90ddefa..a9f6262 100644
--- a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -127,11 +127,11 @@
}
// //重复申购限制
-// UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.selectOne(new QueryWrapper<UserStockSubscribe>().eq(
-// "new_code", model.getNewCode()).eq("user_id", user.getId()).eq("type",model.getType()));
-// if (userStockSubscribe != null) {
-// return ServerResponse.createByErrorMsg("请勿重复申请",request);
-// }
+ Long count = userStockSubscribeMapper.selectCount(new QueryWrapper<UserStockSubscribe>().eq(
+ "new_code", model.getNewCode()).eq("user_id", user.getId()).eq("type", model.getType()));
+ if (count > 0) {
+ return ServerResponse.createByErrorMsg("请勿重复申请",request);
+ }
if (siteProduct.getRealNameDisplay() && user.getIsLock().intValue() == 1) {
return ServerResponse.createByErrorMsg("订单失败,帐户已被锁定",request);
}
@@ -268,7 +268,7 @@
//需要退回的资金
BigDecimal refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(refundPrice));
- userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(refundPrice));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(refundPrice));
}
}else{
if(applyNumber > 0){
--
Gitblit v1.9.3