From c8b1fc4dd96f24215cb5ed633a5b5c59c405f910 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 29 Oct 2024 22:40:40 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
index 567c498..452d5b9 100644
--- a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
@@ -72,7 +72,7 @@
     UserAssetsMapper userAssetsMapper;
 
     @Override
-    public ServerResponse addOrder(String stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, BigDecimal targetPrice, HttpServletRequest request) {
+    public ServerResponse addOrder(String stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, BigDecimal targetPrice,HttpServletRequest request) {
         User user = this.iUserService.getCurrentRefreshUser(request);
 
         if (user == null) {
@@ -87,12 +87,20 @@
             return ServerResponse.createByErrorMsg("The pending order failed because the purchased quantity was greater than" + siteSetting
                     .getBuyMaxNum() + "stocks",request);
         }
-
+        Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<>(Stock.class).eq(Stock::getStockCode, stockId));
         UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                 .eq(UserAssets::getUserId, user.getId())
-                .eq(UserAssets::getAccectType, "JP")
+                .eq(UserAssets::getAccectType, stock.getStockType())
         );
+
         BigDecimal amount = new BigDecimal(buyNum).multiply(targetPrice).setScale(5, RoundingMode.DOWN);
+        if (userAssets.getAvailableBalance().compareTo(amount) < 0) {
+            return ServerResponse.createByErrorMsg("订单失败,余额不足", request);
+        }
+        if(buyNum<siteSetting.getBuyMinNum()){
+            return ServerResponse.createByErrorMsg("最低购买数量"+siteSetting.getBuyMinNum(), request);
+        }
+
         userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount.negate()));
         userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
         userAssetsMapper.updateById(userAssets);
@@ -110,6 +118,7 @@
         userPendingorder.setTargetPrice(targetPrice);
         userPendingorder.setAddTime(new Date());
         userPendingorder.setStatus(0);
+        userPendingorder.setAssetsType(stock.getStockType());
         int ret = userPendingorderMapper.insert(userPendingorder);
         if (ret > 0) {
             String lang = request.getHeader("lang");
@@ -125,7 +134,7 @@
     }
 
     @Override
-    public ServerResponse orderList(HttpServletRequest request) {
+    public ServerResponse orderList(String stockType,HttpServletRequest request) {
 
         String property = PropertiesUtil.getProperty("user.cookie.name");
         String header = request.getHeader(property);
@@ -135,7 +144,10 @@
             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()).ne("status",1));
+                List<UserPendingorder> userPendingorders = userPendingorderMapper.selectList(new QueryWrapper<UserPendingorder>()
+                        .eq("user_id", user.getId())
+                        .eq("assets_type",stockType)
+                        .ne("status",1));
 
                 List UserPendingorderList = new ArrayList();
 
@@ -322,7 +334,7 @@
             if (delCount > 0) {
                 UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                         .eq(UserAssets::getUserId, user.getId())
-                        .eq(UserAssets::getAccectType, "JP")
+                        .eq(UserAssets::getAccectType, userPendingorder.getAssetsType())
                 );
                 BigDecimal amount = new BigDecimal(userPendingorder.getBuyNum()).multiply(userPendingorder.getTargetPrice()).setScale(5, RoundingMode.DOWN);
                 userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));

--
Gitblit v1.9.3