1
zj
2024-10-01 c8ca3dc63582b2a8a8e9454a745682548bcda453
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -101,9 +101,6 @@
            if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
                return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
            }
            if(userAssets.getAvailableBalance().compareTo(BigDecimal.ZERO) <= 0){
                return ServerResponse.createByErrorMsg("账户余额不足", request);
            }
            if ( model.getApplyNums() == null){
                // 申请数量为空时返回错误信息
@@ -114,6 +111,11 @@
            }
            if (model.getApplyNums() > stockSubscribe.getOrderNumber()){
                return ServerResponse.createByErrorMsg("最多可申购:" + stockSubscribe.getOrderNumber(), request);
            }
            BigDecimal sumPrice = stockSubscribe.getPrice().multiply(new BigDecimal(model.getApplyNums()));
            if(userAssets.getAvailableBalance().compareTo(sumPrice) < 0){
                return ServerResponse.createByErrorMsg("账户余额不足", request);
            }
            Date currentDate = new Date();
@@ -246,6 +248,7 @@
            if(model.getStatus() == 3 && model.getApplyNumber()>userStockSubscribe.getApplyNums()){
                return  ServerResponse.createByErrorMsg("配置中签数量不能超过申请数量",request);
            }
            //客户中签直接扣除客户账户可用资金
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", userStockSubscribe.getUserId());
            if (model.getStatus() == 3 && model.getApplyNumber() != null){
@@ -260,13 +263,13 @@
                    if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) <= 0){
                        if(applyNumber > 0){
                            //需要退回的资金
                            BigDecimal refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(stockSubscribe.getLever())).multiply(new BigDecimal(applyNumber));
                            BigDecimal refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
                            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(refundPrice));
                            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(refundPrice));
                        }
                    }else{
                        if(applyNumber > 0){
                            BigDecimal refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(stockSubscribe.getLever())).multiply(new BigDecimal(applyNumber));
                            BigDecimal refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
                            BigDecimal subtract = refundPrice.subtract(userAssets.getAmountToBeCovered());
                            if(subtract.compareTo(BigDecimal.ZERO) <= 0){//如果退回的资金不足补足待补则直接减
                                userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().subtract(refundPrice));
@@ -277,8 +280,10 @@
                            }
                        }
                    }
                    userAssetsMapper.updateById(userAssets);
                    ret = userStockSubscribeMapper.update1(model);
                    iUserPositionService.newStockToPosition(model.getId(),userAssets.getAmountToBeCovered());//转持仓
                    model.setStatus(5);
                    userAssetsMapper.updateById(userAssets);
                }else{
                    if(model.getApplyNumber()>model.getApplyNums()){
                        return  ServerResponse.createByErrorMsg("配置中签数量不能超过申请数量",request);
@@ -293,7 +298,7 @@
                    ret = userStockSubscribeMapper.update1(model);
                }
            }else if (model.getStatus() == 2){
                BigDecimal bond = (stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNums())).multiply(new BigDecimal(stockSubscribe.getLever().toString()));
                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));
@@ -301,7 +306,7 @@
                userAssetsMapper.updateById(userAssets);
                ret = userStockSubscribeMapper.update1(model);
            }else if (model.getStatus() == 5){
                    return iUserPositionService.newStockToPosition(model.getId());
                    return iUserPositionService.newStockToPosition(model.getId(),BigDecimal.ZERO);
            }
                if(ret>0 && model.getStatus() == 3 ){