diff --git a/frontend/src/components/index.vue b/frontend/src/components/index.vue index 1c1f770..e6e9619 100644 --- a/frontend/src/components/index.vue +++ b/frontend/src/components/index.vue @@ -24,32 +24,9 @@ const tableData = ref([]); const tableLoading = ref(false); const tableError = ref(''); -// 生成从7:00到第二天6:55的时间标签,每隔5分钟 -function generateTimeLabels() { - const labels = []; - // 从7:00到23:55 - for (let hour = 7; hour < 24; hour++) { - for (let minute = 0; minute < 60; minute += 5) { - labels.push(`${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`); - } - } - // 从0:00到6:55 - for (let hour = 0; hour < 6; hour++) { - for (let minute = 0; minute < 60; minute += 5) { - labels.push(`${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`); - } - } - return labels; -} - -// 生成对应长度的随机数据 -function generateRandomData(length) { - return Array.from({ length }, () => Math.floor(Math.random() * 100) + 10); -} - // 折线图数据 -const chartLabels = ref(generateTimeLabels()); -const chartData1 = ref(generateRandomData(chartLabels.value.length)); +const chartLabels = ref(); +const chartData1 = ref(); const loading = ref(false); const error = ref(''); diff --git a/src/main/java/com/tem/bocai/controller/ChartController.java b/src/main/java/com/tem/bocai/controller/ChartController.java index 476818c..736dd6c 100644 --- a/src/main/java/com/tem/bocai/controller/ChartController.java +++ b/src/main/java/com/tem/bocai/controller/ChartController.java @@ -1,6 +1,8 @@ package com.tem.bocai.controller; +import com.tem.bocai.entity.CompletedToday; import com.tem.bocai.entity.LotteryResult; +import com.tem.bocai.repository.CompletedTodayRepository; import com.tem.bocai.repository.LotteryResultRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -15,18 +17,76 @@ public class ChartController { @Autowired private LotteryResultRepository lotteryResultRepository; + @Autowired + private CompletedTodayRepository completedTodayRepository; + // 获取折线图1数据 @GetMapping("/charts/line1") public Map getLineChartData1() { Map response = new HashMap<>(); - // 模拟数据 - 实际项目中应该从数据库获取 - List data = Arrays.asList(65, 59, 80, 81, 56, 55, 40); - List labels = Arrays.asList("1月", "2月", "3月", "4月", "5月", "6月", "7月"); - - response.put("data", data); - response.put("labels", labels); - response.put("title", "折线图1数据"); + try { + // 获取今日日期的字符串表示(格式:yyyy-MM-dd) + String today = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()); + System.out.println("今日日期: " + today); + + // 从数据库获取今日的CompletedToday数据 + List completedTodays = completedTodayRepository.findAll(); + System.out.println("获取到" + completedTodays.size() + "条CompletedToday数据"); + + // 过滤出今日的数据 + List todayData = new ArrayList<>(); + for (CompletedToday item : completedTodays) { + if (item.getTime() != null && item.getTime().contains(today)) { + todayData.add(item); + } + } + System.out.println("过滤后获取到" + todayData.size() + "条今日数据"); + + // 按时间排序 + todayData.sort(Comparator.comparing(CompletedToday::getTime)); + + // 提取数据 + List data = new ArrayList<>(); + List labels = new ArrayList<>(); + + for (CompletedToday item : todayData) { + // 使用resultAmount作为折线图数据 + data.add(item.getResultAmount()); + // 使用时间作为标签(只保留时分部分) + String time = item.getTime(); + if (time != null && time.length() >= 16) { + labels.add(time.substring(11, 16)); // 提取时分部分 + } else { + labels.add(time); + } + } + + // 如果没有今日数据,使用默认数据 + if (data.isEmpty()) { + data = Arrays.asList(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + labels = Arrays.asList("00:00", "04:00", "08:00", "12:00", "16:00", "20:00", "23:59"); + } + + response.put("data", data); + response.put("labels", labels); + response.put("title", "今日盈亏数据"); + System.out.println("返回的数据长度: " + data.size()); + System.out.println("返回的标签长度: " + labels.size()); + System.out.println("返回的标签: " + labels); + + } catch (Exception e) { + System.err.println("获取折线图1数据失败: " + e.getMessage()); + e.printStackTrace(); + + // 异常时使用默认数据 + List data = Arrays.asList(65, 59, 80, 81, 56, 55, 40); + List labels = Arrays.asList("1月", "2月", "3月", "4月", "5月", "6月", "7月"); + + response.put("data", data); + response.put("labels", labels); + response.put("title", "折线图1数据"); + } return response; } diff --git a/src/main/java/com/tem/bocai/entity/CompletedToday.java b/src/main/java/com/tem/bocai/entity/CompletedToday.java index 8e5dc29..42295a0 100644 --- a/src/main/java/com/tem/bocai/entity/CompletedToday.java +++ b/src/main/java/com/tem/bocai/entity/CompletedToday.java @@ -18,8 +18,7 @@ public class CompletedToday { private String betId; // @Column(name = "time", nullable = false) - @Temporal(TemporalType.TIMESTAMP) - private Date time; // 改为Date类型 + private String time; // //下注金额 @Column(name = "bet_amount", nullable = false) diff --git a/src/main/java/com/tem/bocai/repository/CompletedTodayRepository.java b/src/main/java/com/tem/bocai/repository/CompletedTodayRepository.java index 256fb28..3ded760 100644 --- a/src/main/java/com/tem/bocai/repository/CompletedTodayRepository.java +++ b/src/main/java/com/tem/bocai/repository/CompletedTodayRepository.java @@ -4,17 +4,11 @@ package com.tem.bocai.repository; import com.tem.bocai.entity.CompletedToday; import com.tem.bocai.entity.LoginInfoResult; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import java.util.Date; import java.util.Optional; @Repository public interface CompletedTodayRepository extends JpaRepository { - @Query("SELECT SUM(c.resultAmount) FROM CompletedToday c WHERE c.time >= :createTime") - Optional sumResultAmountByCreateTimeAfter(@Param("createTime") Date createTime); - } diff --git a/src/main/java/com/tem/bocai/service/CompletedTodayService.java b/src/main/java/com/tem/bocai/service/CompletedTodayService.java index d67a796..d90d234 100644 --- a/src/main/java/com/tem/bocai/service/CompletedTodayService.java +++ b/src/main/java/com/tem/bocai/service/CompletedTodayService.java @@ -8,6 +8,4 @@ import java.util.List; public interface CompletedTodayService { void saveCompletedToday(List list); - - public void sumResultAmount(); } diff --git a/src/main/java/com/tem/bocai/service/impl/CompletedTodayServiceImpl.java b/src/main/java/com/tem/bocai/service/impl/CompletedTodayServiceImpl.java index 66de4eb..bd6317d 100644 --- a/src/main/java/com/tem/bocai/service/impl/CompletedTodayServiceImpl.java +++ b/src/main/java/com/tem/bocai/service/impl/CompletedTodayServiceImpl.java @@ -16,37 +16,16 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; -import java.util.Optional; @Service public class CompletedTodayServiceImpl implements CompletedTodayService { @Autowired private CompletedTodayRepository completedTodayRepository; - @Autowired - private LoginInfoRepository loginInfoRepository; @Override public void saveCompletedToday(List list) { completedTodayRepository.saveAll(list); } - - @Override - public void sumResultAmount() { - LoginInfoResult firstByOrderByCreateTimeDesc = loginInfoRepository.findFirstByOrderByCreateTimeDesc() - .orElse(null); - System.out.println("开始时间"+firstByOrderByCreateTimeDesc.getCreateTime()); - // 使用Optional版本 - Optional optionalTotal = completedTodayRepository.sumResultAmountByCreateTimeAfter(firstByOrderByCreateTimeDesc.getCreateTime()); - if (optionalTotal.isPresent()) { - Double total = optionalTotal.get(); - System.out.println("处理结果"+total); - // 处理结果 - } else { - System.out.println("没有符合条件的记录"); - // - } - } - } diff --git a/src/main/java/com/tem/bocai/util/CompletedTodayCrawler.java b/src/main/java/com/tem/bocai/util/CompletedTodayCrawler.java index ea632a6..7dd8ae2 100644 --- a/src/main/java/com/tem/bocai/util/CompletedTodayCrawler.java +++ b/src/main/java/com/tem/bocai/util/CompletedTodayCrawler.java @@ -19,9 +19,6 @@ import us.codecraft.webmagic.selector.Html; import java.io.File; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -292,34 +289,14 @@ public class CompletedTodayCrawler implements PageProcessor { /** * 转换数据结构以适应数据库 */ - /** - * 转换数据结构以适应数据库(使用Java 8日期时间API) - */ private List convertForDatabase(List> betList) { List completedTodayList = new ArrayList<>(); - // 根据你实际的日期字符串格式调整 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - for (Map bet : betList) { CompletedToday completedToday = new CompletedToday(); completedToday.setBetId((String) bet.get("bet_id")); - - // 转换String时间到Date - try { - String timeStr = (String) bet.get("time"); - // 将LocalDateTime转换为Date - LocalDateTime localDateTime = LocalDateTime.parse(timeStr, formatter); - Date timeDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - completedToday.setTime(timeDate); - } catch (Exception e) { - // 处理日期解析异常,这里设置为当前时间作为默认值 - completedToday.setTime(new Date()); - // 也可以记录日志 - System.err.println("日期解析失败: " + bet.get("time")); - } - + completedToday.setTime((String) bet.get("time")); completedToday.setBetAmount((Double)bet.get("bet_amount")); completedToday.setResultAmount((Double) bet.get("result_amount")); completedToday.setResult((String) bet.get("result")); diff --git a/src/main/java/com/tem/bocai/util/SQLiteUtil.java b/src/main/java/com/tem/bocai/util/SQLiteUtil.java index 5685832..c2bc6f9 100644 --- a/src/main/java/com/tem/bocai/util/SQLiteUtil.java +++ b/src/main/java/com/tem/bocai/util/SQLiteUtil.java @@ -209,7 +209,7 @@ public class SQLiteUtil { if (data == null || data.getBetId() == null) continue; pstmt.setString(1, data.getBetId()); - pstmt.setTimestamp(2, new Timestamp(data.getTime().getTime())); + pstmt.setString(2, data.getTime()); pstmt.setDouble(3, data.getBetAmount() != null ? data.getBetAmount() : 0.0); pstmt.setString(4, data.getResult() != null ? data.getResult() : "未知"); pstmt.setDouble(5, data.getResultAmount() != null ? data.getResultAmount() : 0.0);