Files
Client/Server/Database/DBScript/BillingDB/NHN_BILLING_ALTER_20041201.sql
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

296 lines
7.0 KiB
Transact-SQL

/**********************************************************************
RYLCHECKT
KEEPERSEQ NUMBER NOT NULL
BILLNUM NUMBER NOT NULL
MEMBERID VARCHAR2(20) NOT NULL
RYLUID NUMBER
REGDATE DATE
ADDEDDAY NUMBER
ADDEDTIME NUMBER
ADDEDMONTH NUMBER
CHECKFLAG CHAR(1)
BILLENDDATE DATE
AUTOBILL CHAR(1)
**********************************************************************/
/*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
CREATE TABLE [TblPersonBilling_log]
(
[intIndex] [int] NULL ,
[strClientID] [varchar] (20) NULL ,
[UID] [int] NULL ,
[strBillingType] [char] (1) NULL ,
[dateEndTime] [smalldatetime] NULL ,
[intServiceTime] [int] NULL ,
[strConvertCHK] [char] (1) NULL ,
[dateInsertTime] [smalldatetime] NULL ,
CHECK ([strBillingType] = 'T' or [strBillingType] = 'D')
)
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*/
GO
USE RylBillingDB_LOG
GO
-- NHN BILLING TABLE
CREATE TABLE dbo.TblRYLCheckT_LOG
(
BillNum INT NOT NULL primary key
, ClientID varchar (20) NOT NULL
, UID INT NOT NULL
, RegDate SMALLDATETIME
, AddedDay SMALLINT
, AddedTime INT
, AddedMonth SMALLINT
, BillEndDate SMALLDATETIME
, AutoBill CHAR(1)
, CheckFlag CHAR(1)
, InsertTime SMALLDATETIME
)
GO
USE RylBillingDB
GO
-- NHN BILLING TABLE
CREATE TABLE dbo.TblRYLCheckT
(
BillNum INT NOT NULL primary key
, ClientID varchar (20) NOT NULL
, UID INT NOT NULL
, RegDate SMALLDATETIME
, AddedDay SMALLINT
, AddedTime INT
, AddedMonth SMALLINT
, BillEndDate SMALLDATETIME
, AutoBill CHAR(1)
, CheckFlag CHAR(1)
, InsertTime SMALLDATETIME
)
GO
--가져온데이터를 처리한다.
ALTER PROC agt_PersonBilling_CHK
AS
SET NOCOUNT ON
DECLARE @ROWID INT
DECLARE @BILLNUM INT
DECLARE @ClientID VARCHAR(20)
DECLARE @UID INT
DECLARE @RegDate SMALLDATETIME --과금결제일
DECLARE @AddedDay SMALLINT --보상관련
DECLARE @AddedTime INT --정량제
DECLARE @AddedMonth SMALLINT --정액제
DECLARE @BillEndDate SMALLDATETIME --자동결제취소, 결제해지 만료일
DECLARE @strCorrentState CHAR(1)
DECLARE @TempTable TABLE
(
RowID INT IDENTITY(1,1) PRIMARY KEY
, BillNum INT NOT NULL
, ClientID varchar (20) NOT NULL
, UID INT NOT NULL
, RegDate SMALLDATETIME
, AddedDay SMALLINT
, AddedTime INT
, AddedMonth SMALLINT
, BillEndDate SMALLDATETIME
)
INSERT INTO @TempTable (BillNum,ClientID,UID,RegDate,AddedDay,AddedTime,AddedMonth,BillEndDate)
SELECT BillNum,ClientID,UID,RegDate,AddedDay,AddedTime,AddedMonth,BillEndDate
FROM TblRYLCheckT
WHERE CheckFlag = 'N' ORDER BY BillNum DESC
SET @ROWID = @@ROWCOUNT
WHILE @ROWID > 0
BEGIN
SELECT @BILLNUM = BILLNUM,@ClientID=ClientID,@UID=UID,@RegDate=RegDate,@AddedDay=AddedDay
,@AddedTime=AddedTime,@AddedMonth=AddedMonth,@BillEndDate=BillEndDate
FROM @TempTable
WHERE RowID = @ROWID
-- 2004-12-01 00:00:00 으로 세팅함.
SET @RegDate = CAST( CONVERT(VARCHAR(10),@RegDate,102) AS SMALLDATETIME ) + 1
EXEC agt_PersonBilling_CHK_Include @BILLNUM,@ClientID,@UID,@RegDate,@AddedDay,@AddedTime,@AddedMonth,@BillEndDate
SET @ROWID = @ROWID - 1
END
GO
ALTER PROC agt_PersonBilling_CHK_Include @BILLNUM INT,@ClientID VARCHAR(20),@UID INT,@RegDate SMALLDATETIME,
@AddedDay SMALLINT,@AddedTime INT, @AddedMonth SMALLINT , @BillEndDate SMALLDATETIME
AS
SET NOCOUNT ON
DECLARE @nTime INT
-- 현재 무료사용자인지 체크해서 무료일자를 없앤다.
IF EXISTS (SELECT strClientID FROM TblPersonInfo WHERE UID =@UID)
BEGIN
SELECT @nTime = DATEDIFF(DAY,GETDATE(),RegLoginTime)
FROM TblPersonInfo WHERE UID = @UID
IF @nTime >= 0
BEGIN
UPDATE TblPersonInfo
SET RegLoginTime = GETDATE() - 1
WHERE UID = @UID
END
END
ELSE
BEGIN
INSERT INTO TblPersonInfo
VALUES (@UID,@ClientID,GETDATE()-1,GETDATE())
END
BEGIN TRAN
IF EXISTS (SELECT strClientID FROM TblPersonBillingInfo WHERE strClientID = @ClientID)
BEGIN
-- 정액제인 경우
IF @AddedMonth <> 0
BEGIN
UPDATE TblPersonBillingInfo
SET dateEndTime = DATEADD(MONTH,@AddedMonth,@RegDate),dateRegTime = GETDATE()
WHERE strClientID = @ClientID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
END
-- 보상인 경우
IF @AddedDay <> 0
BEGIN
Declare @dateEndTime smalldatetime
SELECT @dateEndTime = dateEndTime FROM TblPersonBillingInfo WHERE strClientID = @ClientID
IF ((@dateEndTime < GETDATE()) or (@dateEndTime IS NULL))
SET @dateEndTime = CONVERT(VARCHAR(10),GETDATE()+1,102)
UPDATE TblPersonBillingInfo
SET dateEndTime = @dateEndTime + @AddedDay, dateRegTime = GETDATE()
WHERE strClientID = @ClientID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
END
-- 정량제인 경우
IF @AddedTime <> 0
BEGIN
UPDATE TblPersonBillingInfo
SET intServiceTime = intServiceTime + @AddedTime,dateRegTime = GETDATE()
WHERE strClientID = @ClientID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
END
-- 해지했거나 자동결제가 취소된 경우
IF ( @BillEndDate IS NOT NULL )
BEGIN
SET @BillEndDate = CAST (CONVERT(VARCHAR(10),@BillEndDate,102) AS SMALLDATETIME)
UPDATE TblPersonBillingInfo
SET dateEndTime = @BillEndDate,dateRegTime = GETDATE()
WHERE strClientID = @ClientID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
END
END
-- 신규 과금 등록자 일경우
ELSE
BEGIN
if @AddedTime > 0
set @RegDate = null -- 정량제일경우 만료일을 넣지 않는다.
INSERT INTO TblPersonBillingInfo VALUES (@ClientID,@UID,DATEADD(MONTH,@AddedMonth,@RegDate),@AddedTime,0,GETDATE())
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
END
UPDATE TblRYLCheckT
SET CheckFlag = 'Y'
WHERE BILLNUM =@BILLNUM AND CheckFlag = 'N'
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
GO
ALTER PROC agt_PersonBilling_Delete
AS
SET NOCOUNT ON
DECLARE @MIN INT -- 전에 가져왔던 최대값
SELECT @MIN = intCount FROM TblImportedNum WHERE strCompType = 'H'
BEGIN TRAN
INSERT INTO RYLBillingDB_LOG.dbo.TblRYLCheckT_LOG
SELECT * FROM TblRYLCheckT
WHERE BillNum <= @MIN
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
DELETE TblRYLCheckT
WHERE BillNum <= @MIN
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN