YD_Event.Admin/Database/Migrations/20260807_AddCheckinNo.sql
ltx 25830581d2 feat(api): 完善小程序赛事角色与秩序册检录接口
新增成绩查询、裁判认证及检录员账号管理接口,并统一小程序角色登录与个人中心数据。

检录任务绑定赛事秩序册场次,按项目、组别、场地和场次顺序执行;支持最多三名检录员、分配检录轮次及前序检录校验。

补充检录任务、检录记录、裁判申请实体及四份数据库迁移,包含表字段备注、秩序册绑定和检录序号。
2026-08-07 14:59:15 +08:00

32 lines
1.9 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 检录员一检、二检、三检任务分配。SQL Server,可重复执行。 */
SET NOCOUNT ON;
IF OBJECT_ID(N'dbo.CheckinTask', N'U') IS NULL
THROW 50001, N'缺少 dbo.CheckinTask,请先执行前置迁移', 1;
IF COL_LENGTH(N'dbo.CheckinTask', N'CheckinNo') IS NULL
ALTER TABLE dbo.CheckinTask ADD CheckinNo INT NOT NULL
CONSTRAINT DF_CheckinTask_CheckinNo DEFAULT (1);
GO
IF EXISTS(SELECT EventId FROM dbo.CheckinTask WHERE DeleteMark=0 AND TaskStatus=1 GROUP BY EventId HAVING COUNT(*)>3)
THROW 50002, N'存在赛事拥有超过三个有效检录员,请先解除多余检录员', 1;
;WITH RankedTask AS
(
SELECT Id, ROW_NUMBER() OVER(PARTITION BY EventId ORDER BY CreatedTime,Id) AS NewCheckinNo
FROM dbo.CheckinTask WHERE DeleteMark=0 AND TaskStatus=1
)
UPDATE task SET CheckinNo=ranked.NewCheckinNo
FROM dbo.CheckinTask task INNER JOIN RankedTask ranked ON ranked.Id=task.Id;
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.CheckinTask') AND name=N'UX_CheckinTask_Event_CheckinNo_Active')
CREATE UNIQUE INDEX UX_CheckinTask_Event_CheckinNo_Active
ON dbo.CheckinTask(EventId,CheckinNo) WHERE DeleteMark=0 AND TaskStatus=1;
GO
DECLARE @Description NVARCHAR(4000)=N'该检录员负责的检次:1-一检,2-二检,3-三检';
IF EXISTS(SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.CheckinTask') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.CheckinTask'),N'CheckinNo','ColumnId') AND name=N'MS_Description')
EXEC sys.sp_updateextendedproperty @name=N'MS_Description',@value=@Description,@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'CheckinTask',@level2type=N'COLUMN',@level2name=N'CheckinNo';
ELSE
EXEC sys.sp_addextendedproperty @name=N'MS_Description',@value=@Description,@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'CheckinTask',@level2type=N'COLUMN',@level2name=N'CheckinNo';