diff --git a/YD_Event.Application/YD_Event.Application.xml b/YD_Event.Application/YD_Event.Application.xml
index 38a9edb..b0ed7f3 100644
--- a/YD_Event.Application/YD_Event.Application.xml
+++ b/YD_Event.Application/YD_Event.Application.xml
@@ -58,6 +58,11 @@
+
+
+ 根据认证类型填充统一的认证证件字段(CertImageUrl, CertNumber)
+
+
获取普通用户详情
@@ -418,7 +423,20 @@
- 认证类型:1-身份证,2-护照,3-户口本
+ 认证类型:0-未认证,1-身份证,2-护照,3-户口本
+
+
+
+
+ 认证证件图片URL(根据AuthType返回对应证件的图片URL)
+ AuthType=1 → IdCardImageUrl
+ AuthType=2 → PassportPhotoUrl
+ AuthType=3 → HouseholdPhotoUrl
+
+
+
+
+ 证件号码(根据AuthType返回:身份证号或护照号)
@@ -7134,7 +7152,17 @@
- 身份证号
+ 身份证号(身份证/户口本认证时使用)
+
+
+
+
+ 护照号码(护照认证时使用)
+
+
+
+
+ 认证类型:0-未认证,1-身份证,2-护照,3-户口本
@@ -7144,7 +7172,7 @@
- 电话
+ 电话(非必填)
@@ -8442,6 +8470,11 @@
队员ID
+
+
+ 当前组内已选队员ID列表(用于年龄跨组等整组校验,兼容旧接口可不传)
+
+
组别ID
@@ -8864,7 +8897,7 @@
- 导出报名
+ 导出报名信息
@@ -9243,6 +9276,11 @@
从报名项中获取所有人员列表(支持新旧数据结构)
+
+
+ 获取人员证件号码(根据认证类型返回身份证号或护照号)
+
+
验证队员资质(年龄和性别)
@@ -9323,7 +9361,32 @@
删除报名记录(用于删除预报名记录)
-
+
+
+ 获取赛事报名限制配置(带缓存,3分钟过期)
+
+
+
+
+ 获取赛事项目限制配置列表(带缓存,3分钟过期)
+
+
+
+
+ 获取赛事项目列表(带缓存,3分钟过期)
+
+
+
+
+ 获取赛事项目组别列表(带缓存,3分钟过期)
+
+
+
+
+ 获取基础项目列表(带缓存,3分钟过期)
+
+
+
检查报名限制
@@ -9343,14 +9406,9 @@
检查团队组别容量限制(项目组别限报设置)
-
+
- 检查成员项目限报
-
-
-
-
- 计算成员项目报名数量(包含本次提交的项目)
+ 检查成员项目限报(优化版:使用数据库查询,仅查询涉及的成员数据,避免全量加载)
@@ -9368,9 +9426,9 @@
检查人员项目组别重复
-
+
- 检查人员是否已在其他报名中报过同一项目组别
+ 检查人员是否已在其他报名中报过同一项目组别(优化版:使用数据库查询,避免全量加载)
@@ -12118,6 +12176,11 @@
排序索引
+
+
+ 备注
+
+
项目组别列表
@@ -12223,6 +12286,11 @@
排序索引(编排用)
+
+
+ 备注
+
+
可用状态
diff --git a/YD_Event.Core/YD_Event.Core.xml b/YD_Event.Core/YD_Event.Core.xml
index 321470f..77fe234 100644
--- a/YD_Event.Core/YD_Event.Core.xml
+++ b/YD_Event.Core/YD_Event.Core.xml
@@ -3093,6 +3093,11 @@
时长(秒)
+
+
+ 备注
+
+
场地数量(编排用)
diff --git a/二期需求/dbo.sql b/二期需求/dbo.sql
new file mode 100644
index 0000000..8420061
--- /dev/null
+++ b/二期需求/dbo.sql
@@ -0,0 +1,9130 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : YD
+ Source Server Type : SQL Server
+ Source Server Version : 16004025
+ Source Host : rm-uf64b8oxdt19pfyxfao.sqlserver.rds.aliyuncs.com:1433
+ Source Catalog : EventServerDB_QA
+ Source Schema : dbo
+
+ Target Server Type : SQL Server
+ Target Server Version : 16004025
+ File Encoding : 65001
+
+ Date: 03/08/2026 12:55:52
+*/
+
+
+-- ----------------------------
+-- Table structure for Albums
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Albums]') AND type IN ('U'))
+ DROP TABLE [dbo].[Albums]
+GO
+
+CREATE TABLE [dbo].[Albums] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Cover] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Type] int NULL,
+ [Status] int NOT NULL,
+ [Sort] int NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [IsVisible] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[Albums] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'相册名称',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'封面图',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'Cover'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'相册类型',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'Type'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序值(值越小越靠前)',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否可见',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'IsVisible'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'相册表',
+'SCHEMA', N'dbo',
+'TABLE', N'Albums'
+GO
+
+
+-- ----------------------------
+-- Table structure for AppUser
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[AppUser]') AND type IN ('U'))
+ DROP TABLE [dbo].[AppUser]
+GO
+
+CREATE TABLE [dbo].[AppUser] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [Gender] int NOT NULL,
+ [Mobile] varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [IdCardNumber] varchar(20) COLLATE Chinese_PRC_CI_AS NULL,
+ [IdCardImageUrl] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [AuditStatus] int NOT NULL,
+ [AuditRemark] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [PersonType] int NOT NULL,
+ [SkillLevel] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [CertificationStatus] int NULL,
+ [Remark] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [BirthDate] datetime NULL,
+ [NickName] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [Avatar] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [MerchantCertificationId] bigint NULL,
+ [Password] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [PassportPhotoUrl] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [Age] int NULL,
+ [IdCardBackImageUrl] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [HouseholdPhotoUrl] nvarchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [AuthType] int DEFAULT ((0)) NOT NULL,
+ [PassportNumber] nvarchar(20) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[AppUser] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'性别',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Gender'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'联系电话',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Mobile'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'身份证号码',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'IdCardNumber'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'身份证正面图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'IdCardImageUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核状态',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'AuditStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核备注',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'AuditRemark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'人员类型:0-普通用户,1-运动员,2-教练,3-领队',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'PersonType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'技能等级(教练特有)',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'SkillLevel'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'认证状态(教练特有):0-未认证,1-已认证',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'CertificationStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'出生日期',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'BirthDate'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'昵称 (来自微信等第三方)',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'NickName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'头像 (来自微信等第三方)',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Avatar'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的单位认证ID(单位账号)',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'MerchantCertificationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'密码(用于登录)',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Password'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'护照图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'PassportPhotoUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'年龄',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'Age'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'身份证背面图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'IdCardBackImageUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'户口本图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'HouseholdPhotoUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'认证类型:1-身份证,2-护照,3-户口本',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser',
+'COLUMN', N'AuthType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'普通用户表 (实名信息)',
+'SCHEMA', N'dbo',
+'TABLE', N'AppUser'
+GO
+
+
+-- ----------------------------
+-- Table structure for Article
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Article]') AND type IN ('U'))
+ DROP TABLE [dbo].[Article]
+GO
+
+CREATE TABLE [dbo].[Article] (
+ [Id] bigint NOT NULL,
+ [Title] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Summary] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Cover] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [IsTop] bit NOT NULL,
+ [Views] int NOT NULL,
+ [Author] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Link] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreationType] int NOT NULL,
+ [Content] text COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [IsHtml] bit NOT NULL,
+ [PublishTime] datetime NOT NULL,
+ [Status] int NOT NULL,
+ [Sort] int NOT NULL,
+ [IsAllowComments] bit NOT NULL,
+ [ExpiredTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[Article] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标题',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Title'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'概要',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Summary'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'封面图',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Cover'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否置顶',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'IsTop'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'浏览量',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Views'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'作者',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Author'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'原文地址',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Link'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创作类型',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'CreationType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章正文(Html或markdown)',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Content'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章正文是否为html代码',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'IsHtml'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'发布时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'PublishTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序值(值越小越靠前)',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否允许评论',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'IsAllowComments'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'过期时间(过期后文章不显示)',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'ExpiredTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Article',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章表',
+'SCHEMA', N'dbo',
+'TABLE', N'Article'
+GO
+
+
+-- ----------------------------
+-- Table structure for ArticleCategory
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[ArticleCategory]') AND type IN ('U'))
+ DROP TABLE [dbo].[ArticleCategory]
+GO
+
+CREATE TABLE [dbo].[ArticleCategory] (
+ [Id] bigint NOT NULL,
+ [ArticleId] bigint NOT NULL,
+ [CategoryId] bigint NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[ArticleCategory] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleCategory',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章Id',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleCategory',
+'COLUMN', N'ArticleId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'栏目Id',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleCategory',
+'COLUMN', N'CategoryId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章所属栏目表',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleCategory'
+GO
+
+
+-- ----------------------------
+-- Table structure for ArticleTag
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[ArticleTag]') AND type IN ('U'))
+ DROP TABLE [dbo].[ArticleTag]
+GO
+
+CREATE TABLE [dbo].[ArticleTag] (
+ [Id] bigint NOT NULL,
+ [ArticleId] bigint NOT NULL,
+ [TagId] bigint NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[ArticleTag] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleTag',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章Id',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleTag',
+'COLUMN', N'ArticleId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标签Id',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleTag',
+'COLUMN', N'TagId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章标签表',
+'SCHEMA', N'dbo',
+'TABLE', N'ArticleTag'
+GO
+
+
+-- ----------------------------
+-- Table structure for AuthAccount
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[AuthAccount]') AND type IN ('U'))
+ DROP TABLE [dbo].[AuthAccount]
+GO
+
+CREATE TABLE [dbo].[AuthAccount] (
+ [Id] bigint NOT NULL,
+ [OAuthId] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [Type] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [IsBlogger] bit NOT NULL,
+ [Name] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [Gender] int NOT NULL,
+ [Avatar] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [Email] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [Password] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [Mobile] varchar(20) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[AuthAccount] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'授权唯一标识',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'OAuthId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'授权类型',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Type'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'博主标识',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'IsBlogger'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'姓名(昵称)',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'性别',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Gender'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'头像',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Avatar'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'邮箱',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Email'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'密码(用于手机号登录)',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Password'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'手机号(用于手机号登录)',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount',
+'COLUMN', N'Mobile'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'博客授权用户',
+'SCHEMA', N'dbo',
+'TABLE', N'AuthAccount'
+GO
+
+
+-- ----------------------------
+-- Table structure for Banner
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Banner]') AND type IN ('U'))
+ DROP TABLE [dbo].[Banner]
+GO
+
+CREATE TABLE [dbo].[Banner] (
+ [Id] bigint NOT NULL,
+ [Title] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [ImageUrl] varchar(512) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [LinkType] int NOT NULL,
+ [Sort] int NOT NULL,
+ [Status] int NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [LinkUrl] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [EventId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[Banner] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标题',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'Title'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'图片地址',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'ImageUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'跳转链接类型',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'LinkType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'跳转链接URL',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'LinkUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'轮播图配置',
+'SCHEMA', N'dbo',
+'TABLE', N'Banner'
+GO
+
+
+-- ----------------------------
+-- Table structure for BannerConfig
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[BannerConfig]') AND type IN ('U'))
+ DROP TABLE [dbo].[BannerConfig]
+GO
+
+CREATE TABLE [dbo].[BannerConfig] (
+ [Id] bigint NOT NULL,
+ [Mode] int NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[BannerConfig] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'模式(0-自动配置 1-手动配置)',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig',
+'COLUMN', N'Mode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'轮播图设置(存储手动/自动模式)',
+'SCHEMA', N'dbo',
+'TABLE', N'BannerConfig'
+GO
+
+
+-- ----------------------------
+-- Table structure for Categories
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Categories]') AND type IN ('U'))
+ DROP TABLE [dbo].[Categories]
+GO
+
+CREATE TABLE [dbo].[Categories] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ParentId] bigint NULL,
+ [Cover] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Status] int NOT NULL,
+ [Sort] int NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[Categories] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'栏目名称',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'父级id',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'ParentId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'封面图',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'Cover'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序值(值越小越靠前)',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'文章栏目表',
+'SCHEMA', N'dbo',
+'TABLE', N'Categories'
+GO
+
+
+-- ----------------------------
+-- Table structure for Certificate
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Certificate]') AND type IN ('U'))
+ DROP TABLE [dbo].[Certificate]
+GO
+
+CREATE TABLE [dbo].[Certificate] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Code] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [TemplateId] bigint NOT NULL,
+ [Remark] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int DEFAULT ('1') NOT NULL,
+ [Sort] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[Certificate] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书名称',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书编码',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'Code'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'模板ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'TemplateId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'软删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书表 (Certificate)',
+'SCHEMA', N'dbo',
+'TABLE', N'Certificate'
+GO
+
+
+-- ----------------------------
+-- Table structure for CertificateElement
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[CertificateElement]') AND type IN ('U'))
+ DROP TABLE [dbo].[CertificateElement]
+GO
+
+CREATE TABLE [dbo].[CertificateElement] (
+ [Id] bigint NOT NULL,
+ [TemplateId] bigint NOT NULL,
+ [Type] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [FieldName] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [BindingKey] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [X] float(53) NOT NULL,
+ [Y] float(53) NOT NULL,
+ [Width] float(53) NOT NULL,
+ [Height] float(53) NOT NULL,
+ [FontFamily] varchar(255) COLLATE Chinese_PRC_CI_AS DEFAULT ('Source Han Sans CN') NULL,
+ [FontSize] float(53) NOT NULL,
+ [Color] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [StyleJson] varchar(4000) COLLATE Chinese_PRC_CI_AS NULL,
+ [Sort] int NOT NULL,
+ [DeleteMark] bit NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[CertificateElement] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'模板ID',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'TemplateId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'元素类型',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'Type'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'字段名',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'FieldName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'绑定键',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'BindingKey'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'X坐标',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'X'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'Y坐标',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'Y'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'宽度',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'Width'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'高度',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'Height'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'字体',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'FontFamily'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'字号',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'FontSize'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'颜色',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'Color'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'额外样式',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'StyleJson'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'软删除',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书元素表 (CertificateElement)',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateElement'
+GO
+
+
+-- ----------------------------
+-- Table structure for CertificatePlaceholder
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[CertificatePlaceholder]') AND type IN ('U'))
+ DROP TABLE [dbo].[CertificatePlaceholder]
+GO
+
+CREATE TABLE [dbo].[CertificatePlaceholder] (
+ [Id] bigint NOT NULL,
+ [TemplateId] bigint NOT NULL,
+ [PlaceholderKey] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DisplayName] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [PlaceholderType] varchar(255) COLLATE Chinese_PRC_CI_AS DEFAULT ('Text') NOT NULL,
+ [DefaultValue] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [IsRequired] bit DEFAULT ('0') NOT NULL,
+ [ValidationRule] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [Description] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [Sort] int NOT NULL,
+ [DeleteMark] bit NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[CertificatePlaceholder] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'模板ID',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'TemplateId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'占位符键名',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'PlaceholderKey'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'占位符显示名称',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'DisplayName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'占位符类型',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'PlaceholderType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'默认值',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'DefaultValue'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否必填',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'IsRequired'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'验证正则表达式',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'ValidationRule'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'描述信息',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'Description'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'软删除',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书占位符表 (CertificatePlaceholder)',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificatePlaceholder'
+GO
+
+
+-- ----------------------------
+-- Table structure for CertificateTemplate
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[CertificateTemplate]') AND type IN ('U'))
+ DROP TABLE [dbo].[CertificateTemplate]
+GO
+
+CREATE TABLE [dbo].[CertificateTemplate] (
+ [Id] bigint NOT NULL,
+ [Version] int NOT NULL,
+ [BackgroundImageUrl] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [Width] int NOT NULL,
+ [Height] int NOT NULL,
+ [IsActive] bit DEFAULT ('0') NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [TemplateType] varchar(255) COLLATE Chinese_PRC_CI_AS DEFAULT ('Image') NOT NULL,
+ [DocxTemplateUrl] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [PlaceholderJson] varchar(4000) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int DEFAULT ('1') NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[CertificateTemplate] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'版本号',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'Version'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'背景图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'BackgroundImageUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'像素宽度',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'Width'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'像素高度',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'Height'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否当前激活版本',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'IsActive'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'软删除',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人ID',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'模板类型',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'TemplateType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'DOCX模板文件URL',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'DocxTemplateUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'占位符配置',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'PlaceholderJson'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'状态',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书模板表 (CertificateTemplate)',
+'SCHEMA', N'dbo',
+'TABLE', N'CertificateTemplate'
+GO
+
+
+-- ----------------------------
+-- Table structure for Comments
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Comments]') AND type IN ('U'))
+ DROP TABLE [dbo].[Comments]
+GO
+
+CREATE TABLE [dbo].[Comments] (
+ [Id] bigint NOT NULL,
+ [ModuleId] bigint NULL,
+ [RootId] bigint NULL,
+ [ParentId] bigint NULL,
+ [AccountId] bigint NOT NULL,
+ [ReplyAccountId] bigint NULL,
+ [Content] varchar(1024) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [IP] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Geolocation] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[Comments] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'对应模块ID(null表留言,0代表友链的评论)',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'ModuleId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'顶级楼层评论ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'RootId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'被回复的评论ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'ParentId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'当前评论人ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'AccountId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'回复人ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'ReplyAccountId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'评论内容',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'Content'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'Ip地址',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'IP'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'IP所属地',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'Geolocation'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'评论表',
+'SCHEMA', N'dbo',
+'TABLE', N'Comments'
+GO
+
+
+-- ----------------------------
+-- Table structure for Coupon
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Coupon]') AND type IN ('U'))
+ DROP TABLE [dbo].[Coupon]
+GO
+
+CREATE TABLE [dbo].[Coupon] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Type] int NOT NULL,
+ [Value] decimal(10,2) NOT NULL,
+ [StartTime] datetime NULL,
+ [EndTime] datetime NULL,
+ [EventIds] varchar(500) COLLATE Chinese_PRC_CI_AS NULL,
+ [TotalQuantity] int DEFAULT ('0') NOT NULL,
+ [ClaimedQuantity] int DEFAULT ('0') NOT NULL,
+ [UsedQuantity] int DEFAULT ('0') NOT NULL,
+ [Status] int DEFAULT ('0') NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[Coupon] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠券名称',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'类型(0-折扣 1-定额)',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'Type'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠值',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'Value'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'有效期开始时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'StartTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'有效期结束时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'EndTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用赛事ID集合',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'EventIds'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'总数量',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'TotalQuantity'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'已领取数量',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'ClaimedQuantity'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'已使用数量',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'UsedQuantity'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'删除标志',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人Id',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人Id',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠券',
+'SCHEMA', N'dbo',
+'TABLE', N'Coupon'
+GO
+
+
+-- ----------------------------
+-- Table structure for CouponRedemptionCode
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[CouponRedemptionCode]') AND type IN ('U'))
+ DROP TABLE [dbo].[CouponRedemptionCode]
+GO
+
+CREATE TABLE [dbo].[CouponRedemptionCode] (
+ [Id] bigint NOT NULL,
+ [CouponId] bigint NOT NULL,
+ [Code] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Status] int DEFAULT ('0') NOT NULL,
+ [UsedTime] datetime NULL,
+ [UserCouponId] bigint NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[CouponRedemptionCode] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠券ID',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'CouponId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'兑换码',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'Code'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'使用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'使用时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'UsedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的用户优惠券ID',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'UserCouponId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'删除标志',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人Id',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人Id',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠券兑换码记录表',
+'SCHEMA', N'dbo',
+'TABLE', N'CouponRedemptionCode'
+GO
+
+
+-- ----------------------------
+-- Table structure for CustomConfig
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[CustomConfig]') AND type IN ('U'))
+ DROP TABLE [dbo].[CustomConfig]
+GO
+
+CREATE TABLE [dbo].[CustomConfig] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Code] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [IsMultiple] bit NOT NULL,
+ [Json] text COLLATE Chinese_PRC_CI_AS NULL,
+ [AllowCreationEntity] bit NOT NULL,
+ [IsGenerate] bit NOT NULL,
+ [Status] int NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[CustomConfig] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'配置名称',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'配置唯一编码(类名)',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'Code'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否是多项(集合)',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'IsMultiple'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'配置界面设计(json)',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'Json'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否允许创建实体',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'AllowCreationEntity'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否已生成实体',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'IsGenerate'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'自定义配置',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfig'
+GO
+
+
+-- ----------------------------
+-- Table structure for CustomConfigItem
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[CustomConfigItem]') AND type IN ('U'))
+ DROP TABLE [dbo].[CustomConfigItem]
+GO
+
+CREATE TABLE [dbo].[CustomConfigItem] (
+ [Id] bigint NOT NULL,
+ [ConfigId] bigint NOT NULL,
+ [Json] text COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Status] int NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[CustomConfigItem] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'自定义配置Id',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'ConfigId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'配置',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'Json'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'自定义配置子项',
+'SCHEMA', N'dbo',
+'TABLE', N'CustomConfigItem'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventCertificate
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventCertificate]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventCertificate]
+GO
+
+CREATE TABLE [dbo].[EventCertificate] (
+ [Id] bigint NOT NULL,
+ [ResultId] bigint NOT NULL,
+ [ParticipationRecordId] bigint NOT NULL,
+ [RegistrationId] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [ParticipantName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [GroupName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [AwardLevel] int NOT NULL,
+ [CertificateType] int NOT NULL,
+ [CertificateNo] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CertificateUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CertificateStatus] int NOT NULL,
+ [GeneratedTime] datetime NULL,
+ [IssuedTime] datetime NULL,
+ [Remark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [TemplateId] bigint NULL,
+ [UserId] bigint NOT NULL,
+ [MerchantCertificationId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventCertificate] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的成绩ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'ResultId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的参赛记录ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'ParticipationRecordId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛选手姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'ParticipantName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛组别',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'获奖等级:1-特等奖,2-一等奖,3-二等奖,4-三等奖,5-优秀奖',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'AwardLevel'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书类型:1-冠军证书,2-亚军证书,3-季军证书,4-优胜证书,5-参与证书',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'CertificateType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书编号',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'CertificateNo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书URL',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'CertificateUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书状态:0-未生成,1-已生成,2-已发放,3-已撤销',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'CertificateStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'生成时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'GeneratedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'发放时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'IssuedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'证书模板ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'TemplateId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的用户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'归属单位认证 ID(从 EventRegistration 继承)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate',
+'COLUMN', N'MerchantCertificationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事证书表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCertificate'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventCustomField
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventCustomField]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventCustomField]
+GO
+
+CREATE TABLE [dbo].[EventCustomField] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [FieldName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Sort] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventCustomField] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'字段名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'FieldName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事自定义字段表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventCustomField'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventFeeConfig
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventFeeConfig]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventFeeConfig]
+GO
+
+CREATE TABLE [dbo].[EventFeeConfig] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [ChargeMode] int NOT NULL,
+ [Price] decimal(18,4) NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventFeeConfig] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收费模式',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'ChargeMode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事定价(仅当ChargeMode为FixedPrice或UnitPriceEvent时有效)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'Price'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事费用配置表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventFeeConfig'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventInfo
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventInfo]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventInfo]
+GO
+
+CREATE TABLE [dbo].[EventInfo] (
+ [Id] bigint NOT NULL,
+ [EventName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CoverImage] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [EventVideo] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [EventType] int NOT NULL,
+ [ChargeMode] int NOT NULL,
+ [EventStatus] int NOT NULL,
+ [RegistrationType] int NOT NULL,
+ [PointsRuleId] bigint NULL,
+ [RegistrationStartTime] datetime NOT NULL,
+ [RegistrationEndTime] datetime NOT NULL,
+ [IsNeedMaterial] bit NOT NULL,
+ [MaterialRemark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [MaterialUploadStartTime] datetime NULL,
+ [MaterialUploadEndTime] datetime NULL,
+ [MatchStartTime] datetime NOT NULL,
+ [MatchEndTime] datetime NOT NULL,
+ [ProvinceId] bigint NULL,
+ [CityId] bigint NULL,
+ [DistrictId] bigint NULL,
+ [DetailAddress] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [EventIntroduction] text COLLATE Chinese_PRC_CI_AS NULL,
+ [ProcessStatus] int NOT NULL,
+ [Status] int NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [CustomConfigJson] text COLLATE Chinese_PRC_CI_AS NULL,
+ [QrCodeUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [MerchantId] bigint NULL,
+ [PointsRuleSnapshot] text COLLATE Chinese_PRC_CI_AS NULL,
+ [RefundRuleSnapshot] text COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventInfo] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'EventName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'封面图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'CoverImage'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事视频URL',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'EventVideo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事类型:线上/线下',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'EventType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收费模式',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'ChargeMode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事状态:报名中/比赛中/已结束',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'EventStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名方式:个人/团队/混合',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'RegistrationType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分发放规则ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'PointsRuleId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名开始时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'RegistrationStartTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名结束时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'RegistrationEndTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否需要上传素材',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'IsNeedMaterial'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'上传素材备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'MaterialRemark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'素材上传开始时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'MaterialUploadStartTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'素材上传结束时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'MaterialUploadEndTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'比赛开始时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'MatchStartTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'比赛结束时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'MatchEndTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'省份Id',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'ProvinceId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'城市Id',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'CityId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'区县Id',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'DistrictId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'详细地址',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'DetailAddress'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事简介',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'EventIntroduction'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'流程状态(用于标识创建步骤)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'ProcessStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'自定义字段配置(JSON字符串)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'CustomConfigJson'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事二维码URL',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'QrCodeUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联商户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'MerchantId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分规则快照(JSON格式,保存创建/编辑赛事时的积分规则)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'PointsRuleSnapshot'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款规则快照(JSON格式,保存创建/编辑赛事时的退款规则)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo',
+'COLUMN', N'RefundRuleSnapshot'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事信息表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventInfo'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventParticipant
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventParticipant]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventParticipant]
+GO
+
+CREATE TABLE [dbo].[EventParticipant] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [HostName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [HostLogoUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [OrganizerName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [OrganizerLogoUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CoOrganizerName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [CoOrganizerLogoUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [SponsorName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [SponsorLogoUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventParticipant] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主办单位名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'HostName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主办单位LOGO',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'HostLogoUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'承办单位名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'OrganizerName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'承办单位LOGO',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'OrganizerLogoUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'协办单位名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'CoOrganizerName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'协办单位LOGO',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'CoOrganizerLogoUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赞助单位名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'SponsorName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赞助单位LOGO',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'SponsorLogoUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事参与单位表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipant'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventParticipationRecord
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventParticipationRecord]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventParticipationRecord]
+GO
+
+CREATE TABLE [dbo].[EventParticipationRecord] (
+ [Id] bigint NOT NULL,
+ [RegistrationId] bigint NOT NULL,
+ [RegistrationItemId] bigint NOT NULL,
+ [RegistrationPersonId] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [ParticipantName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [GroupName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ParticipationStatus] int NOT NULL,
+ [ParticipationTime] datetime NULL,
+ [FinishTime] datetime NULL,
+ [CancelReason] text COLLATE Chinese_PRC_CI_AS NULL,
+ [CancelTime] datetime NULL,
+ [Remark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [UpdatedTime] datetime NULL,
+ [CreatedTime] datetime NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventParticipationRecord] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'RegistrationItemId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名人员ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'RegistrationPersonId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛选手姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'ParticipantName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛组别',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛状态',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'ParticipationStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'ParticipationTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'完赛时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'FinishTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'取消报名原因',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'CancelReason'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'取消报名时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'CancelTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事参赛记录表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventParticipationRecord'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventProject
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventProject]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventProject]
+GO
+
+CREATE TABLE [dbo].[EventProject] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [CreatedTime] datetime NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [GenderType] int NOT NULL,
+ [Price] decimal(10,2) NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventProject] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'性别要求 (男/女/不限)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'GenderType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'价格',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'Price'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目关联表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProject'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventProjectFee
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventProjectFee]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventProjectFee]
+GO
+
+CREATE TABLE [dbo].[EventProjectFee] (
+ [Id] bigint NOT NULL,
+ [FeeConfigId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [Price] decimal(18,4) NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventProjectFee] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的费用配置ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'FeeConfigId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目价格',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'Price'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目费用配置表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectFee'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventProjectGroup
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventProjectGroup]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventProjectGroup]
+GO
+
+CREATE TABLE [dbo].[EventProjectGroup] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [EventProjectId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [ProjectGroupId] bigint NOT NULL,
+ [GroupName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [BirthDateStart] datetime NOT NULL,
+ [BirthDateEnd] datetime NOT NULL,
+ [Gender] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventProjectGroup] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'EventProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的项目组别ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'ProjectGroupId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'组别名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'出生日期起始日期',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'BirthDateStart'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'出生日期结束日期',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'BirthDateEnd'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'性别要求',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'Gender'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目组别表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectGroup'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventProjectRegistrationLimit
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventProjectRegistrationLimit]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventProjectRegistrationLimit]
+GO
+
+CREATE TABLE [dbo].[EventProjectRegistrationLimit] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [LimitCount] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventProjectRegistrationLimit] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目报名限制数量(每个单位或团队最多报多少个该项目)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'LimitCount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目报名限制表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventProjectRegistrationLimit'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventRegistration
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventRegistration]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventRegistration]
+GO
+
+CREATE TABLE [dbo].[EventRegistration] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [RegistrationMode] int NOT NULL,
+ [TeamName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [ContactName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ContactPhone] varchar(16) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ContactEmail] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [TotalPersonCount] int NOT NULL,
+ [TotalAmount] decimal(18,4) NOT NULL,
+ [PaymentStatus] int NOT NULL,
+ [PaymentMethod] int NOT NULL,
+ [OrderNo] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [PaymentTime] datetime NULL,
+ [Reviewer] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [ReviewTime] datetime NULL,
+ [ReviewRemark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [RegistrationRemark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [RegistrationTime] datetime NOT NULL,
+ [Status] int NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [PaymentProofUrl] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [MaterialUrl] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [PaymentMethodType] int NOT NULL,
+ [MerchantCertificationId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventRegistration] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名方式:1-个人,2-团队',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'RegistrationMode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'TeamName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名者姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'ContactName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名者电话',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'ContactPhone'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名者邮箱',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'ContactEmail'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'总人数',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'TotalPersonCount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'总费用',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'TotalAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付状态:0-未支付/待审核,1-已支付/审核通过,2-支付失败/审核拒绝,3-已退款,4-已取消',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'PaymentStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付方式:1-线下,2-线上',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'PaymentMethod'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'订单编号',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'OrderNo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'PaymentTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'Reviewer'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'ReviewTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'ReviewRemark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'RegistrationRemark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'RegistrationTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付凭证图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'PaymentProofUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'上传的素材URL',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'MaterialUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'具体支付方式',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'PaymentMethodType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'归属单位认证 ID(记录报名时的单位)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration',
+'COLUMN', N'MerchantCertificationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事报名表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistration'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventRegistrationItem
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventRegistrationItem]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventRegistrationItem]
+GO
+
+CREATE TABLE [dbo].[EventRegistrationItem] (
+ [Id] bigint NOT NULL,
+ [RegistrationId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [ProjectName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [GroupName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [UnitPrice] decimal(18,4) NOT NULL,
+ [PersonCount] int NOT NULL,
+ [TotalPrice] decimal(18,4) NOT NULL,
+ [Remark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [ProjectTypeName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [EventProjectGroupId] bigint NULL,
+ [RefundOrderId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventRegistrationItem] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛项目名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'ProjectName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'所属组别',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单项目费用(元)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'UnitPrice'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名人数',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'PersonCount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目总费用(元)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'TotalPrice'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目类型名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'ProjectTypeName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛项目组别ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'EventProjectGroupId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的退款订单ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem',
+'COLUMN', N'RefundOrderId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事报名项目关联表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationItem'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventRegistrationLimit
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventRegistrationLimit]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventRegistrationLimit]
+GO
+
+CREATE TABLE [dbo].[EventRegistrationLimit] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [IndividualProjectLimit] int NOT NULL,
+ [TeamProjectLimit] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventRegistrationLimit] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'个人项目限报数量(每人最多报多少个个人项目)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'IndividualProjectLimit'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队项目限报数量(每人最多报多少个团队项目)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'TeamProjectLimit'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事报名限制表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationLimit'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventRegistrationPayment
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventRegistrationPayment]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventRegistrationPayment]
+GO
+
+CREATE TABLE [dbo].[EventRegistrationPayment] (
+ [Id] bigint NOT NULL,
+ [RegistrationId] bigint NOT NULL,
+ [TransactionNo] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [PaymentChannel] int NOT NULL,
+ [PaymentAmount] decimal(18,4) NOT NULL,
+ [PaymentTime] datetime NOT NULL,
+ [PaymentStatus] int NOT NULL,
+ [RefundStatus] int NOT NULL,
+ [RefundAmount] decimal(18,4) NOT NULL,
+ [RefundTime] datetime NULL,
+ [RefundReason] text COLLATE Chinese_PRC_CI_AS NULL,
+ [PayeeAccount] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [PayerAccount] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [Remark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventRegistrationPayment] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付流水号',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'TransactionNo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付渠道:1-微信支付,2-支付宝,3-线下支付',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'PaymentChannel'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付金额(元)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'PaymentAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'PaymentTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付状态:0-待支付,1-已支付,2-支付失败,3-已退款',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'PaymentStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款状态:0-未退款,1-退款中,2-已退款,3-退款失败',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'RefundStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款金额(元)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'RefundAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'RefundTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款原因',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'RefundReason'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收款账户',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'PayeeAccount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'付款账户',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'PayerAccount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事报名支付信息表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPayment'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventRegistrationPerson
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventRegistrationPerson]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventRegistrationPerson]
+GO
+
+CREATE TABLE [dbo].[EventRegistrationPerson] (
+ [Id] bigint NOT NULL,
+ [RegistrationId] bigint NOT NULL,
+ [RegistrationItemId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [PersonType] int NOT NULL,
+ [Name] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Gender] int NOT NULL,
+ [IdCard] varchar(18) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [BirthDate] datetime NOT NULL,
+ [Phone] varchar(16) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Age] int NOT NULL,
+ [Email] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [GroupName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ProjectName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [CustomFieldValue] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [Remark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [EventProjectGroupId] bigint NULL,
+ [UserId] bigint NOT NULL,
+ [RefundOrderId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventRegistrationPerson] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'RegistrationItemId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'人员类型:1-运动员,2-教练,3-领队',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'PersonType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'性别',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'Gender'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'身份证号',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'IdCard'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'出生日期',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'BirthDate'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'手机号',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'Phone'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'年龄',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'Age'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'邮箱',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'Email'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'所属组别',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛项目名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'ProjectName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'自定义字段值',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'CustomFieldValue'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛项目组别ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'EventProjectGroupId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的用户ID(必填)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的退款订单ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson',
+'COLUMN', N'RefundOrderId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事报名人员表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventRegistrationPerson'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventResult
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventResult]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventResult]
+GO
+
+CREATE TABLE [dbo].[EventResult] (
+ [Id] bigint NOT NULL,
+ [ParticipationRecordId] bigint NOT NULL,
+ [RegistrationId] bigint NOT NULL,
+ [RegistrationPersonId] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [ParticipantName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [GroupName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Score] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Rank] int NOT NULL,
+ [AwardLevel] int NOT NULL,
+ [AwardStatus] int NOT NULL,
+ [Remark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [UpdatedTime] datetime NULL,
+ [CreatedTime] datetime NOT NULL,
+ [ProjectTypeName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [Status] int NOT NULL,
+ [MerchantCertificationId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventResult] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的参赛记录ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'ParticipationRecordId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名人员ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'RegistrationPersonId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛选手姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'ParticipantName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛组别',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'成绩',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'Score'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排名',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'Rank'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'获奖等级:1-特等奖,2-一等奖,3-二等奖,4-三等奖,5-优秀奖',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'AwardLevel'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'获奖状态:0-未获奖,1-已获奖',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'AwardStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目类型名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'ProjectTypeName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'归属单位认证 ID(从 EventRegistration 继承)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult',
+'COLUMN', N'MerchantCertificationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事成绩表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventResult'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventScoreSheet
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventScoreSheet]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventScoreSheet]
+GO
+
+CREATE TABLE [dbo].[EventScoreSheet] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [ProjectName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [GroupName] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Round] int NOT NULL,
+ [SheetName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ScoreCriteria] text COLLATE Chinese_PRC_CI_AS NULL,
+ [ScoreStatus] int NOT NULL,
+ [StartScoreTime] datetime NULL,
+ [EndScoreTime] datetime NULL,
+ [Remark] text COLLATE Chinese_PRC_CI_AS NULL,
+ [UpdatedTime] datetime NULL,
+ [CreatedTime] datetime NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventScoreSheet] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'ProjectName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参赛组别',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'评分轮次',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'Round'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'评分表名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'SheetName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'评分标准',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'ScoreCriteria'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'评分状态:0-未开始,1-评分中,2-已完成,3-已锁定',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'ScoreStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'开始评分时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'StartScoreTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'结束评分时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'EndScoreTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事评分表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventScoreSheet'
+GO
+
+
+-- ----------------------------
+-- Table structure for EventUnit
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[EventUnit]') AND type IN ('U'))
+ DROP TABLE [dbo].[EventUnit]
+GO
+
+CREATE TABLE [dbo].[EventUnit] (
+ [Id] bigint NOT NULL,
+ [EventId] bigint NOT NULL,
+ [UnitType] int NOT NULL,
+ [UnitName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [LogoUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [Sort] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [CustomUnitType] varchar(128) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[EventUnit] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单位类型(枚举:0=主办,1=承办,2=协办,3=赞助)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'UnitType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单位名称',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'UnitName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单位LOGO URL',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'LogoUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'自定义单位类型(当需要自定义时使用)',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit',
+'COLUMN', N'CustomUnitType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事参与单位表',
+'SCHEMA', N'dbo',
+'TABLE', N'EventUnit'
+GO
+
+
+-- ----------------------------
+-- Table structure for FriendLink
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[FriendLink]') AND type IN ('U'))
+ DROP TABLE [dbo].[FriendLink]
+GO
+
+CREATE TABLE [dbo].[FriendLink] (
+ [Id] bigint NOT NULL,
+ [AppUserId] bigint NULL,
+ [SiteName] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Link] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Logo] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Url] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [IsIgnoreCheck] bit NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [Sort] int NOT NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[FriendLink] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'博客用户Id',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'AppUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'网站名称',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'SiteName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'网站链接',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'Link'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'网站logo',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'Logo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'对方博客友链的地址',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'Url'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否忽略对方站点是否存在本站链接',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'IsIgnoreCheck'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序值(值越小越靠前)',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'友情链接',
+'SCHEMA', N'dbo',
+'TABLE', N'FriendLink'
+GO
+
+
+-- ----------------------------
+-- Table structure for Merchant
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Merchant]') AND type IN ('U'))
+ DROP TABLE [dbo].[Merchant]
+GO
+
+CREATE TABLE [dbo].[Merchant] (
+ [Id] bigint NOT NULL,
+ [MerchantName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CreditCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [BankName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [AccountNumber] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [BusinessLicenseUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ContactPhone] varchar(16) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [Address] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [AuditStatus] int NULL,
+ [AuditRemark] varchar(512) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[Merchant] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'商户名称',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'MerchantName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'统一社会信用代码',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'CreditCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'开户行',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'BankName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'账号',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'AccountNumber'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'营业执照图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'BusinessLicenseUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'联系电话',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'ContactPhone'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'地址',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'Address'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'AuditStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant',
+'COLUMN', N'AuditRemark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'商户管理表',
+'SCHEMA', N'dbo',
+'TABLE', N'Merchant'
+GO
+
+
+-- ----------------------------
+-- Table structure for MerchantCertification
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[MerchantCertification]') AND type IN ('U'))
+ DROP TABLE [dbo].[MerchantCertification]
+GO
+
+CREATE TABLE [dbo].[MerchantCertification] (
+ [Id] bigint NOT NULL,
+ [UserId] bigint NOT NULL,
+ [MerchantName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CreditCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [BusinessLicenseUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ContactPhone] varchar(16) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Address] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [AuditStatus] int NOT NULL,
+ [AuditRemark] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[MerchantCertification] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单位名称',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'MerchantName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'统一社会信用代码',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'CreditCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'营业执照图片URL',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'BusinessLicenseUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'联系电话',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'ContactPhone'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'地址',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'Address'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核状态',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'AuditStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'审核备注',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'AuditRemark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单位认证表',
+'SCHEMA', N'dbo',
+'TABLE', N'MerchantCertification'
+GO
+
+
+-- ----------------------------
+-- Table structure for Order
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Order]') AND type IN ('U'))
+ DROP TABLE [dbo].[Order]
+GO
+
+CREATE TABLE [dbo].[Order] (
+ [Id] bigint NOT NULL,
+ [OrderNo] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [OrderType] int NOT NULL,
+ [MerchantId] bigint NULL,
+ [EventId] bigint NOT NULL,
+ [RegistrationId] bigint NOT NULL,
+ [RelatedOrderId] bigint NULL,
+ [CouponId] bigint NULL,
+ [OriginalAmount] decimal(18,4) NOT NULL,
+ [DiscountAmount] decimal(18,4) NOT NULL,
+ [ActualAmount] decimal(18,4) NOT NULL,
+ [OrderStatus] int NOT NULL,
+ [PaymentTime] datetime NULL,
+ [Remark] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [MerchantCertificationId] bigint NULL,
+ [PayeeName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [PayeeBankName] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [PayeeBankAccount] varchar(64) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[Order] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'订单编号',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'OrderNo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'订单类型:1-收入,2-退款',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'OrderType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'商户ID(支付商户)',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'MerchantId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'报名ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联订单ID(退款时关联原订单)',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'RelatedOrderId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠券ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'CouponId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'原金额',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'OriginalAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠金额',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'DiscountAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'实付/退款金额',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'ActualAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'订单状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'OrderStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'支付/退款时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'PaymentTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单位认证ID(单位关联)',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'MerchantCertificationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收款人姓名(线下支付退款时使用)',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'PayeeName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收款人开户行(线下支付退款时使用)',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'PayeeBankName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收款人银行卡号(线下支付退款时使用)',
+'SCHEMA', N'dbo',
+'TABLE', N'Order',
+'COLUMN', N'PayeeBankAccount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'订单表',
+'SCHEMA', N'dbo',
+'TABLE', N'Order'
+GO
+
+
+-- ----------------------------
+-- Table structure for Pictures
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Pictures]') AND type IN ('U'))
+ DROP TABLE [dbo].[Pictures]
+GO
+
+CREATE TABLE [dbo].[Pictures] (
+ [Id] bigint NOT NULL,
+ [AlbumId] bigint NOT NULL,
+ [Url] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[Pictures] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Pictures',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'相册Id',
+'SCHEMA', N'dbo',
+'TABLE', N'Pictures',
+'COLUMN', N'AlbumId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'图片地址',
+'SCHEMA', N'dbo',
+'TABLE', N'Pictures',
+'COLUMN', N'Url'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Pictures',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Pictures',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'相册图片表',
+'SCHEMA', N'dbo',
+'TABLE', N'Pictures'
+GO
+
+
+-- ----------------------------
+-- Table structure for PointsRecord
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[PointsRecord]') AND type IN ('U'))
+ DROP TABLE [dbo].[PointsRecord]
+GO
+
+CREATE TABLE [dbo].[PointsRecord] (
+ [Id] bigint NOT NULL,
+ [UserId] bigint NOT NULL,
+ [Type] int NOT NULL,
+ [Points] decimal(18) NOT NULL,
+ [Remark] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [EventId] bigint NULL,
+ [ProjectId] bigint NULL,
+ [ProjectGroupId] bigint NULL,
+ [MerchantCertificationId] bigint NULL,
+ [ResultId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[PointsRecord] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户ID(普通用户积分关联)',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分变动类型:1-获取,2-消耗',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'Type'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'变动积分',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'Points'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联赛事ID',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'EventId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联项目组别ID',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'ProjectGroupId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'单位认证ID(单位用户积分关联)',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'MerchantCertificationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联成绩记录ID',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord',
+'COLUMN', N'ResultId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分记录表',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRecord'
+GO
+
+
+-- ----------------------------
+-- Table structure for PointsRule
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[PointsRule]') AND type IN ('U'))
+ DROP TABLE [dbo].[PointsRule]
+GO
+
+CREATE TABLE [dbo].[PointsRule] (
+ [Id] bigint NOT NULL,
+ [RuleName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ParticipationPoints] int NULL,
+ [Remark] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[PointsRule] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分规则名称',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'RuleName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'参与积分(发放积分个数)',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'ParticipationPoints'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分规则表',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRule'
+GO
+
+
+-- ----------------------------
+-- Table structure for PointsRuleDetail
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[PointsRuleDetail]') AND type IN ('U'))
+ DROP TABLE [dbo].[PointsRuleDetail]
+GO
+
+CREATE TABLE [dbo].[PointsRuleDetail] (
+ [Id] bigint NOT NULL,
+ [PointsRuleId] bigint NOT NULL,
+ [StartRank] int NOT NULL,
+ [EndRank] int NOT NULL,
+ [Points] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[PointsRuleDetail] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分规则ID',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'PointsRuleId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'起始名次',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'StartRank'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'截止名次',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'EndRank'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'发放积分个数',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'Points'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'积分规则明细表',
+'SCHEMA', N'dbo',
+'TABLE', N'PointsRuleDetail'
+GO
+
+
+-- ----------------------------
+-- Table structure for Praise
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Praise]') AND type IN ('U'))
+ DROP TABLE [dbo].[Praise]
+GO
+
+CREATE TABLE [dbo].[Praise] (
+ [Id] bigint NOT NULL,
+ [AccountId] bigint NOT NULL,
+ [ObjectId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[Praise] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Praise',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Praise',
+'COLUMN', N'AccountId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'点赞对象ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Praise',
+'COLUMN', N'ObjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Praise',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'点赞表',
+'SCHEMA', N'dbo',
+'TABLE', N'Praise'
+GO
+
+
+-- ----------------------------
+-- Table structure for Project
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Project]') AND type IN ('U'))
+ DROP TABLE [dbo].[Project]
+GO
+
+CREATE TABLE [dbo].[Project] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CompletionCount] int NOT NULL,
+ [Fee] decimal(18,4) NOT NULL,
+ [DurationMinutes] int NOT NULL,
+ [DurationSeconds] int NOT NULL,
+ [VenueCount] int NOT NULL,
+ [SortIndex] int NOT NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [ProjectType] int NOT NULL,
+ [CompletionCountType] int DEFAULT ((0)) NOT NULL,
+ [CompletionCountMin] int NULL,
+ [CompletionCountMax] int NULL,
+ [Remark] nvarchar(500) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[Project] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目名称',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'完成人数(单一值模式时有效)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'CompletionCount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'费用(元)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'Fee'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'时长(分钟)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'DurationMinutes'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'时长(秒)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'DurationSeconds'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'场地数量(编排用)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'VenueCount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序索引(编排用)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'SortIndex'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目类型(枚举)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'ProjectType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'完成人数模式(0=单一值, 1=范围值)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'CompletionCountType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'完成人数最小值(范围值模式时有效)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'CompletionCountMin'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'完成人数最大值(范围值模式时有效)',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'CompletionCountMax'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'Project',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目表',
+'SCHEMA', N'dbo',
+'TABLE', N'Project'
+GO
+
+
+-- ----------------------------
+-- Table structure for ProjectGroup
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[ProjectGroup]') AND type IN ('U'))
+ DROP TABLE [dbo].[ProjectGroup]
+GO
+
+CREATE TABLE [dbo].[ProjectGroup] (
+ [Id] bigint NOT NULL,
+ [ProjectId] bigint NOT NULL,
+ [GroupName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [BirthDateStart] datetime NOT NULL,
+ [BirthDateEnd] datetime NOT NULL,
+ [Gender] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[ProjectGroup] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的项目ID',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'ProjectId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'组别名称',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'GroupName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'出生日期起始日期',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'BirthDateStart'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'出生日期结束日期',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'BirthDateEnd'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'性别要求',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'Gender'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'项目组别表',
+'SCHEMA', N'dbo',
+'TABLE', N'ProjectGroup'
+GO
+
+
+-- ----------------------------
+-- Table structure for RefundConfig
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[RefundConfig]') AND type IN ('U'))
+ DROP TABLE [dbo].[RefundConfig]
+GO
+
+CREATE TABLE [dbo].[RefundConfig] (
+ [Id] bigint NOT NULL,
+ [DayStart] int NOT NULL,
+ [DayEnd] int NOT NULL,
+ [DeductPercentage] decimal(10,2) NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[RefundConfig] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'天数起始值',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'DayStart'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'天数结束值',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'DayEnd'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'扣除比例',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'DeductPercentage'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款备注',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款配置',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundConfig'
+GO
+
+
+-- ----------------------------
+-- Table structure for RefundRecord
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[RefundRecord]') AND type IN ('U'))
+ DROP TABLE [dbo].[RefundRecord]
+GO
+
+CREATE TABLE [dbo].[RefundRecord] (
+ [Id] bigint NOT NULL,
+ [OutRefundNo] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [RefundId] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [RegistrationId] bigint NOT NULL,
+ [OutTradeNo] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [TransactionId] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [RefundAmount] decimal(18,2) NOT NULL,
+ [TotalAmount] decimal(18,2) NOT NULL,
+ [RefundReason] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [RefundStatus] int NOT NULL,
+ [ApplyTime] datetime NOT NULL,
+ [SuccessTime] datetime NULL,
+ [MerchantId] bigint NULL,
+ [WeChatPayConfigId] bigint NULL,
+ [WeChatResponse] text COLLATE Chinese_PRC_CI_AS NULL,
+ [ErrorMessage] varchar(1024) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [PayeeName] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [PayeeBankName] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [PayeeBankAccount] varchar(64) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[RefundRecord] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'商户退款单号(唯一)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'OutRefundNo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信退款单号',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'RefundId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的报名记录ID',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'RegistrationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'商户订单号',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'OutTradeNo'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信支付订单号',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'TransactionId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款金额(元)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'RefundAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'订单总金额(元)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'TotalAmount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款原因',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'RefundReason'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款状态(0-退款中,1-退款成功,2-退款失败,3-退款关闭)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'RefundStatus'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'申请时间',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'ApplyTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款完成时间',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'SuccessTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'商户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'MerchantId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信支付配置ID',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'WeChatPayConfigId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信返回的原始数据(JSON)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'WeChatResponse'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'错误信息',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'ErrorMessage'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收款人姓名(线下支付退款时使用)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'PayeeName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收款人开户行(线下支付退款时使用)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'PayeeBankName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'收款人银行卡号(线下支付退款时使用)',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord',
+'COLUMN', N'PayeeBankAccount'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'退款记录表',
+'SCHEMA', N'dbo',
+'TABLE', N'RefundRecord'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysCity
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysCity]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysCity]
+GO
+
+CREATE TABLE [dbo].[SysCity] (
+ [Id] bigint NOT NULL,
+ [ProvinceCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CityName] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [CityCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysCity] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'省份Code',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'ProvinceCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'城市名称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'CityName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'城市Code',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'CityCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'城市表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysCity'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysDistrict
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysDistrict]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysDistrict]
+GO
+
+CREATE TABLE [dbo].[SysDistrict] (
+ [Id] bigint NOT NULL,
+ [CityCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DistrictCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DistrictName] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysDistrict] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'城市Code',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'CityCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'区县Code',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'DistrictCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'区县名称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'DistrictName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'区县表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysDistrict'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysMenu
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysMenu]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysMenu]
+GO
+
+CREATE TABLE [dbo].[SysMenu] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Type] int NOT NULL,
+ [Code] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [ParentId] bigint NULL,
+ [RouteName] varchar(32) COLLATE Chinese_PRC_CI_AS NULL,
+ [Path] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [Component] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [Redirect] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [Icon] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [IsIframe] bit NOT NULL,
+ [Link] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [IsVisible] bit NOT NULL,
+ [IsKeepAlive] bit NOT NULL,
+ [IsFixed] bit NOT NULL,
+ [Status] int NOT NULL,
+ [Sort] int NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysMenu] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'菜单名称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'菜单类型',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Type'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'权限编码',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Code'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'父级菜单',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'ParentId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'路由名',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'RouteName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'路由地址',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Path'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'组件路径',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Component'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'重定向地址',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Redirect'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'菜单图标',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Icon'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否内嵌页面',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'IsIframe'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'外链地址',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Link'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否可见',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'IsVisible'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否缓存',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'IsKeepAlive'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'是否固定',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'IsFixed'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序值(值越小越靠前)',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'系统菜单表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysMenu'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysOperationLog
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysOperationLog]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysOperationLog]
+GO
+
+CREATE TABLE [dbo].[SysOperationLog] (
+ [Id] bigint NOT NULL,
+ [UserId] bigint NULL,
+ [LogLevel] int NOT NULL,
+ [Description] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [ControllerName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ActionName] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [HttpMethod] varchar(16) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [TraceId] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ThreadId] int NOT NULL,
+ [UserAgent] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [RequestUrl] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [RemoteIp] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [OsDescription] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [Elapsed] int NOT NULL,
+ [Location] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [HttpStatusCode] int NOT NULL,
+ [Parameter] text COLLATE Chinese_PRC_CI_AS NULL,
+ [Response] text COLLATE Chinese_PRC_CI_AS NULL,
+ [Message] text COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Exception] text COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysOperationLog] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'操作用户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'日志级别',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'LogLevel'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'接口描述',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Description'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'控制器名称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'ControllerName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'路由名称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'ActionName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'请求方式',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'HttpMethod'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'请求跟踪唯一ID (同一次请求ID相同)',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'TraceId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'线程ID',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'ThreadId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'浏览器',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'UserAgent'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'请求地址',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'RequestUrl'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'ip地址',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'RemoteIp'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户系统信息',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'OsDescription'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'耗时(毫秒)',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Elapsed'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'Ip归属地',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Location'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'http状态码',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'HttpStatusCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'请求参数',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Parameter'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'响应结果',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Response'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'详细信息',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Message'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'异常信息',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'Exception'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'操作日志',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOperationLog'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysOrganization
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysOrganization]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysOrganization]
+GO
+
+CREATE TABLE [dbo].[SysOrganization] (
+ [Id] bigint NOT NULL,
+ [ParentId] bigint NULL,
+ [Name] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Code] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Status] int NOT NULL,
+ [Sort] int NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysOrganization] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'父级Id',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'ParentId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'部门名称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'部门编码',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'Code'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序值(值越小越靠前)',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'组织机构信息表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysOrganization'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysProvince
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysProvince]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysProvince]
+GO
+
+CREATE TABLE [dbo].[SysProvince] (
+ [Id] bigint NOT NULL,
+ [ProvinceCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [ProvinceName] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [RegionCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysProvince] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'省份Code',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'ProvinceCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'省份名称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'ProvinceName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'大区Code',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'RegionCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'省份表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysProvince'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysRole
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysRole]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysRole]
+GO
+
+CREATE TABLE [dbo].[SysRole] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Code] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Status] int NOT NULL,
+ [Sort] int NOT NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysRole] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'角色名',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'角色编码',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'Code'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'排序值',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'Sort'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'角色表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRole'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysRoleMenu
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysRoleMenu]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysRoleMenu]
+GO
+
+CREATE TABLE [dbo].[SysRoleMenu] (
+ [Id] bigint NOT NULL,
+ [RoleId] bigint NOT NULL,
+ [MenuId] bigint NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysRoleMenu] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'角色id',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'RoleId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'菜单按钮id',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'MenuId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'角色权限表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysRoleMenu'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysSigninLog
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysSigninLog]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysSigninLog]
+GO
+
+CREATE TABLE [dbo].[SysSigninLog] (
+ [Id] bigint NOT NULL,
+ [UserId] bigint NOT NULL,
+ [RemoteIp] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [UserAgent] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Location] varchar(128) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [OsDescription] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [Message] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysSigninLog] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'ip地址',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'RemoteIp'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'浏览器',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'UserAgent'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'Ip归属地',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'Location'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户系统信息',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'OsDescription'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'消息',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'Message'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户登录日志',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSigninLog'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysSmsLog
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysSmsLog]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysSmsLog]
+GO
+
+CREATE TABLE [dbo].[SysSmsLog] (
+ [Id] bigint NOT NULL,
+ [Phone] varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [TemplateCode] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [TemplateParam] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [Success] bit NOT NULL,
+ [ResponseCode] varchar(50) COLLATE Chinese_PRC_CI_AS NULL,
+ [ResponseMessage] varchar(512) COLLATE Chinese_PRC_CI_AS NULL,
+ [RequestId] varchar(128) COLLATE Chinese_PRC_CI_AS NULL,
+ [Exception] text COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedTime] datetime NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysSmsLog] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'接收手机号',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'Phone'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'短信模板Code',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'TemplateCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'模板参数',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'TemplateParam'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'发送状态(成功/失败)',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'Success'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'响应代码',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'ResponseCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'响应消息',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'ResponseMessage'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'请求ID',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'RequestId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'异常信息',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'Exception'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'发送时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'短信发送日志',
+'SCHEMA', N'dbo',
+'TABLE', N'SysSmsLog'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysUser
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysUser]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysUser]
+GO
+
+CREATE TABLE [dbo].[SysUser] (
+ [Id] bigint NOT NULL,
+ [Account] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Password] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Name] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Gender] int NOT NULL,
+ [OrgId] bigint NOT NULL,
+ [NickName] varchar(32) COLLATE Chinese_PRC_CI_AS NULL,
+ [Birthday] date NULL,
+ [Avatar] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [Mobile] varchar(16) COLLATE Chinese_PRC_CI_AS NULL,
+ [Email] varchar(64) COLLATE Chinese_PRC_CI_AS NULL,
+ [Status] int NOT NULL,
+ [LastLoginIp] varchar(32) COLLATE Chinese_PRC_CI_AS NULL,
+ [LastLoginAddress] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
+ [LastLoginTime] datetime NULL,
+ [Remark] varchar(256) COLLATE Chinese_PRC_CI_AS NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedTime] datetime NULL,
+ [DeleteMark] bit NOT NULL,
+ [LockExpired] datetime NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysUser] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'账号',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Account'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'密码',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Password'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'性别',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Gender'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'组织机构id',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'OrgId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'昵称',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'NickName'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'生日',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Birthday'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'头像',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Avatar'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'手机号码',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Mobile'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'邮箱',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Email'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'最后一次登录IP地址',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'LastLoginIp'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'最后一次登录位置',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'LastLoginAddress'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'最后登录时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'LastLoginTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'备注',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'Remark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'账号锁定过期时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'LockExpired'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'系统用户表',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUser'
+GO
+
+
+-- ----------------------------
+-- Table structure for SysUserRole
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SysUserRole]') AND type IN ('U'))
+ DROP TABLE [dbo].[SysUserRole]
+GO
+
+CREATE TABLE [dbo].[SysUserRole] (
+ [Id] bigint NOT NULL,
+ [UserId] bigint NOT NULL,
+ [RoleId] bigint NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[SysUserRole] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户id',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'角色id',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'RoleId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'SysUserRole',
+'COLUMN', N'UpdatedTime'
+GO
+
+
+-- ----------------------------
+-- Table structure for Team
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[Team]') AND type IN ('U'))
+ DROP TABLE [dbo].[Team]
+GO
+
+CREATE TABLE [dbo].[Team] (
+ [Id] bigint NOT NULL,
+ [Name] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [MerchantCertificationId] bigint NULL
+)
+GO
+
+ALTER TABLE [dbo].[Team] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队名称',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'Name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队状态',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联的单位认证ID',
+'SCHEMA', N'dbo',
+'TABLE', N'Team',
+'COLUMN', N'MerchantCertificationId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队表',
+'SCHEMA', N'dbo',
+'TABLE', N'Team'
+GO
+
+
+-- ----------------------------
+-- Table structure for TeamMember
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[TeamMember]') AND type IN ('U'))
+ DROP TABLE [dbo].[TeamMember]
+GO
+
+CREATE TABLE [dbo].[TeamMember] (
+ [Id] bigint NOT NULL,
+ [TeamId] bigint NOT NULL,
+ [UserId] bigint NOT NULL,
+ [JoinTime] datetime NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [PersonType] int DEFAULT ((1)) NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[TeamMember] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队ID',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'TeamId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户ID(关联AppUser)',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'加入时间',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'JoinTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队角色 (PersonType)',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember',
+'COLUMN', N'PersonType'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'团队成员关联表',
+'SCHEMA', N'dbo',
+'TABLE', N'TeamMember'
+GO
+
+
+-- ----------------------------
+-- Table structure for UserCoupon
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[UserCoupon]') AND type IN ('U'))
+ DROP TABLE [dbo].[UserCoupon]
+GO
+
+CREATE TABLE [dbo].[UserCoupon] (
+ [Id] bigint NOT NULL,
+ [UserId] bigint NOT NULL,
+ [CouponId] bigint NOT NULL,
+ [ClaimTime] datetime NOT NULL,
+ [Status] int NOT NULL,
+ [UseTime] datetime NULL,
+ [OrderId] bigint NULL,
+ [CreatedTime] datetime NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL,
+ [RedemptionCodeId] bigint NULL,
+ [RedemptionCode] varchar(32) COLLATE Chinese_PRC_CI_AS NULL
+)
+GO
+
+ALTER TABLE [dbo].[UserCoupon] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户ID',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'UserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'优惠券ID',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'CouponId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'领取时间',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'ClaimTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'状态',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'使用时间',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'UseTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'关联订单ID',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'OrderId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'删除标志',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人Id',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人Id',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'兑换码ID',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'RedemptionCodeId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'兑换码',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon',
+'COLUMN', N'RedemptionCode'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'用户优惠券领取记录',
+'SCHEMA', N'dbo',
+'TABLE', N'UserCoupon'
+GO
+
+
+-- ----------------------------
+-- Table structure for WeChatPayConfig
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[WeChatPayConfig]') AND type IN ('U'))
+ DROP TABLE [dbo].[WeChatPayConfig]
+GO
+
+CREATE TABLE [dbo].[WeChatPayConfig] (
+ [Id] bigint NOT NULL,
+ [MerchantId] bigint NOT NULL,
+ [MerchantIdValue] varchar(32) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [MerchantV3Secret] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [MerchantCertificateSerialNumber] varchar(64) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [MerchantCertificatePrivateKey] varchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL,
+ [Status] int NOT NULL,
+ [DeleteMark] bit NOT NULL,
+ [CreatedUserId] bigint NOT NULL,
+ [CreatedTime] datetime NOT NULL,
+ [UpdatedUserId] bigint NULL,
+ [UpdatedTime] datetime NULL
+)
+GO
+
+ALTER TABLE [dbo].[WeChatPayConfig] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'主键',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'Id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'商户ID(外键)',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'MerchantId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信支付商户号',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'MerchantIdValue'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信支付 APIv3 密钥',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'MerchantV3Secret'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信支付商户证书序列号',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'MerchantCertificateSerialNumber'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信支付商户私钥文件URL',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'MerchantCertificatePrivateKey'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'可用状态',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'Status'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'标记删除',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'DeleteMark'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'CreatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建时间',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'CreatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'UpdatedUserId'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新时间',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig',
+'COLUMN', N'UpdatedTime'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'微信支付配置表',
+'SCHEMA', N'dbo',
+'TABLE', N'WeChatPayConfig'
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Albums
+-- ----------------------------
+ALTER TABLE [dbo].[Albums] ADD CONSTRAINT [PK_Albums_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table AppUser
+-- ----------------------------
+ALTER TABLE [dbo].[AppUser] ADD CONSTRAINT [PK_AppUser_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Article
+-- ----------------------------
+ALTER TABLE [dbo].[Article] ADD CONSTRAINT [PK_Article_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table ArticleCategory
+-- ----------------------------
+ALTER TABLE [dbo].[ArticleCategory] ADD CONSTRAINT [PK_ArticleCategory_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table ArticleTag
+-- ----------------------------
+ALTER TABLE [dbo].[ArticleTag] ADD CONSTRAINT [PK_ArticleTag_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table AuthAccount
+-- ----------------------------
+ALTER TABLE [dbo].[AuthAccount] ADD CONSTRAINT [PK_AuthAccount_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Banner
+-- ----------------------------
+ALTER TABLE [dbo].[Banner] ADD CONSTRAINT [PK_Banner_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table BannerConfig
+-- ----------------------------
+ALTER TABLE [dbo].[BannerConfig] ADD CONSTRAINT [PK_BannerConfig_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Categories
+-- ----------------------------
+ALTER TABLE [dbo].[Categories] ADD CONSTRAINT [PK_Categories_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Certificate
+-- ----------------------------
+ALTER TABLE [dbo].[Certificate] ADD CONSTRAINT [PK_Certificate_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table CertificateElement
+-- ----------------------------
+ALTER TABLE [dbo].[CertificateElement] ADD CONSTRAINT [PK_CertificateElement_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table CertificatePlaceholder
+-- ----------------------------
+ALTER TABLE [dbo].[CertificatePlaceholder] ADD CONSTRAINT [PK_CertificatePlaceholder_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table CertificateTemplate
+-- ----------------------------
+ALTER TABLE [dbo].[CertificateTemplate] ADD CONSTRAINT [PK_CertificateTemplate_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Comments
+-- ----------------------------
+ALTER TABLE [dbo].[Comments] ADD CONSTRAINT [PK_Comments_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Coupon
+-- ----------------------------
+ALTER TABLE [dbo].[Coupon] ADD CONSTRAINT [PK_Coupon_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table CouponRedemptionCode
+-- ----------------------------
+ALTER TABLE [dbo].[CouponRedemptionCode] ADD CONSTRAINT [PK_CouponRedemptionCode_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table CustomConfig
+-- ----------------------------
+ALTER TABLE [dbo].[CustomConfig] ADD CONSTRAINT [PK_CustomConfig_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table CustomConfigItem
+-- ----------------------------
+ALTER TABLE [dbo].[CustomConfigItem] ADD CONSTRAINT [PK_CustomConfigItem_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventCertificate
+-- ----------------------------
+ALTER TABLE [dbo].[EventCertificate] ADD CONSTRAINT [PK_EventCertificate_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventCustomField
+-- ----------------------------
+ALTER TABLE [dbo].[EventCustomField] ADD CONSTRAINT [PK_EventCustomField_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventFeeConfig
+-- ----------------------------
+ALTER TABLE [dbo].[EventFeeConfig] ADD CONSTRAINT [PK_EventFeeConfig_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventInfo
+-- ----------------------------
+ALTER TABLE [dbo].[EventInfo] ADD CONSTRAINT [PK_EventInfo_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventParticipant
+-- ----------------------------
+ALTER TABLE [dbo].[EventParticipant] ADD CONSTRAINT [PK_EventParticipant_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventParticipationRecord
+-- ----------------------------
+ALTER TABLE [dbo].[EventParticipationRecord] ADD CONSTRAINT [PK_EventParticipationRecord_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventProject
+-- ----------------------------
+ALTER TABLE [dbo].[EventProject] ADD CONSTRAINT [PK_EventProject_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventProjectFee
+-- ----------------------------
+ALTER TABLE [dbo].[EventProjectFee] ADD CONSTRAINT [PK_EventProjectFee_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventProjectGroup
+-- ----------------------------
+ALTER TABLE [dbo].[EventProjectGroup] ADD CONSTRAINT [PK_EventProjectGroup_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventProjectRegistrationLimit
+-- ----------------------------
+ALTER TABLE [dbo].[EventProjectRegistrationLimit] ADD CONSTRAINT [PK_EventProjectRegistrationLimit_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventRegistration
+-- ----------------------------
+ALTER TABLE [dbo].[EventRegistration] ADD CONSTRAINT [PK_EventRegistration_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventRegistrationItem
+-- ----------------------------
+ALTER TABLE [dbo].[EventRegistrationItem] ADD CONSTRAINT [PK_EventRegistrationItem_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventRegistrationLimit
+-- ----------------------------
+ALTER TABLE [dbo].[EventRegistrationLimit] ADD CONSTRAINT [PK_EventRegistrationLimit_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventRegistrationPayment
+-- ----------------------------
+ALTER TABLE [dbo].[EventRegistrationPayment] ADD CONSTRAINT [PK_EventRegistrationPayment_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventRegistrationPerson
+-- ----------------------------
+ALTER TABLE [dbo].[EventRegistrationPerson] ADD CONSTRAINT [PK_EventRegistrationPerson_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventResult
+-- ----------------------------
+ALTER TABLE [dbo].[EventResult] ADD CONSTRAINT [PK_EventResult_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventScoreSheet
+-- ----------------------------
+ALTER TABLE [dbo].[EventScoreSheet] ADD CONSTRAINT [PK_EventScoreSheet_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table EventUnit
+-- ----------------------------
+ALTER TABLE [dbo].[EventUnit] ADD CONSTRAINT [PK_EventUnit_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table FriendLink
+-- ----------------------------
+ALTER TABLE [dbo].[FriendLink] ADD CONSTRAINT [PK_FriendLink_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Merchant
+-- ----------------------------
+ALTER TABLE [dbo].[Merchant] ADD CONSTRAINT [PK_Merchant_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table MerchantCertification
+-- ----------------------------
+ALTER TABLE [dbo].[MerchantCertification] ADD CONSTRAINT [PK_MerchantCertification_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Order
+-- ----------------------------
+ALTER TABLE [dbo].[Order] ADD CONSTRAINT [PK_Order_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Pictures
+-- ----------------------------
+ALTER TABLE [dbo].[Pictures] ADD CONSTRAINT [PK_Pictures_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table PointsRecord
+-- ----------------------------
+ALTER TABLE [dbo].[PointsRecord] ADD CONSTRAINT [PK_PointsRecord_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table PointsRule
+-- ----------------------------
+ALTER TABLE [dbo].[PointsRule] ADD CONSTRAINT [PK_PointsRule_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table PointsRuleDetail
+-- ----------------------------
+ALTER TABLE [dbo].[PointsRuleDetail] ADD CONSTRAINT [PK_PointsRuleDetail_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Praise
+-- ----------------------------
+ALTER TABLE [dbo].[Praise] ADD CONSTRAINT [PK_Praise_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Project
+-- ----------------------------
+ALTER TABLE [dbo].[Project] ADD CONSTRAINT [PK_Project_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table ProjectGroup
+-- ----------------------------
+ALTER TABLE [dbo].[ProjectGroup] ADD CONSTRAINT [PK_ProjectGroup_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table RefundConfig
+-- ----------------------------
+ALTER TABLE [dbo].[RefundConfig] ADD CONSTRAINT [PK_RefundConfig_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table RefundRecord
+-- ----------------------------
+ALTER TABLE [dbo].[RefundRecord] ADD CONSTRAINT [PK_RefundRecord_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysCity
+-- ----------------------------
+ALTER TABLE [dbo].[SysCity] ADD CONSTRAINT [PK_SysCity_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysDistrict
+-- ----------------------------
+ALTER TABLE [dbo].[SysDistrict] ADD CONSTRAINT [PK_SysDistrict_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysMenu
+-- ----------------------------
+ALTER TABLE [dbo].[SysMenu] ADD CONSTRAINT [PK_SysMenu_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysOperationLog
+-- ----------------------------
+ALTER TABLE [dbo].[SysOperationLog] ADD CONSTRAINT [PK_SysOperationLog_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysOrganization
+-- ----------------------------
+ALTER TABLE [dbo].[SysOrganization] ADD CONSTRAINT [PK_SysOrganization_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysProvince
+-- ----------------------------
+ALTER TABLE [dbo].[SysProvince] ADD CONSTRAINT [PK_SysProvince_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysRole
+-- ----------------------------
+ALTER TABLE [dbo].[SysRole] ADD CONSTRAINT [PK_SysRole_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysRoleMenu
+-- ----------------------------
+ALTER TABLE [dbo].[SysRoleMenu] ADD CONSTRAINT [PK_SysRoleMenu_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysSigninLog
+-- ----------------------------
+ALTER TABLE [dbo].[SysSigninLog] ADD CONSTRAINT [PK_SysSigninLog_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysSmsLog
+-- ----------------------------
+ALTER TABLE [dbo].[SysSmsLog] ADD CONSTRAINT [PK_SysSmsLog_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysUser
+-- ----------------------------
+ALTER TABLE [dbo].[SysUser] ADD CONSTRAINT [PK_SysUser_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SysUserRole
+-- ----------------------------
+ALTER TABLE [dbo].[SysUserRole] ADD CONSTRAINT [PK_SysUserRole_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table Team
+-- ----------------------------
+ALTER TABLE [dbo].[Team] ADD CONSTRAINT [PK_Team_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table TeamMember
+-- ----------------------------
+ALTER TABLE [dbo].[TeamMember] ADD CONSTRAINT [PK_TeamMember_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table UserCoupon
+-- ----------------------------
+ALTER TABLE [dbo].[UserCoupon] ADD CONSTRAINT [PK_UserCoupon_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table WeChatPayConfig
+-- ----------------------------
+ALTER TABLE [dbo].[WeChatPayConfig] ADD CONSTRAINT [PK_WeChatPayConfig_Id] PRIMARY KEY CLUSTERED ([Id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
+
diff --git a/二期需求/花样跳绳打分(1).xmind b/二期需求/花样跳绳打分(1).xmind
new file mode 100644
index 0000000..4b21214
Binary files /dev/null and b/二期需求/花样跳绳打分(1).xmind differ
diff --git a/二期需求/花样跳绳裁判端开发说明书(简明执行版).docx b/二期需求/花样跳绳裁判端开发说明书(简明执行版).docx
new file mode 100644
index 0000000..0ae18db
Binary files /dev/null and b/二期需求/花样跳绳裁判端开发说明书(简明执行版).docx differ
diff --git a/二期需求/花样跳绳裁判端逻辑与测试验收说明书.docx b/二期需求/花样跳绳裁判端逻辑与测试验收说明书.docx
new file mode 100644
index 0000000..5c14e6c
Binary files /dev/null and b/二期需求/花样跳绳裁判端逻辑与测试验收说明书.docx differ
diff --git a/二期需求/赛事二期四模块开发设计说明书(含数据库变更).docx b/二期需求/赛事二期四模块开发设计说明书(含数据库变更).docx
new file mode 100644
index 0000000..fec7d3b
Binary files /dev/null and b/二期需求/赛事二期四模块开发设计说明书(含数据库变更).docx differ
diff --git a/二期需求/赛事二期四模块开发设计说明书(含数据库变更).txt b/二期需求/赛事二期四模块开发设计说明书(含数据库变更).txt
new file mode 100644
index 0000000..eb79e78
--- /dev/null
+++ b/二期需求/赛事二期四模块开发设计说明书(含数据库变更).txt
@@ -0,0 +1,2 @@
+
+TECHNICAL DEVELOPMENT SPECIFICATION`n赛事二期四模块开发设计说明书`n基于 dbo.sql 一期库 · 含二期数据库变更与逐表落地指引`n文档属性`n内容`n文档属性`n内容`n版本`nV1.0 开发稿`n编制日期`n2026-08-03`n数据库`nSQL Server 16 / dbo`n一期基线`ndbo.sql(65张表)`n需求基线`n赛事二期四模块需求规格说明书`n适用人员`n后端、前端、测试、DBA、实施`n变更标识`n一期沿用 / 二期新增字段 / 二期新增表 / 兼容废弃`n设计策略`n最小侵入、版本化、可审计、可回滚`n`n交付结论 一期报名域可以继续沿用;二期现场打分域必须新增场次、裁判分配、任务、逐项评分、修正、结果版本、发布批次等表。本文已把每个功能细化到读取、插入或更新的具体表字段。`n`n0. 阅读说明与变更标识`n标识`n含义`n实施方式`n[一期沿用]`ndbo.sql 已存在表/字段`n保持兼容;按本文约束继续读写`n[二期新增字段]`n在一期表上 ALTER TABLE 增加`n先加可空/默认值,再回填、建约束与索引`n[二期新增表]`n一期不存在,二期新建`n以本文数据字典和索引约束为开发基线`n[兼容废弃]`n一期字段保留但不再作为权威数据源`n双写或派生一段时间,完成迁移后只读`n`n重要 本文没有直接修改 dbo.sql。所有二期结构均为迁移设计,必须通过独立、可回滚的数据库版本脚本发布,不得重新执行 dbo.sql 中的 DROP TABLE。`n1. 一期数据库结论`n1.1 基线概况`ndbo.sql 共解析到 65 张 dbo 表,均使用 bigint 主键 Id。`n本说明书识别出 30 张与二期四模块直接相关的一期表。`n导出脚本仅明确了各表主键,未发现外键、业务唯一索引和普通查询索引定义;二期必须补齐关键索引。`n一期普遍使用 DeleteMark、CreatedUserId、CreatedTime、UpdatedUserId、UpdatedTime 作为软删除和审计字段。`n一期日期使用 datetime、文本混用 varchar/text;二期新增字段建议使用 datetime2(3)、nvarchar(max),但接口层统一处理编码与时区。`n1.2 一期相关表按模块归属`n模块`n一期可沿用表`n结论`n报名平台`nEventInfo、EventProject、EventProjectGroup、EventRegistration、EventRegistrationItem、EventRegistrationPerson、EventRegistrationPayment、Order、RefundRecord、AppUser、Team、TeamMember`n报名主链完整,需补版本、审核、同步与参赛号字段`n打分工作台`nEventParticipationRecord、EventScoreSheet、EventResult、SysUser、SysRole、SysUserRole、SysOperationLog`n只有参赛、评分表定义、结果快照;缺现场调度与版本化评分`n裁判端`nEventScoreSheet、EventResult、SysUser`n现有表不能记录每名裁判的逐项输入和提交版本`n跃享跳小程序`nEventInfo、Project、ProjectGroup、EventResult`n可查基础赛事与结果,但缺发布批次、公开策略和更正版本`n`n1.3 一期表的关键风险`n风险`n现状`n二期处理`nEventParticipant 命名歧义`n实际存主办/承办/协办/赞助单位,不是参赛运动员`n禁止把它当参赛人表;参赛人仍用 EventRegistrationPerson / EventParticipationRecord`nEventResult.Score 为 varchar(32)`n无法可靠排序、聚合和精度控制`n新增 TotalScore decimal(18,4) 为权威值;Score 仅兼容展示`nEventScoreSheet 粒度不足`n表内是项目、组别、轮次、评分标准与起止时间`n保留作为评分表定义;新建 EventJudgeScoreSheet/Detail 存裁判提交`n无版本和并发令牌`n评分修正、成绩发布可能覆盖`n关键表增加 Version/RowVersion;历史新建版本表`n无业务审计`nSysOperationLog 偏HTTP技术日志`n新增 EventBusinessAuditLog 记录前后值、原因和业务对象`n缺可靠事件投递`n报名同步、成绩发布易丢消息`n新增 EventIntegrationOutbox,业务事务内写事件`n`n2. 二期总体数据架构`n2.1 核心数据链`n一期报名链继续作为上游,二期从有效参赛记录开始扩展现场评分域。开发时按以下主键链路传递,不以姓名、组别名称等快照字段作为关联条件。`nEventInfo → EventProject → EventProjectGroup:赛事、项目、组别。`nEventRegistration → EventRegistrationItem → EventRegistrationPerson:报名单、报名项目、报名人员。`nEventParticipationRecord:审核通过后形成的有效参赛记录。`nEventSession → EventSessionEntry:场次/场地和出场顺序。`nEventJudgeAssignment → EventJudgeTask:裁判角色绑定和具体评分任务。`nEventJudgeScoreSheet → EventJudgeScoreDetail:裁判评分单头与逐项输入。`nEventResult → EventResultVersion → EventResultPublish:当前成绩、历史版本、对外发布批次。`n2.2 二期新增表清单`n标识`n表名`n职责`n字段数`n[二期新增表]`nEventScoreRule`n评分规则版本主表`n12`n[二期新增表]`nEventScoreRuleItem`n评分规则明细`n12`n[二期新增表]`nEventVenue`n赛事场地`n10`n[二期新增表]`nEventSession`n比赛场次`n13`n[二期新增表]`nEventSessionEntry`n场次出场顺序`n11`n[二期新增表]`nEventScoringDevice`n评分设备`n9`n[二期新增表]`nEventJudgeAssignment`n裁判角色分配`n10`n[二期新增表]`nEventJudgeTask`n裁判评分任务`n16`n[二期新增表]`nEventJudgeScoreSheet`n裁判评分单版本`n22`n[二期新增表]`nEventJudgeScoreDetail`n逐项评分明细`n13`n[二期新增表]`nEventScoreCorrection`n成绩修正审批`n13`n[二期新增表]`nEventResultVersion`n成绩历史版本`n16`n[二期新增表]`nEventResultPublish`n成绩发布批次`n13`n[二期新增表]`nEventBusinessAuditLog`n业务审计`n13`n[二期新增表]`nEventIntegrationOutbox`n可靠事件投递`n12`n`n2.3 一期表新增字段清单`n标识`n一期表`n新增字段`n[二期新增字段]`nEventInfo`nTimeZone、ResultPublishMode、MinorNameDisplayMode、DataVersion、RowVersion`n[二期新增字段]`nEventRegistration`nRegistrationNo、ReviewStatus、ReviewerUserId、SubmittedTime、Version、ScoringSyncStatus、ScoringSyncVersion、ScoringSyncedTime、RowVersion`n[二期新增字段]`nEventRegistrationItem`nEventProjectId、ItemStatus、EntryType、Version`n[二期新增字段]`nEventRegistrationPerson`nIdentityType、PassportNo、TeamMemberRole、IsSubstitute、PublicDisplayName、Version`n[二期新增字段]`nEventParticipationRecord`nEventProjectGroupId、EntryType、TeamId、EntryNo、SourceVersion、SyncStatus、RowVersion`n[二期新增字段]`nEventScoreSheet`nEventProjectGroupId、ScoreRuleId、ScoreRuleVersion、SchemaVersion、RowVersion`n[二期新增字段]`nEventResult`nSessionEntryId、DifficultyScore、PerformanceScore、DeductionScore、TotalScore、IsDisqualified、DisqualifyReasonCode、ResultStatus、ResultVersion、PublishVersion、PublishedTime、CalculationJson、RowVersion`n`n3. 报名平台开发落地`n3.1 报名保存/提交`n步骤`n操作`n表与字段`n事务/校验`n1`n创建报名主单`nINSERT EventRegistration:EventId、RegistrationMode、TeamName、ContactName、ContactPhone、TotalPersonCount、TotalAmount、PaymentStatus、OrderNo、Status;二期写 RegistrationNo、ReviewStatus=0、Version=1`nEventId 有效;RegistrationNo 唯一;金额服务端计算`n2`n保存报名项目`nINSERT/UPDATE EventRegistrationItem:RegistrationId、ProjectId、EventProjectGroupId、UnitPrice、PersonCount、TotalPrice;二期写 EventProjectId、EntryType、ItemStatus、Version`n校验 EventProject/EventProjectGroup;同报名单项目组别唯一`n3`n保存人员`nINSERT/UPDATE EventRegistrationPerson:RegistrationId、RegistrationItemId、UserId、Name、Gender、BirthDate、GroupName;二期写 IdentityType、TeamMemberRole、IsSubstitute、Version`n年龄/性别/组别、人数、重复人员校验`n4`n提交报名`nUPDATE EventRegistration:Status、SubmittedTime、Version=Version+1、UpdatedTime;INSERT EventBusinessAuditLog`nWHERE Id=@id AND RowVersion=@rowVersion;截止时间读 EventInfo.RegistrationEndTime`n`n3.2 审核通过与生成有效参赛记录`n锁定 EventRegistration(RowVersion)并读取 EventRegistrationItem、EventRegistrationPerson。`n更新 EventRegistration.ReviewStatus、ReviewerUserId、Reviewer、ReviewTime、ReviewRemark、Status、Version。`n每个有效报名人员/项目组合 INSERT EventParticipationRecord,写 RegistrationId、RegistrationItemId、RegistrationPersonId、EventId、ProjectId、ParticipantName、GroupName,以及二期字段 EventProjectGroupId、EntryType、TeamId、EntryNo、SourceVersion。`n同一事务 INSERT EventBusinessAuditLog 和 EventIntegrationOutbox(eventType='registration.approved')。`n消费者成功接收后更新 EventRegistration.ScoringSyncStatus、ScoringSyncVersion、ScoringSyncedTime。`n唯一性 建议建立 EventParticipationRecord(RegistrationItemId, RegistrationPersonId, DeleteMark) 唯一索引,防止审核回调或消息重试生成重复参赛记录。`n3.3 报名查询、变更与取消`n功能`n读取字段`n写入字段`n注意事项`n报名详情`nEventRegistration.*;Item.ProjectName/GroupName/TotalPrice;Person.Name/Gender/BirthDate`n无`n证件号、手机号脱敏;不要返回密码/认证材料`n审核驳回`nEventRegistration.RowVersion`nReviewStatus、ReviewerUserId、ReviewTime、ReviewRemark、Status、Version`n写审计;不删除明细`n审核后变更`nEventRegistration.Version;ParticipationRecord.SourceVersion`nItem/Person 对应字段、Version;Registration.Version;Outbox`n已编排时禁止静默变更;工作台显示影响`n取消报名`nPaymentStatus、ParticipationStatus、场次状态`nRegistration.Status;ParticipationRecord.ParticipationStatus/CancelReason/CancelTime`n已开始场次禁止普通取消;退款走现有 RefundRecord`n`n3.4 报名平台接口到表映射`n接口`n主表`n明细表`n主要WHERE条件`nPOST /registrations`nEventRegistration`nEventRegistrationItem、EventRegistrationPerson`nEventId、CreatedUserId;幂等键由业务层控制`nPUT /registrations/{id}`nEventRegistration`nItem、Person`nId + CreatedUserId + RowVersion + DeleteMark=0`nPOST /registrations/{id}/submit`nEventRegistration`nEventBusinessAuditLog`nId + RowVersion + Status=草稿`nPOST /registrations/{id}/review`nEventRegistration`nEventParticipationRecord、AuditLog、Outbox`nId + RowVersion + ReviewStatus=待审`nGET /registrations`nEventRegistration`nItem、Person`nEventId + Status + PaymentStatus + 时间范围`n`n4. 打分系统工作台开发落地`n4.1 赛前配置`n工作台功能`n表操作`n字段`n场地维护`nINSERT/UPDATE EventVenue`nEventId、VenueCode、VenueName、Status、Sort`n场次维护`nINSERT/UPDATE EventSession`nEventId、EventProjectId、EventProjectGroupId、VenueId、SessionNo、StartTime、EndTime、Status、Version`n出场编排`nINSERT/UPDATE EventSessionEntry`nSessionId、ParticipationRecordId、EntryNo、PlayOrder、EntryStatus、Version`n评分规则发布`nINSERT EventScoreRule + EventScoreRuleItem`nRuleCode、RuleVersion、RuleJson、JudgeRole、ItemCode、LevelValue、上下限、步长`n评分表定义`nUPDATE/INSERT EventScoreSheet`nEventId、ProjectId、GroupName、Round、ScoreCriteria;二期写 EventProjectGroupId、ScoreRuleId、ScoreRuleVersion、SchemaVersion=2`n设备绑定`nINSERT/UPDATE EventScoringDevice`nDeviceCode、BindUserId、LastOnlineTime、Status`n裁判分配`nINSERT/UPDATE EventJudgeAssignment`nSessionId、JudgeUserId、JudgeRole、DeviceId、AssignmentStatus`n`n4.2 开始场次与下发任务`nUPDATE EventSession.Status=30(进行中),WHERE Id=@sessionId AND RowVersion=@rowVersion。`n选择下一位时 UPDATE EventSessionEntry.EntryStatus=进行中、StartTime,并将 EventSession.CurrentEntryId 更新为该 Entry.Id。`n读取 EventJudgeAssignment 中有效裁判分配,按每个 JudgeRole INSERT EventJudgeTask;TaskSnapshotJson 固化赛事、项目、组别、参赛者、规则摘要。`n同事务写 EventIntegrationOutbox(eventType='judge_task.dispatched');推送失败可由裁判端 GET /judge/tasks/current 补拉。`n上一位仍有 TaskStatus=评分中/已下发未提交时,默认拒绝切换;强制切换必须写 EventBusinessAuditLog.Reason。`n4.3 提交进度监控`n显示项`n查询表`n字段/聚合`n裁判角色状态`nEventJudgeTask`nJudgeRole、TaskStatus、DispatchedTime、AcceptedTime、ExpiresTime`n裁判/设备在线`nEventJudgeAssignment + EventScoringDevice + SysUser`nJudgeUserId、DeviceId、LastOnlineTime、Status、SysUser.Name`n评分单状态`nEventJudgeScoreSheet`nSheetStatus、SheetVersion、SubmittedTime、TotalScore、IsDisqualified`n缺交/超时`nEventJudgeTask`nTaskStatus 非已提交且 ExpiresTime < SYSUTCDATETIME()`n成绩聚合状态`nEventResult + EventResultVersion`nResultStatus、ResultVersion、TotalScore、CalculationJson`n`n4.4 成绩聚合、确认与发布`n收齐必须角色的当前有效 EventJudgeScoreSheet(IsCurrent=1, SheetStatus=已提交) 后触发聚合。`n评分引擎读取 EventScoreRule/Item 和各 ScoreDetail,使用 decimal 计算,生成 CalculationJson。`nUPSERT EventResult:写二期字段 DifficultyScore、PerformanceScore、DeductionScore、TotalScore、DQ、ResultStatus、ResultVersion;兼容同步 Score=格式化字符串。`nINSERT EventResultVersion 保存不可变版本;确认时仅更新 EventResult 当前快照状态。`n发布时 INSERT EventResultPublish,更新 EventResult.PublishVersion、PublishedTime、ResultStatus;同事务写 Outbox(result.published)。`n4.5 工作台接口到表映射`n接口`n读表`n写表`n并发控制`nPOST /sessions`nEventProject、EventProjectGroup、EventVenue`nEventSession`nSessionNo业务唯一`nPUT /sessions/{id}/entries`nEventParticipationRecord`nEventSessionEntry`nSessionId+PlayOrder/ParticipationRecordId唯一`nPOST /sessions/{id}/start`nEventSession`nEventSession、AuditLog`nRowVersion`nPOST /sessions/{id}/dispatch`nSessionEntry、JudgeAssignment、ScoreRule`nJudgeTask、Outbox`nSession/Entry Version`nGET /sessions/{id}/monitor`nJudgeTask、JudgeScoreSheet、Device`n无`n只读,推送+补拉`nPOST /results/{id}/confirm`nEventResult、ResultVersion`nEventResult、AuditLog`nEventResult.RowVersion + ResultVersion`nPOST /results/publish`nEventResult、ResultVersion`nResultPublish、EventResult、Outbox、AuditLog`n发布范围+PublishVersion唯一`n`n5. 打分系统裁判端开发落地`n5.1 领取任务`n登录账号沿用 SysUser;权限沿用 SysRole/SysUserRole,新增角色数据 DP、DM、DR、P、T,不新增系统角色表。`nGET 当前任务查询 EventJudgeTask,条件 JudgeUserId=@userId、TaskStatus in(已下发,已接收,评分中)、ExpiresTime未过期。`n任务头部直接读取 TaskSnapshotJson,避免赛事配置在评分过程中变化;关联 ID 仅用于校验和后续查询。`n接收任务 UPDATE TaskStatus、AcceptedTime、TaskVersion,并校验 RowVersion。`n5.2 草稿与正式提交`n动作`n表操作`n必须写入/校验`n首次保存草稿`nINSERT EventJudgeScoreSheet;批量 INSERT EventJudgeScoreDetail`nJudgeTaskId、JudgeUserId、JudgeRole、ScoreRuleId/Version、SheetVersion=1、SheetStatus=草稿;Detail.ItemCode/InputValue/CountValue`n更新草稿`nUPDATE 当前草稿;MERGE/重建 Detail`n仅 SheetStatus=草稿且 JudgeUserId=当前用户;规则项必须属于当前 RuleId`n服务端复算`n读取 RuleItem + Detail`n写 DifficultyScore、PerformanceScore、DeductionScore、TotalScore、CalculationJson;客户端值不可信`n正式提交`nUPDATE ScoreSheet;UPDATE JudgeTask;INSERT AuditLog/Outbox`nIdempotencyKey 唯一;SheetStatus=已提交、SubmittedTime;TaskStatus=已提交`n提交结果查询`n查询 ScoreSheet`n按 JudgeTaskId+IdempotencyKey 返回同一结果,处理客户端超时重试`n`n5.3 各裁判角色的明细落表`n角色`nEventJudgeScoreDetail.ItemCode 示例`n字段写法`n评分单汇总字段`nDP/DM/DR`nREQUIRED_N3_PLUS、REQUIRED_N2_MINUS、DIFFICULTY_LEVEL_0_8`nCountValue=数量;UnitValue=规则分值;Subtotal=CountValue×UnitValue`nDifficultyScore;规定元素完成/缺失写 CalculationJson`nP`nMUSIC、QUALITY、ENTERTAINMENT、CREATIVITY、VARIETY、FAILURE_COUNT`n手工值 InputValue;失误联动行 IsAutoGenerated=1、ParentItemCode=FAILURE_COUNT`nPerformanceScore`nT`nINTERMISSION、VIOLATION、FAILURE、REQUIRED_MISSING、DQ_REASON_*`nCountValue、UnitValue、Subtotal;DQ原因写评分单头 DisqualifyReasonCode`nDeductionScore、IsDisqualified、TotalScore`n`n5.4 修正流程`n工作台 INSERT EventScoreCorrection(CorrectionStatus=申请),不得直接 UPDATE 已提交评分单。`n批准后 INSERT 新 EventJudgeTask,OriginalTaskId 指向旧任务,任务状态为修正任务。`n裁判提交新 EventJudgeScoreSheet,SheetVersion=旧版本+1、OriginalSheetId=旧评分单、CorrectionReason=申请原因。`n事务内将旧评分单 IsCurrent=0,新评分单 IsCurrent=1;更新 EventScoreCorrection.NewScoreSheetId、CorrectionStatus=完成。`n重新聚合 EventResult,INSERT 新 EventResultVersion;已发布成绩需重新走发布流程。`n6. 跃享跳小程序开发落地`n6.1 公开成绩查询`n页面`n主查询表`nWHERE条件`n返回字段`n赛事列表`nEventInfo`nDeleteMark=0 AND EventStatus可公开;关联存在已发布结果`nId、EventName、MatchStartTime/EndTime、地区、CoverImage`n项目/组别筛选`nEventProject、EventProjectGroup、Project`nEventId=@eventId AND DeleteMark=0`nEventProjectId、ProjectId、Project.Name、EventProjectGroupId、GroupName`n排名列表`nEventResult`nEventId/ProjectId/GroupName;ResultStatus=已发布;PublishVersion有效`nRank、PublicDisplayName或ParticipantName脱敏、TotalScore、IsDisqualified`n成绩详情`nEventResult + EventResultVersion + EventResultPublish`nResultVersion/PublishVersion匹配;PublicFieldJson允许`n难度/表现/扣分/总分/更新时间/更正说明`n`n6.2 禁止直接返回的字段`nEventRegistrationPerson.IdCard、Phone、Email、BirthDate、PassportNo。`nEventRegistration.ContactPhone、ContactEmail、PaymentProofUrl、MaterialUrl。`nEventJudgeScoreSheet.JudgeUserId、IdempotencyKey、CorrectionReason,以及内部 CalculationJson 全量内容。`nSysUser、AppUser、Order、Payment、Refund 任何敏感或财务字段。`n后端强制 公开查询必须在服务端按 EventResultPublish.PublicFieldJson 做字段裁剪,不能只依靠小程序前端隐藏。建议建立只读查询服务或数据库视图 vw_PublicEventResult。`n6.3 缓存失效`n缓存键建议:event-result:{EventId}:{ProjectId}:{EventProjectGroupId}:{PublishVersion}。EventResultPublish 发布、撤销或更正事务成功后,由 EventIntegrationOutbox 发送 result.published/result.revoked,使查询服务删除旧 PublishVersion 缓存。`n7. 一期表变更数据字典`n7.1 EventInfo(一期表)`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增字段]`nTimeZone`nvarchar(64)`n否`n'Asia/Shanghai'`n赛事时区`n[二期新增字段]`nResultPublishMode`nint`n否`n0`n成绩发布粒度`n[二期新增字段]`nMinorNameDisplayMode`nint`n否`n0`n未成年人姓名公开策略`n[二期新增字段]`nDataVersion`nint`n否`n1`n对外同步版本`n[二期新增字段]`nRowVersion`nrowversion`n否`n`n并发控制`n`n7.2 EventRegistration(一期表)`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增字段]`nRegistrationNo`nvarchar(64)`n是`nNULL`n人类可读报名号;迁移后设唯一`n[二期新增字段]`nReviewStatus`nint`n否`n0`n独立审核状态,避免复用Status`n[二期新增字段]`nReviewerUserId`nbigint`n是`nNULL`n审核人SysUser.Id;Reviewer保留快照`n[二期新增字段]`nSubmittedTime`ndatetime2(3)`n是`nNULL`n正式提交时间`n[二期新增字段]`nVersion`nint`n否`n1`n业务版本`n[二期新增字段]`nScoringSyncStatus`nint`n否`n0`n未同步/已同步/失败`n[二期新增字段]`nScoringSyncVersion`nint`n否`n0`n同步到评分域的版本`n[二期新增字段]`nScoringSyncedTime`ndatetime2(3)`n是`nNULL`n最近同步时间`n[二期新增字段]`nRowVersion`nrowversion`n否`n`n并发控制`n`n7.3 EventRegistrationItem(一期表)`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增字段]`nEventProjectId`nbigint`n是`nNULL`n补齐赛事项目关联`n[二期新增字段]`nItemStatus`nint`n否`n0`n报名项状态`n[二期新增字段]`nEntryType`nint`n否`n0`n个人/双人/四人/团体`n[二期新增字段]`nVersion`nint`n否`n1`n报名项版本`n`n7.4 EventRegistrationPerson(一期表)`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增字段]`nIdentityType`nint`n否`n1`n证件类型`n[二期新增字段]`nPassportNo`nnvarchar(32)`n是`nNULL`n护照号;应加密或令牌化`n[二期新增字段]`nTeamMemberRole`nint`n是`nNULL`n队员/教练/领队/替补`n[二期新增字段]`nIsSubstitute`nbit`n否`n0`n是否替补`n[二期新增字段]`nPublicDisplayName`nnvarchar(64)`n是`nNULL`n对外显示名`n[二期新增字段]`nVersion`nint`n否`n1`n人员版本`n`n隐私规则 一期 IdCard 为明文字段。二期新数据应迁移到加密/令牌化方案;在完成兼容改造前,禁止在日志和公开接口输出 IdCard/PassportNo。`n7.5 EventParticipationRecord(一期表)`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增字段]`nEventProjectGroupId`nbigint`n是`nNULL`n赛事组别主键`n[二期新增字段]`nEntryType`nint`n否`n0`n个人/双人/四人/团体`n[二期新增字段]`nTeamId`nbigint`n是`nNULL`n队伍主体`n[二期新增字段]`nEntryNo`nvarchar(32)`n是`nNULL`n赛事内参赛号`n[二期新增字段]`nSourceVersion`nint`n否`n1`n来源报名版本`n[二期新增字段]`nSyncStatus`nint`n否`n0`n同步/编排状态`n[二期新增字段]`nRowVersion`nrowversion`n否`n`n并发控制`n`n7.6 EventScoreSheet(一期表)`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增字段]`nEventProjectGroupId`nbigint`n是`nNULL`n评分表定义对应赛事组别`n[二期新增字段]`nScoreRuleId`nbigint`n是`nNULL`n二期评分规则`n[二期新增字段]`nScoreRuleVersion`nint`n是`nNULL`n规则版本`n[二期新增字段]`nSchemaVersion`nint`n否`n1`n定义结构版本;二期使用2`n[二期新增字段]`nRowVersion`nrowversion`n否`n`n并发控制`n`n7.7 EventResult(一期表)`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增字段]`nSessionEntryId`nbigint`n是`nNULL`n二期场次出场记录`n[二期新增字段]`nDifficultyScore`ndecimal(18,4)`n否`n0`n难度分`n[二期新增字段]`nPerformanceScore`ndecimal(18,4)`n否`n0`n表现分`n[二期新增字段]`nDeductionScore`ndecimal(18,4)`n否`n0`n扣分`n[二期新增字段]`nTotalScore`ndecimal(18,4)`n是`nNULL`n权威数值总分;Score保留兼容字符串`n[二期新增字段]`nIsDisqualified`nbit`n否`n0`n是否DQ`n[二期新增字段]`nDisqualifyReasonCode`nvarchar(64)`n是`nNULL`nDQ原因`n[二期新增字段]`nResultStatus`nint`n否`n0`n二期结果状态`n[二期新增字段]`nResultVersion`nint`n否`n1`n当前结果版本`n[二期新增字段]`nPublishVersion`nint`n是`nNULL`n当前公开版本`n[二期新增字段]`nPublishedTime`ndatetime2(3)`n是`nNULL`n发布时间`n[二期新增字段]`nCalculationJson`nnvarchar(max)`n是`nNULL`n当前聚合明细`n[二期新增字段]`nRowVersion`nrowversion`n否`n`n并发控制`n`n兼容规则 新增 TotalScore 为权威数值字段;一期 Score(varchar(32)) 暂时由服务层同步写入格式化值。所有计算、排序和排名禁止再使用 Score。`n8. 二期新增表数据字典`n8.1 EventScoreRule [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n否`n`n赛事`n[二期新增表]`nEventProjectId`nbigint`n否`n`n赛事项目`n[二期新增表]`nEventProjectGroupId`nbigint`n是`nNULL`n赛事组别;NULL 表示项目通用`n[二期新增表]`nRuleCode`nvarchar(64)`n否`n`n规则编码`n[二期新增表]`nRuleName`nnvarchar(128)`n否`n`n规则名称`n[二期新增表]`nRuleVersion`nint`n否`n1`n同一规则递增版本`n[二期新增表]`nRuleJson`nnvarchar(max)`n否`n`n完整只读规则快照`n[二期新增表]`nStatus`nint`n否`n0`n0草稿/10已发布/90停用`n[二期新增表]`nPublishedTime`ndatetime2(3)`n是`nNULL`n发布时间`n[二期新增表]`nCreatedUserId`nbigint`n否`n`n创建人`n[二期新增表]`nCreatedTime`ndatetime2(3)`n否`nSYSUTCDATETIME()`n创建时间`n`n8.2 EventScoreRuleItem [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nScoreRuleId`nbigint`n否`n`n规则主表`n[二期新增表]`nJudgeRole`nvarchar(16)`n否`n`nDP/DM/DR/P/T`n[二期新增表]`nItemCode`nvarchar(64)`n否`n`n稳定项编码`n[二期新增表]`nItemName`nnvarchar(128)`n否`n`n显示名称`n[二期新增表]`nItemType`nint`n否`n`n1等级计数/2表现维度/3扣分/4DQ原因`n[二期新增表]`nLevelValue`ndecimal(18,4)`n是`nNULL`n等级或单次分值`n[二期新增表]`nMinValue`ndecimal(18,4)`n是`nNULL`n最小值`n[二期新增表]`nMaxValue`ndecimal(18,4)`n是`nNULL`n最大值`n[二期新增表]`nStepValue`ndecimal(18,4)`n是`nNULL`n步长`n[二期新增表]`nSort`nint`n否`n0`n显示顺序`n[二期新增表]`nExtensionJson`nnvarchar(max)`n是`nNULL`n联动/显示扩展`n`n8.3 EventVenue [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n否`n`n赛事`n[二期新增表]`nVenueCode`nvarchar(32)`n否`n`n场地编码`n[二期新增表]`nVenueName`nnvarchar(128)`n否`n`n场地名称`n[二期新增表]`nStatus`nint`n否`n1`n可用状态`n[二期新增表]`nSort`nint`n否`n0`n排序`n[二期新增表]`nCreatedUserId`nbigint`n否`n`n创建人`n[二期新增表]`nCreatedTime`ndatetime2(3)`n否`nSYSUTCDATETIME()`n创建时间`n[二期新增表]`nUpdatedUserId`nbigint`n是`nNULL`n更新人`n[二期新增表]`nUpdatedTime`ndatetime2(3)`n是`nNULL`n更新时间`n`n8.4 EventSession [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n否`n`n赛事`n[二期新增表]`nEventProjectId`nbigint`n否`n`n赛事项目`n[二期新增表]`nEventProjectGroupId`nbigint`n否`n`n赛事组别`n[二期新增表]`nVenueId`nbigint`n否`n`n场地`n[二期新增表]`nSessionNo`nvarchar(32)`n否`n`n场次号`n[二期新增表]`nSessionName`nnvarchar(128)`n是`nNULL`n场次名称`n[二期新增表]`nStartTime`ndatetime2(3)`n是`nNULL`n计划开始`n[二期新增表]`nEndTime`ndatetime2(3)`n是`nNULL`n计划结束`n[二期新增表]`nStatus`nint`n否`n0`n场次状态`n[二期新增表]`nCurrentEntryId`nbigint`n是`nNULL`n当前出场记录`n[二期新增表]`nVersion`nint`n否`n1`n乐观锁业务版本`n[二期新增表]`nRowVersion`nrowversion`n否`n`n数据库并发令牌`n`n8.5 EventSessionEntry [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nSessionId`nbigint`n否`n`n场次`n[二期新增表]`nParticipationRecordId`nbigint`n否`n`n一期有效参赛记录`n[二期新增表]`nEntryNo`nvarchar(32)`n否`n`n场内参赛号`n[二期新增表]`nPlayOrder`nint`n否`n`n出场顺序`n[二期新增表]`nEntryStatus`nint`n否`n0`n待出场/检录/进行/完成/退赛/DQ`n[二期新增表]`nCallTime`ndatetime2(3)`n是`nNULL`n叫号时间`n[二期新增表]`nStartTime`ndatetime2(3)`n是`nNULL`n实际开始`n[二期新增表]`nFinishTime`ndatetime2(3)`n是`nNULL`n实际结束`n[二期新增表]`nVersion`nint`n否`n1`n版本`n[二期新增表]`nRowVersion`nrowversion`n否`n`n并发令牌`n`n8.6 EventScoringDevice [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n否`n`n赛事`n[二期新增表]`nDeviceCode`nvarchar(64)`n否`n`n设备唯一编码`n[二期新增表]`nDeviceName`nnvarchar(128)`n是`nNULL`n设备名称`n[二期新增表]`nDeviceType`nint`n否`n0`n平板/电脑/手机`n[二期新增表]`nBindUserId`nbigint`n是`nNULL`n当前绑定后台用户`n[二期新增表]`nLastOnlineTime`ndatetime2(3)`n是`nNULL`n最后在线`n[二期新增表]`nStatus`nint`n否`n1`n可用/离线/停用`n[二期新增表]`nRemark`nnvarchar(512)`n是`nNULL`n备注`n`n8.7 EventJudgeAssignment [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n否`n`n赛事`n[二期新增表]`nSessionId`nbigint`n否`n`n场次`n[二期新增表]`nJudgeUserId`nbigint`n否`n`nSysUser.Id`n[二期新增表]`nJudgeRole`nvarchar(16)`n否`n`nDP/DM/DR/P/T`n[二期新增表]`nDeviceId`nbigint`n是`nNULL`n绑定设备`n[二期新增表]`nAssignmentStatus`nint`n否`n1`n有效/替换/停用`n[二期新增表]`nStartTime`ndatetime2(3)`n是`nNULL`n生效时间`n[二期新增表]`nEndTime`ndatetime2(3)`n是`nNULL`n失效时间`n[二期新增表]`nRemark`nnvarchar(512)`n是`nNULL`n替换原因等`n`n8.8 EventJudgeTask [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nSessionId`nbigint`n否`n`n场次`n[二期新增表]`nSessionEntryId`nbigint`n否`n`n当前出场记录`n[二期新增表]`nJudgeAssignmentId`nbigint`n否`n`n裁判分配`n[二期新增表]`nJudgeUserId`nbigint`n否`n`n裁判用户快照`n[二期新增表]`nJudgeRole`nvarchar(16)`n否`n`n角色快照`n[二期新增表]`nScoreRuleId`nbigint`n否`n`n评分规则`n[二期新增表]`nRuleVersion`nint`n否`n`n规则版本`n[二期新增表]`nTaskVersion`nint`n否`n1`n任务版本`n[二期新增表]`nTaskStatus`nint`n否`n0`n任务状态`n[二期新增表]`nTaskSnapshotJson`nnvarchar(max)`n否`n`n赛事/参赛者/规则摘要`n[二期新增表]`nDispatchedTime`ndatetime2(3)`n是`nNULL`n下发时间`n[二期新增表]`nAcceptedTime`ndatetime2(3)`n是`nNULL`n接收时间`n[二期新增表]`nExpiresTime`ndatetime2(3)`n是`nNULL`n有效截止`n[二期新增表]`nOriginalTaskId`nbigint`n是`nNULL`n修正任务来源`n[二期新增表]`nRowVersion`nrowversion`n否`n`n并发令牌`n`n8.9 EventJudgeScoreSheet [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nJudgeTaskId`nbigint`n否`n`n裁判任务`n[二期新增表]`nSessionEntryId`nbigint`n否`n`n出场记录`n[二期新增表]`nJudgeUserId`nbigint`n否`n`n提交裁判`n[二期新增表]`nJudgeRole`nvarchar(16)`n否`n`n裁判角色`n[二期新增表]`nScoreRuleId`nbigint`n否`n`n规则`n[二期新增表]`nRuleVersion`nint`n否`n`n规则版本`n[二期新增表]`nSheetVersion`nint`n否`n1`n评分版本`n[二期新增表]`nSheetStatus`nint`n否`n0`n草稿/已提交/已确认/作废`n[二期新增表]`nIsCurrent`nbit`n否`n1`n当前有效版本`n[二期新增表]`nDifficultyScore`ndecimal(18,4)`n否`n0`n难度分`n[二期新增表]`nPerformanceScore`ndecimal(18,4)`n否`n0`n表现分`n[二期新增表]`nDeductionScore`ndecimal(18,4)`n否`n0`n扣分`n[二期新增表]`nTotalScore`ndecimal(18,4)`n否`n0`n裁判单合计`n[二期新增表]`nIsDisqualified`nbit`n否`n0`n是否DQ`n[二期新增表]`nDisqualifyReasonCode`nvarchar(64)`n是`nNULL`nDQ原因编码`n[二期新增表]`nCalculationJson`nnvarchar(max)`n否`n`n服务端计算明细`n[二期新增表]`nIdempotencyKey`nvarchar(64)`n否`n`n提交幂等键`n[二期新增表]`nSubmittedTime`ndatetime2(3)`n是`nNULL`n提交时间`n[二期新增表]`nOriginalSheetId`nbigint`n是`nNULL`n修正来源`n[二期新增表]`nCorrectionReason`nnvarchar(512)`n是`nNULL`n修正原因`n[二期新增表]`nRowVersion`nrowversion`n否`n`n并发令牌`n`n8.10 EventJudgeScoreDetail [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nScoreSheetId`nbigint`n否`n`n评分单`n[二期新增表]`nItemCode`nvarchar(64)`n否`n`n规则项编码`n[二期新增表]`nItemName`nnvarchar(128)`n否`n`n项名称快照`n[二期新增表]`nItemType`nint`n否`n`n项类型`n[二期新增表]`nInputValue`ndecimal(18,4)`n是`nNULL`n原始输入`n[二期新增表]`nCountValue`ndecimal(18,4)`n是`nNULL`n计数`n[二期新增表]`nUnitValue`ndecimal(18,4)`n是`nNULL`n单值`n[二期新增表]`nSubtotal`ndecimal(18,4)`n是`nNULL`n小计`n[二期新增表]`nIsAutoGenerated`nbit`n否`n0`n是否由失误等联动生成`n[二期新增表]`nParentItemCode`nvarchar(64)`n是`nNULL`n联动来源`n[二期新增表]`nExtensionJson`nnvarchar(max)`n是`nNULL`n额外输入/说明`n[二期新增表]`nSort`nint`n否`n0`n显示顺序`n`n8.11 EventScoreCorrection [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n否`n`n赛事`n[二期新增表]`nSessionEntryId`nbigint`n否`n`n出场记录`n[二期新增表]`nOriginalScoreSheetId`nbigint`n否`n`n原评分单`n[二期新增表]`nJudgeRole`nvarchar(16)`n否`n`n角色`n[二期新增表]`nApplyUserId`nbigint`n否`n`n申请人`n[二期新增表]`nApplyReason`nnvarchar(512)`n否`n`n申请原因`n[二期新增表]`nApproveUserId`nbigint`n是`nNULL`n审批人`n[二期新增表]`nApproveRemark`nnvarchar(512)`n是`nNULL`n审批意见`n[二期新增表]`nCorrectionStatus`nint`n否`n0`n申请/批准/拒绝/完成`n[二期新增表]`nNewScoreSheetId`nbigint`n是`nNULL`n完成后的新评分单`n[二期新增表]`nCreatedTime`ndatetime2(3)`n否`nSYSUTCDATETIME()`n申请时间`n[二期新增表]`nCompletedTime`ndatetime2(3)`n是`nNULL`n完成时间`n`n8.12 EventResultVersion [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventResultId`nbigint`n否`n`n一期EventResult`n[二期新增表]`nSessionEntryId`nbigint`n否`n`n出场记录`n[二期新增表]`nResultVersion`nint`n否`n`n结果版本`n[二期新增表]`nDifficultyScore`ndecimal(18,4)`n否`n0`n难度聚合`n[二期新增表]`nPerformanceScore`ndecimal(18,4)`n否`n0`n表现聚合`n[二期新增表]`nDeductionScore`ndecimal(18,4)`n否`n0`n主裁判扣分`n[二期新增表]`nTotalScore`ndecimal(18,4)`n否`n0`n正式总分`n[二期新增表]`nRank`nint`n是`nNULL`n该版本名次`n[二期新增表]`nIsDisqualified`nbit`n否`n0`n是否DQ`n[二期新增表]`nDisqualifyReasonCode`nvarchar(64)`n是`nNULL`nDQ原因`n[二期新增表]`nResultStatus`nint`n否`n0`n计算/待复核/确认/发布/撤销`n[二期新增表]`nRuleVersion`nint`n否`n`n评分规则版本`n[二期新增表]`nCalculationJson`nnvarchar(max)`n否`n`n聚合明细`n[二期新增表]`nCreatedUserId`nbigint`n否`n`n生成人`n[二期新增表]`nCreatedTime`ndatetime2(3)`n否`nSYSUTCDATETIME()`n生成时间`n`n8.13 EventResultPublish [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n否`n`n赛事`n[二期新增表]`nPublishVersion`nint`n否`n`n发布版本`n[二期新增表]`nPublishScope`nint`n否`n`n赛事/项目/组别/场次`n[二期新增表]`nScopeId`nbigint`n是`nNULL`n范围对象`n[二期新增表]`nPublishStatus`nint`n否`n0`n准备/已发布/已撤销`n[二期新增表]`nPublicFieldJson`nnvarchar(max)`n否`n`n公开字段策略`n[二期新增表]`nMinorNameDisplayMode`nint`n否`n0`n未成年人姓名策略`n[二期新增表]`nPublishedUserId`nbigint`n是`nNULL`n发布人`n[二期新增表]`nPublishedTime`ndatetime2(3)`n是`nNULL`n发布时间`n[二期新增表]`nRevokedUserId`nbigint`n是`nNULL`n撤销人`n[二期新增表]`nRevokedTime`ndatetime2(3)`n是`nNULL`n撤销时间`n[二期新增表]`nRemark`nnvarchar(512)`n是`nNULL`n更正/撤销说明`n`n8.14 EventBusinessAuditLog [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n是`nNULL`n赛事`n[二期新增表]`nBizType`nvarchar(64)`n否`n`nREGISTRATION/JUDGE_TASK/SCORE/RESULT/PUBLISH`n[二期新增表]`nBizId`nbigint`n否`n`n业务主键`n[二期新增表]`nAction`nvarchar(64)`n否`n`n动作`n[二期新增表]`nOperatorUserId`nbigint`n否`n`n操作人`n[二期新增表]`nOperatorRole`nvarchar(64)`n是`nNULL`n操作角色`n[二期新增表]`nBeforeJson`nnvarchar(max)`n是`nNULL`n变更前`n[二期新增表]`nAfterJson`nnvarchar(max)`n是`nNULL`n变更后`n[二期新增表]`nReason`nnvarchar(512)`n是`nNULL`n原因`n[二期新增表]`nTraceId`nvarchar(64)`n是`nNULL`n链路ID`n[二期新增表]`nRemoteIp`nvarchar(64)`n是`nNULL`n来源IP`n[二期新增表]`nCreatedTime`ndatetime2(3)`n否`nSYSUTCDATETIME()`n时间`n`n8.15 EventIntegrationOutbox [二期新增表]`n标识`n字段`nSQL Server类型`nNULL`n默认值`n用途`n[二期新增表]`nId`nbigint`n否`n`n主键`n[二期新增表]`nEventId`nbigint`n是`nNULL`n赛事`n[二期新增表]`nAggregateType`nvarchar(64)`n否`n`n聚合类型`n[二期新增表]`nAggregateId`nbigint`n否`n`n聚合主键`n[二期新增表]`nEventType`nvarchar(128)`n否`n`n事件类型`n[二期新增表]`nPayloadJson`nnvarchar(max)`n否`n`n事件负载`n[二期新增表]`nPayloadVersion`nint`n否`n1`n负载版本`n[二期新增表]`nPublishStatus`nint`n否`n0`n待发/已发/失败`n[二期新增表]`nRetryCount`nint`n否`n0`n重试次数`n[二期新增表]`nNextRetryTime`ndatetime2(3)`n是`nNULL`n下次重试`n[二期新增表]`nCreatedTime`ndatetime2(3)`n否`nSYSUTCDATETIME()`n创建时间`n[二期新增表]`nPublishedTime`ndatetime2(3)`n是`nNULL`n发送时间`n`n9. 索引、唯一约束与外键`n表`n索引名`n字段`n用途`nEventRegistration`nUX_EventRegistration_RegistrationNo`nRegistrationNo`nUNIQUE WHERE RegistrationNo IS NOT NULL`nEventParticipationRecord`nUX_EPR_RegItem_Person`nRegistrationItemId, RegistrationPersonId, DeleteMark`nUNIQUE`nEventSession`nUX_EventSession_No`nEventId, SessionNo`nUNIQUE`nEventSessionEntry`nUX_SessionEntry_Record`nSessionId, ParticipationRecordId`nUNIQUE`nEventSessionEntry`nUX_SessionEntry_Order`nSessionId, PlayOrder`nUNIQUE`nEventJudgeAssignment`nUX_JudgeAssign_Role`nSessionId, JudgeRole, JudgeUserId, AssignmentStatus`n按有效状态唯一`nEventJudgeTask`nIX_JudgeTask_Current`nJudgeUserId, TaskStatus, ExpiresTime`n裁判端当前任务`nEventJudgeTask`nUX_JudgeTask_Version`nSessionEntryId, JudgeAssignmentId, TaskVersion`nUNIQUE`nEventJudgeScoreSheet`nUX_ScoreSheet_Idempotency`nIdempotencyKey`nUNIQUE`nEventJudgeScoreSheet`nUX_ScoreSheet_Current`nJudgeTaskId, SheetVersion`nUNIQUE`nEventJudgeScoreDetail`nUX_ScoreDetail_Item`nScoreSheetId, ItemCode`nUNIQUE`nEventResultVersion`nUX_Result_Version`nEventResultId, ResultVersion`nUNIQUE`nEventResultPublish`nUX_Publish_Version`nEventId, PublishVersion`nUNIQUE`nEventIntegrationOutbox`nIX_Outbox_Pending`nPublishStatus, NextRetryTime, CreatedTime`n消息发布扫描`nEventBusinessAuditLog`nIX_Audit_Biz`nBizType, BizId, CreatedTime DESC`n业务追溯`n`n9.2 外键策略`n新表必须建立外键;一期表若历史脏数据较多,可先建立 WITH NOCHECK 外键或仅在应用层校验,清洗后再启用。`n所有软删除表的外键不使用 ON DELETE CASCADE;删除通过 DeleteMark/状态控制,保留评分审计链。`nEventJudgeScoreSheet、EventResultVersion、EventScoreCorrection 等审计链表禁止物理删除。`n跨服务拆库时,把外键改为逻辑外键,但仍保留索引和服务端存在性校验。`n10. 状态枚举与字段常量`n枚举`n建议值`n说明`nSessionStatus`n0草稿 / 10就绪 / 20检录 / 30进行中 / 40暂停 / 50待确认 / 60结束 / 90取消`nEventSession.Status`nSessionEntryStatus`n0待出场 / 10已检录 / 20叫号 / 30进行中 / 40完成 / 80退赛 / 90DQ`nEventSessionEntry.EntryStatus`nJudgeTaskStatus`n0待下发 / 10已下发 / 20已接收 / 30评分中 / 40已提交 / 50需修正 / 60已修正 / 90作废 / 99过期`nEventJudgeTask.TaskStatus`nScoreSheetStatus`n0草稿 / 10已提交 / 20已确认 / 30修正版 / 90作废`nEventJudgeScoreSheet.SheetStatus`nCorrectionStatus`n0申请 / 10批准 / 20拒绝 / 30评分中 / 40完成 / 90取消`nEventScoreCorrection.CorrectionStatus`nResultStatus`n0计算中 / 10待复核 / 20已确认 / 30已发布 / 40已更正 / 90已撤销`nEventResult.ResultStatus / Version.ResultStatus`nPublishStatus`n0准备 / 10已发布 / 90已撤销`nEventResultPublish.PublishStatus`nJudgeRole`nDP / DM / DR / P / T`n数据库存稳定代码,中文名称由字典/规则返回`n`n兼容提醒 一期各 Status 字段的实际枚举必须从现有后端代码核对后再迁移;本文只定义新增字段枚举,不建议直接改写一期 Status 的数值语义。`n11. 事务、幂等与并发`n业务事务`n同一事务内必须完成`n失败处理`n审核通过`n更新 EventRegistration + 插入 ParticipationRecord + AuditLog + Outbox`n整体回滚;消息异步重试`n任务下发`n更新 Session/Entry + 插入 JudgeTask + Outbox`n整体回滚;禁止只有部分裁判收到有效任务`n评分提交`n更新 ScoreSheet/Detail + 更新 JudgeTask + AuditLog + Outbox`nIdempotencyKey 重复返回原结果`n修正切版`n旧Sheet IsCurrent=0 + 新Sheet IsCurrent=1 + Correction完成 + 结果重算触发`n唯一约束保证仅一个当前版本`n成绩发布`n插入 ResultPublish + 更新 EventResult 发布字段 + AuditLog + Outbox`n数据库成功即视为发布已受理;缓存/通知异步补偿`n`n关键 UPDATE 必须带 RowVersion 或 Version 条件,受影响行数为 0 时返回 409 Conflict。`n评分提交先按 IdempotencyKey 查询;存在则直接返回已保存评分单,不重复写明细。`n聚合任务按 SessionEntryId 加分布式锁或数据库应用锁,同一参赛者只允许一个聚合任务执行。`nOutbox 发布器采用 SELECT ... WITH (UPDLOCK, READPAST) 批量领取,失败递增 RetryCount 并计算 NextRetryTime。`n12. 数据迁移与发布步骤`n备份 QA/生产并记录 dbo.sql 基线哈希;禁止在迁移脚本中 DROP 一期表。`n第一批只创建二期新表、可空字段、默认约束和非唯一索引。`n回填 EventRegistration.RegistrationNo、Version;EventResult.TotalScore 从 Score TRY_CONVERT(decimal(18,4)),无法转换的数据进入异常清单。`n根据 EventRegistrationItem.ProjectId + EventProjectGroupId 回填 EventProjectId;无法唯一匹配的数据人工处理。`n应用上线进入兼容双写:EventResult 同时写 TotalScore 和 Score,ReviewerUserId 与 Reviewer 同步。`n验证数据一致后创建唯一索引、启用 NOT NULL/外键约束。`n逐赛事启用二期评分域功能开关;一期结果查询保留回滚通道。`n稳定运行一个赛事周期后再评估停写 Score、旧 ScoreCriteria 或其他兼容字段。`n12.2 回滚原则`n结构回滚只关闭二期功能并停止写新表,不立即删除新表或新增字段。`n发布失败时 EventResult.PublishVersion 指回上一有效版本,并新建撤销审计记录。`n迁移脚本必须提供 down 说明,但生产 down 不执行破坏性 DROP;数据保留用于审计。`n13. 建议迁移DDL骨架`n说明 以下是开发起步骨架,不替代最终 DBA 审核。主键值沿用现有 bigint ID 生成器;约束名、默认值和外键需按项目迁移框架拆分。`n-- 1) 一期表加字段示例(先可兼容发布)`nALTER TABLE dbo.EventResult ADD`n SessionEntryId bigint NULL,`n DifficultyScore decimal(18,4) NOT NULL CONSTRAINT DF_EventResult_DifficultyScore DEFAULT(0),`n PerformanceScore decimal(18,4) NOT NULL CONSTRAINT DF_EventResult_PerformanceScore DEFAULT(0),`n DeductionScore decimal(18,4) NOT NULL CONSTRAINT DF_EventResult_DeductionScore DEFAULT(0),`n TotalScore decimal(18,4) NULL,`n IsDisqualified bit NOT NULL CONSTRAINT DF_EventResult_DQ DEFAULT(0),`n DisqualifyReasonCode varchar(64) NULL,`n ResultStatus int NOT NULL CONSTRAINT DF_EventResult_ResultStatus DEFAULT(0),`n ResultVersion int NOT NULL CONSTRAINT DF_EventResult_ResultVersion DEFAULT(1),`n PublishVersion int NULL,`n PublishedTime datetime2(3) NULL,`n CalculationJson nvarchar(max) NULL,`n RowVersion rowversion;`n `n-- 2) 二期裁判任务核心表`nCREATE TABLE dbo.EventJudgeTask(`n Id bigint NOT NULL CONSTRAINT PK_EventJudgeTask PRIMARY KEY,`n SessionId bigint NOT NULL,`n SessionEntryId bigint NOT NULL,`n JudgeAssignmentId bigint NOT NULL,`n JudgeUserId bigint NOT NULL,`n JudgeRole varchar(16) NOT NULL,`n ScoreRuleId bigint NOT NULL,`n RuleVersion int NOT NULL,`n TaskVersion int NOT NULL CONSTRAINT DF_EventJudgeTask_Version DEFAULT(1),`n TaskStatus int NOT NULL CONSTRAINT DF_EventJudgeTask_Status DEFAULT(0),`n TaskSnapshotJson nvarchar(max) NOT NULL,`n DispatchedTime datetime2(3) NULL,`n AcceptedTime datetime2(3) NULL,`n ExpiresTime datetime2(3) NULL,`n OriginalTaskId bigint NULL,`n RowVersion rowversion`n);`n `n-- 3) 裁判评分单:IdempotencyKey防重复,历史版本不覆盖`nCREATE TABLE dbo.EventJudgeScoreSheet(`n Id bigint NOT NULL CONSTRAINT PK_EventJudgeScoreSheet PRIMARY KEY,`n JudgeTaskId bigint NOT NULL,`n SessionEntryId bigint NOT NULL,`n JudgeUserId bigint NOT NULL,`n JudgeRole varchar(16) NOT NULL,`n ScoreRuleId bigint NOT NULL,`n RuleVersion int NOT NULL,`n SheetVersion int NOT NULL CONSTRAINT DF_JudgeSheet_Version DEFAULT(1),`n SheetStatus int NOT NULL CONSTRAINT DF_JudgeSheet_Status DEFAULT(0),`n IsCurrent bit NOT NULL CONSTRAINT DF_JudgeSheet_Current DEFAULT(1),`n DifficultyScore decimal(18,4) NOT NULL CONSTRAINT DF_JudgeSheet_D DEFAULT(0),`n PerformanceScore decimal(18,4) NOT NULL CONSTRAINT DF_JudgeSheet_P DEFAULT(0),`n DeductionScore decimal(18,4) NOT NULL CONSTRAINT DF_JudgeSheet_T DEFAULT(0),`n TotalScore decimal(18,4) NOT NULL CONSTRAINT DF_JudgeSheet_Total DEFAULT(0),`n IsDisqualified bit NOT NULL CONSTRAINT DF_JudgeSheet_DQ DEFAULT(0),`n DisqualifyReasonCode varchar(64) NULL,`n CalculationJson nvarchar(max) NOT NULL,`n IdempotencyKey varchar(64) NOT NULL,`n SubmittedTime datetime2(3) NULL,`n OriginalSheetId bigint NULL,`n CorrectionReason nvarchar(512) NULL,`n RowVersion rowversion,`n CONSTRAINT UX_JudgeSheet_Idempotency UNIQUE(IdempotencyKey),`n CONSTRAINT UX_JudgeSheet_TaskVersion UNIQUE(JudgeTaskId, SheetVersion)`n);`n `n-- 4) 权威数值迁移;不能转换的旧Score需人工处理`nUPDATE dbo.EventResult`nSET TotalScore = TRY_CONVERT(decimal(18,4), Score)`nWHERE TotalScore IS NULL;`nSELECT Id, Score FROM dbo.EventResult`nWHERE Score IS NOT NULL AND TotalScore IS NULL;`n14. 开发与测试完成定义`n检查项`n完成标准`n数据库`n新表/字段、默认值、索引、外键、回填脚本均通过QA;无DROP一期数据`n后端`n每个写接口有事务、幂等、权限、版本冲突处理和业务审计`n裁判端`n任务快照驱动;草稿恢复;提交超时可查询结果;不重复生成评分单`n工作台`n场次、出场、裁判、设备、任务、评分、结果、发布状态可追踪`n小程序`n只读已发布版本;敏感字段不返回;更正/撤销后缓存及时失效`n测试`n覆盖重复提交、串场、断网、修正、DQ、并发确认、发布撤销、旧数据迁移`n运维`nOutbox积压、评分失败、设备离线、版本冲突、发布延迟均有监控告警`n`n附录A:一期相关表字段速查`nEventInfo`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nEventName`nvarchar(128)`n否`n[一期沿用]`nCoverImage`nvarchar(256)`n是`n[一期沿用]`nEventVideo`nvarchar(256)`n是`n[一期沿用]`nEventType`nint`n否`n[一期沿用]`nChargeMode`nint`n否`n[一期沿用]`nEventStatus`nint`n否`n[一期沿用]`nRegistrationType`nint`n否`n[一期沿用]`nPointsRuleId`nbigint`n是`n[一期沿用]`nRegistrationStartTime`ndatetime`n否`n[一期沿用]`nRegistrationEndTime`ndatetime`n否`n[一期沿用]`nIsNeedMaterial`nbit`n否`n[一期沿用]`nMaterialRemark`nvarchar(256)`n是`n[一期沿用]`nMaterialUploadStartTime`ndatetime`n是`n[一期沿用]`nMaterialUploadEndTime`ndatetime`n是`n[一期沿用]`nMatchStartTime`ndatetime`n否`n[一期沿用]`nMatchEndTime`ndatetime`n否`n[一期沿用]`nProvinceId`nbigint`n是`n[一期沿用]`nCityId`nbigint`n是`n[一期沿用]`nDistrictId`nbigint`n是`n[一期沿用]`nDetailAddress`nvarchar(256)`n是`n[一期沿用]`nEventIntroduction`ntext`n是`n[一期沿用]`nProcessStatus`nint`n否`n[一期沿用]`nStatus`nint`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nCustomConfigJson`ntext`n是`n[一期沿用]`nQrCodeUrl`nvarchar(256)`n是`n[一期沿用]`nMerchantId`nbigint`n是`n[一期沿用]`nPointsRuleSnapshot`ntext`n是`n[一期沿用]`nRefundRuleSnapshot`ntext`n是`n`nEventProject`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nEventId`nbigint`n否`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nProjectId`nbigint`n否`n[一期沿用]`nGenderType`nint`n否`n[一期沿用]`nPrice`ndecimal(10,2)`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n`nEventProjectGroup`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nEventId`nbigint`n否`n[一期沿用]`nEventProjectId`nbigint`n否`n[一期沿用]`nProjectId`nbigint`n否`n[一期沿用]`nProjectGroupId`nbigint`n否`n[一期沿用]`nGroupName`nvarchar(128)`n否`n[一期沿用]`nBirthDateStart`ndatetime`n否`n[一期沿用]`nBirthDateEnd`ndatetime`n否`n[一期沿用]`nGender`nint`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n`nEventRegistration`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nEventId`nbigint`n否`n[一期沿用]`nRegistrationMode`nint`n否`n[一期沿用]`nTeamName`nvarchar(128)`n是`n[一期沿用]`nContactName`nvarchar(64)`n否`n[一期沿用]`nContactPhone`nvarchar(16)`n否`n[一期沿用]`nContactEmail`nvarchar(64)`n是`n[一期沿用]`nTotalPersonCount`nint`n否`n[一期沿用]`nTotalAmount`ndecimal(18,4)`n否`n[一期沿用]`nPaymentStatus`nint`n否`n[一期沿用]`nPaymentMethod`nint`n否`n[一期沿用]`nOrderNo`nvarchar(64)`n否`n[一期沿用]`nPaymentTime`ndatetime`n是`n[一期沿用]`nReviewer`nvarchar(64)`n是`n[一期沿用]`nReviewTime`ndatetime`n是`n[一期沿用]`nReviewRemark`ntext`n是`n[一期沿用]`nRegistrationRemark`ntext`n是`n[一期沿用]`nRegistrationTime`ndatetime`n否`n[一期沿用]`nStatus`nint`n否`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nPaymentProofUrl`nvarchar(512)`n是`n[一期沿用]`nMaterialUrl`nvarchar(512)`n是`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nPaymentMethodType`nint`n否`n[一期沿用]`nMerchantCertificationId`nbigint`n是`n`nEventRegistrationItem`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nRegistrationId`nbigint`n否`n[一期沿用]`nProjectId`nbigint`n否`n[一期沿用]`nProjectName`nvarchar(128)`n否`n[一期沿用]`nGroupName`nvarchar(64)`n否`n[一期沿用]`nUnitPrice`ndecimal(18,4)`n否`n[一期沿用]`nPersonCount`nint`n否`n[一期沿用]`nTotalPrice`ndecimal(18,4)`n否`n[一期沿用]`nRemark`ntext`n是`n[一期沿用]`nProjectTypeName`nvarchar(64)`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nEventProjectGroupId`nbigint`n是`n[一期沿用]`nRefundOrderId`nbigint`n是`n`nEventRegistrationPerson`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nRegistrationId`nbigint`n否`n[一期沿用]`nRegistrationItemId`nbigint`n否`n[一期沿用]`nProjectId`nbigint`n否`n[一期沿用]`nPersonType`nint`n否`n[一期沿用]`nName`nvarchar(64)`n否`n[一期沿用]`nGender`nint`n否`n[一期沿用]`nIdCard`nvarchar(18)`n否`n[一期沿用]`nBirthDate`ndatetime`n否`n[一期沿用]`nPhone`nvarchar(16)`n否`n[一期沿用]`nAge`nint`n否`n[一期沿用]`nEmail`nvarchar(64)`n是`n[一期沿用]`nGroupName`nvarchar(64)`n否`n[一期沿用]`nProjectName`nvarchar(128)`n是`n[一期沿用]`nCustomFieldValue`nvarchar(128)`n是`n[一期沿用]`nRemark`ntext`n是`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nEventProjectGroupId`nbigint`n是`n[一期沿用]`nUserId`nbigint`n否`n[一期沿用]`nRefundOrderId`nbigint`n是`n`nEventRegistrationPayment`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nRegistrationId`nbigint`n否`n[一期沿用]`nTransactionNo`nvarchar(64)`n否`n[一期沿用]`nPaymentChannel`nint`n否`n[一期沿用]`nPaymentAmount`ndecimal(18,4)`n否`n[一期沿用]`nPaymentTime`ndatetime`n否`n[一期沿用]`nPaymentStatus`nint`n否`n[一期沿用]`nRefundStatus`nint`n否`n[一期沿用]`nRefundAmount`ndecimal(18,4)`n否`n[一期沿用]`nRefundTime`ndatetime`n是`n[一期沿用]`nRefundReason`ntext`n是`n[一期沿用]`nPayeeAccount`nvarchar(128)`n否`n[一期沿用]`nPayerAccount`nvarchar(128)`n是`n[一期沿用]`nRemark`ntext`n是`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n`nEventParticipationRecord`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nRegistrationId`nbigint`n否`n[一期沿用]`nRegistrationItemId`nbigint`n否`n[一期沿用]`nRegistrationPersonId`nbigint`n否`n[一期沿用]`nEventId`nbigint`n否`n[一期沿用]`nProjectId`nbigint`n否`n[一期沿用]`nParticipantName`nvarchar(64)`n否`n[一期沿用]`nGroupName`nvarchar(64)`n否`n[一期沿用]`nParticipationStatus`nint`n否`n[一期沿用]`nParticipationTime`ndatetime`n是`n[一期沿用]`nFinishTime`ndatetime`n是`n[一期沿用]`nCancelReason`ntext`n是`n[一期沿用]`nCancelTime`ndatetime`n是`n[一期沿用]`nRemark`ntext`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n`nEventScoreSheet`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nEventId`nbigint`n否`n[一期沿用]`nProjectId`nbigint`n否`n[一期沿用]`nProjectName`nvarchar(128)`n否`n[一期沿用]`nGroupName`nvarchar(64)`n否`n[一期沿用]`nRound`nint`n否`n[一期沿用]`nSheetName`nvarchar(128)`n否`n[一期沿用]`nScoreCriteria`ntext`n是`n[一期沿用]`nScoreStatus`nint`n否`n[一期沿用]`nStartScoreTime`ndatetime`n是`n[一期沿用]`nEndScoreTime`ndatetime`n是`n[一期沿用]`nRemark`ntext`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n`nEventResult`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nParticipationRecordId`nbigint`n否`n[一期沿用]`nRegistrationId`nbigint`n否`n[一期沿用]`nRegistrationPersonId`nbigint`n否`n[一期沿用]`nEventId`nbigint`n否`n[一期沿用]`nProjectId`nbigint`n否`n[一期沿用]`nParticipantName`nvarchar(64)`n否`n[一期沿用]`nGroupName`nvarchar(64)`n否`n[一期沿用]`nScore`nvarchar(32)`n否`n[一期沿用]`nRank`nint`n否`n[一期沿用]`nAwardLevel`nint`n否`n[一期沿用]`nAwardStatus`nint`n否`n[一期沿用]`nRemark`ntext`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nProjectTypeName`nvarchar(64)`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nStatus`nint`n否`n[一期沿用]`nMerchantCertificationId`nbigint`n是`n`nSysUser`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nAccount`nvarchar(32)`n否`n[一期沿用]`nPassword`nvarchar(64)`n否`n[一期沿用]`nName`nvarchar(32)`n否`n[一期沿用]`nGender`nint`n否`n[一期沿用]`nOrgId`nbigint`n否`n[一期沿用]`nNickName`nvarchar(32)`n是`n[一期沿用]`nBirthday`ndate`n是`n[一期沿用]`nAvatar`nvarchar(256)`n是`n[一期沿用]`nMobile`nvarchar(16)`n是`n[一期沿用]`nEmail`nvarchar(64)`n是`n[一期沿用]`nStatus`nint`n否`n[一期沿用]`nLastLoginIp`nvarchar(32)`n是`n[一期沿用]`nLastLoginAddress`nvarchar(255)`n是`n[一期沿用]`nLastLoginTime`ndatetime`n是`n[一期沿用]`nRemark`nvarchar(256)`n是`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nLockExpired`ndatetime`n是`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n`nSysRole`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nName`nvarchar(32)`n否`n[一期沿用]`nCode`nvarchar(32)`n否`n[一期沿用]`nStatus`nint`n否`n[一期沿用]`nSort`nint`n否`n[一期沿用]`nRemark`nvarchar(256)`n是`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n`nTeam`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nName`nvarchar(64)`n否`n[一期沿用]`nStatus`nint`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nMerchantCertificationId`nbigint`n是`n`nTeamMember`n标识`n字段`n类型`nNULL`n[一期沿用]`nId`nbigint`n否`n[一期沿用]`nTeamId`nbigint`n否`n[一期沿用]`nUserId`nbigint`n否`n[一期沿用]`nJoinTime`ndatetime`n否`n[一期沿用]`nDeleteMark`nbit`n否`n[一期沿用]`nCreatedUserId`nbigint`n否`n[一期沿用]`nCreatedTime`ndatetime`n否`n[一期沿用]`nUpdatedUserId`nbigint`n是`n[一期沿用]`nUpdatedTime`ndatetime`n是`n[一期沿用]`nPersonType`nint DEFAULT ((1))`n否`n`n
diff --git a/二期需求/赛事二期四模块需求规格说明书.docx b/二期需求/赛事二期四模块需求规格说明书.docx
new file mode 100644
index 0000000..310803e
Binary files /dev/null and b/二期需求/赛事二期四模块需求规格说明书.docx differ
diff --git a/二期需求/赛事二期四模块需求规格说明书.txt b/二期需求/赛事二期四模块需求规格说明书.txt
new file mode 100644
index 0000000..1975f90
--- /dev/null
+++ b/二期需求/赛事二期四模块需求规格说明书.txt
@@ -0,0 +1,2 @@
+
+PRODUCT REQUIREMENTS SPECIFICATION`n赛事二期四模块需求规格说明书`n报名平台 · 打分系统工作台 · 打分系统裁判端 · 跃享跳小程序`n文档属性`n内容`n文档属性`n内容`n版本`nV1.0(开发评审稿)`n编制日期`n2026-08-03`n需求来源`n蓝湖 Axure 原型《花样打分系统》`n适用对象`n产品、研发、测试、实施、运维`n覆盖范围`n四个指定模块`n需求阶段`n赛事二期`n原型可用性`n部分页面可见;页面树受登录状态影响`n说明`n原型明确项与开发补全项分级标注`n`n文档使用原则 标记为【原型明确】的内容可作为实现基线;标记为【开发补全】的内容用于补齐可开发、可测试所必需的系统行为,需在需求评审中确认后纳入范围。`n`n修订记录`n版本`n日期`n修订说明`n编制`nV1.0`n2026-08-03`n基于蓝湖原型首次形成四模块开发规格`nCodex`n`n目录与阅读导航`n1. 文档说明与需求分级`n2. 产品目标、范围与总体流程`n3. 角色权限与核心数据模型`n4. 报名平台需求`n5. 打分系统工作台需求`n6. 打分系统裁判端需求`n7. 跃享跳小程序需求`n8. 评分规则与成绩计算`n9. 跨模块接口与事件`n10. 非功能、安全与运维要求`n11. 测试验收与上线准备`n12. 待确认问题清单`n1. 文档说明与需求分级`n1.1 编制目的`n本说明书将原型中的页面与交互意图转化为可供研发、测试和实施直接使用的需求基线,重点补齐页面背后的数据、权限、状态、计算、接口、异常和验收标准。`n1.2 需求证据等级`n等级`n含义`n实施要求`nA|原型明确`n原型中可直接观察到的页面、字段、角色、按钮、规则或示例`n默认纳入本期;如变更需产品确认`nB|强关联推导`n为使原型流程闭环所必需,且可由上下游关系合理确定`n纳入技术方案前需产品确认边界`nC|开发补全`n原型未明确但开发、测试、运维不可缺少的行为`n评审确认后转为正式需求`nD|建议/后续`n体验、运营或平台化增强项`n不默认计入本期排期`n`n1.3 原型已确认信息`n【A】原型目录明确包含:报名平台、打分系统工作台、打分系统裁判端、跃享跳小程序;另有“跃享跳小程序成绩查询”“后期优化”“裁判长”等页面节点。`n【A】裁判端包含难度裁判 DP(力量体操)、DM(多摇)、DR(绳子运用)、表现裁判 P、主裁判 T 等角色页面。`n【A】评分页头部展示赛事、项目/赛制、组别、场次-场地、裁判角色和运动员/队伍,并提供“提交打分”“成绩修正”等操作。`n【A】难度页面分为“规定元素打分区域”和“难度打分区域”;表现裁判包含音乐、完成质量、娱乐、创意、多样性与失误计数;主裁判包含间歇、违例、失误、规定元素、取消比赛资格等处理。`n【A】原型说明:规定元素目标数量为 4;3 级及以上每个计 1 个,2 级及以下每个计 0.5 个;规定元素缺失数 = 4 - 完成数量。`n【A】原型提供难度等级示例分值表,并明确难度裁判得分为各等级动作数量乘以对应分值后求和;取消比赛资格按 0 分处理。`n限制说明 蓝湖当前出现“用户状态发生变化,请重新登录”的提示,原型画布与已加载页面可读取,但部分目录子页面无法稳定展开。因此本文对未直接呈现的页面使用 B/C 等级,并在第 12 章集中列出待确认项。`n2. 产品目标、范围与总体流程`n2.1 产品目标`n完成从赛事配置、参赛报名、资格审核、编排与裁判分配,到现场打分、成绩确认、发布查询的完整业务闭环。`n保证多裁判、多场地并发条件下评分数据准确、可追溯、可恢复,避免重复提交、串场评分、版本覆盖和规则不一致。`n为参赛者、教练、裁判、赛事运营和公众提供与角色匹配的信息入口,同时隔离未发布成绩和敏感个人信息。`n2.2 本期范围`n模块`n核心职责`n主要用户`n本期输出`n报名平台`n赛事报名、参赛信息、项目选择、资格与缴费状态`n运动员/教练/领队、报名审核员`n有效参赛记录与报名数据包`n打分系统工作台`n赛前配置、现场调度、评分监控、异常处理、成绩确认发布`n赛事管理员、技术官员、裁判长、成绩员`n场次任务、正式成绩、审计记录`n打分系统裁判端`n按裁判角色录入并提交评分、查看/修正授权范围内成绩`nDP/DM/DR/P/T 裁判`n原始评分单、提交版本、修正记录`n跃享跳小程序`n面向移动端的赛事与成绩查询`n运动员、教练、领队、公众`n已发布成绩、排名和个人明细`n`n2.3 端到端业务流程`n赛事运营在报名平台/工作台创建赛事、项目、组别、报名规则、评分规则版本和赛程基础数据。`n参赛单位或个人提交报名;系统完成必填、年龄/性别/组别、重复报名、队伍人数和材料校验;审核通过后形成有效参赛记录。`n工作台接收报名数据,完成号码、组次、场次场地、出场顺序、裁判组和设备/账号绑定。`n现场开始场次后,工作台向对应裁判端下发当前运动员/队伍和角色任务;裁判按角色记录分项与计数。`n裁判提交评分;服务端进行版本、任务、规则、范围和幂等校验,保存原始评分单并回传提交结果。`n工作台监控各裁判提交情况,按规则聚合成绩;遇到漏评、错评、掉线或争议时进入修正/复核流程。`n成绩经裁判长/成绩负责人确认后成为正式成绩,并按发布策略同步给跃享跳小程序。`n成绩修正、取消资格或撤销发布时生成新版本和审计记录,并向查询端同步最新可见版本。`n2.4 关键状态链`n对象`n状态链`n关键约束`n报名单`n草稿 → 已提交 → 审核中 → 已通过/已驳回 → 已取消`n通过后影响编排;变更需重审或锁定`n场次`n未开始 → 检录中 → 进行中 → 待确认 → 已结束`n进行中限制规则和编排变更`n裁判任务`n待接收 → 评分中 → 已提交 → 已确认/需修正 → 已修正`n同一任务每个版本仅允许一个有效提交`n成绩`n计算中 → 待复核 → 已确认 → 已发布 → 已更正/已撤销`n仅已发布版本对小程序可见`n`n3. 角色权限与核心数据模型`n3.1 角色权限矩阵`n角色`n可见范围`n核心权限`n禁止事项`n系统管理员`n全平台`n租户/账号/基础字典/权限/审计`n不得直接修改正式成绩值`n赛事管理员`n所辖赛事`n赛事、项目、组别、报名、赛程、裁判组配置`n赛事开始后不得无痕修改规则`n报名审核员`n所辖报名`n审核、驳回、导出、异常标记`n不得查看无关赛事敏感信息`n成绩负责人/工作台操作员`n所辖场地/场次`n开闭场、叫号、监控、重发任务、发起修正、确认成绩`n不得伪造裁判原始提交`n裁判长`n授权场次`n复核、批准修正、取消资格、成绩确认`n不得删除历史版本`nDP/DM/DR/P/T 裁判`n分配任务`n录入、暂存、提交、授权后修正本人评分`n不得评分未分配任务或查看未授权裁判明细`n参赛者/教练/领队`n本人/本队`n报名维护、进度查看、已发布成绩查询`n不得访问他人隐私与未发布成绩`n公众用户`n公开赛事`n查询已发布排名/成绩`n不得查看证件、联系方式、缴费材料`n`n3.2 核心数据实体`n实体`n主键/唯一键`n关键字段`n关系与说明`n赛事 Event`nevent_id`n名称、主办方、时间、地区、状态、时区`n1:N 项目、场地、报名单、成绩`n项目 Discipline`ndiscipline_id`n项目名称、赛制、单人/团体、规则版本`n关联组别与评分模板`n组别 Category`ncategory_id`n性别、年龄、水平、队伍人数限制`n用于报名校验和排名分组`n参赛主体 Entrant`nentrant_id`n个人/队伍、成员、单位、证件脱敏信息`n一主体可有多个报名项目`n报名单 Registration`nregistration_id;赛事+主体+项目唯一`n状态、材料、费用、审核意见、版本`n通过后形成参赛记录`n场次 Session`nsession_id`n日期、场次号、场地、项目、组别、状态`n包含出场顺序和裁判组`n裁判任务 JudgeTask`ntask_id;场次+参赛记录+角色+裁判唯一`n角色、状态、下发时间、规则快照`n绑定一个或多个评分单版本`n评分单 ScoreSheet`nscore_sheet_id;task_id+version 唯一`n分项、计数、扣分、合计、提交人/时间`n原始提交不可覆盖,修正新建版本`n成绩 Result`nresult_id;参赛记录+场次唯一`n原始分、扣分、总分、排名、状态、发布版本`n聚合多个裁判评分单`n审计 AuditLog`naudit_id`n操作者、动作、前后值、原因、时间、设备/IP`n覆盖关键配置、评分、发布与权限操作`n`n3.3 通用标识与版本规则`n所有业务对象使用不可复用的全局 ID;赛事内可另设人类可读的参赛号、场次号、场地号。`n评分规则、报名规则、编排和正式成绩必须带 version;赛事进行中调用均使用任务下发时的规则快照,禁止读取被后台随后修改的“当前值”。`n评分单采用追加版本模型:submitted_version 不可物理覆盖;修正生成 version+1,并记录原版本、原因、申请人、批准人。`n接口写操作携带 request_id/idempotency_key,重复请求必须返回同一业务结果。`n4. 报名平台需求`n模块定位 负责产生准确、完整、可审核、可编排的参赛数据。由于报名平台子页面未在当前画布直接展开,本章将赛事报名闭环列为 B/C 级需求,评审时应与现有一期能力做差异确认。`n4.1 功能清单`n编号`n功能`n等级`n需求说明`n验收摘要`nREG-001`n赛事报名入口`nB`n按赛事状态展示可报名项目、报名时间、参赛须知、联系方式;停止/结束后不可新建报名。`n用户可进入正确赛事且入口状态与时间一致`nREG-002`n身份与主体选择`nC`n支持个人、队伍/单位报名;选择已有主体或新建;敏感字段按权限脱敏。`n同一账号可管理授权主体,不得越权`nREG-003`n参赛信息维护`nB`n维护姓名/队名、性别、出生日期、证件、单位、教练/领队、联系方式、成员名单、附件。`n必填和格式校验明确,草稿可续填`nREG-004`n项目与组别选择`nB`n根据赛事、主体属性和规则过滤可选项目/组别,显示冲突与限制。`n不符合条件的组合不可提交`nREG-005`n团体成员校验`nC`n校验人数上下限、成员重复、角色重复、跨队限制、队伍信息完整性。`n错误定位到具体成员与字段`nREG-006`n材料上传`nC`n支持规定格式/大小/数量的照片、证明、承诺书等;病毒扫描与访问控制。`n失败可重试,删除/替换有记录`nREG-007`n费用与订单`nC`n按项目/人数/优惠计算应付;记录支付、退款、减免和对账状态。`n金额由服务端计算,支付回调幂等`nREG-008`n提交与承诺`nB`n提交前展示确认页和声明;提交后生成编号并进入审核。`n重复点击仅产生一张报名单`nREG-009`n审核与驳回`nC`n审核员查看材料与校验结果,可通过、驳回并填写原因;批量操作需二次确认。`n状态、意见、操作者与时间可追溯`nREG-010`n报名变更/取消`nC`n在允许期限内修改或取消;已通过修改可触发重审;已编排后按策略限制。`n变更不破坏参赛号和历史版本`nREG-011`n查询与导出`nB`n按赛事、项目、组别、单位、状态、支付状态查询;导出字段按权限控制。`n导出与页面筛选一致并有审计`nREG-012`n通知`nD`n提交、审核、驳回、支付、赛程变更时通过站内/短信/微信模板通知。`n通知失败不回滚主业务,可重试`n`n4.2 报名字段与校验`n字段组`n示例字段`n校验规则`n数据处理`n主体信息`n姓名/队名、证件类型/号、出生日期、性别、单位`n证件唯一性、年龄与组别、格式、必填`n证件号加密存储、前端脱敏`n联系方式`n手机号、邮箱、紧急联系人`n格式、验证码/授权(如启用)`n仅本人和授权运营可见`n项目组别`n项目、赛制、组别、参赛类型`n开放状态、兼项冲突、性别/年龄/水平限制`n保存规则校验结果快照`n团体成员`n成员、队内角色、替补标识`n人数、重复成员、成员资格`n成员变更保留前后版本`n报名材料`n证件照、资格证明、承诺书`n类型、大小、数量、有效期`n私有存储、签名 URL、病毒扫描`n财务信息`n费用明细、订单、支付渠道、退款`n金额不可由客户端决定`n财务记录与报名状态解耦`n`n4.3 报名业务规则`n同一赛事、同一参赛主体、同一项目/组别原则上只能有一条有效报名;重复提交由服务端唯一约束拦截。`n报名截止时间按赛事时区由服务端判定;客户端时间仅用于展示。`n资格校验失败分为阻断项与警告项;阻断项不可提交,警告项允许提交但需审核员确认。`n报名通过并同步到工作台后,关键字段变更必须触发增量同步和影响提示;不得静默覆盖已编排数据。`n报名与支付状态分离。审核通过不必然等于已支付,是否要求“支付完成才有效”由赛事配置决定。`n4.4 报名平台异常与边界`n场景`n系统行为`n用户提示/补偿`n截止瞬间提交`n服务端再次校验截止时间;超时拒绝,不生成有效报名`n提示报名已截止,保留草稿只读`n支付成功但回调延迟`n订单保持处理中并主动查询渠道;回调幂等`n展示“支付确认中”,禁止重复支付`n审核后修改关键字段`n按配置进入重审或禁止修改`n明确受影响字段和审核状态`n同步工作台失败`n进入重试队列,报名通过状态不回滚`n后台展示同步异常并可人工重试`n附件上传中断`n分片/重试或重新上传,不提交不完整附件`n提示失败原因和限制`n`n5. 打分系统工作台需求`n模块定位 工作台是赛事现场的控制中心,负责把报名/编排数据转化为可执行的裁判任务,并完成评分监控、异常处置、成绩确认与发布。`n5.1 功能清单`n编号`n功能`n等级`n需求说明`nWKS-001`n赛事/场次选择`nB`n按日期、赛事、场地、项目、组别选择工作上下文;明确当前环境与网络状态。`nWKS-002`n赛前数据检查`nC`n检查参赛名单、出场顺序、裁判组、评分规则、设备绑定和发布策略完整性。`nWKS-003`n裁判组与角色分配`nB`n为场次分配 DP/DM/DR/P/T 等角色和账号/设备,禁止一人占用冲突角色。`nWKS-004`n场次控制`nB`n支持检录、开始、暂停、恢复、结束;操作需权限和确认。`nWKS-005`n叫号与当前选手`nB`n按出场顺序切换当前运动员/队,向裁判端下发一致任务;支持跳过、退赛、补赛。`nWKS-006`n提交进度监控`nA/B`n按裁判角色展示待接收、评分中、已提交、超时、离线、需修正状态。`nWKS-007`n评分单查看`nB`n查看各裁判原始分项、提交时间、版本、设备,但不得直接覆盖裁判原始值。`nWKS-008`n成绩聚合`nA/B`n按规则版本计算难度、表现、扣分、总分、DQ 与排名;展示计算明细。`nWKS-009`n异常重发/补交`nC`n任务未达、断线或误切换时可重发;已提交不得重复生成有效评分。`nWKS-010`n成绩修正流程`nA`n原型提供“成绩修正”;工作台发起修正,指定对象/原因,经授权后生成新版本。`nWKS-011`n取消比赛资格`nA`n主裁判选择原因并确认;确认 DQ 后该参赛者按 0 分处理且保留原始评分。`nWKS-012`n成绩确认/发布`nB`n裁判长或成绩负责人确认正式成绩;按赛事/项目/组别/场次发布或撤销。`nWKS-013`n排名与导出`nC`n按组别生成排名,处理并列;导出成绩册、裁判评分单、审计记录。`nWKS-014`n审计与告警`nC`n关键操作留痕;缺裁判、超时、分差异常、规则不一致、同步失败产生告警。`n`n5.2 工作台页面与组件`n页面/区域`n必须展示`n关键操作`n刷新策略`n场次总览`n赛事、场地、项目、组别、当前进度、网络/服务状态`n进入场次、开闭场、异常查看`n5-10 秒轮询或推送`n场次控制台`n当前/下一位、出场队列、各裁判提交状态、计时`n叫号、开始、暂停、跳过、重发`n任务状态实时推送`n评分监控`nDP/DM/DR/P/T 分项、版本、提交时间、异常标识`n查看详情、发起修正`n提交后实时更新`n成绩确认`n原始分、扣分、总分、DQ、排名、规则版本`n复核、确认、发布/撤销`n显式刷新并防并发覆盖`n日志告警`n时间、级别、对象、动作、结果、处理人`n确认、指派、重试、导出`n实时或近实时`n`n5.3 工作台关键控制规则`n工作台切换当前参赛者前,必须检查上一位是否仍有裁判处于评分中;允许强制切换时必须二次确认并记录原因。`n裁判端任务必须包含 event_id、session_id、entry_id、judge_role、rule_version、task_version 和有效期;任何不匹配提交均拒绝。`n正式成绩确认使用乐观锁:提交 expected_result_version;版本不一致时提示已被他人更新并要求重新加载。`n撤销发布不删除成绩,只改变对外可见版本;小程序缓存必须按 result_version 失效。`n离线补交必须校验任务时间窗和授权;超出时间窗进入人工复核,不能自动覆盖现场结果。`n5.4 成绩修正流程`n工作台选择参赛者、裁判角色和当前有效评分版本,发起修正并填写原因。`n系统冻结原版本,向原裁判或授权裁判下发“修正任务”,并展示原值但要求显式确认修改项。`n裁判提交修正版;服务端生成 ScoreSheet version+1,不覆盖 version N。`n系统重新聚合成绩,标记为“待复核”;对比展示修正前后值和对排名的影响。`n裁判长/成绩负责人批准后生成新的正式成绩版本;如已发布,按策略重新发布并记录更正说明。`n6. 打分系统裁判端需求`n原型明确 裁判端是本次可见原型最完整的模块。原型呈现 DP、DM、DR、P、T 角色页,以及赛事、项目、组别、场次-场地、提交打分、成绩与修正等元素。`n6.1 通用页面结构`n区域`n原型字段/控件`n开发要求`n任务头部`n裁判姓名、赛事、项目/赛制、裁判角色、场次-场地、组别、运动员/队`n所有字段来自任务快照;entry_id 隐式携带;明显显示当前角色和参赛者,防串评`n评分区域`n随角色变化的计数、分项、数量、小计、说明`n客户端只允许合法输入;服务端独立复算;每次修改本地暂存`n成绩信息`n成绩/小计/扣分等`n实时计算仅作预览,最终以服务端结果为准`n操作区`n提交打分、成绩修正(原型明确)`n提交前汇总确认;提交后锁定;修正需授权任务`n状态提示`n原型未完整呈现`n补充连接、同步、暂存、提交成功/失败、任务过期、只读状态`n`n6.2 通用交互要求`n数字计数提供加/减或数量选择器;范围、步长和可选值由评分模板下发,前端不得硬编码。`n减操作不得小于 0;数量选择器超出上限时禁用或拒绝,并给出明确提示。`n页面自动暂存未提交输入;刷新/短时掉线后恢复相同 task_id、task_version 的草稿。任务已切换或作废时不得自动套用旧草稿。`n提交前展示所有分项、自动小计、扣分/缺失和预估总分;裁判确认后提交。`n提交按钮防连点;请求超时后先查询提交结果,再决定是否重试,避免重复评分单。`n提交成功后页面只读并显示提交时间、版本和服务端签名/流水号;修正必须通过独立授权入口。`n6.3 难度裁判 DP/DM/DR`n【A】三类难度裁判原型页面结构一致,角色名称分别为 DP(力量体操裁判)、DM(多摇裁判)、DR(绳子运用裁判)。页面包含规定元素打分区域与难度打分区域。`n功能`n输入`n计算/展示`n校验`n规定元素计数`nn3+ 数量、n2- 数量`n完成数量 = n3+×1 + n2-×0.5;缺失数 = max(0, 4-完成数量)`n非负;步长按规则;是否允许完成数>4待确认`n难度等级计数`n各难度等级的动作数量`n各等级小计 = 数量×等级分值;难度分 = 各小计之和`n等级集合与分值使用任务规则快照`n数量选择`n原型展示 1-50 等数量选项/加减数量`n选择后更新对应行和总分`n上限应配置;避免长列表误触`n提交`n完整评分单`n服务端复算并保存原始分项与合计`n任务、角色、规则版本、幂等键必须匹配`n`n6.4 表现裁判 P`n【A】原型展示表现打分区域与失误打分区域,表现维度包括音乐、完成质量、娱乐、创意、多样性;原型说明表现裁判记录一次失误时,对应五个方面的“减数量”加 1。`n项目`n要求`n五个表现维度`n分别记录加/减计数或分值;具体初始分、步长、上下限、维度权重由规则模板配置。`n失误计数`n记录失误次数;每增加 1 次失误,系统按规则同步影响五个表现维度的减数量。需避免人工与自动重复扣减。`n联动可解释性`n界面标识由失误自动生成的扣减;撤销失误时同步回滚对应自动扣减;手工调整与自动调整分开存储。`n表现分`n客户端预览,服务端根据维度基准、加减计数、失误联动和规则版本复算。`n`n6.5 主裁判 T`n【A】原型主裁判页面包含间歇、违例、失误、规定元素、扣分打分区域,以及取消比赛资格。两人同步/四人同步页面还展示多组规定元素计数。`n功能`n原型内容`n开发行为`n扣分项`n间歇、违例、失误等计数`n扣分项、单次扣分、上限、是否可叠加均由规则模板配置;合计由服务端复算。`n规定元素`n缺失数量与计数`n单人/双人/四人按评分模板展示对应子单元;明确聚合方式。`n其他处罚`n运动员/队被叫超过 60 秒未上场、显露纹身等原型说明项`n作为可配置处罚代码,不用文案判断;记录证据/备注(若赛事要求)。`n取消比赛资格`n原因包括违反赛场纪律、参赛人员不符合规定、未穿跳绳鞋、使用外部助力器材、不文明用语、有悖奥林匹克精神的元素等`n必须选择原因并二次确认;提交后总分按 0 处理,保留原始评分,需裁判长权限。`n`n6.6 裁判端提交与修正状态`n状态`n页面行为`n允许操作`n待接收`n显示任务摘要和接收确认`n接收/拒绝(需原因)`n评分中`n输入可编辑,自动暂存,展示网络状态`n加减、选择、保存草稿、提交`n提交中`n界面冻结并显示进度`n取消重复点击;超时查询结果`n已提交`n只读显示服务端确认值、时间、版本`n返回任务列表;无权直接编辑`n需修正`n显示原值、修正原因和授权人`n修改授权字段并重新提交`n任务作废/过期`n只读并提示返回`n不得提交;联系工作台`n`n7. 跃享跳小程序需求`n原型范围 页面树明确存在“跃享跳小程序”和“跃享跳小程序成绩查询”。因此本期至少应交付已发布成绩查询;报名、支付或社交能力不在当前原型证据范围内。`n7.1 功能清单`n编号`n功能`n等级`n需求说明`nMINI-001`n赛事选择`nA/B`n展示可查询赛事,支持按名称/日期/地区筛选;仅展示允许公开的赛事。`nMINI-002`n成绩查询`nA`n按项目、组别、参赛者/队伍、参赛号查询已发布成绩。`nMINI-003`n排名列表`nB`n展示名次、姓名/队名、单位、总分、状态;支持并列和 DQ/退赛标识。`nMINI-004`n成绩详情`nB`n展示赛事、项目、组别、场次、总分及允许公开的分项/扣分/规则说明。`nMINI-005`n本人/本队成绩`nC`n登录后可聚合本人或授权队伍成绩;不应扩大公开字段。`nMINI-006`n更正提示`nC`n已发布成绩被修正时显示“已更正”、更新时间和公开说明。`nMINI-007`n分享`nD`n分享赛事榜单或个人成绩卡;分享页只含公开数据并带版本/更新时间。`n`n7.2 查询页面字段`n页面`n字段`n交互/规则`n赛事列表`n赛事名称、时间、地区、状态`n默认最近赛事;已撤销公开的赛事不展示`n筛选区`n项目、组别、参赛者/队伍、参赛号`n筛选条件联动;输入防抖;空结果给出建议`n排名列表`n名次、姓名/队名、单位、总分、状态`n并列名次按赛事规则;未发布分项不可透出`n成绩详情`n基础信息、分项、扣分、总分、版本、更新时间`n分项展示由发布配置决定;DQ 显示原因公开文案(如允许)`n`n7.3 隐私与缓存`n公开端不展示证件号、手机号、出生日期、报名材料、支付信息、裁判账号与内部审核意见。`n未成年人姓名显示策略由赛事配置决定,可使用部分脱敏或参赛号。`n查询接口只返回 status=published 且 publish_version 有效的数据;后端必须强制过滤,不能只由前端隐藏。`n榜单可短缓存,但缓存键必须包含 event_id、discipline_id、category_id、publish_version;更正或撤销发布时主动失效。`n8. 评分规则与成绩计算`n8.1 规则配置原则`n所有分值、等级、步长、上下限、扣分项、裁判角色、聚合公式、精度与舍入方式均由 rule_version 管理,不在客户端硬编码。`n规则发布后生成只读快照;场次开始后任务引用固定快照。规则修订仅影响新任务,除非通过受控的数据迁移流程。`n客户端计算仅用于即时反馈,正式成绩由服务端评分引擎复算并产出 calculation_detail。`n金额与分数均使用十进制定点数;禁止使用二进制浮点直接累加。`n8.2 原型难度分值示例`n以下来自原型说明区域,作为示例规则快照展示。原型画布还出现个别小计与分值表可能存在 0.01 差异,因此最终上线值和舍入规则必须由赛事规则负责人确认。`n难度等级`n0`n0.5`n1`n2`n3`n4`n5`n6`n7`n8`n示例分值`n0`n0.12`n0.15`n0.23`n0.34`n0.51`n0.76`n1.14`n1.71`n2.56`n`n8.3 建议计算模型`n计算项`n公式/处理`n精度与边界`n规定元素完成数`nrequired_completed = n3_plus × 1 + n2_minus × 0.5`n非负;是否封顶 4 待确认`n规定元素缺失数`nrequired_missing = max(0, required_target - required_completed)`nrequired_target 原型示例为 4`n单等级小计`nlevel_subtotal[i] = level_count[i] × level_value[i]`n内部至少 4 位小数`n难度分`ndifficulty_score = Σ level_subtotal[i]`n显示精度、逐项舍入还是总和舍入待确认`n表现分`nperformance_score = rule(base, dimensions, manual_adjustments, auto_failure_adjustments)`n维度基准、权重与上下限待确认`n主裁判扣分`nchief_deduction = Σ penalty_count[k] × penalty_value[k]`n处罚是否叠加与上限由规则配置`n总分`ntotal = aggregate(difficulty judges, performance judges) - chief_deduction`n裁判取平均/去极值等聚合规则待确认`n取消资格`nif disqualified then official_total = 0`n保留原始分和 DQ 原因;排名状态为 DQ`n`n8.4 并列与排名`n排名只基于已确认成绩;未完成、退赛、DQ 的排序位置和展示文案由赛事规则配置。`n并列打破规则必须配置为有序条件列表,例如总分 → 难度分 → 表现分 → 更少扣分;若仍相同则并列。`n成绩更正后仅重算受影响的项目/组别排名,并生成新的排名版本。`n9. 跨模块接口与事件`n9.1 接口边界`n接口域`n调用方 → 提供方`n主要能力`n一致性要求`n报名同步`n报名平台 → 工作台`n有效参赛记录、项目组别、成员、状态变更`n至少一次投递 + 消费幂等;增量带版本`n赛程任务`n工作台 → 裁判端`n当前参赛者、裁判角色、规则快照、任务状态`n实时推送 + 可拉取补偿;严格校验 task_version`n评分提交`n裁判端 → 评分服务`n草稿/正式提交/修正提交`n幂等键;服务端复算;不可覆盖历史`n成绩聚合`n评分服务 → 工作台`n评分单进度、计算结果、异常`n事件带 result_version;乱序事件丢弃旧版本`n成绩发布`n工作台 → 查询服务/小程序`n正式成绩、排名、公开字段、撤销/更正`n发布版本原子切换;缓存失效`n`n9.2 建议核心 API`n方法`n路径示例`n用途`n关键校验`nGET`n/events/{eventId}/registration-config`n读取报名规则`n事件可见性、规则版本`nPOST`n/registrations`n创建/提交报名`n资格、唯一性、截止时间、幂等`nPOST`n/sessions/{sessionId}/dispatch`n下发当前裁判任务`n场次状态、参赛记录、角色绑定`nGET`n/judge/tasks/current`n裁判端拉取当前任务`n裁判身份、设备、任务有效期`nPUT`n/judge/tasks/{taskId}/draft`n保存评分草稿`ntask_version、字段范围`nPOST`n/judge/tasks/{taskId}/submit`n提交评分`n幂等、规则快照、服务端复算`nPOST`n/score-sheets/{id}/corrections`n创建修正版本`n授权、原因、原版本、审批`nPOST`n/results/{resultId}/confirm`n确认正式成绩`nexpected_version、权限、完整性`nPOST`n/results/publish`n批量发布/撤销`n范围、版本、二次确认、审计`nGET`n/public/results`n小程序成绩查询`n仅已发布、隐私过滤、限流`n`n9.3 事件定义`n事件`n触发时机`n最小载荷`n消费者`nregistration.approved`n报名审核通过`nregistration_id、entry_id、event_id、version`n编排/工作台`nregistration.changed`n有效报名关键字段变化`n对象 ID、changed_fields、version`n工作台、通知`njudge_task.dispatched`n工作台下发任务`ntask_id、judge_id、entry_id、role、task_version`n裁判端`nscore_sheet.submitted`n裁判提交成功`nsheet_id、task_id、role、version、checksum`n聚合、工作台`nresult.confirmed`n成绩复核确认`nresult_id、result_version、status`n发布服务`nresult.published`n成绩对外发布/更正`n范围、publish_version、changed_result_ids`n小程序、缓存、通知`n`n10. 非功能、安全与运维要求`n10.1 性能与容量`n指标`n建议目标`n说明`n裁判任务下发`nP95 ≤ 1 秒(同赛场网络正常)`n从工作台确认到裁判端可见`n评分提交响应`nP95 ≤ 1.5 秒;P99 ≤ 3 秒`n含校验、复算与持久化,不含客户端断网`n工作台状态更新`n正常 ≤ 2 秒`n评分提交到监控状态更新`n公开成绩查询`nP95 ≤ 1 秒`n常用榜单可缓存`n并发容量`n按赛事最大场地数×每场裁判数×安全系数 3 评估`n压测必须覆盖多场地同时提交`n`n10.2 可用性与离线策略`n裁判端必须显示连接状态和最后同步时间;断网时允许本地草稿,但正式提交需进入明确的“待同步”队列。`n本地草稿加密存储并绑定 judge_id、device_id、task_id、task_version;退出账号或任务作废后清理。`n服务端不可用时工作台进入降级模式:保留当前参赛者与已下发任务,不允许无规则依据地切换或发布成绩。`n数据库和消息队列故障恢复必须保证评分单不丢、不重、不覆盖;按 event_id 支持灾难恢复演练。`n10.3 安全要求`n统一身份认证和基于赛事/场次/角色的数据权限;裁判端短时令牌,不在客户端持久化长期密钥。`n评分提交包含任务签名或服务端可验证的上下文,阻止伪造 task_id、跨场次提交和角色越权。`n个人敏感信息加密存储与传输;日志、导出、错误信息不得输出完整证件号和联系方式。`n关键操作(规则发布、场次开始、修正批准、DQ、成绩发布/撤销、批量导出)需二次确认与审计。`n接口实施限流、防重放、CSRF/注入防护;文件上传采用白名单、大小限制和恶意文件扫描。`n10.4 可观测性与审计`n类别`n必须记录`n告警条件`n业务指标`n任务下发数、提交成功率、平均评分时长、修正率、DQ 数、发布延迟`n提交失败率/延迟超阈、单场异常修正激增`n技术指标`nAPI 延迟、错误率、消息积压、数据库连接、推送在线数`n服务不可用、积压持续、资源逼近阈值`n审计日志`n操作者、角色、对象、动作、前后值、原因、时间、设备/IP`n高风险操作、越权尝试、批量异常`n链路追踪`nregistration_id/task_id/score_sheet_id/result_id/request_id`n跨服务超时或事件丢失`n`n11. 测试验收与上线准备`n11.1 核心验收场景`n编号`n场景`n操作`n预期结果`nAC-01`n正常闭环`n报名通过→编排→下发 DP/DM/DR/P/T→全部提交→聚合→确认→发布→小程序查询`n各模块 ID/版本一致,公开结果与工作台正式结果一致`nAC-02`n重复提交`n裁判连续点击或网络重试同一 idempotency_key`n只产生一条有效评分单,返回同一结果`nAC-03`n串场防护`n使用旧任务/其他场次 task_id 提交`n服务端拒绝并记录安全日志`nAC-04`n难度计算`n按各等级输入数量并提交`n服务端按规则快照复算,精度/舍入符合确认规则`nAC-05`n规定元素`nn3+、n2- 不同组合`n完成数与缺失数计算正确,边界不出现负数`nAC-06`n表现失误联动`n增加/撤销失误`n五维自动减数量同步变化,不与人工调整重复`nAC-07`nDQ`n主裁判选择原因并确认`n正式总分为 0,原始评分保留,小程序按规则展示 DQ`nAC-08`n成绩修正`n已提交/已发布成绩发起修正`n新建版本、完整审计、重新聚合,公开版本正确切换`nAC-09`n断网恢复`n裁判评分中断网后恢复`n草稿不丢;重复同步不重;过期任务不提交`nAC-10`n并发确认`n两名工作台人员同时确认同一成绩`n乐观锁阻止后提交者覆盖`nAC-11`n隐私`n匿名用户查询和尝试越权参数`n仅返回已发布公开字段,敏感字段不可推断`nAC-12`n报名同步变更`n已通过报名变更组别/成员`n工作台收到版本化变更并提示对编排影响`n`n11.2 测试类型`n单元测试:评分公式、边界、舍入、状态机、权限、幂等与版本比较。`n契约测试:报名同步、任务下发、评分提交、结果发布事件的 schema 与向后兼容。`n集成测试:多裁判同场提交、修正、DQ、撤销发布和小程序缓存失效。`n性能测试:多场地并发提交、榜单热点查询、批量发布、消息积压恢复。`n安全测试:越权、重放、参数篡改、注入、附件上传、敏感信息泄漏。`n现场演练:弱网/断网、设备更换、裁判替换、场次暂停、服务重启和应急纸质回录。`n11.3 上线检查表`n赛事、项目、组别、场地、场次、出场顺序已锁定并抽样核对。`n评分规则版本已由业务负责人签字确认,包含精度、舍入、聚合、并列、DQ。`n裁判账号、角色、设备、网络和备用设备已完成现场联调。`n报名与工作台全量/增量数据数量一致,无未处理同步异常。`n生产监控、告警、审计、备份和回滚预案已验证。`n小程序只读公开接口完成隐私复核,未发布成绩无法访问。`n完成至少一次全流程彩排和一次断网/恢复演练。`n12. 待确认问题清单`n评审要求 下列问题会直接影响数据库、评分引擎、接口和测试用例。建议在开发排期锁定前逐项给出结论、责任人和截止时间。`n编号`n模块`n待确认问题`n责任建议`n优先级`nQ-01`n报名平台`n一期已有页面/能力与本期新增范围分别是什么?是否包含支付、退款、材料上传和审核?`n产品/运营`n高`nQ-02`n报名平台`n个人、双人、四人、团体的成员数量、替补和兼项规则是什么?`n竞赛规则负责人`n高`nQ-03`n规则`n原型示例难度分值是否为正式值?等级 2×2 在画布中出现 0.45/0.46 差异,采用何种精度与舍入顺序?`n规则负责人`n阻断`nQ-04`n规则`n规定元素完成数超过 4 时是否封顶?缺失数是否允许小数?`n规则负责人`n高`nQ-05`n规则`nDP、DM、DR 多名裁判的分数如何聚合:求和、平均、去极值还是其他?`n规则负责人`n阻断`nQ-06`n规则`n表现五维的初始分、每次加减分值、上下限和权重分别是什么?`n规则负责人`n阻断`nQ-07`n规则`n表现失误对五维“减数量+1”的联动是永久同步还是允许裁判单独调整?`n规则负责人`n高`nQ-08`n主裁判`n间歇、违例、失误等每项扣分值、计数上限、叠加关系是什么?`n规则负责人`n阻断`nQ-09`nDQ`n哪些角色可发起/确认/撤销取消资格?是否需要双人复核?小程序是否公开原因?`n裁判长/产品`n高`nQ-10`n工作台`n成绩修正由原裁判、替补裁判还是裁判长操作?已发布成绩更正是否需要公告?`n产品/裁判长`n高`nQ-11`n排名`n并列处理、退赛/未上场/DQ 排序规则是什么?`n规则负责人`n高`nQ-12`n小程序`n成绩详情公开到何种粒度:仅总分、分项、裁判分、扣分原因?未成年人姓名如何展示?`n产品/法务`n高`nQ-13`n现场`n裁判端目标设备、屏幕方向、系统版本、网络条件和离线容忍时间是多少?`n实施/技术`n中`nQ-14`n数据`n报名平台与工作台是同库、API 同步还是消息同步?历史赛事数据是否迁移?`n架构/产品`n高`nQ-15`n发布`n成绩按单人、单场、项目或组别发布?撤销/更正的对外提示和缓存时效是什么?`n产品/运营`n高`n`n附录 A:开发任务拆分建议`n工作包`n后端`n前端/端`n测试重点`nA1 报名域`n报名/资格/订单/审核/同步`n报名 H5/管理端`n规则边界、幂等、同步`nA2 赛事编排域`n赛事/场次/裁判组/任务`n工作台配置与控制台`n状态机、并发、任务一致性`nA3 评分引擎`n规则版本、评分单、计算、修正`n裁判端 DP/DM/DR/P/T`n公式、精度、断网、重复提交`nA4 成绩发布域`n聚合、确认、排名、发布版本`n工作台成绩页、小程序`n版本切换、隐私、缓存`nA5 平台能力`n认证权限、审计、消息、监控、文件`n账号/告警/运维界面`n越权、恢复、可观测性`n`n附录 B:需求追踪约定`n研发任务、接口、测试用例和缺陷均引用本文件编号(REG/WKS/MINI/AC 等)。`n第 12 章待确认项形成评审决议后,应更新正文、版本号和修订记录,不以会议口头结论替代文档。`n原型后续更新时,以页面 ID/版本 ID 建立变更清单,判断对数据、接口、状态机和测试的影响。`n