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>
296 lines
7.0 KiB
Transact-SQL
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
|
|
|