| | |
| | | stockAIOrder.setRealEarning(BigDecimal.valueOf(0)); |
| | | stockAIOrder.setStatus(EStockAIOrderStatus.wait.getStatus()); //等待审核 |
| | | stockAiOrderMapper.insert(stockAIOrder); |
| | | iUserAssetsServices.aiAvailableBalanceChange(userAssets, EUserAssets.BUY_AI, buyNum); |
| | | iUserAssetsServices.aiAvailableBalanceChange(userAssets, EUserAssets.BUY_AI, buyNum, null); |
| | | return ServerResponse.createBySuccessMsg("下单成功"); |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | if (stockAIOrder.getRemainAmount().compareTo(remainAmount) < 0) { |
| | | return ServerResponse.createByErrorMsg("剩余买入金额不足"); |
| | | } |
| | | stockAIOrder.setRemainAmount(stockAIOrder.getBuyAmount().subtract(remainAmount)); |
| | | stockAIOrder.setRemainAmount(stockAIOrder.getRemainAmount().subtract(remainAmount)); |
| | | |
| | | //计算收益 (平仓-建仓)*数量 |
| | | BigDecimal earnings = model.getCoverPrice().subtract(model.getStockPrice()).multiply(BigDecimal.valueOf(model.getStockNum())); |
| | | model.setCreatDate(new Date()); |
| | | model.setEarnings(earnings); |
| | | stockAIOrder.setRealEarning(stockAIOrder.getRealEarning().add(earnings)); |
| | | |
| | | //保存 |
| | | stockAiOrderMapper.updateById(stockAIOrder); |
| | | stockAiOrderPositionMapper.insert(model); |
| | |
| | | return ServerResponse.createByErrorMsg("只能拒绝待审核订单"); |
| | | } |
| | | //拒绝TODO 归还买入金额 |
| | | //获取用户账户 |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.MX.getCode(), stockAIOrder.getUserId()); |
| | | StockAI stockAI = stockAiMapper.selectById(stockAIOrder.getStockAiId()); |
| | | //买入金额 |
| | | BigDecimal buyNum = stockAIOrder.getBuyAmount(); |
| | |
| | | //转换为墨西哥币 |
| | | buyNum = iUserAssetsServices.exchangeAmountByRate(buyNum, exchangeRate.getRata()); |
| | | } |
| | | iUserAssetsServices.aiAvailableBalanceChange(userAssets, EUserAssets.BUY_AI_REJECT, buyNum); |
| | | //获取用户账户 |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.MX.getCode(), stockAIOrder.getUserId()); |
| | | iUserAssetsServices.aiAvailableBalanceChange(userAssets, EUserAssets.BUY_AI_REJECT, buyNum, null); |
| | | } else if (status.equals(EStockAIOrderStatus.finished.getStatus())) { |
| | | if (!stockAIOrder.getStatus().equals(EStockAIOrderStatus.passed.getStatus())) { |
| | | return ServerResponse.createByErrorMsg("只能结算申请通过订单"); |
| | | } |
| | | //结算 TODO结算建仓 计算收益 |
| | | //所有建仓 |
| | | /*//所有建仓 |
| | | List<StockAIOrderPosition> stockAIOrderPositionList = stockAiOrderPositionMapper |
| | | .selectList(new QueryWrapper<StockAIOrderPosition>() |
| | | .eq("stock_ai_order_id", id)); |
| | |
| | | .filter(Objects::nonNull) // 过滤 null 值 |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加 |
| | | amount = amount.add(earningsSUM); |
| | | }*/ |
| | | StockAI stockAI = stockAiMapper.selectById(stockAIOrder.getStockAiId()); |
| | | //收益 |
| | | BigDecimal amount = stockAIOrder.getBuyAmount().add(stockAIOrder.getRealEarning()); |
| | | //需要解冻金额 |
| | | BigDecimal buyAmount = stockAIOrder.getBuyAmount(); |
| | | //如果不是墨西哥币需要转换金额 |
| | | if (!stockAI.getStockType().equals(EStockType.MX.getCode())) { |
| | | EStockType stockType = EStockType.getEStockTypeByCode(stockAI.getStockType()); |
| | | ExchangeRate exchangeRate = exchangeRateRepository.findExchangeRateByCurrencyAndConversionCurrency(stockType.getSymbol(), EStockType.MX.getSymbol()) |
| | | .orElse(null); |
| | | if (exchangeRate == null) { |
| | | return ServerResponse.createByErrorMsg("请先设置当前货币汇率"); |
| | | } |
| | | //转换为墨西哥币 |
| | | amount = iUserAssetsServices.exchangeAmountByRate(amount, exchangeRate.getRata()); |
| | | buyAmount = iUserAssetsServices.exchangeAmountByRate(buyAmount, exchangeRate.getRata()); |
| | | } |
| | | //获取用户账户 |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.MX.getCode(), stockAIOrder.getUserId()); |
| | | iUserAssetsServices.aiAvailableBalanceChange(userAssets, EUserAssets.AI_SETTLEMENT, amount); |
| | | iUserAssetsServices.aiAvailableBalanceChange(userAssets, EUserAssets.AI_SETTLEMENT, amount, buyAmount); |
| | | } |
| | | stockAIOrder.setStatus(status); |
| | | stockAIOrder.setAuditDate(new Date()); |