From 69b5fdc593fa73424448df0c911c5177f7497e7c Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Mon, 01 Sep 2025 18:44:11 +0800
Subject: [PATCH] 停牌判断 新增申购记录

---
 trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java                   |   16 ++++++++
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java              |   19 +++++++++
 trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java           |    5 ++
 trading-order-bean/src/main/java/com/yami/trading/bean/ico/dto/UserSubscriptionDTO.java              |   20 ++++++++++
 trading-order-service/src/main/java/com/yami/trading/dao/ico/UserSubscriptionMapper.java             |    7 +++
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java     |    5 ++
 trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java |    3 +
 trading-order-service/src/main/java/com/yami/trading/service/ico/UserSubscriptionService.java        |   17 ++++++++
 trading-order-service/src/main/resources/mapper/ico/UserSubscriptionMapper.xml                       |    7 +++
 9 files changed, 99 insertions(+), 0 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java
index 1d3f217..95667f5 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java
@@ -4,6 +4,7 @@
 import com.yami.trading.bean.data.domain.Realtime;
 import com.yami.trading.bean.data.domain.Trade;
 import com.yami.trading.bean.item.domain.Item;
+import com.yami.trading.common.exception.YamiShopBindException;
 import com.yami.trading.common.util.Arith;
 import com.yami.trading.huobi.data.AdjustmentValueCache;
 import com.yami.trading.huobi.data.DataCache;
@@ -91,6 +92,10 @@
 			Item item = itemService.findBySymbol(symbol);
 			symbol = item.getSymbol();
 			item = this.itemService.findBySymbol(symbol);
+			//停牌时不更新
+			if (itemService.isSuspended(item)) {
+				return;
+			}
 			Double currentValue = AdjustmentValueCache.getCurrentValue().get(symbol).doubleValue();
 			double close = event.getTicker().getClose().doubleValue();
 			double vol = event.getTicker().getVol().doubleValue();
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
index 7781ed8..f30648e 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
@@ -137,6 +137,11 @@
         if (!itemService.isContractTrading(bySymbol)) {
             throw new YamiShopBindException("未开放合约交易");
         }
+        if (itemService.isSuspended(bySymbol)) {
+            throw new YamiShopBindException("停牌禁止交易");
+        }
+
+
         boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType());
         if(!isOpen){
             throw  new YamiShopBindException("当前已经休市");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java
index d22ec9b..3ed4081 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java
@@ -4,12 +4,15 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yami.trading.bean.ico.domain.Ico;
 import com.yami.trading.bean.ico.domain.UserSubscription;
+import com.yami.trading.bean.ico.dto.UserSubscriptionDTO;
+import com.yami.trading.bean.ico.query.IcoQuery;
 import com.yami.trading.bean.item.query.ItemQuery;
 import com.yami.trading.common.domain.Result;
 import com.yami.trading.common.exception.YamiShopBindException;
 import com.yami.trading.common.query.QueryWrapperGenerator;
 import com.yami.trading.security.common.util.SecurityUtils;
 import com.yami.trading.service.ico.IcoService;
+import com.yami.trading.service.ico.UserSubscriptionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -30,6 +33,9 @@
 
     @Autowired
     IcoService icoService;
+
+    @Autowired
+    UserSubscriptionService userSubscriptionService;
 
     @Autowired
     private RedissonClient redissonClient;
@@ -75,4 +81,17 @@
         }
     }
 
+    @ApiOperation(value = "新币申购记录列表")
+    @GetMapping("recordList")
+    public Result<Page<UserSubscriptionDTO>> recordList(IcoQuery icoQuery, Page<UserSubscriptionDTO> page) throws Exception {
+        QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (icoQuery, IcoQuery.class);
+        String partyId = SecurityUtils.getUser().getUserId();
+        if (StringUtils.isEmpty(partyId)) {
+            throw new YamiShopBindException("请重新登录");
+        }
+        queryWrapper.eq("u.user_id", partyId);
+        Page<UserSubscriptionDTO> result = userSubscriptionService.findPage(page, queryWrapper);
+        return Result.ok(result);
+    }
+
 }
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/ico/dto/UserSubscriptionDTO.java b/trading-order-bean/src/main/java/com/yami/trading/bean/ico/dto/UserSubscriptionDTO.java
new file mode 100644
index 0000000..733ed84
--- /dev/null
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/ico/dto/UserSubscriptionDTO.java
@@ -0,0 +1,20 @@
+package com.yami.trading.bean.ico.dto;
+
+import com.yami.trading.bean.ico.domain.UserSubscription;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class UserSubscriptionDTO extends UserSubscription {
+
+	@ApiModelProperty("交易对名称")
+	private String name;
+
+
+	@ApiModelProperty("代码/交易对")
+	private String symbol;
+
+}
diff --git a/trading-order-service/src/main/java/com/yami/trading/dao/ico/UserSubscriptionMapper.java b/trading-order-service/src/main/java/com/yami/trading/dao/ico/UserSubscriptionMapper.java
index f3c7be5..c448673 100644
--- a/trading-order-service/src/main/java/com/yami/trading/dao/ico/UserSubscriptionMapper.java
+++ b/trading-order-service/src/main/java/com/yami/trading/dao/ico/UserSubscriptionMapper.java
@@ -1,8 +1,13 @@
 package com.yami.trading.dao.ico;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yami.trading.bean.ico.domain.UserSubscription;
+import com.yami.trading.bean.ico.dto.UserSubscriptionDTO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 新币记录MAPPER接口
@@ -10,5 +15,7 @@
  */
 public interface UserSubscriptionMapper extends BaseMapper<UserSubscription> {
 
+    Page<UserSubscriptionDTO> findList(Page<UserSubscriptionDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
 
 }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
index 9458213..4fca452 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
@@ -205,6 +205,9 @@
         if (!itemService.isContractTrading(item)) {
             throw new YamiShopBindException("未开放合约交易");
         }
+        if (itemService.isSuspended(item)) {
+            throw new YamiShopBindException("停牌禁止交易");
+        }
 
         List<ItemLeverageDTO> levers = itemLeverageService.findByItemId(item.getUuid());
         log.info("{}  --- order --- {}  --- {}", order.getSymbol(), item.getUuid(), levers.size());
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/ico/UserSubscriptionService.java b/trading-order-service/src/main/java/com/yami/trading/service/ico/UserSubscriptionService.java
index c67c66a..f1ff21d 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/ico/UserSubscriptionService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/ico/UserSubscriptionService.java
@@ -1,11 +1,17 @@
 package com.yami.trading.service.ico;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.trading.bean.ico.domain.UserSubscription;
+import com.yami.trading.bean.ico.dto.UserSubscriptionDTO;
+import com.yami.trading.bean.item.dto.ItemSummaryDTO;
 import com.yami.trading.dao.ico.UserSubscriptionMapper;
 import lombok.extern.slf4j.Slf4j;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -18,6 +24,17 @@
 @Slf4j
 public class UserSubscriptionService extends ServiceImpl<UserSubscriptionMapper, UserSubscription> {
 
+    @Autowired
+    UserSubscriptionMapper userSubscriptionMapper;
 
+    /**
+     * 自定义分页检索
+     * @param page
+     * @param queryWrapper
+     * @return
+     */
+    public Page<UserSubscriptionDTO> findPage(Page<UserSubscriptionDTO> page, QueryWrapper queryWrapper) {
+        return  userSubscriptionMapper.findList(page, queryWrapper);
+    }
 
 }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java b/trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java
index 7196128..cdb02e8 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java
@@ -245,4 +245,20 @@
         }
         return true;
     }
+
+    /**
+     * 是否停牌状态
+     * @param item
+     * @return
+     */
+    public boolean isSuspended(Item item) {
+        //虚拟币新币才判断
+        if (item.getType().equals(Item.cryptos) && (item.getCurrencyType() != null && item.getCurrencyType() == 1)) {
+            if (item.getStatus() != null && item.getStatus() == 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }
diff --git a/trading-order-service/src/main/resources/mapper/ico/UserSubscriptionMapper.xml b/trading-order-service/src/main/resources/mapper/ico/UserSubscriptionMapper.xml
index 0049c3b..6e404a8 100644
--- a/trading-order-service/src/main/resources/mapper/ico/UserSubscriptionMapper.xml
+++ b/trading-order-service/src/main/resources/mapper/ico/UserSubscriptionMapper.xml
@@ -3,5 +3,12 @@
 <mapper namespace="com.yami.trading.dao.ico.UserSubscriptionMapper">
 
 
+    <select id="findList" resultType="com.yami.trading.bean.ico.dto.UserSubscriptionDTO">
+        SELECT u.*,t.name,t.symbol
+        FROM user_subscription_record u
+        LEFT JOIN t_ico_project t ON t.id = u.ico_project_id
+        WHERE u.user_id='1'
+        ${ew.customSqlSegment}
+    </select>
 
 </mapper>

--
Gitblit v1.9.3