From decfc2ff7244cec365d3f32a5090edf5faeae861 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 23 Apr 2025 19:08:18 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 85 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 85 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index d9cb1b3..0022bfb 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -15,7 +15,9 @@
import com.google.common.collect.Lists;
import com.nq.common.ServerResponse;
import com.nq.utils.*;
+import com.nq.utils.redis.RedisKeyConstant;
import com.nq.utils.redis.RedisKeyUtil;
+import com.nq.utils.redis.RedisShardedPoolUtils;
import com.nq.utils.stock.BuyAndSellUtils;
import com.nq.utils.stock.GeneratePosition;
import com.nq.utils.stock.GetStayDays;
@@ -240,6 +242,89 @@
}
}
+ @Transactional
+ public ServerResponse goldCrudeOilbuy(String name, Integer buyNum, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, HttpServletRequest request) {
+
+ SiteProduct siteProduct = iSiteProductService.getProductSetting();
+
+ User user = this.iUserService.getCurrentRefreshUser(request);
+ synchronized (user.getId()){
+ if (siteProduct.getRealNameDisplay() && user.getIsActive() != 2) {
+ return ServerResponse.createByErrorMsg("订单失败,请先实名认证", request);
+ }
+ // 手续费率
+ BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.BUY_HANDLING_CHARGE.getCode()).getCValue()) ;
+
+ if (siteProduct.getRealNameDisplay() && user.getIsLock().intValue() == 1) {
+ return ServerResponse.createByErrorMsg("订单失败,帐户已被锁定", request);
+ }
+
+ String s = RedisShardedPoolUtils.get(name);
+ BigDecimal price = new BigDecimal(s);
+ if (price == null) {
+ return ServerResponse.createByErrorMsg("下单失败,请稍候再试!", request);
+ }
+
+
+ UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("USDT", user.getId());
+
+ if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+ return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
+ }
+
+ if (price.compareTo(new BigDecimal("0")) == 0) {
+ return ServerResponse.createByErrorMsg("报价0,请稍后再试", request);
+ }
+
+ BigDecimal buyAmt = price.multiply(new BigDecimal(buyNum)).divide(new BigDecimal(lever));
+ BigDecimal orderFree = siteSettingBuyFee.multiply(buyAmt);
+
+ BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
+ BigDecimal availableBalance = fundratio.multiply(userAssets.getAvailableBalance());
+ if (availableBalance.compareTo(buyAmt.add(orderFree)) < 0) {
+ return ServerResponse.createByErrorMsg("订单失败,配资不足", request);
+ }
+ UserPosition userPosition = new UserPosition();
+ if (profitTarget != null && profitTarget.compareTo(new BigDecimal("0")) > 0) {
+ userPosition.setProfitTargetPrice(profitTarget);
+ }
+ if (stopTarget != null && stopTarget.compareTo(new BigDecimal("0")) > 0) {
+ userPosition.setStopTargetPrice(stopTarget);
+ }
+ userPosition.setPositionType(user.getAccountType());
+ userPosition.setPositionSn(KeyUtils.getUniqueKey());
+ userPosition.setUserId(user.getId());
+ userPosition.setNickName(user.getRealName());
+ userPosition.setAgentId(user.getAgentId());
+ userPosition.setStockCode(name);
+ userPosition.setStockName(name);
+ userPosition.setStockGid(name);
+ userPosition.setStockSpell(name);
+ userPosition.setBuyOrderId(GeneratePosition.getPositionId());
+ userPosition.setBuyOrderTime(new Date());
+ userPosition.setBuyOrderPrice(price);
+ userPosition.setOrderDirection("买涨");
+ userPosition.setOrderNum(buyNum);
+ userPosition.setIsLock(Integer.valueOf(0));
+ userPosition.setOrderLever(lever);
+ userPosition.setOrderTotalPrice(buyAmt);
+ // 手续费
+
+ userPosition.setOrderFee(orderFree);
+ userPosition.setOrderSpread(BigDecimal.ZERO);
+ userPosition.setSpreadRatePrice(BigDecimal.ZERO);
+ BigDecimal profit_and_lose = new BigDecimal("0");
+ userPosition.setProfitAndLose(profit_and_lose);
+ userPosition.setAllProfitAndLose(profit_and_lose.add(orderFree));
+ userPosition.setOrderStayDays(Integer.valueOf(0));
+ userPosition.setOrderStayFee(BigDecimal.ZERO);
+ userPositionMapper.insert(userPosition);
+ iUserAssetsServices.availablebalanceChange("USDT", user.getId(), EUserAssets.BUY, buyAmt.negate(), "", "");
+ iUserAssetsServices.availablebalanceChange("USDT", user.getId(), EUserAssets.HANDLING_CHARGE, orderFree, "", "");
+ return ServerResponse.createBySuccessMsg("下单成功", request);
+ }
+ }
+
/**
* 用户修改止盈止损
--
Gitblit v1.9.3