1
zj
2024-10-08 e64cc04da1568aff094c687fa18682b8d435f0b1
1
6 files modified
41 ■■■■■ changed files
src/main/java/com/nq/enums/EUserAssets.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/pojo/UserAssets.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserAssetsServices.java 16 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java 5 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java 12 ●●●● patch | view | raw | blame | history
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","平仓返回保证金"),
src/main/java/com/nq/pojo/UserAssets.java
@@ -48,6 +48,9 @@
    // 冻结金额
    private BigDecimal freezeMoney;
    // 手续费欠款
    private BigDecimal handlingChargeWritten;
    // 累计盈亏 0 正 1 负
    private Integer isZf;
}
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){
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);
    }
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;
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){