zyy
2025-08-19 37718a7da832ddc0ac662280e4b44f28975f77ee
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -105,6 +105,16 @@
                    // 申请数量为空时返回错误信息
                    return ServerResponse.createByErrorMsg("申请数量不能为空", request);
                }
                //杠杆倍数 优先用户输入
                int lever;
                if (model.getLever() != null && model.getLever().intValue() > 0) {
                    lever = model.getLever().intValue();
                } else {
                    lever = stockSubscribe.getLever().intValue();
                }
                model.setApplyNums(model.getApplyNums() * lever);
                if(model.getApplyNums() < stockSubscribe.getMinNumber() ){
                    return ServerResponse.createByErrorMsg("最少申购:" + stockSubscribe.getMinNumber(), request);
                }
@@ -126,16 +136,14 @@
                }
//            //重复申购限制
                Long count = userStockSubscribeMapper.selectCount(new QueryWrapper<UserStockSubscribe>().eq(
                /*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);
                }
                model.setApplyNums((int) (model.getApplyNums()*stockSubscribe.getLever()));
                //计算申购金额
                BigDecimal bound;
@@ -144,10 +152,10 @@
                }else{
                    bound =  new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice());
                }
                //如果不是墨西哥币需要转换金额
                if (!stockSubscribe.getStockType().equals(EStockType.MX.getCode())) {
                /*//如果不是默认货币需要转换金额
                if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
                    bound = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), bound);
                }
                }*/
                if(userAssets.getAvailableBalance().compareTo(bound) < 0){
                    return ServerResponse.createByErrorMsg("账户余额不足", request);
                }
@@ -179,17 +187,17 @@
                        userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(subtract.abs()));
                    }
                    userAssetsMapper.updateById(userAssets);
                    //交易记录MEX
                    //交易记录
                    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(EStockType.MX.getCode());
                    moneyLog.setAccectType(stockSubscribe.getStockType());
                    moneyLog.setType(eUserAssets.getCode());
                    moneyLog.setUserId(user.getId()+"");
                    moneyLog.setSymbol(EStockType.MX.getSymbol());
                    moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
                    moneyLog.setCreateTime(new Date());
                    moneyLogMapper.insert(moneyLog);
                    if (ret > 0) {
@@ -287,20 +295,20 @@
                            if(applyNumber > 0){
                                //需要退回的资金
                                refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
                                //如果不是墨西哥币需要转换金额
                                if (!stockSubscribe.getStockType().equals(EStockType.MX.getCode())) {
                                /*//如果不是默认货币需要转换金额
                                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.MX.getCode())) {
                                /*//如果不是默认货币需要转换金额
                                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));
@@ -319,10 +327,10 @@
                            moneyLog.setBeFore(before);
                            moneyLog.setAfter(userAssets.getAvailableBalance().toString());
                            moneyLog.setAmount(refundPrice.toString());
                            moneyLog.setAccectType(EStockType.MX.getCode());
                            moneyLog.setAccectType(stockSubscribe.getStockType());
                            moneyLog.setType(eUserAssets.getCode());
                            moneyLog.setUserId(userAssets.getUserId()+"");
                            moneyLog.setSymbol(EStockType.MX.getSymbol());
                            moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
                            moneyLog.setCreateTime(new Date());
                            moneyLogMapper.insert(moneyLog);
                        }