package org.example.server.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import org.example.dao.CurrencyMapper; import org.example.pojo.Currency; import org.example.server.CurrencySerivce; import org.example.util.RedisUtil; import org.springframework.stereotype.Service; import java.util.*; /** * @program: demo * @description: * @create: 2024-07-16 15:23 **/ @Service public class CurrencySerivceImpl extends ServiceImpl implements CurrencySerivce { private HashMap hashMap = new HashMap(); private static final Gson gson = new Gson(); private Set keys; @Override public void start() throws JsonProcessingException { Set mexcSet = RedisUtil.keys("mexc"); Set gateSet = RedisUtil.keys("gate"); Set bitgetSet = RedisUtil.keys("bitget"); Set kucoinSet = RedisUtil.keys("kucoin"); //这里做一个定时器,每10秒更新一次 keys = RedisUtil.keys("*"); HashMap> mexcMap = new HashMap<>(); for (String key : mexcSet) { String v = RedisUtil.get(key); Map redisValueMap = gson.fromJson(v, new TypeToken>() {}.getType()); mexcMap.put(key.replaceAll("mexc",""),redisValueMap); } HashMap>> asksHashMapList = new HashMap<>(); HashMap> gateMap = new HashMap<>(); for (String key : gateSet) { String v = RedisUtil.get(key); Map redisValueMap = gson.fromJson(v, new TypeToken>() {}.getType()); String asks = redisValueMap.get("asks").toString(); String bids = redisValueMap.get("bids").toString(); // 使用 Jackson 解析 JSON ObjectMapper objectMapper = new ObjectMapper(); JsonNode asksNode = objectMapper.readTree(asks); JsonNode bidsNode = objectMapper.readTree(bids); // 将 "asks" 数组转换为 List> List> asksList = new ArrayList<>(); for (JsonNode arrayNode : asksNode) { HashMap asksMap = new HashMap<>(); asksMap.put("p",arrayNode.get(0).toString()); asksMap.put("v",arrayNode.get(1).toString()); asksList.add(asksMap); } for (JsonNode arrayNode : bidsNode) { HashMap asksMap = new HashMap<>(); asksMap.put("p",arrayNode.get(0).toString()); asksMap.put("v",arrayNode.get(1).toString()); asksList.add(asksMap); } gateMap.put(key.replaceAll("gate",""),redisValueMap); } // HashMap> bitgetMap = new HashMap<>(); // for (String key : mexcSet) { // String v = RedisUtil.get(key); // Map redisValueMap = gson.fromJson(v, new TypeToken>() {}.getType()); // mexcMap.put(key.replaceAll("bitget",""),redisValueMap); // } // // HashMap> kucoinMap = new HashMap<>(); // for (String key : mexcSet) { // String v = RedisUtil.get(key); // Map redisValueMap = gson.fromJson(v, new TypeToken>() {}.getType()); // mexcMap.put(key.replaceAll("kucoin",""),redisValueMap); // } } }