From 0227f0e8daf1b021e3aed7bceb1895e04cb3bedc Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 05 Jun 2024 15:20:30 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 65 +++++++++++++++++++++-----------
1 files changed, 42 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 2d3e8c1..125b73e 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -37,6 +37,9 @@
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -57,6 +60,9 @@
@Autowired
IUserAssetsServices userAssetsServices;
+
+ @Autowired
+ UserAssetsMapper userAssetsMapper;
@Autowired
ISiteSettingService iSiteSettingService;
@@ -117,8 +123,8 @@
@Autowired
IStockConfigServices iStockConfigServices;
- @Autowired
- private UserAssetsMapper userAssetsMapper;
+
+
@Transactional
public ServerResponse buy(Integer stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, HttpServletRequest request) {
@@ -577,6 +583,8 @@
if (userPositions.size() > 0) {
for (UserPosition position : userPositions) {
UserPositionVO userPositionVO = UserPointUtil.assembleUserPositionVO(position, priceServices.getNowPrice(position.getStockCode()));
+ userPositionVO.setOrderTotalPrice(userPositionVO.getOrderTotalPrice().multiply(new BigDecimal(userPositionVO.getOrderLever())));
+ userPositionVO.setProfitAndLose(userPositionVO.getProfitAndLose().multiply(new BigDecimal(userPositionVO.getOrderLever())));
userPositionVOS.add(userPositionVO);
}
}
@@ -1193,8 +1201,10 @@
userPosition.setStockCode(stock.getStockCode());
userPosition.setStockSpell(stock.getStockSpell());
userPosition.setStockName(userStockSubscribe.getNewName());
- userPosition.setStockGid(stockSubscribe.getStockType() + userStockSubscribe.getNewCode());
-
+ StringBuffer gid = new StringBuffer();
+ gid.append(stockSubscribe.getStockType()!=null?stockSubscribe.getStockType():"");
+ gid.append(userStockSubscribe.getNewCode()!=null?userStockSubscribe.getNewCode():"stock code invaild");
+ userPosition.setStockGid(gid.toString());
userPosition.setBuyOrderId(GeneratePosition.getPositionId());
userPosition.setBuyOrderTime(new Date());
userPosition.setBuyOrderPrice(userStockSubscribe.getBuyPrice());
@@ -1206,7 +1216,7 @@
userPosition.setIsLock(Integer.valueOf(0));
- userPosition.setOrderLever(10);
+ userPosition.setOrderLever(1);
//递延费特殊处理
@@ -1250,6 +1260,8 @@
return ServerResponse.createByErrorMsg("新股转持仓失败");
}
userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userPosition.getOrderTotalPrice()));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney()!=null?userAssets.getFreezeMoney().setScale(2,BigDecimal.ROUND_UP):null);
+ userAssetsMapper.updateById(userAssets);
if (ret > 0) {
userStockSubscribe.setStatus(5);
userStockSubscribeMapper.update1(userStockSubscribe);
@@ -1538,6 +1550,7 @@
/*实名认证开关开启*/
SiteProduct siteProduct = iSiteProductService.getProductSetting();
User user = this.iUserService.getCurrentRefreshUser(request);
+
if (siteProduct.getRealNameDisplay() && user.getIsActive() != 2) {
return ServerResponse.createByErrorMsg("Order failed, please first real name authentication");
}
@@ -1570,11 +1583,13 @@
return ServerResponse.createByErrorMsg("最小购买数据" + stockDz.getStockNum(), request);
}
BigDecimal buyAmt = nowPrice.multiply(new BigDecimal(num.intValue()));
- BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
- BigDecimal availableBalance = fundratio.multiply(userAssets.getAvailableBalance());
+ BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
+ BigDecimal availableBalance = fundratio.multiply(userAssets.getAvailableBalance());
if (buyAmt.compareTo(availableBalance) > 0) {
return ServerResponse.createByErrorMsg("订单失败,配资不足", request);
}
+
+ // 创建UserPosition对象
UserPosition userPosition = new UserPosition();
userPosition.setPositionType(3);
userPosition.setPositionSn(KeyUtils.getUniqueKey());
@@ -1624,25 +1639,29 @@
@Override
@Transactional
public void stockConstraint(List<UserPosition> list) {
- SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
+ try {
+ SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
- for (UserPosition position : list) {
- UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
- .eq(UserAssets::getUserId, position.getUserId())
- .eq(UserAssets::getAccectType, "IN")
- );
- if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
- continue;
- }
- //平仓检查
- Result result = getResult(position);
- if (result == null) continue;
+ for (UserPosition position : list) {
+ UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
+ .eq(UserAssets::getUserId, position.getUserId())
+ .eq(UserAssets::getAccectType, "IN")
+ );
+ if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+ continue;
+ }
+ //平仓检查
+ Result result = getResult(position);
+ if (result == null) continue;
- Integer liquidation = 0;
- liquidation = isLiquidation(position, result.signum, result.profit, liquidation);
- if(liquidation != 0){
- extracted(position, result.nowPrice, result.stock,liquidation);
+ Integer liquidation = 0;
+ liquidation = isLiquidation(position, result.signum, result.profit, liquidation);
+ if(liquidation != 0){
+ extracted(position, result.nowPrice, result.stock,liquidation);
+ }
}
+ }catch (Exception e){
+ log.error("强制平仓--->错误",e);
}
}
--
Gitblit v1.9.3