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