# 轉盤活動可加入存款自動發放序號 [TOC] ## 需求規格書 - 需求規格 (https://tinyurl.com/2p8m7s5z) - Trello (https://trello.com/c/JHoKo6Dg) ## DataBase ### LuckyWheelMaster 在這個主表中,新增一個欄位 `DepositRewardType`,用來判定存款自動發放序號的行為 ```sql= USE [CasinoCash.KD001] ALTER TABLE LuckyWheelMaster ADD DepositRewardType nvarchar(20) NULL; ``` ### LuckyWheelDepositRewardInfo 這個表儲存存款贈送序號的每一級距內容 ```sql= USE [CasinoCash.KD001] GO /****** Object: Table [dbo].[LuckyWheelDepositRewardInfo] Script Date: 2022/9/12 下午 03:34:21 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[LuckyWheelDepositRewardInfo]( [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [EventId] [int] NOT NULL, [SerialNumber] [nvarchar](16) NOT NULL, [DepositAmount] [decimal](18, 2) NOT NULL, [RewardTimes] [int] NOT NULL, [CreatedTime] [DateTime] NOT NULL, CONSTRAINT [PK_dbo.LuckyWheelDepositRewardInfo] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[LuckyWheelDepositRewardInfo] WITH CHECK ADD CONSTRAINT [FK_dbo.LuckyWheelDepositRewardInfo_dbo.LuckyWheelMaster_EventId] FOREIGN KEY([EventId]) REFERENCES [dbo].[LuckyWheelMaster] ([Id]) GO ALTER TABLE [dbo].[LuckyWheelDepositRewardInfo] CHECK CONSTRAINT [FK_dbo.LuckyWheelDepositRewardInfo_dbo.LuckyWheelMaster_EventId] GO ``` ### LuckyWheelDepositGroupAccountApply 這個 table 紀錄是因為哪張存款單,給了哪個序號 並且拿來 check 不要重複發放序號 ```sql= USE [CasinoCash.KD001] SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[LuckyWheelDepositGroupAccountApply]( [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [GroupAccountApplyId] [int] NOT NULL, [SerialNumber] [nvarchar](16) NOT NULL, [DepositAmount] [decimal](18, 2) NOT NULL, [RewardTimes] [int] NOT NULL, [CreatedTime] [DateTime] NOT NULL, CONSTRAINT [PK_dbo.LuckyWheelDepositGroupAccountApply] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ``` ## 流程 ### 建立序號 - 儲存轉盤活動時,根據贈送次數條件進行動作 - 如果為存款贈送,依據級距建立 n 組序號 (無限次領取),並建立在 `LuckyWheelDepositRewardInfo` - 如果為不贈送,就把 `LuckyWheelDepositRewardInfo` 裡面 `未過期` 的序號,更改為過期 ### 贈送序號 - 每 3 分鐘在 `Master - report server` 去掃 `一小時` 內完成的存款單,且這些存款單不存在 `LuckyWheelDepositGroupAccountApply` table 內,為待發放序號清單 - 這些存款自動發放的序號,發放時判斷活動能否允許序號重複 (單一會員) - 每發放成功一筆,就把單號寫入 `LuckyWheelDepositGroupAccountApply`