package com.rongyichuang.common.api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/cleanup") public class DataCleanupController { @Autowired private JdbcTemplate jdbcTemplate; @PostMapping("/clean-media-data") public String cleanMediaData() { try { String sql = "DELETE FROM t_media WHERE target_id NOT REGEXP '^[0-9]+$'"; int deletedRows = jdbcTemplate.update(sql); return "已删除 " + deletedRows + " 条错误数据"; } catch (Exception e) { return "清理失败: " + e.getMessage(); } } @PostMapping("/clear-all-test-data") public Map clearAllTestData() { Map result = new HashMap<>(); try { // 禁用外键检查 jdbcTemplate.execute("SET FOREIGN_KEY_CHECKS = 0"); // 按照外键依赖关系的顺序删除 int deletedRatingItems = jdbcTemplate.update("DELETE FROM t_activity_rating_item"); int deletedRatings = jdbcTemplate.update("DELETE FROM t_activity_rating"); int deletedActivityPlayers = jdbcTemplate.update("DELETE FROM t_activity_player"); int deletedActivityJudges = jdbcTemplate.update("DELETE FROM t_activity_judge"); int deletedPlayers = jdbcTemplate.update("DELETE FROM t_player"); int deletedActivities = jdbcTemplate.update("DELETE FROM t_activity"); // 重新启用外键检查 jdbcTemplate.execute("SET FOREIGN_KEY_CHECKS = 1"); result.put("success", true); result.put("message", "所有测试数据已清空"); result.put("deletedCounts", Map.of( "t_activity_rating_item", deletedRatingItems, "t_activity_rating", deletedRatings, "t_activity_player", deletedActivityPlayers, "t_activity_judge", deletedActivityJudges, "t_player", deletedPlayers, "t_activity", deletedActivities )); } catch (Exception e) { result.put("success", false); result.put("message", "清理失败: " + e.getMessage()); } return result; } }