| | |
| | | |
| | | private Map<String, Integer> symbolDecimal = Maps.newHashMap(); |
| | | |
| | | |
| | | @Autowired |
| | | private CacheManager cacheManager; |
| | | private Cache<String, List<Item>> itemCache; |
| | |
| | | @Cached(name = ITEM_CACHE, key = "'all'", expire = 3600) |
| | | @Override |
| | | public List<Item> list() { |
| | | List<Item> list = super.list(); |
| | | List<Item> list = super.list(new LambdaQueryWrapper<>(Item.class).eq(Item::getType,Item.cryptos)); |
| | | symbolDecimal = list.stream() |
| | | .collect(Collectors.toMap(Item::getSymbol, Item::getDecimals, (s1, s2) -> s2)); |
| | | return list; |
| | |
| | | return super.removeById(id); |
| | | } |
| | | |
| | | // 清除 list() 方法的缓存(关键:与@Cached的name和key一致) |
| | | /*@CacheEvict(cacheNames = ITEM_CACHE, key = "'all'") |
| | | public void clearListCache() { |
| | | log.info("已清除 list() 方法的缓存"); |
| | | }*/ |
| | | |
| | | public void reloadListAndCache() { |
| | | // 步骤1:清除 list() 方法的原有缓存(确保重新查询) |
| | | //clearListCache(); |
| | | |
| | | // 步骤2:重新调用 list() 方法,此时会执行数据库查询,且@Cached会自动更新缓存 |
| | | //List<Item> freshList = list(); |
| | | |
| | | // 步骤3(可选):如果需要同步更新 init() 方法中的 itemCache,重新调用 init() |
| | | init(); |
| | | log.info("初始化init()"); |
| | | } |
| | | |
| | | /** |
| | | * 获取品种精度 |
| | |
| | | } |
| | | |
| | | public List<Item> cacheGetAll() { |
| | | return ApplicationContextUtils.getApplicationContext().getBean(ItemService.class).list(); |
| | | return ApplicationContextUtils.getApplicationContext().getBean(ItemService.class).list(new LambdaQueryWrapper<>(Item.class).eq(Item::getType,Item.cryptos)); |
| | | } |
| | | |
| | | |
| | |
| | | Item bySymbol = findBySymbol(symbol); |
| | | return MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType()); |
| | | } |
| | | |
| | | /** |
| | | * 是否开放合约 |
| | | * @param item |
| | | * @return |
| | | */ |
| | | public boolean isContractTrading(Item item) { |
| | | item = getById(item.getUuid()); |
| | | //虚拟币新币才判断 |
| | | if (item.getType().equals(Item.cryptos) && (item.getCurrencyType() != null && item.getCurrencyType() == 1)) { |
| | | if (item.getTradeType() != null && item.getTradeType().equals("0")) { |
| | | return false; |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 是否停牌状态 |
| | | * @param item |
| | | * @return |
| | | */ |
| | | public boolean isSuspended(Item item) { |
| | | item = getById(item.getUuid()); |
| | | //虚拟币新币才判断 |
| | | if (item.getType().equals(Item.cryptos) && (item.getCurrencyType() != null && item.getCurrencyType() == 1)) { |
| | | if (item.getStatus() != null && item.getStatus() == 0) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | } |