import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.stream.CollectorUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yami.trading.bean.data.domain.Kline; import com.yami.trading.common.http.HttpHelper; import org.apache.commons.codec.digest.DigestUtils; import java.io.File; import java.io.FileNotFoundException; import java.io.RandomAccessFile; import java.math.BigDecimal; import java.nio.charset.Charset; import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; public class Test { public static void main(String[] args) throws FileNotFoundException { String format = "Your verification code is 78948"; String apiKey = "5PUIQ2KvNDeC6XfuS0Bl8g=="; String apiSecret = "5981db6ff1f94264a88d8ead7b90c93e"; String send_url = "https://api.i51sms.com/outauth/verifCodeSend"; Date date = new Date(); SimpleDateFormat dateFormat= new SimpleDateFormat("yyyyMMddHHmmss"); Map param = new HashMap<>(); param.put("apikey",apiKey); param.put("timestamp",dateFormat.format(date)); param.put("sign", DigestUtils.md5Hex(apiKey+dateFormat.format(date)+apiSecret)); param.put("mobile","12183966258"); param.put("content",format); String s = HttpHelper.sendPostHttpSMS(send_url, param, true); System.out.println(s); // File file = new File("/Users/sentry/Desktop/work/workspace/trading-order/trading-order-admin/src/main/test/source.txt"); // RandomAccessFile accessFile = new RandomAccessFile(file, "r"); // String jsonStr = FileUtil.readLine(accessFile, Charset.defaultCharset()); // // JSONObject jsonObject = (JSONObject) JSON.parse(jsonStr); // // // JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("item"); // // // List klines = new ArrayList<>(jsonArray.size()); // for (int i = 0; i < jsonArray.size(); i++) { // JSONArray item = (JSONArray) jsonArray.get(i); // Kline kline = new Kline(); // Long timestamp = Long.valueOf(item.get(0).toString()); // Double volume = Double.valueOf(item.get(1).toString()); // Double open = Double.valueOf(item.get(2).toString()); // Double high = Double.valueOf(item.get(3).toString()); // Double low = Double.valueOf(item.get(4).toString()); // Double close = Double.valueOf(item.get(5).toString()); // kline.setTs(timestamp); // kline.setVolume(BigDecimal.valueOf(volume)); // kline.setOpen(BigDecimal.valueOf(open)); // kline.setHigh(BigDecimal.valueOf(high)); // kline.setLow(BigDecimal.valueOf(low)); // kline.setClose(BigDecimal.valueOf(close)); // klines.add(kline); // } // // // List collect = null; // int day = 0; // do { // long zore = zore(day); // collect = klines.stream().filter(k -> k.getTs() > zore).collect(Collectors.toList()); // day ++; // } while (CollectionUtil.isEmpty(collect)); // // collect.sort(Kline::compareTo); // // // List newklines = new ArrayList<>(collect.size()); // Kline secondKline = null; // for (Kline kline : collect) { // List bigDecimals = splitBigDecimal(kline.getVolume(), 60,30); // BigDecimal open = secondKline == null ? kline.getOpen() : secondKline.getClose(); // for (int i = 0; i < 60; i++) { // secondKline = new Kline(); // secondKline.setTs(kline.getTs() + i * 1000); // secondKline.setOpen(open); // if (i == 59) { // secondKline.setClose(kline.getClose()); // } else { // secondKline.setClose(randomBigDecimal(kline.getOpen(),kline.getClose())); // } // secondKline.setHigh(randomBigDecimal(secondKline.getClose(),kline.getHigh())); // secondKline.setLow(randomBigDecimal(kline.getLow(),secondKline.getClose()).min(secondKline.getOpen())); // secondKline.setVolume(bigDecimals.get(i)); // open = secondKline.getClose(); // newklines.add(secondKline); // } // } // // // List> result = new ArrayList<>(); // List time = new ArrayList<>(); // // //// 格式化时间 // SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // // for (Kline kline : newklines) { // List tmp = new ArrayList<>(); // tmp.add(simpleDateFormat.format(new Date(kline.getTs()))); // tmp.add(kline.getOpen().setScale(2, BigDecimal.ROUND_HALF_UP)); // tmp.add(kline.getHigh().setScale(2, BigDecimal.ROUND_HALF_UP)); // tmp.add(kline.getLow().setScale(2, BigDecimal.ROUND_HALF_UP)); // tmp.add(kline.getClose().setScale(2, BigDecimal.ROUND_HALF_UP)); // tmp.add(kline.getVolume().setScale(2, BigDecimal.ROUND_HALF_UP)); // result.add(tmp); // } // //// System.out.println(JSON.toJSONString(time)); // // System.out.println(JSON.toJSONString(result)); } public static long zore(int day) { // 获取当前日期 LocalDate currentDate = LocalDate.now(); LocalDate localDate = currentDate.minusDays(day); // 获取当天0点的时间 LocalDateTime zeroTime = LocalDateTime.of(localDate, LocalTime.MIDNIGHT); // 转换成时间戳 long zeroTimestamp = zeroTime.atZone(ZoneId.systemDefault()).toEpochSecond() * 1000; return zeroTimestamp; } public static BigDecimal randomBigDecimal(BigDecimal a, BigDecimal b) { BigDecimal diff = b.subtract(a); Random random = new Random(); BigDecimal randNum = diff.multiply(new BigDecimal(random.nextDouble())); BigDecimal result = a.add(randNum); return result; } public static List splitBigDecimal(BigDecimal value, int numOfParts, double maxDifferencePercentage) { List parts = new ArrayList<>(numOfParts); Random random = new Random(); BigDecimal remaining = value; BigDecimal minAllowedValue = value.multiply(BigDecimal.valueOf(1 - maxDifferencePercentage / 100)).divide(BigDecimal.valueOf(numOfParts), value.scale(), BigDecimal.ROUND_HALF_UP); BigDecimal maxAllowedValue = value.multiply(BigDecimal.valueOf(1 + maxDifferencePercentage / 100)).divide(BigDecimal.valueOf(numOfParts), value.scale(), BigDecimal.ROUND_HALF_UP); for (int i = 0; i < numOfParts - 1; i++) { BigDecimal part = getRandomBigDecimal(minAllowedValue, maxAllowedValue, random); while (remaining.subtract(part).compareTo(minAllowedValue.multiply(BigDecimal.valueOf(numOfParts - i - 1))) < 0) { part = getRandomBigDecimal(minAllowedValue, maxAllowedValue, random); } parts.add(part); remaining = remaining.subtract(part); } parts.add(remaining); return parts; } private static BigDecimal getRandomBigDecimal(BigDecimal min, BigDecimal max, Random random) { BigDecimal range = max.subtract(min); BigDecimal randomValue = range.multiply(new BigDecimal(random.nextDouble())).setScale(min.scale(), BigDecimal.ROUND_HALF_UP); return min.add(randomValue); } }