From e0256316b31ded9be3bc0f978391dc9aaee21a45 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 04 Sep 2024 17:28:14 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java | 130 ++++++++++++++++++++++++++++--------------
1 files changed, 86 insertions(+), 44 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
index ef7c355..3f8c738 100644
--- a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
@@ -1,10 +1,12 @@
package com.nq.service.impl;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,6 +14,7 @@
import com.github.pagehelper.PageInfo;
import com.nq.common.ServerResponse;
import com.nq.dao.*;
+import com.nq.enums.EStockType;
import com.nq.pojo.*;
import com.nq.service.*;
import com.nq.utils.timeutil.DateTimeUtil;
@@ -65,6 +68,8 @@
private ISiteSettingService iSiteSettingService;
@Autowired
private UserPositionMapper userPositionMapper;
+ @Autowired
+ UserAssetsMapper userAssetsMapper;
@Override
public ServerResponse addOrder(String stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, BigDecimal targetPrice, HttpServletRequest request) {
@@ -82,18 +87,23 @@
return ServerResponse.createByErrorMsg("The pending order failed because the purchased quantity was greater than" + siteSetting
.getBuyMaxNum() + "stocks",request);
}
-// UserPendingorder userPendingorder = userPendingorderMapper.selectOne(new QueryWrapper<UserPendingorder>().eq("user_id", user.getId()).eq("stock_id", stockId).eq("status", 0));
-// if (userPendingorder != null) {
-// String lang = request.getHeader("lang");
-// if(lang.equals("ja")){
-// String msg = "繰り返しの送信はご遠慮ください";
-// return ServerResponse.createByErrorMsg(msg);
-// }else{
-// return ServerResponse.createByErrorMsg("Please do not repeat the order",request);
-// }
-// }
+
+ UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
+ .eq(UserAssets::getUserId, user.getId())
+ .eq(UserAssets::getAccectType, "JP")
+ );
+
+ BigDecimal amount = new BigDecimal(buyNum).multiply(targetPrice).setScale(5, RoundingMode.DOWN);
+ if (userAssets.getAvailableBalance().compareTo(amount) < 0) {
+ return ServerResponse.createByErrorMsg("订单失败,余额不足", request);
+ }
+
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount.negate()));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
+ userAssetsMapper.updateById(userAssets);
UserPendingorder userPendingorder = new UserPendingorder();
+ userPendingorder = new UserPendingorder();
userPendingorder.setUserId(user.getId());
userPendingorder.setStockId(stockId);
userPendingorder.setBuyNum(buyNum);
@@ -130,7 +140,7 @@
User user = (User) JsonUtil.string2Obj(userJson, User.class);
// log.info("user:{}",user);
if (user != null) {
- List<UserPendingorder> userPendingorders = userPendingorderMapper.selectList(new QueryWrapper<UserPendingorder>().eq("user_id", user.getId()));
+ List<UserPendingorder> userPendingorders = userPendingorderMapper.selectList(new QueryWrapper<UserPendingorder>().eq("user_id", user.getId()).ne("status",1));
List UserPendingorderList = new ArrayList();
@@ -236,7 +246,7 @@
int ret = userPendingorder.getBuyType().intValue() == 0 ? userPendingorder.getTargetPrice().compareTo(new BigDecimal(nowPrice)) : new BigDecimal(nowPrice).compareTo(userPendingorder.getTargetPrice());
//当前时间String
String buyTime = DateTimeUtil.dateToStr(new Date());
- if (ret <= 0) {
+ if (ret == 0) {
if (code != null && !"".equals(code)) {
try {
this.iUserPositionService.create(userPendingorder.getUserId(), code, nowPrice, buyTime, userPendingorder.getBuyNum(), userPendingorder.getBuyType(), userPendingorder.getLever(), userPendingorder.getProfitTarget(), userPendingorder.getStopTarget());
@@ -315,6 +325,14 @@
}
int delCount = this.userPendingorderMapper.deleteById(id);
if (delCount > 0) {
+ UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
+ .eq(UserAssets::getUserId, user.getId())
+ .eq(UserAssets::getAccectType, "JP")
+ );
+ BigDecimal amount = new BigDecimal(userPendingorder.getBuyNum()).multiply(userPendingorder.getTargetPrice()).setScale(5, RoundingMode.DOWN);
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.negate()));
+ userAssetsMapper.updateById(userAssets);
return ServerResponse.createByErrorMsg("Successfully deleted",request);
}
return ServerResponse.createByErrorMsg("Deletion failure",request);
@@ -325,9 +343,10 @@
@Override
- public ServerResponse orderListByAdmin(int pageNum, int pageSize, String keywords, String status, HttpServletRequest request) {
+ public ServerResponse orderListByAdmin(int pageNum, int pageSize, String keywords, Integer status, HttpServletRequest request) {
PageHelper.startPage(pageNum, pageSize);
QueryWrapper<UserPendingorder> queryWrapper = new QueryWrapper();
+ queryWrapper.eq("buy_type",0);
if (keywords != null && !keywords.equals("")) {
queryWrapper.like("stock_id", keywords).or().like("user_id", keywords);
}
@@ -339,42 +358,37 @@
List UserPendingorderList = new ArrayList();
for (UserPendingorder userPendingorder : stockSubscribeList) {
UserPendingorderVO userPendingorderVO = new UserPendingorderVO();
- //挂单-指数
- if (userPendingorder.getStockId().contains("sh") || userPendingorder.getStockId().contains("sz") || userPendingorder.getStockId().contains("hk") || userPendingorder.getStockId().contains("us")) {
- StockIndex model = stockIndexMapper.selectIndexByCode(userPendingorder.getStockId().replace("sh", "").replace("sz", "").replace("hk", "").replace("us", ""));
-
- MarketVO marketVO = this.iStockIndexService.querySingleIndex(model.getIndexGid());
- userPendingorderVO.setNowPrice(new BigDecimal(marketVO.getNowPrice()));
- userPendingorderVO.setStockName(model.getIndexName());
- userPendingorderVO.setStockId(model.getIndexGid());
-
+ //挂单-股票
+ Stock stock = stockMapper.findStockByCode(userPendingorder.getStockId());
+ StockListVO stockListVO = new StockListVO();
+ if (stock.getStockType().equals("hk")) {
+ String hk = RedisShardedPoolUtils.get(stock.getStockGid(), 1);
+ stockListVO = StockApi.otherStockListVO(hk);
+ } else if (stock.getStockType().equals("us")) {
+ String us = RedisShardedPoolUtils.get(stock.getStockGid(), 2);
+ stockListVO = StockApi.otherStockListVO(us);
} else {
- //挂单-股票
- Stock stock = stockMapper.findStockByCode(userPendingorder.getStockId());
- StockListVO stockListVO = new StockListVO();
- if (stock.getStockType().equals("hk")) {
- String hk = RedisShardedPoolUtils.get(stock.getStockGid(), 1);
- stockListVO = StockApi.otherStockListVO(hk);
- } else if (stock.getStockType().equals("us")) {
- String us = RedisShardedPoolUtils.get(stock.getStockGid(), 2);
- stockListVO = StockApi.otherStockListVO(us);
- } else {
- stockListVO = StockApi.getStockRealTime(
- stock);
- }
- String nowPrice = stockListVO.getNowPrice();
- if (nowPrice == null) {
- nowPrice = String.valueOf(0);
- }
- userPendingorderVO.setNowPrice(new BigDecimal(nowPrice));
- userPendingorderVO.setStockName(stock.getStockName());
- userPendingorderVO.setStockId(stock.getStockCode());
+ stockListVO = StockApi.getStockRealTime(
+ stock);
}
+ String nowPrice = stockListVO.getNowPrice();
+ if (nowPrice == null) {
+ nowPrice = String.valueOf(0);
+ }
+ userPendingorderVO.setUserId(userPendingorder.getUserId());
+ userPendingorderVO.setNowPrice(new BigDecimal(nowPrice));
+ userPendingorderVO.setStockName(stock.getStockName());
+ userPendingorderVO.setStockId(stock.getStockCode());
userPendingorderVO.setBuyNum(userPendingorder.getBuyNum());
userPendingorderVO.setBuyType(userPendingorder.getBuyType());
userPendingorderVO.setLever(userPendingorder.getLever());
- userPendingorderVO.setProfitTarget(userPendingorder.getProfitTarget());
- userPendingorderVO.setStopTarget(userPendingorder.getStopTarget());
+ if(null != userPendingorder.getProfitTarget()){
+ userPendingorderVO.setProfitTarget(userPendingorder.getProfitTarget());
+ }
+ if(null != userPendingorder.getStopTarget()){
+ userPendingorderVO.setStopTarget(userPendingorder.getStopTarget());
+ }
+
userPendingorderVO.setTargetPrice(userPendingorder.getTargetPrice());
userPendingorderVO.setAddTime(userPendingorder.getAddTime());
userPendingorderVO.setStatus(userPendingorder.getStatus());
@@ -442,6 +456,34 @@
}
return ServerResponse.createByErrorMsg("删除失败");
}
+
+ @Override
+ public ServerResponse examine(Integer id) {
+
+ try{
+ UserPendingorder userPendingorder = getById(id);
+ if(null != userPendingorder && userPendingorder.getStatus() != 0){
+ return ServerResponse.createByErrorMsg("当前状态无法操作");
+ }
+ userPendingorder.setStatus(1);
+ SiteTaskLog siteTaskLog = new SiteTaskLog();
+ siteTaskLog.setTaskType("股票挂单转持仓");
+ String tasktarget = "此次挂单买入id:" + userPendingorder.getId();
+ siteTaskLog.setTaskTarget(tasktarget);
+ siteTaskLog.setAddTime(new Date());
+ siteTaskLog.setIsSuccess(0);
+ siteTaskLog.setErrorMsg("");
+ this.userPendingorderMapper.updateById(userPendingorder);
+ this.siteTaskLogMapper.insert(siteTaskLog);
+ //当前时间String
+ String buyTime = DateTimeUtil.dateToStr(new Date());
+ this.iUserPositionService.create(userPendingorder.getUserId(), userPendingorder.getStockId(), String.valueOf(userPendingorder.getTargetPrice()), buyTime, userPendingorder.getBuyNum(), userPendingorder.getBuyType(), userPendingorder.getLever(), userPendingorder.getProfitTarget(), userPendingorder.getStopTarget());
+ return ServerResponse.createBySuccessMsg("审核成功,挂单已转持仓");
+ }catch (Exception e){
+ log.error("挂单失败");
+ }
+ return ServerResponse.createByErrorMsg("操作失败");
+ }
}
--
Gitblit v1.9.3