trading-order-admin/src/main/java/com/yami/trading/admin/task/IcoTask.java
New file @@ -0,0 +1,57 @@ package com.yami.trading.admin.task; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.yami.trading.bean.ico.domain.Ico; import com.yami.trading.bean.item.domain.Item; import com.yami.trading.service.ico.IcoService; import com.yami.trading.service.item.ItemService; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Component @Slf4j public class IcoTask { @Autowired IcoService icoService; @Autowired ItemService itemService; /** * ico转入产品 */ @Scheduled(cron = "0 */5 * * * ?") public void icoToItem() { QueryWrapper<Ico> query = new QueryWrapper<>(); query.gt("market_date", DateTime.now()); List<Ico> icoList = icoService.list(query); if (icoList != null && !icoList.isEmpty()) { List<String> symbolList = icoList.stream().map(Ico::getSymbol).collect(Collectors.toList()); QueryWrapper<Item> iQuery = new QueryWrapper<>(); iQuery.in("SYMBOL", symbolList); iQuery.eq("currency_type", 1); List<Item> itemList = itemService.list(iQuery); List<Item> addItemList = new ArrayList<>(); for (Ico ico : icoList) { Item item = itemList.stream().filter(x -> x.getSymbol().equals(ico.getSymbol())).findFirst().orElse(new Item()); item =icoService.icoToItem(item, ico); addItemList.add(item); } itemService.saveOrUpdateBatch(addItemList); } } } trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
@@ -134,6 +134,9 @@ if(bySymbol == null){ throw new YamiShopBindException("当前币对不存在"); } if (!itemService.isContractTrading(bySymbol)) { throw new YamiShopBindException("未开放合约交易"); } boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType()); if(!isOpen){ throw new YamiShopBindException("当前已经休市"); trading-order-admin/src/main/resources/redisson/redisson-dev.yml
@@ -1,7 +1,7 @@ # 单节点设置 singleServerConfig: address: redis://127.0.0.1:6379 database: 0 database: 1 password: idleConnectionTimeout: 10000 connectTimeout: 10000 trading-order-bean/src/main/java/com/yami/trading/bean/item/domain/Item.java
@@ -165,7 +165,7 @@ private Integer status; /** * 杠杆交易,合约交易状态 * 杠杆交易,合约交易状态 是否开放合约交易 0:否 1 :是" */ private String tradeType; trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
@@ -201,6 +201,11 @@ */ public void open(ContractApplyOrder order) { Item item = this.itemService.findBySymbol(order.getSymbol()); //虚拟币新币 if (!itemService.isContractTrading(item)) { throw new YamiShopBindException("未开放合约交易"); } List<ItemLeverageDTO> levers = itemLeverageService.findByItemId(item.getUuid()); log.info("{} --- order --- {} --- {}", order.getSymbol(), item.getUuid(), levers.size()); checkLever(order, levers); trading-order-service/src/main/java/com/yami/trading/service/ico/IcoService.java
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yami.trading.bean.ico.domain.Ico; import com.yami.trading.bean.ico.domain.UserSubscription; import com.yami.trading.bean.item.domain.Item; import com.yami.trading.bean.model.MoneyLog; import com.yami.trading.bean.model.User; import com.yami.trading.bean.model.Wallet; @@ -206,4 +207,29 @@ throw new RuntimeException(e); } } public Item icoToItem(Item item, Ico ico) { item.setName(ico.getName()); item.setSymbol(ico.getSymbol()); item.setSymbolData(ico.getSymbolData()); item.setPips(ico.getPips()); item.setPipsAmount(ico.getPipsAmount()); item.setAdjustmentValue(ico.getAdjustmentValue()); item.setUnitAmount(ico.getUnitAmount()); item.setUnitFee(ico.getUnitFee()); item.setMarket(""); item.setDecimals(ico.getDecimals()); item.setMultiple(ico.getMultiple()); item.setBorrowingRate(ico.getBorrowingRate()); item.setSymbolFullName(ico.getName()); item.setType(Item.cryptos); item.setCategory(Item.cryptos); item.setShowStatus("1"); item.setTradeStatus("1"); item.setQuoteCurrency(ico.getCurrency()); item.setCurrencyType(0); item.setStatus(0); item.setTradeType(ico.getIsContractTrading().toString()); return item; } } trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java
@@ -16,6 +16,7 @@ import com.yami.trading.bean.item.domain.Item; import com.yami.trading.bean.item.dto.ItemDTO; import com.yami.trading.bean.item.dto.ItemLeverageDTO; import com.yami.trading.common.exception.YamiShopBindException; import com.yami.trading.common.util.ApplicationContextUtils; import com.yami.trading.common.util.MarketOpenChecker; import com.yami.trading.common.util.StringUtils; @@ -229,4 +230,19 @@ Item bySymbol = findBySymbol(symbol); return MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType()); } /** * 是否开放合约 * @param item * @return */ public boolean isContractTrading(Item item) { //如果是虚拟币新币 if (item.getType().equals(Item.cryptos) && (item.getCurrencyType() != null && item.getCurrencyType() == 1)) { if (item.getTradeType() != null && item.getTradeType().equals("1")) { return true; } } return false; } }