新增成绩查询、裁判认证及检录员账号管理接口,并统一小程序角色登录与个人中心数据。 检录任务绑定赛事秩序册场次,按项目、组别、场地和场次顺序执行;支持最多三名检录员、分配检录轮次及前序检录校验。 补充检录任务、检录记录、裁判申请实体及四份数据库迁移,包含表字段备注、秩序册绑定和检录序号。
181 lines
8.3 KiB
Transact-SQL
181 lines
8.3 KiB
Transact-SQL
/*
|
||
小程序角色、裁判报名、检录任务及检录记录数据库备注迁移。
|
||
适用:SQL Server
|
||
依赖:请先执行 20260804_AddMiniProgramCompetitionRoles.sql
|
||
说明:使用 MS_Description 扩展属性,可重复执行;已有备注会更新。
|
||
*/
|
||
|
||
SET NOCOUNT ON;
|
||
|
||
DECLARE @Comments TABLE
|
||
(
|
||
SchemaName SYSNAME NOT NULL,
|
||
TableName SYSNAME NOT NULL,
|
||
ColumnName SYSNAME,
|
||
[Description] NVARCHAR(4000) NOT NULL
|
||
);
|
||
|
||
INSERT INTO @Comments (SchemaName, TableName, ColumnName, [Description])
|
||
VALUES
|
||
/* AppUser 新增角色字段 */
|
||
(N'dbo', N'AppUser', N'MiniProgramRole', N'小程序账户角色:1-参赛者,2-裁判,3-检录员;检录员只能由后台添加并绑定赛事'),
|
||
|
||
/* 裁判执裁报名 */
|
||
(N'dbo', N'RefereeApplication', N'', N'小程序裁判执裁报名表'),
|
||
(N'dbo', N'RefereeApplication', N'Id', N'主键ID'),
|
||
(N'dbo', N'RefereeApplication', N'EventId', N'赛事ID,关联 EventInfo.Id'),
|
||
(N'dbo', N'RefereeApplication', N'RefereeUserId', N'裁判小程序用户ID,关联 AppUser.Id'),
|
||
(N'dbo', N'RefereeApplication', N'ApplicationStatus', N'执裁报名状态:1-已报名,2-已确认执裁,3-报名未通过,4-已取消'),
|
||
(N'dbo', N'RefereeApplication', N'Remark', N'执裁报名备注'),
|
||
(N'dbo', N'RefereeApplication', N'Status', N'可用状态:0-启用,1-禁用'),
|
||
(N'dbo', N'RefereeApplication', N'DeleteMark', N'软删除标记:0-未删除,1-已删除'),
|
||
(N'dbo', N'RefereeApplication', N'CreatedUserId', N'创建人ID'),
|
||
(N'dbo', N'RefereeApplication', N'CreatedTime', N'创建时间'),
|
||
(N'dbo', N'RefereeApplication', N'UpdatedUserId', N'最后更新人ID'),
|
||
(N'dbo', N'RefereeApplication', N'UpdatedTime', N'最后更新时间'),
|
||
|
||
/* 检录任务 */
|
||
(N'dbo', N'CheckinTask', N'', N'检录员赛事绑定及当前检录进度任务表'),
|
||
(N'dbo', N'CheckinTask', N'Id', N'主键ID'),
|
||
(N'dbo', N'CheckinTask', N'EventId', N'绑定赛事ID,关联 EventInfo.Id'),
|
||
(N'dbo', N'CheckinTask', N'CheckerUserId', N'检录员小程序用户ID,关联 AppUser.Id'),
|
||
(N'dbo', N'CheckinTask', N'TotalRounds', N'赛事当前有效检录轮次数,由 EventScoreSheet.Round 实时同步'),
|
||
(N'dbo', N'CheckinTask', N'CurrentRound', N'当前检录轮次,对应 EventScoreSheet.Round'),
|
||
(N'dbo', N'CheckinTask', N'RoundName', N'当前检录轮次显示名称'),
|
||
(N'dbo', N'CheckinTask', N'CurrentGroupId', N'当前检录赛事组别ID,关联 EventProjectGroup.Id'),
|
||
(N'dbo', N'CheckinTask', N'CurrentGroupName', N'当前检录组别名称'),
|
||
(N'dbo', N'CheckinTask', N'GroupOrder', N'当前组别在本轮检录中的顺序'),
|
||
(N'dbo', N'CheckinTask', N'TotalGroups', N'当前轮次对应的有效组别总数'),
|
||
(N'dbo', N'CheckinTask', N'NextGroupName', N'当前轮次的下一检录组别名称'),
|
||
(N'dbo', N'CheckinTask', N'Venue', N'检录场地或检录区域'),
|
||
(N'dbo', N'CheckinTask', N'TaskStatus', N'任务状态:0-未开始或已解除绑定,1-进行中,2-已结束'),
|
||
(N'dbo', N'CheckinTask', N'Status', N'可用状态:0-启用,1-禁用'),
|
||
(N'dbo', N'CheckinTask', N'DeleteMark', N'软删除标记:0-未删除,1-已删除'),
|
||
(N'dbo', N'CheckinTask', N'CreatedUserId', N'创建任务的后台用户ID'),
|
||
(N'dbo', N'CheckinTask', N'CreatedTime', N'创建时间'),
|
||
(N'dbo', N'CheckinTask', N'UpdatedUserId', N'最后更新人ID'),
|
||
(N'dbo', N'CheckinTask', N'UpdatedTime', N'最后更新时间'),
|
||
|
||
/* 检录记录 */
|
||
(N'dbo', N'CheckinRecord', N'', N'赛事轮次和组别人员检录记录表'),
|
||
(N'dbo', N'CheckinRecord', N'Id', N'主键ID'),
|
||
(N'dbo', N'CheckinRecord', N'TaskId', N'检录任务ID,关联 CheckinTask.Id'),
|
||
(N'dbo', N'CheckinRecord', N'Round', N'检录轮次,对应任务绑定赛事的 EventScoreSheet.Round'),
|
||
(N'dbo', N'CheckinRecord', N'GroupId', N'赛事项目组别ID,关联 EventProjectGroup.Id'),
|
||
(N'dbo', N'CheckinRecord', N'RegistrationPersonId', N'报名人员ID,关联 EventRegistrationPerson.Id'),
|
||
(N'dbo', N'CheckinRecord', N'CheckerUserId', N'执行检录的检录员用户ID,关联 AppUser.Id'),
|
||
(N'dbo', N'CheckinRecord', N'Checked', N'检录状态:0-待检录,1-已检录'),
|
||
(N'dbo', N'CheckinRecord', N'CheckedTime', N'完成检录时间;取消检录后为空'),
|
||
(N'dbo', N'CheckinRecord', N'DeleteMark', N'软删除标记:0-未删除,1-已删除'),
|
||
(N'dbo', N'CheckinRecord', N'CreatedUserId', N'创建人ID,通常为检录员 AppUser.Id'),
|
||
(N'dbo', N'CheckinRecord', N'CreatedTime', N'创建时间'),
|
||
(N'dbo', N'CheckinRecord', N'UpdatedUserId', N'最后更新人ID'),
|
||
(N'dbo', N'CheckinRecord', N'UpdatedTime', N'最后更新时间');
|
||
|
||
DECLARE
|
||
@SchemaName SYSNAME,
|
||
@TableName SYSNAME,
|
||
@ColumnName SYSNAME,
|
||
@Description NVARCHAR(4000),
|
||
@ObjectId INT,
|
||
@ColumnId INT;
|
||
|
||
DECLARE CommentCursor CURSOR LOCAL FAST_FORWARD FOR
|
||
SELECT SchemaName, TableName, ColumnName, [Description]
|
||
FROM @Comments;
|
||
|
||
OPEN CommentCursor;
|
||
FETCH NEXT FROM CommentCursor INTO @SchemaName, @TableName, @ColumnName, @Description;
|
||
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
SET @ObjectId = OBJECT_ID(QUOTENAME(@SchemaName) + N'.' + QUOTENAME(@TableName), N'U');
|
||
|
||
IF @ObjectId > 0
|
||
BEGIN
|
||
IF @ColumnName = N''
|
||
BEGIN
|
||
IF EXISTS
|
||
(
|
||
SELECT 1
|
||
FROM sys.extended_properties
|
||
WHERE class = 1
|
||
AND major_id = @ObjectId
|
||
AND minor_id = 0
|
||
AND name = N'MS_Description'
|
||
)
|
||
BEGIN
|
||
EXEC sys.sp_updateextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = @Description,
|
||
@level0type = N'SCHEMA', @level0name = @SchemaName,
|
||
@level1type = N'TABLE', @level1name = @TableName;
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
EXEC sys.sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = @Description,
|
||
@level0type = N'SCHEMA', @level0name = @SchemaName,
|
||
@level1type = N'TABLE', @level1name = @TableName;
|
||
END;
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
SET @ColumnId = COLUMNPROPERTY(@ObjectId, @ColumnName, 'ColumnId');
|
||
|
||
IF @ColumnId > 0
|
||
BEGIN
|
||
IF EXISTS
|
||
(
|
||
SELECT 1
|
||
FROM sys.extended_properties
|
||
WHERE class = 1
|
||
AND major_id = @ObjectId
|
||
AND minor_id = @ColumnId
|
||
AND name = N'MS_Description'
|
||
)
|
||
BEGIN
|
||
EXEC sys.sp_updateextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = @Description,
|
||
@level0type = N'SCHEMA', @level0name = @SchemaName,
|
||
@level1type = N'TABLE', @level1name = @TableName,
|
||
@level2type = N'COLUMN', @level2name = @ColumnName;
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
EXEC sys.sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = @Description,
|
||
@level0type = N'SCHEMA', @level0name = @SchemaName,
|
||
@level1type = N'TABLE', @level1name = @TableName,
|
||
@level2type = N'COLUMN', @level2name = @ColumnName;
|
||
END;
|
||
END;
|
||
END;
|
||
END;
|
||
|
||
FETCH NEXT FROM CommentCursor INTO @SchemaName, @TableName, @ColumnName, @Description;
|
||
END;
|
||
|
||
CLOSE CommentCursor;
|
||
DEALLOCATE CommentCursor;
|
||
|
||
SELECT
|
||
s.name AS SchemaName,
|
||
t.name AS TableName,
|
||
c.name AS ColumnName,
|
||
CAST(ep.value AS NVARCHAR(4000)) AS [Description]
|
||
FROM sys.extended_properties ep
|
||
INNER JOIN sys.tables t
|
||
ON ep.class = 1 AND ep.major_id = t.object_id
|
||
INNER JOIN sys.schemas s
|
||
ON t.schema_id = s.schema_id
|
||
LEFT JOIN sys.columns c
|
||
ON c.object_id = t.object_id AND c.column_id = ep.minor_id
|
||
WHERE ep.name = N'MS_Description'
|
||
AND t.name IN (N'AppUser', N'RefereeApplication', N'CheckinTask', N'CheckinRecord')
|
||
AND (t.name <> N'AppUser' OR c.name = N'MiniProgramRole')
|
||
ORDER BY t.name, ep.minor_id;
|