From c0750bad4e7ab9acdef951d50f67cb488639b4de Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 10 Jul 2024 14:44:36 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 58 ++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 36 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 3503d21..b612ac6 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;
@@ -119,6 +122,8 @@
@Autowired
IStockConfigServices iStockConfigServices;
+
+
@Transactional
@@ -1196,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());
@@ -1253,6 +1260,7 @@
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);
@@ -1538,7 +1546,7 @@
* @return
*/
@Transactional
- public synchronized ServerResponse buyDz(String stockCode, String password, Integer num, HttpServletRequest request) throws Exception {
+ public ServerResponse buyDz(String stockCode, String password, Integer num, HttpServletRequest request) throws Exception {
/*实名认证开关开启*/
SiteProduct siteProduct = iSiteProductService.getProductSetting();
User user = this.iUserService.getCurrentRefreshUser(request);
@@ -1575,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());
@@ -1611,7 +1621,7 @@
userPosition.setOrderSpread(BigDecimal.ZERO);
userPositionMapper.insert(userPosition);
- userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
+ userAssetsServices.availablebalanceChange(EStockType.JP.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
return ServerResponse.createBySuccess("购买成功", request);
}
@@ -1629,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