新版仿ok交易所-后端
zyy
2025-09-01 69b5fdc593fa73424448df0c911c5177f7497e7c
停牌判断 新增申购记录
8 files modified
1 files added
99 ■■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java 5 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java 5 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java 19 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/ico/dto/UserSubscriptionDTO.java 20 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/dao/ico/UserSubscriptionMapper.java 7 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java 3 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/ico/UserSubscriptionService.java 17 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java 16 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/resources/mapper/ico/UserSubscriptionMapper.xml 7 ●●●●● patch | view | raw | blame | history
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();
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("当前已经休市");
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);
    }
}
trading-order-bean/src/main/java/com/yami/trading/bean/ico/dto/UserSubscriptionDTO.java
New file
@@ -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;
}
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);
}
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());
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);
    }
}
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;
    }
}
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>