Merge remote-tracking branch 'origin/main'
Some checks failed
continuous-integration/drone/push Build is failing

解决目录重组冲突:
- doc/ → docs/ (文档目录重命名)
- doc/sql/ → database/ (数据库脚本目录重组)
- doc/script/ → scripts/ (脚本目录重组)

保留本地新增的武术比赛系统文件:
- docs/sql/mysql/martial-*.sql (4个数据库脚本)
- docs/后端开发完成报告.md
- docs/数据库字段检查报告.md
- docs/问题修复报告.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-30 12:13:15 +08:00
49 changed files with 584 additions and 190 deletions

View File

@@ -0,0 +1,97 @@
-- =====================================================
-- 武术比赛管理系统 - 数据库字段补充脚本
-- 基于前端需求分析,补充缺失字段
-- Date: 2025-11-29
-- =====================================================
USE martial_db;
-- =====================================================
-- 1. martial_athlete (参赛选手表) - 添加4个字段
-- =====================================================
ALTER TABLE martial_athlete
ADD COLUMN id_card_type int DEFAULT 1 COMMENT '证件类型(1-身份证,2-护照,3-其他)' AFTER id_card,
ADD COLUMN birth_date date DEFAULT NULL COMMENT '出生日期' AFTER age,
ADD COLUMN nation varchar(50) DEFAULT NULL COMMENT '民族' AFTER birth_date,
ADD COLUMN organization_type int DEFAULT 1 COMMENT '单位类别(1-学校,2-协会,3-俱乐部,4-其他)' AFTER organization;
-- =====================================================
-- 2. martial_registration_order (报名订单表) - 添加7个字段
-- =====================================================
ALTER TABLE martial_registration_order
ADD COLUMN transaction_no varchar(100) DEFAULT NULL COMMENT '支付交易号' AFTER payment_time,
ADD COLUMN refund_amount decimal(10,2) DEFAULT 0.00 COMMENT '退款金额' AFTER paid_amount,
ADD COLUMN refund_time datetime DEFAULT NULL COMMENT '退款时间' AFTER transaction_no,
ADD COLUMN refund_reason varchar(500) DEFAULT NULL COMMENT '退款原因' AFTER refund_time,
ADD COLUMN invoice_type int DEFAULT 0 COMMENT '发票类型(0-不需要,1-普通,2-增值税)' AFTER organization,
ADD COLUMN invoice_title varchar(200) DEFAULT NULL COMMENT '发票抬头' AFTER invoice_type,
ADD COLUMN invoice_tax_no varchar(50) DEFAULT NULL COMMENT '税号' AFTER invoice_title;
-- =====================================================
-- 3. martial_score (评分表) - 添加5个字段
-- =====================================================
ALTER TABLE martial_score
ADD COLUMN venue_id bigint DEFAULT NULL COMMENT '场地ID' AFTER schedule_id,
ADD COLUMN original_score decimal(10,3) DEFAULT NULL COMMENT '原始评分(修改前)' AFTER score,
ADD COLUMN modify_reason varchar(500) DEFAULT NULL COMMENT '修改原因' AFTER note,
ADD COLUMN modify_time datetime DEFAULT NULL COMMENT '修改时间' AFTER score_time,
ADD COLUMN ip_address varchar(50) DEFAULT NULL COMMENT '评分IP地址' AFTER modify_time,
ADD INDEX idx_venue (venue_id);
-- =====================================================
-- 4. martial_result (成绩表) - 添加5个字段
-- =====================================================
ALTER TABLE martial_result
ADD COLUMN max_score decimal(10,3) DEFAULT NULL COMMENT '最高分(去掉用)' AFTER total_score,
ADD COLUMN min_score decimal(10,3) DEFAULT NULL COMMENT '最低分(去掉用)' AFTER max_score,
ADD COLUMN valid_score_count int DEFAULT 0 COMMENT '有效评分数' AFTER min_score,
ADD COLUMN difficulty_coefficient decimal(5,2) DEFAULT 1.00 COMMENT '难度系数' AFTER adjusted_score,
ADD COLUMN final_score decimal(10,3) DEFAULT NULL COMMENT '最终得分(总分*系数)' AFTER difficulty_coefficient;
-- =====================================================
-- 5. martial_project (比赛项目表) - 添加4个字段
-- =====================================================
ALTER TABLE martial_project
ADD COLUMN min_age int DEFAULT NULL COMMENT '最小年龄' AFTER max_participants,
ADD COLUMN max_age int DEFAULT NULL COMMENT '最大年龄' AFTER min_age,
ADD COLUMN gender_limit int DEFAULT 0 COMMENT '性别限制(0-不限,1-仅男,2-仅女)' AFTER max_age,
ADD COLUMN registration_deadline datetime DEFAULT NULL COMMENT '报名截止时间' AFTER price;
-- =====================================================
-- 6. martial_banner (轮播图表) - 添加4个字段
-- =====================================================
ALTER TABLE martial_banner
ADD COLUMN position int DEFAULT 1 COMMENT '显示位置(1-首页,2-赛事详情,3-其他)' AFTER title,
ADD COLUMN start_time datetime DEFAULT NULL COMMENT '开始显示时间' AFTER sort_order,
ADD COLUMN end_time datetime DEFAULT NULL COMMENT '结束显示时间' AFTER start_time,
ADD COLUMN click_count int DEFAULT 0 COMMENT '点击次数' AFTER end_time;
-- =====================================================
-- 7. martial_info_publish (信息发布表) - 添加3个字段
-- =====================================================
ALTER TABLE martial_info_publish
ADD COLUMN view_count int DEFAULT 0 COMMENT '阅读次数' AFTER sort_order,
ADD COLUMN attachments varchar(1000) DEFAULT NULL COMMENT '附件(JSON)' AFTER images,
ADD COLUMN publisher_name varchar(50) DEFAULT NULL COMMENT '发布人姓名' AFTER publish_time;
-- =====================================================
-- 8. martial_judge_invite (裁判邀请码表) - 添加4个字段
-- =====================================================
ALTER TABLE martial_judge_invite
ADD COLUMN device_info varchar(500) DEFAULT NULL COMMENT '设备信息' AFTER use_time,
ADD COLUMN login_ip varchar(50) DEFAULT NULL COMMENT '登录IP' AFTER device_info,
ADD COLUMN access_token varchar(500) DEFAULT NULL COMMENT '访问令牌' AFTER login_ip,
ADD COLUMN token_expire_time datetime DEFAULT NULL COMMENT 'token过期时间' AFTER access_token;
-- =====================================================
-- 验证修改
-- =====================================================
SELECT '=== 字段补充完成 ===' AS status;
SELECT 'martial_athlete 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_athlete';
SELECT 'martial_registration_order 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_registration_order';
SELECT 'martial_score 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_score';
SELECT 'martial_result 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_result';
SELECT 'martial_project 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_project';
SELECT 'martial_banner 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_banner';
SELECT 'martial_info_publish 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_info_publish';
SELECT 'martial_judge_invite 字段数:', COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='martial_db' AND TABLE_NAME='martial_judge_invite';

View File

@@ -0,0 +1,19 @@
-- 添加缺失的 status 字段到4张表
-- 生成时间: 2025-11-29
-- 说明: 所有继承 TenantEntity 的实体类都需要 status 字段
-- 1. martial_athlete 表添加 status 字段
ALTER TABLE martial_athlete
ADD COLUMN status int DEFAULT 1 COMMENT '状态(1-启用,2-禁用)' AFTER update_time;
-- 2. martial_live_update 表添加 status 字段
ALTER TABLE martial_live_update
ADD COLUMN status int DEFAULT 1 COMMENT '状态(1-启用,2-禁用)' AFTER update_time;
-- 3. martial_result 表添加 status 字段
ALTER TABLE martial_result
ADD COLUMN status int DEFAULT 1 COMMENT '状态(1-启用,2-禁用)' AFTER update_time;
-- 4. martial_schedule_athlete 表添加 status 字段
ALTER TABLE martial_schedule_athlete
ADD COLUMN status int DEFAULT 1 COMMENT '状态(1-启用,2-禁用)' AFTER update_time;

View File

@@ -0,0 +1,570 @@
-- =====================================================
-- 武术比赛管理系统 - 完整数据库设计
-- Database: martial_db
-- Author: Claude Code
-- Date: 2025-11-29
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =====================================================
-- 1. 赛事管理核心表
-- =====================================================
-- 赛事信息表
DROP TABLE IF EXISTS `martial_competition`;
CREATE TABLE `martial_competition` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_name` varchar(200) NOT NULL COMMENT '赛事名称',
`competition_code` varchar(50) NOT NULL COMMENT '赛事编码(用于裁判登录)',
`organizer` varchar(200) DEFAULT NULL COMMENT '主办单位',
`location` varchar(100) DEFAULT NULL COMMENT '地区',
`venue` varchar(200) DEFAULT NULL COMMENT '详细地点',
`registration_start_time` datetime DEFAULT NULL COMMENT '报名开始时间',
`registration_end_time` datetime DEFAULT NULL COMMENT '报名结束时间',
`competition_start_time` datetime DEFAULT NULL COMMENT '比赛开始时间',
`competition_end_time` datetime DEFAULT NULL COMMENT '比赛结束时间',
`introduction` text COMMENT '赛事简介',
`poster_images` varchar(1000) DEFAULT NULL COMMENT '宣传图片(JSON数组)',
`contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`contact_email` varchar(100) DEFAULT NULL COMMENT '联系邮箱',
`rules` text COMMENT '竞赛规则',
`requirements` text COMMENT '参赛要求',
`awards` text COMMENT '奖项设置',
`regulation_files` varchar(1000) DEFAULT NULL COMMENT '规程文件(JSON数组)',
`total_participants` int DEFAULT 0 COMMENT '报名总人数',
`total_amount` decimal(10,2) DEFAULT 0.00 COMMENT '报名总金额',
`status` int DEFAULT 0 COMMENT '状态(0-未开始,1-报名中,2-比赛中,3-已结束,4-已取消)',
`create_user` bigint DEFAULT NULL COMMENT '创建人',
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_user` bigint DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`is_deleted` int DEFAULT 0 COMMENT '是否已删除',
`tenant_id` varchar(12) DEFAULT '000000' COMMENT '租户ID',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`competition_code`),
KEY `idx_tenant_status` (`tenant_id`,`status`),
KEY `idx_time` (`competition_start_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='赛事信息表';
-- 比赛项目表
DROP TABLE IF EXISTS `martial_project`;
CREATE TABLE `martial_project` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`project_name` varchar(100) NOT NULL COMMENT '项目名称',
`project_code` varchar(50) DEFAULT NULL COMMENT '项目编码',
`category` varchar(50) DEFAULT NULL COMMENT '组别(男子组/女子组)',
`type` int DEFAULT 1 COMMENT '类型(1-个人,2-双人,3-集体)',
`min_participants` int DEFAULT 1 COMMENT '最少参赛人数',
`max_participants` int DEFAULT 1 COMMENT '最多参赛人数',
`estimated_duration` int DEFAULT 5 COMMENT '预估时长(分钟)',
`price` decimal(10,2) DEFAULT 0.00 COMMENT '报名费用',
`description` varchar(500) DEFAULT NULL COMMENT '项目描述',
`sort_order` int DEFAULT 0 COMMENT '排序',
`status` int DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='比赛项目表';
-- 场地信息表
DROP TABLE IF EXISTS `martial_venue`;
CREATE TABLE `martial_venue` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`venue_name` varchar(100) NOT NULL COMMENT '场地名称',
`venue_code` varchar(50) DEFAULT NULL COMMENT '场地编码',
`location` varchar(200) DEFAULT NULL COMMENT '场地位置',
`capacity` int DEFAULT 0 COMMENT '容纳人数',
`facilities` varchar(500) DEFAULT NULL COMMENT '设施说明',
`status` int DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='场地信息表';
-- =====================================================
-- 2. 报名订单相关表
-- =====================================================
-- 报名订单表
DROP TABLE IF EXISTS `martial_registration_order`;
CREATE TABLE `martial_registration_order` (
`id` bigint NOT NULL COMMENT '主键ID',
`order_no` varchar(50) NOT NULL COMMENT '订单号',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`user_id` bigint DEFAULT NULL COMMENT '用户ID',
`user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
`contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`organization` varchar(200) DEFAULT NULL COMMENT '所属单位',
`total_participants` int DEFAULT 0 COMMENT '参赛总人数',
`total_amount` decimal(10,2) DEFAULT 0.00 COMMENT '订单总金额',
`paid_amount` decimal(10,2) DEFAULT 0.00 COMMENT '已支付金额',
`payment_method` int DEFAULT NULL COMMENT '支付方式(1-微信,2-支付宝,3-线下)',
`payment_time` datetime DEFAULT NULL COMMENT '支付时间',
`status` int DEFAULT 0 COMMENT '状态(0-待支付,1-已支付,2-已取消,3-已退款)',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_no` (`order_no`),
KEY `idx_competition` (`competition_id`),
KEY `idx_user` (`user_id`),
KEY `idx_tenant_status` (`tenant_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报名订单表';
-- 参赛选手表
DROP TABLE IF EXISTS `martial_athlete`;
CREATE TABLE `martial_athlete` (
`id` bigint NOT NULL COMMENT '主键ID',
`order_id` bigint NOT NULL COMMENT '订单ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`project_id` bigint DEFAULT NULL COMMENT '项目ID',
`player_name` varchar(50) NOT NULL COMMENT '选手姓名',
`player_no` varchar(50) DEFAULT NULL COMMENT '参赛编号',
`gender` int DEFAULT 1 COMMENT '性别(1-男,2-女)',
`age` int DEFAULT NULL COMMENT '年龄',
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`organization` varchar(200) DEFAULT NULL COMMENT '所属单位',
`team_name` varchar(100) DEFAULT NULL COMMENT '队伍名称',
`category` varchar(50) DEFAULT NULL COMMENT '组别',
`order_num` int DEFAULT 0 COMMENT '出场顺序',
`introduction` varchar(500) DEFAULT NULL COMMENT '选手简介',
`attachments` varchar(1000) DEFAULT NULL COMMENT '附件(JSON数组)',
`photo_url` varchar(500) DEFAULT NULL COMMENT '照片URL',
`registration_status` int DEFAULT 0 COMMENT '报名状态(0-待确认,1-已确认,2-已取消)',
`competition_status` int DEFAULT 0 COMMENT '比赛状态(0-待出场,1-进行中,2-已完成)',
`total_score` decimal(10,3) DEFAULT NULL COMMENT '总分',
`ranking` int DEFAULT NULL COMMENT '排名',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_order` (`order_id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_project` (`project_id`),
KEY `idx_player_no` (`player_no`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='参赛选手表';
-- =====================================================
-- 3. 赛程安排相关表
-- =====================================================
-- 活动日程表
DROP TABLE IF EXISTS `martial_activity_schedule`;
CREATE TABLE `martial_activity_schedule` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`schedule_date` date NOT NULL COMMENT '日程日期',
`schedule_time` time DEFAULT NULL COMMENT '日程时间',
`event_name` varchar(200) NOT NULL COMMENT '活动项目',
`venue` varchar(200) DEFAULT NULL COMMENT '地点',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`sort_order` int DEFAULT 0 COMMENT '排序',
`status` int DEFAULT 1 COMMENT '状态(0-未开始,1-进行中,2-已完成)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_date` (`schedule_date`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动日程表';
-- 赛程编排表(竞赛分组)
DROP TABLE IF EXISTS `martial_schedule`;
CREATE TABLE `martial_schedule` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`order_id` bigint DEFAULT NULL COMMENT '订单ID',
`group_title` varchar(200) NOT NULL COMMENT '分组标题',
`group_code` varchar(50) DEFAULT NULL COMMENT '分组编码',
`group_type` int DEFAULT 1 COMMENT '分组类型(1-个人,2-双人,3-集体)',
`venue_id` bigint DEFAULT NULL COMMENT '场地ID',
`project_id` bigint DEFAULT NULL COMMENT '项目ID',
`schedule_date` date DEFAULT NULL COMMENT '比赛日期',
`time_slot` varchar(50) DEFAULT NULL COMMENT '时间段',
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
`participant_count` int DEFAULT 0 COMMENT '参赛队伍数/人数',
`estimated_duration` int DEFAULT 0 COMMENT '预估时长(分钟)',
`is_confirmed` int DEFAULT 0 COMMENT '是否已确认(0-未确认,1-已确认)',
`status` int DEFAULT 0 COMMENT '状态(0-待开始,1-进行中,2-已完成)',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_venue` (`venue_id`),
KEY `idx_date_time` (`schedule_date`,`time_slot`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='赛程编排表';
-- 选手赛程关联表
DROP TABLE IF EXISTS `martial_schedule_athlete`;
CREATE TABLE `martial_schedule_athlete` (
`id` bigint NOT NULL COMMENT '主键ID',
`schedule_id` bigint NOT NULL COMMENT '赛程ID',
`athlete_id` bigint NOT NULL COMMENT '选手ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`order_num` int DEFAULT 0 COMMENT '出场顺序',
`is_completed` int DEFAULT 0 COMMENT '是否已完赛(0-未完赛,1-已完赛)',
`is_refereed` int DEFAULT 0 COMMENT '是否已裁判(0-未裁判,1-已裁判)',
`create_user` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_schedule` (`schedule_id`),
KEY `idx_athlete` (`athlete_id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='选手赛程关联表';
-- =====================================================
-- 4. 裁判评分相关表
-- =====================================================
-- 裁判信息表
DROP TABLE IF EXISTS `martial_judge`;
CREATE TABLE `martial_judge` (
`id` bigint NOT NULL COMMENT '主键ID',
`name` varchar(50) NOT NULL COMMENT '裁判姓名',
`gender` int DEFAULT 1 COMMENT '性别(1-男,2-女)',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
`referee_type` int DEFAULT 2 COMMENT '裁判类型(1-裁判长,2-普通裁判)',
`level` varchar(50) DEFAULT NULL COMMENT '等级/职称',
`specialty` varchar(200) DEFAULT NULL COMMENT '擅长项目',
`photo_url` varchar(500) DEFAULT NULL COMMENT '照片URL',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`status` int DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_phone` (`phone`),
KEY `idx_type` (`referee_type`),
KEY `idx_tenant_status` (`tenant_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='裁判信息表';
-- 裁判邀请码表
DROP TABLE IF EXISTS `martial_judge_invite`;
CREATE TABLE `martial_judge_invite` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`judge_id` bigint DEFAULT NULL COMMENT '裁判ID',
`invite_code` varchar(50) NOT NULL COMMENT '邀请码',
`role` varchar(20) NOT NULL COMMENT '角色(judge-普通裁判,chief_judge-裁判长)',
`venue_id` bigint DEFAULT NULL COMMENT '分配场地ID',
`projects` varchar(500) DEFAULT NULL COMMENT '分配项目(JSON数组)',
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
`is_used` int DEFAULT 0 COMMENT '是否已使用(0-未使用,1-已使用)',
`use_time` datetime DEFAULT NULL COMMENT '使用时间',
`status` int DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
`create_user` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_competition_code` (`competition_id`,`invite_code`),
KEY `idx_judge` (`judge_id`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='裁判邀请码表';
-- 扣分项配置表
DROP TABLE IF EXISTS `martial_deduction_item`;
CREATE TABLE `martial_deduction_item` (
`id` bigint NOT NULL COMMENT '主键ID',
`item_name` varchar(200) NOT NULL COMMENT '扣分项名称',
`item_code` varchar(50) DEFAULT NULL COMMENT '扣分项编码',
`deduction_point` decimal(10,3) DEFAULT 0.000 COMMENT '扣分值',
`category` varchar(50) DEFAULT NULL COMMENT '分类',
`applicable_projects` varchar(500) DEFAULT NULL COMMENT '适用项目(JSON数组)',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`sort_order` int DEFAULT 0 COMMENT '排序',
`status` int DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_tenant_status` (`tenant_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='扣分项配置表';
-- 评分记录表
DROP TABLE IF EXISTS `martial_score`;
CREATE TABLE `martial_score` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`athlete_id` bigint NOT NULL COMMENT '选手ID',
`project_id` bigint DEFAULT NULL COMMENT '项目ID',
`schedule_id` bigint DEFAULT NULL COMMENT '赛程ID',
`judge_id` bigint NOT NULL COMMENT '裁判ID',
`judge_name` varchar(50) DEFAULT NULL COMMENT '裁判姓名',
`score` decimal(10,3) NOT NULL COMMENT '评分(5.000-10.000)',
`deduction_items` varchar(500) DEFAULT NULL COMMENT '选中的扣分项ID(JSON数组)',
`note` varchar(500) DEFAULT NULL COMMENT '评分备注',
`score_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '评分时间',
`status` int DEFAULT 1 COMMENT '状态(1-正常,2-已修改,3-已作废)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_athlete` (`athlete_id`),
KEY `idx_judge` (`judge_id`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评分记录表';
-- 成绩表(总分汇总)
DROP TABLE IF EXISTS `martial_result`;
CREATE TABLE `martial_result` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`athlete_id` bigint NOT NULL COMMENT '选手ID',
`project_id` bigint DEFAULT NULL COMMENT '项目ID',
`venue_id` bigint DEFAULT NULL COMMENT '场地ID',
`player_name` varchar(50) DEFAULT NULL COMMENT '选手姓名',
`team_name` varchar(100) DEFAULT NULL COMMENT '队伍名称',
`total_score` decimal(10,3) DEFAULT NULL COMMENT '总分(所有裁判平均分)',
`original_score` decimal(10,3) DEFAULT NULL COMMENT '原始总分',
`adjusted_score` decimal(10,3) DEFAULT NULL COMMENT '调整后总分',
`adjust_range` decimal(10,3) DEFAULT 0.005 COMMENT '允许调整范围',
`adjust_note` varchar(500) DEFAULT NULL COMMENT '调整说明',
`ranking` int DEFAULT NULL COMMENT '排名',
`medal` int DEFAULT NULL COMMENT '奖牌(1-金牌,2-银牌,3-铜牌)',
`is_final` int DEFAULT 0 COMMENT '是否最终成绩(0-否,1-是)',
`publish_time` datetime DEFAULT NULL COMMENT '发布时间',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_competition_athlete` (`competition_id`,`athlete_id`,`project_id`),
KEY `idx_athlete` (`athlete_id`),
KEY `idx_project` (`project_id`),
KEY `idx_ranking` (`ranking`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成绩表';
-- =====================================================
-- 5. 信息发布相关表
-- =====================================================
-- 信息发布表
DROP TABLE IF EXISTS `martial_info_publish`;
CREATE TABLE `martial_info_publish` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint DEFAULT NULL COMMENT '赛事ID(NULL表示全局)',
`title` varchar(200) NOT NULL COMMENT '标题',
`info_type` int DEFAULT 1 COMMENT '信息类型(1-通知,2-公告,3-重要)',
`content` text COMMENT '内容',
`images` varchar(1000) DEFAULT NULL COMMENT '图片(JSON数组)',
`publish_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
`is_published` int DEFAULT 0 COMMENT '是否已发布(0-未发布,1-已发布)',
`sort_order` int DEFAULT 0 COMMENT '排序',
`status` int DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_type` (`info_type`),
KEY `idx_tenant_status` (`tenant_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息发布表';
-- 比赛实况表
DROP TABLE IF EXISTS `martial_live_update`;
CREATE TABLE `martial_live_update` (
`id` bigint NOT NULL COMMENT '主键ID',
`competition_id` bigint NOT NULL COMMENT '赛事ID',
`schedule_id` bigint DEFAULT NULL COMMENT '赛程ID',
`athlete_id` bigint DEFAULT NULL COMMENT '选手ID',
`update_type` int DEFAULT 1 COMMENT '实况类型(1-赛况,2-比分,3-精彩瞬间)',
`title` varchar(200) DEFAULT NULL COMMENT '标题',
`content` varchar(1000) DEFAULT NULL COMMENT '内容',
`images` varchar(1000) DEFAULT NULL COMMENT '图片(JSON数组)',
`score_info` varchar(200) DEFAULT NULL COMMENT '比分信息',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`sort_order` int DEFAULT 0 COMMENT '排序',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_competition` (`competition_id`),
KEY `idx_schedule` (`schedule_id`),
KEY `idx_update_time` (`update_time`),
KEY `idx_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='比赛实况表';
-- 轮播图表
DROP TABLE IF EXISTS `martial_banner`;
CREATE TABLE `martial_banner` (
`id` bigint NOT NULL COMMENT '主键ID',
`title` varchar(200) NOT NULL COMMENT '轮播图标题',
`image_url` varchar(500) NOT NULL COMMENT '轮播图图片URL',
`link_url` varchar(500) DEFAULT NULL COMMENT '跳转链接',
`sort_order` int DEFAULT 0 COMMENT '排序顺序',
`status` int DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
`create_user` bigint DEFAULT NULL,
`create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_user` bigint DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` int DEFAULT 0,
`tenant_id` varchar(12) DEFAULT '000000',
PRIMARY KEY (`id`),
KEY `idx_sort` (`sort_order`),
KEY `idx_tenant_status` (`tenant_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='轮播图表';
-- =====================================================
-- 6. 统计分析相关视图
-- =====================================================
-- 参赛人数统计视图
CREATE OR REPLACE VIEW v_martial_participant_stats AS
SELECT
a.competition_id,
a.organization AS school_unit,
a.category,
COUNT(CASE WHEN p.type = 1 THEN 1 END) AS individual_count,
COUNT(CASE WHEN p.type = 2 THEN 1 END) AS dual_count,
COUNT(CASE WHEN p.type = 3 THEN 1 END) AS team_count,
COUNT(CASE WHEN a.gender = 2 THEN 1 END) AS female_count,
COUNT(*) AS total_count
FROM martial_athlete a
LEFT JOIN martial_project p ON a.project_id = p.id
WHERE a.is_deleted = 0
GROUP BY a.competition_id, a.organization, a.category;
-- 项目时间统计视图
CREATE OR REPLACE VIEW v_martial_project_time_stats AS
SELECT
p.competition_id,
p.project_name,
a.category AS participant_category,
COUNT(DISTINCT a.team_name) AS team_count,
COUNT(*) AS participant_count,
p.estimated_duration,
(COUNT(DISTINCT a.team_name) * p.estimated_duration) AS total_estimated_duration
FROM martial_project p
LEFT JOIN martial_athlete a ON p.id = a.project_id AND a.is_deleted = 0
WHERE p.is_deleted = 0
GROUP BY p.competition_id, p.id, p.project_name, a.category;
-- 金额统计视图
CREATE OR REPLACE VIEW v_martial_amount_stats AS
SELECT
o.competition_id,
a.organization AS school_unit,
COUNT(DISTINCT a.project_id) AS project_count,
SUM(p.price) AS total_amount
FROM martial_registration_order o
INNER JOIN martial_athlete a ON o.id = a.order_id AND a.is_deleted = 0
LEFT JOIN martial_project p ON a.project_id = p.id AND p.is_deleted = 0
WHERE o.is_deleted = 0 AND o.status = 1
GROUP BY o.competition_id, a.organization;
-- =====================================================
-- 7. 初始化基础数据
-- =====================================================
-- 插入默认扣分项
INSERT INTO `martial_deduction_item` (`id`, `item_name`, `deduction_point`, `category`, `sort_order`, `tenant_id`) VALUES
(1, '动作不规范', 0.100, '技术动作', 1, '000000'),
(2, '节奏失误', 0.050, '技术动作', 2, '000000'),
(3, '器械掉落', 0.200, '器械使用', 3, '000000'),
(4, '出界', 0.100, '场地规则', 4, '000000'),
(5, '超时', 0.100, '时间规则', 5, '000000'),
(6, '服装不符', 0.050, '着装要求', 6, '000000'),
(7, '礼仪不当', 0.050, '行为规范', 7, '000000'),
(8, '其他违规', 0.100, '其他', 8, '000000');
SET FOREIGN_KEY_CHECKS = 1;
-- =====================================================
-- 索引优化说明
-- =====================================================
-- 1. 所有表都添加了 tenant_id 索引,支持多租户查询
-- 2. 外键字段都添加了索引,提高关联查询性能
-- 3. 常用查询字段添加了组合索引
-- 4. 时间字段添加了索引,支持按时间范围查询
-- 5. 状态字段添加了组合索引,支持状态过滤
-- =====================================================
-- 数据完整性说明
-- =====================================================
-- 1. 所有主表都包含 BladeX 标准字段(create_user, create_dept, create_time, update_user, update_time, is_deleted, tenant_id)
-- 2. 支持逻辑删除(is_deleted)
-- 3. 支持多租户(tenant_id)
-- 4. 所有decimal字段使用3位小数精度,满足评分需求
-- 5. 使用datetime类型存储时间,支持精确到秒的时间记录

View File

@@ -0,0 +1,245 @@
-- =====================================================
-- 武术比赛管理系统 - 模拟测试数据
-- Database: martial_db
-- Author: Claude Code
-- Date: 2025-11-29
-- =====================================================
USE martial_db;
-- 清空现有测试数据(保留扣分项配置)
DELETE FROM martial_score WHERE id > 0;
DELETE FROM martial_result WHERE id > 0;
DELETE FROM martial_schedule_athlete WHERE id > 0;
DELETE FROM martial_schedule WHERE id > 0;
DELETE FROM martial_judge_invite WHERE id > 0;
DELETE FROM martial_judge WHERE id > 0;
DELETE FROM martial_athlete WHERE id > 0;
DELETE FROM martial_registration_order WHERE id > 0;
DELETE FROM martial_live_update WHERE id > 0;
DELETE FROM martial_info_publish WHERE id > 0;
DELETE FROM martial_activity_schedule WHERE id > 0;
DELETE FROM martial_venue WHERE id > 0;
DELETE FROM martial_project WHERE id > 0;
DELETE FROM martial_competition WHERE id > 0;
DELETE FROM martial_banner WHERE id > 0;
-- =====================================================
-- 1. 插入赛事数据
-- =====================================================
INSERT INTO `martial_competition` VALUES
(1, '2025年全国武术散打锦标赛暨第十七届世界武术锦标赛选拔赛',
'WS2025001',
'国家体育总局武术运动管理中心',
'北京市',
'北京市朝阳区国家奥林匹克体育中心',
'2025-01-01 00:00:00',
'2025-02-20 23:59:59',
'2025-06-25 08:00:00',
'2025-06-27 18:00:00',
'本次比赛旨在选拔优秀武术运动员参加第十七届世界武术锦标赛,展示中华武术精神,传承优秀传统文化。',
'["https://example.com/poster1.jpg","https://example.com/poster2.jpg"]',
'张教练',
'13800138000',
'wushu2025@example.com',
'按照国家武术运动管理中心最新竞赛规则执行',
'年龄18-35岁,持有运动员等级证书,身体健康',
'金牌、银牌、铜牌及优秀奖',
'["https://example.com/regulation.pdf"]',
156,
78000.00,
2,
1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 2. 插入场地数据
-- =====================================================
INSERT INTO `martial_venue` VALUES
(1, 1, '第一场地', 'VENUE-001', '主竞技馆1号场地', 500, '标准武术竞技场地,配备LED屏幕、音响设备', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, '第二场地', 'VENUE-002', '主竞技馆2号场地', 500, '标准武术竞技场地,配备LED屏幕、音响设备', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, '第三场地', 'VENUE-003', '训练馆3号场地', 300, '训练场地,配备基础设施', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, 1, '第四场地', 'VENUE-004', '训练馆4号场地', 300, '训练场地,配备基础设施', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(5, 1, '第五场地', 'VENUE-005', '备用场地', 200, '备用竞技场地', 1, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 3. 插入比赛项目数据
-- =====================================================
INSERT INTO `martial_project` VALUES
(1, 1, '男子组陈氏太极拳', 'PRJ-001', '男子组', 1, 1, 1, 5, 100.00, '传统陈氏太极拳套路', 1, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, '女子组长拳', 'PRJ-002', '女子组', 1, 1, 1, 5, 100.00, '长拳基本套路', 2, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, '女子组双剑(含长穗双剑)', 'PRJ-003', '女子组', 2, 2, 2, 6, 200.00, '双剑配合演练', 3, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, 1, '男子组杨氏太极拳', 'PRJ-004', '男子组', 1, 1, 1, 5, 100.00, '杨氏太极拳套路', 4, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(5, 1, '女子组刀术', 'PRJ-005', '女子组', 1, 1, 1, 4, 100.00, '传统刀术', 5, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(6, 1, '男子组棍术', 'PRJ-006', '男子组', 1, 1, 1, 4, 100.00, '传统棍术', 6, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(7, 1, '女子组枪术', 'PRJ-007', '女子组', 1, 1, 1, 4, 100.00, '传统枪术', 7, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(8, 1, '男子组剑术', 'PRJ-008', '男子组', 1, 1, 1, 4, 100.00, '传统剑术', 8, 1, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 4. 插入裁判数据
-- =====================================================
INSERT INTO `martial_judge` VALUES
(1, '欧阳丽娜', 2, '13900000001', '110101198501011234', 1, '国家一级裁判', '太极拳,长拳', NULL, '主裁判', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, '张三', 1, '13900000002', '110101198502021234', 2, '国家二级裁判', '刀剑术', NULL, '普通裁判', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, '李四', 1, '13900000003', '110101198503031234', 2, '国家二级裁判', '棍术', NULL, '普通裁判', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, '王五', 2, '13900000004', '110101198504041234', 2, '国家二级裁判', '枪术', NULL, '普通裁判', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(5, '赵六', 1, '13900000005', '110101198505051234', 2, '国家三级裁判', '长拳', NULL, '普通裁判', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(6, '陈七', 2, '13900000006', '110101198506061234', 2, '国家三级裁判', '太极拳', NULL, '普通裁判', 1, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 5. 插入裁判邀请码
-- =====================================================
INSERT INTO `martial_judge_invite` VALUES
(1, 1, 1, 'admin', 'chief_judge', NULL, NULL, '2025-06-30 23:59:59', 1, '2025-06-25 08:00:00', 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, 2, 'pub', 'judge', 1, '["男子组陈氏太极拳","男子组杨氏太极拳"]', '2025-06-30 23:59:59', 1, '2025-06-25 08:15:00', 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, 3, 'pub001', 'judge', 1, '["女子组长拳","女子组刀术"]', '2025-06-30 23:59:59', 0, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, 1, 4, 'pub002', 'judge', 2, '["女子组双剑","女子组枪术"]', '2025-06-30 23:59:59', 0, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(5, 1, 5, 'pub003', 'judge', 2, '["男子组棍术","男子组剑术"]', '2025-06-30 23:59:59', 0, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(6, 1, 6, 'pub004', 'judge', 3, '["女子组长拳","男子组陈氏太极拳"]', '2025-06-30 23:59:59', 0, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 6. 插入报名订单数据
-- =====================================================
INSERT INTO `martial_registration_order` VALUES
(1, 'ORD202506250001', 1, 1001, '用户A', '张教练', '13800001111', '少林寺武术大学院', 26, 2600.00, 2600.00, 1, '2025-01-15 10:30:00', 1, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 'ORD202506250002', 1, 1002, '用户B', '李老师', '13800002222', '北京体育大学', 15, 1500.00, 1500.00, 2, '2025-01-20 14:20:00', 1, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 'ORD202506250003', 1, 1003, '用户C', '王队长', '13800003333', '上海武术协会', 20, 2200.00, 2200.00, 1, '2025-02-01 09:15:00', 1, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, 'ORD202506250004', 1, 1004, '用户D', '赵主任', '13800004444', '武当山武术学校', 18, 1900.00, 1900.00, 3, '2025-02-10 16:45:00', 1, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 7. 插入参赛选手数据(每个订单多名选手)
-- =====================================================
-- 订单1的选手(少林寺武术大学院 - 26人)
INSERT INTO `martial_athlete` VALUES
(1, 1, 1, 1, '张三丰', '123-4567898275', 1, 25, '110101199901011111', '13911111111', '少林寺武术大学院', '少林A队', '男子组', 1, '擅长陈氏太极拳', NULL, NULL, 1, 2, 8.907, 1, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, 1, 1, '李天龙', '123-4567898276', 1, 23, '110101200001021111', '13911111112', '少林寺武术大学院', '少林A队', '男子组', 2, NULL, NULL, NULL, 1, 0, NULL, NULL, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, 1, 2, '王小红', '123-4567898277', 2, 22, '110101200101031111', '13911111113', '少林寺武术大学院', '少林B队', '女子组', 1, NULL, NULL, NULL, 1, 0, NULL, NULL, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, 1, 1, 2, '赵美丽', '123-4567898278', 2, 24, '110101199901041111', '13911111114', '少林寺武术大学院', '少林B队', '女子组', 2, NULL, NULL, NULL, 1, 0, NULL, NULL, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(5, 1, 1, 5, '孙燕子', '123-4567898279', 2, 21, '110101200201051111', '13911111115', '少林寺武术大学院', '少林C队', '女子组', 1, NULL, NULL, NULL, 1, 0, NULL, NULL, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- 继续插入更多选手(模拟26人,这里简化只插入关键数据)
INSERT INTO `martial_athlete` (id, order_id, competition_id, project_id, player_name, player_no, gender, age, id_card, contact_phone, organization, team_name, category, order_num, registration_status, competition_status, tenant_id)
SELECT
5 + n, 1, 1,
CASE (n % 4) WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 4 ELSE 6 END,
CONCAT('选手', LPAD(n, 2, '0')),
CONCAT('123-456789', LPAD(8280 + n, 4, '0')),
((n % 2) + 1),
18 + (n % 15),
CONCAT('11010119', 1995 + (n % 10), LPAD((n % 12) + 1, 2, '0'), LPAD((n % 28) + 1, 2, '0'), LPAD(1111 + n, 4, '0')),
CONCAT('139111111', LPAD(16 + n, 2, '0')),
'少林寺武术大学院',
CONCAT('少林', CHAR(65 + (n % 5)), ''),
CASE ((n % 2) + 1) WHEN 1 THEN '男子组' ELSE '女子组' END,
n + 1,
1, 0, '000000'
FROM (
SELECT @row := @row + 1 AS n
FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
(SELECT 0 UNION SELECT 1 UNION SELECT 2) t2,
(SELECT @row := 0) r
LIMIT 21
) numbers;
-- 订单2的选手(北京体育大学 - 15人)
INSERT INTO `martial_athlete` (id, order_id, competition_id, project_id, player_name, player_no, gender, age, id_card, contact_phone, organization, team_name, category, order_num, registration_status, competition_status, tenant_id)
SELECT
100 + n, 2, 1,
CASE (n % 4) WHEN 0 THEN 1 WHEN 1 THEN 3 WHEN 2 THEN 5 ELSE 7 END,
CONCAT('北体选手', LPAD(n, 2, '0')),
CONCAT('223-456789', LPAD(8300 + n, 4, '0')),
((n % 2) + 1),
19 + (n % 12),
CONCAT('11010220', 1996 + (n % 8), LPAD((n % 12) + 1, 2, '0'), LPAD((n % 28) + 1, 2, '0'), LPAD(2222 + n, 4, '0')),
CONCAT('139222222', LPAD(10 + n, 2, '0')),
'北京体育大学',
CONCAT('北体', CHAR(65 + (n % 3)), ''),
CASE ((n % 2) + 1) WHEN 1 THEN '男子组' ELSE '女子组' END,
n + 1,
1, 0, '000000'
FROM (
SELECT @row2 := @row2 + 1 AS n
FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
(SELECT 0 UNION SELECT 1) t2,
(SELECT @row2 := 0) r
LIMIT 15
) numbers;
-- =====================================================
-- 8. 插入赛程编排数据
-- =====================================================
INSERT INTO `martial_schedule` VALUES
(1, 1, 1, '男子组陈氏太极拳 - 上午场', 'SCH-001', 1, 1, 1, '2025-06-25', '上午 9:00-12:00', '2025-06-25 09:00:00', '2025-06-25 12:00:00', 10, 150, 1, 1, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, 1, '女子组长拳 - 上午场', 'SCH-002', 1, 2, 2, '2025-06-25', '上午 9:00-12:00', '2025-06-25 09:00:00', '2025-06-25 12:00:00', 8, 120, 1, 0, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, 1, '男子组杨氏太极拳 - 下午场', 'SCH-003', 1, 1, 4, '2025-06-25', '下午 14:00-17:00', '2025-06-25 14:00:00', '2025-06-25 17:00:00', 8, 120, 1, 0, NULL, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 9. 插入评分数据(张三丰的6位裁判评分)
-- =====================================================
INSERT INTO `martial_score` VALUES
(1, 1, 1, 1, 1, 1, '欧阳丽娜', 8.907, '[3,6,7]', '动作流畅,但节奏稍有失误', '2025-06-25 10:15:00', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, 1, 1, 1, 2, '张三', 8.901, '[3]', '整体表现良好', '2025-06-25 10:15:30', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, 1, 1, 1, 3, '李四', 8.902, '[]', '动作规范', '2025-06-25 10:16:00', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, 1, 1, 1, 1, 4, '王五', 8.907, '[7]', '精神面貌好', '2025-06-25 10:16:30', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(5, 1, 1, 1, 1, 5, '赵六', 8.905, '[1]', '表现出色', '2025-06-25 10:17:00', 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(6, 1, 1, 1, 1, 6, '陈七', 8.904, '[]', '动作标准', '2025-06-25 10:17:30', 1, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 10. 插入成绩数据
-- =====================================================
INSERT INTO `martial_result` VALUES
(1, 1, 1, 1, 1, '张三丰', '少林A队', 8.907, 8.904, 8.907, 0.005, NULL, 1, 1, 1, '2025-06-25 10:20:00', 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 11. 插入活动日程
-- =====================================================
INSERT INTO `martial_activity_schedule` VALUES
(1, 1, '2025-06-25', '08:00:00', '签到注册', '主会场大厅', '参赛队伍签到,领取参赛证', NULL, 1, 2, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, '2025-06-25', '09:00:00', '开幕式', '主竞技馆', '赛事开幕仪式', NULL, 2, 2, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, '2025-06-25', '10:00:00', '预赛第一轮', '第一/二场地', '男子组陈氏太极拳、女子组长拳预赛', NULL, 3, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(4, 1, '2025-06-25', '14:00:00', '预赛第二轮', '第一/二场地', '其他项目预赛', NULL, 4, 0, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(5, 1, '2025-06-26', '09:00:00', '半决赛', '第一/二/三场地', '各项目半决赛', NULL, 5, 0, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(6, 1, '2025-06-26', '14:00:00', '决赛', '主竞技馆', '各项目决赛', NULL, 6, 0, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(7, 1, '2025-06-27', '10:00:00', '颁奖典礼', '主竞技馆', '颁发金银铜牌', NULL, 7, 0, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(8, 1, '2025-06-27', '11:30:00', '闭幕式', '主竞技馆', '赛事闭幕仪式', NULL, 8, 0, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 12. 插入信息发布
-- =====================================================
INSERT INTO `martial_info_publish` VALUES
(1, 1, '报名截止时间通知', 1, '请各参赛队伍注意,报名将于2025年2月20日23:59:59截止,请尽快完成报名。', NULL, '2025-01-10 10:00:00', 1, 1, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, 1, '场地变更公告', 2, '由于天气原因,部分项目场地有所调整,请关注最新通知。', NULL, '2025-06-20 15:00:00', 1, 2, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, 1, '疫情防控须知', 3, '请所有参赛人员配合做好疫情防控工作,进场需出示健康码和行程卡。', NULL, '2025-06-23 09:00:00', 1, 3, 1, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 13. 插入比赛实况
-- =====================================================
INSERT INTO `martial_live_update` VALUES
(1, 1, 1, 1, 3, '精彩瞬间', '选手张三丰完成了一套流畅的陈氏太极拳,赢得现场观众热烈掌声!', '["https://example.com/live1.jpg"]', NULL, '2025-06-25 10:18:00', 1, 1, 1, NOW(), 1, 0, '000000'),
(2, 1, 1, 1, 2, '比分更新', '张三丰 - 男子组陈氏太极拳', NULL, '8.907分', '2025-06-25 10:20:00', 2, 1, 1, NOW(), 1, 0, '000000'),
(3, 1, 1, NULL, 1, '赛况播报', '上午场比赛进行顺利,目前已完成10名选手的比赛。', NULL, NULL, '2025-06-25 11:00:00', 3, 1, 1, NOW(), 1, 0, '000000');
-- =====================================================
-- 14. 插入轮播图
-- =====================================================
INSERT INTO `martial_banner` VALUES
(1, '2025武术锦标赛盛大开幕', 'https://example.com/banner1.jpg', '/competition/detail/1', 1, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(2, '报名火热进行中', 'https://example.com/banner2.jpg', '/competition/register/1', 2, 1, 1, 1, NOW(), 1, NOW(), 0, '000000'),
(3, '往届精彩回顾', 'https://example.com/banner3.jpg', '/competition/history', 3, 1, 1, 1, NOW(), 1, NOW(), 0, '000000');
-- =====================================================
-- 验证数据
-- =====================================================
SELECT '=== 数据插入完成 ===' AS status;
SELECT '赛事数据:', COUNT(*) FROM martial_competition;
SELECT '项目数据:', COUNT(*) FROM martial_project;
SELECT '场地数据:', COUNT(*) FROM martial_venue;
SELECT '裁判数据:', COUNT(*) FROM martial_judge;
SELECT '订单数据:', COUNT(*) FROM martial_registration_order;
SELECT '选手数据:', COUNT(*) FROM martial_athlete;
SELECT '赛程数据:', COUNT(*) FROM martial_schedule;
SELECT '评分数据:', COUNT(*) FROM martial_score;
SELECT '成绩数据:', COUNT(*) FROM martial_result;
SELECT '活动日程:', COUNT(*) FROM martial_activity_schedule;
SELECT '信息发布:', COUNT(*) FROM martial_info_publish;
SELECT '比赛实况:', COUNT(*) FROM martial_live_update;
SELECT '轮播图:', COUNT(*) FROM martial_banner;