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>
1675 lines
44 KiB
Transact-SQL
1675 lines
44 KiB
Transact-SQL
|
|
/***********************************
|
|
* 로그인시 과금체크 부분
|
|
***********************************/
|
|
|
|
USE RYLBillingDB
|
|
|
|
GO
|
|
|
|
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckTimeOutUser]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckTimeOutUser
|
|
|
|
GO
|
|
|
|
-- 개인정량 및 정액이 게임중 만료되었을때 서버에서 넘겨준 아이디를 기준으로
|
|
-- 다시 한번더 과금체크를 해서 다시 서버쪽에 끊김여부를 알려준다.
|
|
|
|
CREATE PROC USPCheckTimeOutUser
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @ITABLE TABLE
|
|
(
|
|
nRowID INT IDENTITY(1,1) PRIMARY KEY
|
|
, strClientID VARCHAR(20)
|
|
, UID INT
|
|
, strBillingType CHAR(2)
|
|
, firstLoginTime SMALLDATETIME
|
|
, tinyServerID TINYINT
|
|
)
|
|
|
|
DECLARE @TblReturn TABLE
|
|
(
|
|
UID INT
|
|
, nServerID INT
|
|
, RemainMin INT
|
|
, BillingType CHAR(2)
|
|
, EndTime INT --날짜일때는 20030202 , 시간일때는 분으로 전달한다.
|
|
, intCrmIndex INT
|
|
|
|
)
|
|
|
|
|
|
DECLARE @ROWID INT
|
|
DECLARE @strClientID VARCHAR(20)
|
|
DECLARE @UID INT
|
|
DECLARE @strBillingType CHAR(2)
|
|
DECLARE @firstLoginTime SMALLDATETIME
|
|
DECLARE @tinyServerID TINYINT
|
|
|
|
DECLARE @nUID INT
|
|
|
|
DECLARE @FreeTime INT
|
|
|
|
DECLARE @DiffDate INT
|
|
DECLARE @DiffTime INT
|
|
DECLARE @EndTime INT
|
|
DECLARE @RealDiffTime INT
|
|
|
|
|
|
-- 새로입력된 데이터만 가져온다.
|
|
INSERT INTO @ITABLE (strClientID,UID,strBillingType,firstLoginTime,tinyServerID)
|
|
SELECT strClientID,UID,strBillingType,firstLoginTime,tinyServerID FROM TblCurrentUser WHERE intCRMIndex = 0
|
|
|
|
SET @ROWID = @@ROWCOUNT
|
|
|
|
WHILE @ROWID > 0
|
|
BEGIN
|
|
SELECT @strClientID = strClientID,@UID = UID,@strBillingType=strBillingType,@firstLoginTime=firstLoginTime,@tinyServerID = tinyServerID
|
|
FROM @ITABLE WHERE nRowID = @ROWID
|
|
|
|
|
|
SET @nUID = 0 --초기화한다.
|
|
SET @DiffDate = NULL
|
|
SET @EndTime = NULL
|
|
SET @DiffTime = NULL
|
|
SET @FreeTime = NULL
|
|
SET @RealDiffTime = NULL
|
|
|
|
IF (@strBillingType = 'N')
|
|
BEGIN
|
|
-- 무료계정인지 아닌지 체크한다
|
|
SELECT @FreeTime = DATEDIFF(minute,GETDATE(),RegLoginTime),@EndTime = CAST(CONVERT(VARCHAR(8),RegLoginTime,112) AS INT)
|
|
FROM TBLPERSONINFO
|
|
WHERE UID = @UID
|
|
|
|
IF (@FreeTime <= 5)
|
|
BEGIN
|
|
IF (@FreeTime < 0 )
|
|
BEGIN
|
|
SET @FreeTime = 0
|
|
END
|
|
|
|
INSERT INTO @TblReturn (UID,nServerID,RemainMIN,BillingType,EndTime,intCrmIndex)
|
|
VALUES (@UID,@tinyServerID,@FreeTime,'F',@EndTime,0)
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- 과금을 다시 체크한다.
|
|
SELECT @nUID = UID,@DiffDate = DATEDIFF(minute,GETDATE(),dateEndTime),
|
|
@EndTime = CAST(CONVERT(VARCHAR(8),dateEndTime,112) AS INT),@DiffTime = (intServiceTime - intUsingTime)
|
|
FROM TblPersonBillingInfo WHERE strClientID = @strClientID
|
|
|
|
IF (@nUID > 0) -- 과금등록유저임
|
|
BEGIN
|
|
|
|
IF (@strBillingType = 'D')
|
|
BEGIN
|
|
|
|
IF (@DiffDate <= 5)
|
|
BEGIN
|
|
IF (@DiffDate < 0 )
|
|
BEGIN
|
|
SET @DiffDate = 0
|
|
END
|
|
|
|
INSERT INTO @TblReturn (UID,nServerID,RemainMIN,BillingType,EndTime,intCrmIndex)
|
|
VALUES (@UID,@tinyServerID,@DiffDate,'E',@EndTime,0)
|
|
END
|
|
END
|
|
ELSE IF (@strBillingType = 'T')
|
|
BEGIN
|
|
|
|
SET @RealDiffTime = @DiffTime - DATEDIFF(minute,@firstLoginTime,GETDATE())
|
|
|
|
IF (@RealDiffTime <= 5)
|
|
BEGIN
|
|
IF (@RealDiffTime < 0 )
|
|
BEGIN
|
|
SET @RealDiffTime = 0
|
|
END
|
|
|
|
INSERT INTO @TblReturn (UID,nServerID,RemainMIN,BillingType,EndTime,intCrmIndex)
|
|
VALUES (@UID,@tinyServerID,@RealDiffTime,'T',@RealDiffTime,0)
|
|
END
|
|
END
|
|
END
|
|
END
|
|
|
|
|
|
SET @ROWID = @ROWID - 1
|
|
END
|
|
|
|
SELECT UID,nServerID,RemainMIN,BillingType,EndTime,intCrmIndex FROM @TblReturn
|
|
|
|
GO
|
|
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_Person_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_Person_Post
|
|
GO
|
|
|
|
|
|
-- CHECK PERSONALBILLING
|
|
CREATE PROC USPCheckBilling_Person_Post @strClientid VARCHAR(20),@strBillingType CHAR(1) OUTPUT,@PlayTime INT OUTPUT
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @RETURN INT -- 0:SUCCESS,1:ERROR
|
|
DECLARE @dateEndTime SMALLDATETIME
|
|
|
|
-- 현재 과금이 등록된 상태인 유저라고하면
|
|
IF EXISTS (SELECT strClientID FROM TblPersonBillingInfo WHERE strClientid =@strClientid)
|
|
BEGIN
|
|
|
|
SELECT @dateEndTime = dateEndTime,@PlayTime = (intServiceTime - intUsingTime)
|
|
FROM TblPersonBillingInfo
|
|
WHERE strClientid = @strClientID
|
|
|
|
|
|
-- 먼저 과금타입 중 정액제가 적용되는지 알아본다.
|
|
-- EXPIRED PERIOD TIME
|
|
IF ((GETDATE() >= @dateEndTime) OR (@dateEndTime IS NULL))
|
|
BEGIN
|
|
|
|
-- 정량제가 적용되는지 알아본다.
|
|
IF (@PlayTime <= 0)
|
|
BEGIN
|
|
|
|
SET @strBillingType = 'N' -- 과금 전상태로 세팅한다.
|
|
SET @RETURN = 3 --ERROR
|
|
RETURN @RETURN
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @strBillingType = 'T' -- 정량제 과금으로 OUTPUT한다.
|
|
SET @RETURN = 0 --SUCCESS
|
|
RETURN @RETURN
|
|
END
|
|
END
|
|
-- CAN PLAY
|
|
ELSE
|
|
BEGIN
|
|
SET @strBillingType = 'D' -- 정액제 과금으로 OUTPUT한다.
|
|
--SET @PlayTime = DATEDIFF(DAY,GETDATE(),@dateEndTime)
|
|
SET @PlayTime =CAST(CONVERT(VARCHAR(8),@dateEndTime,112) AS INT)
|
|
SET @RETURN = 0 --SUCCESS
|
|
RETURN @RETURN
|
|
END
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- NOT EXISTS
|
|
|
|
SET @strBillingType = 'N' -- 과금 전상태로 세팅한다.
|
|
SET @PlayTime = 0 -- 과금 전상태로 세팅한다.
|
|
|
|
SET @RETURN = 1 --ERROR
|
|
RETURN @RETURN
|
|
END
|
|
|
|
|
|
|
|
GO
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_GameRoom_Date_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_GameRoom_Date_Post
|
|
GO
|
|
|
|
|
|
CREATE PROC USPCheckBilling_GameRoom_Date_Post @intCRMIndex INT,@BillingType CHAR(1) OUTPUT,@CanUseTime INT OUTPUT
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @tinyServiceIpNum TINYINT -- 총 접속 가능한 아이피수
|
|
DECLARE @tinyUsedIpNum TINYINT --현재 접속된 아이피수
|
|
DECLARE @dateEndTime SMALLDATETIME -- 정액제 종료일자
|
|
DECLARE @strRegProcess CHAR(1) --가상계좌,비가상계좌
|
|
DECLARE @strClosed CHAR(1) -- 현재 해지상태인지 파악
|
|
|
|
SET @tinyServiceIpNum = 0
|
|
SET @tinyUsedIpNum = 0
|
|
SET @strRegProcess = 'N'
|
|
|
|
-- 현재 정액제 아이피 허용갯수를 가져온다.
|
|
SELECT @strRegProcess = strRegProcess,@tinyServiceIpNum = tinyServiceIpNum,
|
|
@dateEndTime = dateEndTime,@tinyUsedIpNum = tinyUsedIpNum,@strClosed = strClosed
|
|
FROM TblPCRoomBilling_Date
|
|
WHERE intCRMIndex = @intCRMIndex
|
|
|
|
-- 현재 해지된 피시방인지 체크한다.
|
|
IF @strClosed = 'Y'
|
|
BEGIN
|
|
SET @BillingType = 'N'
|
|
SET @canUseTime = 0
|
|
RETURN 1 --ERROR
|
|
END
|
|
|
|
IF @strRegProcess = 'N' -- 아이피가 존재하지 않음
|
|
BEGIN
|
|
SET @BillingType = 'N'
|
|
SET @canUseTime = 0
|
|
RETURN 1 --ERROR
|
|
END
|
|
ELSE -- 아이피가 존재함
|
|
BEGIN
|
|
|
|
-- 허용된 아이피 갯수가 초과 되었는지 확인한다.
|
|
--1. 허용된 아이피수 보다 현재 많이 사용하고 있다면
|
|
IF @tinyUsedIpNum >= @tinyServiceIpNum
|
|
BEGIN
|
|
SET @BillingType = 'D'
|
|
SET @CanUseTime = 0
|
|
RETURN 2 --ERROR
|
|
END
|
|
--2. 허용된 아이피수가 현재 사용된 아이피수보다 더 많다고 하면
|
|
ELSE IF (@tinyUsedIpNum < @tinyServiceIpNum)
|
|
BEGIN
|
|
|
|
-- 가상계좌 이므로 현재 날짜를 검토한다.
|
|
IF @strRegProcess = 'z'
|
|
BEGIN
|
|
-- EXPIRED DATE
|
|
IF (GETDATE() >= @dateEndTime)
|
|
BEGIN
|
|
SET @BillingType ='D'
|
|
SET @CanUseTime = 0
|
|
RETURN 3 --ERROR
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @BillingType = 'D'
|
|
-- 현재 남아있는 날짜를 리턴한다.
|
|
--SET @CanUseTime = DATEDIFF(DAY,GETDATE(),@dateEndTime)
|
|
SET @CanUseTime = CAST(CONVERT(VARCHAR(8),@dateEndTime,112) AS INT)
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
-- 비가상계좌이므로 무조건 시간이 지나도 성공리턴한다.
|
|
ELSE IF @strRegProcess = 'm'
|
|
BEGIN
|
|
|
|
SET @BillingType = 'D'
|
|
-- 현재 남아있는 날짜를 리턴한다.
|
|
--SET @CanUseTime = DATEDIFF(DAY,GETDATE(),@dateEndTime)
|
|
SET @CanUseTime = CAST(CONVERT(VARCHAR(8),@dateEndTime,112) AS INT)
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
END
|
|
GO
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_GameRoom_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_GameRoom_Post
|
|
GO
|
|
|
|
|
|
-- 게임방 과금 체크
|
|
-- 주의 : @IPType을 인자로 받을때 클라이언트 아이피가 정액+정량 인경우는 C문자로 통일해서 받는다.
|
|
CREATE PROC USPCheckBilling_GameRoom_Post @intCRMIndex INT,@intCRMIndex2 INT,@IPType CHAR(1),
|
|
@OutCRMIndex INT OUTPUT,@BillingType CHAR(1) OUTPUT,@canUseTime INT OUTPUT
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @RETURN INT
|
|
-- 해당 아이피의 과금 방식이 정량제만 적용된 방식이라고 하면
|
|
IF @IPType = 'T'
|
|
BEGIN
|
|
-- IF @RETURN = 1 ERROR ELSE SUCCESS
|
|
EXEC @RETURN = USPCheckBilling_GameRoom_Time @intCRMIndex,@BillingType OUTPUT,@CanUseTime OUTPUT
|
|
|
|
IF @RETURN <> 0
|
|
BEGIN
|
|
RETURN 1 --ERROR
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @OutCRMIndex = @intCRMIndex
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
-- 정액제 아이피만 적용된 아이피라고 하면
|
|
ELSE IF @IPTYPE = 'D'
|
|
BEGIN
|
|
EXEC @RETURN = USPCheckBilling_GameRoom_Date_Post @intCRMIndex,@BillingType OUTPUT,@CanUseTime OUTPUT
|
|
IF @RETURN <> 0
|
|
BEGIN
|
|
RETURN 2 --ERROR
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @OutCRMIndex = @intCRMIndex
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
-- 정액제 정량제 아이피 모두를 허용된 아이피라고 하면
|
|
ELSE IF @IPTYPE = 'C'
|
|
BEGIN
|
|
-- 첫번째 정액제 체크
|
|
EXEC @RETURN = USPCheckBilling_GameRoom_Date_Post @intCRMIndex,@BillingType OUTPUT,@CanUseTime OUTPUT
|
|
IF @RETURN <> 0
|
|
BEGIN
|
|
--RETURN 3 --ERROR
|
|
SET @BillingType ='N'
|
|
SET @CanUseTime = 0
|
|
|
|
-- 두번째 정액체크함.
|
|
EXEC @RETURN = USPCheckBilling_GameRoom_Date_Post @intCRMIndex2,@BillingType OUTPUT,@CanUseTime OUTPUT
|
|
IF @RETURN <> 0
|
|
BEGIN
|
|
|
|
SET @BillingType = 'N'
|
|
SET @CanUseTime = 0
|
|
-- 첫번째 정량제 체크함.
|
|
|
|
EXEC @RETURN = USPCheckBilling_GameRoom_Time @intCRMIndex,@BillingType OUTPUT,@CanUseTime OUTPUT
|
|
IF @RETURN <> 0
|
|
BEGIN
|
|
-- 두번째 정량제 체크함.
|
|
-- 정량제 체크함.
|
|
EXEC @RETURN = USPCheckBilling_GameRoom_Time @intCRMIndex2,@BillingType OUTPUT,@CanUseTime OUTPUT
|
|
IF @RETURN <> 0
|
|
BEGIN
|
|
|
|
RETURN 3 --ERROR
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @OutCRMIndex = @intCRMIndex2
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @OutCRMIndex = @intCRMIndex
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @OutCRMIndex = @intCRMIndex2
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @OutCRMIndex = @intCRMIndex
|
|
RETURN 0 --SUCCESS
|
|
END
|
|
END
|
|
|
|
|
|
GO
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_Login_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_Login_Post
|
|
GO
|
|
|
|
-- 캐릭터 선택창 가기 전에 과금 여부를 체크한다.
|
|
-- 캐릭터 선택창에서 다시 실행한다.
|
|
CREATE PROC USPCheckBilling_Login_Post @strClientID VARCHAR(20),@UID INT, @Check Int,@ClientIP VARCHAR(15),@ServerID TINYINT
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
--DECLARE @RegLogInTime
|
|
DECLARE @strBillingType CHAR(1) --D,T
|
|
DECLARE @strBillingType2 CHAR(2)
|
|
|
|
DECLARE @PlayTime INT --남은시간(분),남은일자
|
|
DECLARE @CanUseTime INT
|
|
DECLARE @FLAG INT
|
|
|
|
DECLARE @EndDate VARCHAR(8)
|
|
|
|
SET @strBillingType = 'N'
|
|
SET @PlayTime = 0
|
|
SET @CanUseTime = 0
|
|
SET @FLAG = -1
|
|
|
|
DECLARE @IPType CHAR(1) --D,T
|
|
DECLARE @intCRMIndex1 INT
|
|
DECLARE @intCRMIndex2 INT
|
|
SET @intCRMIndex1 =0
|
|
SET @intCRMIndex2 =0
|
|
|
|
DECLARE @BillingDate CHAR(1)
|
|
DECLARE @BillingTime CHAR(1)
|
|
SET @BillingDate = 'D'
|
|
SET @BillingTime = 'T'
|
|
|
|
-- 피시방중 정량제와 정액제를 같이 사용하는 경우 해당 과금의 피시방인덱스를 얻어와야한다.
|
|
DECLARE @OutCRMIndex INT
|
|
DECLARE @tinyServerID INT
|
|
SET @tinyServerID = -1
|
|
|
|
DECLARE @FreeTime INT
|
|
|
|
/***************************************
|
|
임시적용부분
|
|
***************************************/
|
|
EXEC USPInsertPerson @strClientID,@UID
|
|
|
|
|
|
-- 현재 로그인 된 사용자 인지 아닌지 체크한다.
|
|
SELECT @tinyServerID = tinyServerID FROM TblCurrentUser_Temp WHERE strClientid = @strClientID
|
|
|
|
IF @tinyServerID > -1
|
|
BEGIN
|
|
SET @FLAG = 1 --중복된 유저임.
|
|
SET @intCRMIndex1 = @tinyServerID
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,@PlayTime as PlayTime,@intCRMIndex1 as ServerID
|
|
RETURN
|
|
END
|
|
|
|
|
|
-- 현재 로그인 된 사용자 인지 아닌지 체크한다.
|
|
SELECT @tinyServerID = tinyServerID FROM TblCurrentUser WHERE strClientid = @strClientID
|
|
|
|
IF @tinyServerID > -1
|
|
BEGIN
|
|
SET @FLAG = 1 --중복된 유저임.
|
|
SET @intCRMIndex1 = @tinyServerID
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,@PlayTime as PlayTime,@intCRMIndex1 as ServerID
|
|
RETURN
|
|
END
|
|
|
|
-- 무료계정 여부 체크 -- 나중에 수정해야함.
|
|
IF (@Check = 1) --무료계정
|
|
BEGIN
|
|
SET @FLAG = 0
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
END
|
|
|
|
-- 배틀로한 서버에 접속 : 플레이 시작할수있음.
|
|
IF (@ServerID = 7) --무료계정
|
|
BEGIN
|
|
SET @FLAG = 0
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
END
|
|
|
|
|
|
-- 무료계정인지 아닌지 체크한다
|
|
SELECT @FreeTime = DATEDIFF(DAY,GETDATE(),RegLoginTime),@EndDate = CONVERT(VARCHAR(8),GETDATE(),112)
|
|
FROM TBLPERSONINFO
|
|
WHERE UID = @UID
|
|
|
|
-- 실제 무료 계정임을 나타냄.
|
|
|
|
IF (@FreeTime >= 0)
|
|
BEGIN
|
|
|
|
SET @FLAG = 0
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'F'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
CAST(@EndDate AS INT),@intCRMIndex1 as CRMIndex
|
|
|
|
|
|
RETURN
|
|
END
|
|
|
|
|
|
/*************************************************
|
|
* @FLAG = 0,@strBillingType ='D',@PlayTime = 남은일자 --개인정액제 성공
|
|
* @FLAG = 0,@strBillingType ='T',@PlayTime = 남은시간 --개인정량제 성공
|
|
* @FLAG = 1,@strBillingType ='N',@PlayTime = 0 --과금등록이 되어있지 않음
|
|
* @FLAG = 2,@strBillingType ='D',@PlayTime = 0 --개인정액제 과금이 종료된 경우
|
|
* @FLAG = 3,@strBillingType ='T',@PlayTime = 0 --개인정량제 과금이 종료된 경우
|
|
**************************************************/
|
|
EXEC @FLAG = USPCheckBilling_Person_Post @strClientID,@strBillingType OUTPUT,@PlayTime OUTPUT
|
|
|
|
-- 개인과금이 성공적인경우
|
|
IF (@FLAG = 0)
|
|
BEGIN
|
|
-- 정액제 개인 유저인경우
|
|
IF (@strBillingType =@BillingDate)
|
|
BEGIN
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'E'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
END
|
|
|
|
-- 정량제 개인 유저인경우
|
|
ELSE IF (@strBillingType =@BillingTime)
|
|
BEGIN
|
|
SET @FLAG = -1
|
|
|
|
--AGAIN CHECK ClientIP
|
|
/*********************************************
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 숫자 -- 피시방 아이피가 정액과 정량 모두를 사용함
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 0 -- 피시방 아이피가 정액 또는 정량중 하나 임
|
|
* @FLAG = 1,@intCRMIndex1 = 0,@intCRMIndex2 = 0 -- 피시방 아이피가 아님
|
|
*********************************************/
|
|
EXEC @FLAG = USPCheckBilling_ClientIP @ClientIP,@intCRMIndex1 OUTPUT,@intCRMIndex2 OUTPUT
|
|
|
|
-- PC방이 아닌경우
|
|
IF @FLAG <> 0
|
|
BEGIN
|
|
|
|
|
|
/************************ 수정 후 *********************
|
|
* 개인정량으로 가지전.......
|
|
*
|
|
* 통합빌링 시스템으로 넘어가서 해당 아이피가 통합빌링에 등록되어있는 아이피인지 검색한다.
|
|
*****************************************************/
|
|
SET @FLAG = 3
|
|
SET @intCRMIndex1 = 0
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
|
|
END
|
|
|
|
-- PC방 아이피인경우
|
|
ELSE IF @FLAG = 0
|
|
BEGIN
|
|
|
|
-- 해당 아이피의 과금 방식 가져오기
|
|
IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 = 0) -- 하나의 과금 방식만 따른다.
|
|
BEGIN
|
|
SELECT @IPType = strBillingType
|
|
FROM TblPCRoomBillingInfo
|
|
WHERE intCRMIndex = @intCRMIndex1
|
|
END
|
|
ELSE IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 <> 0) -- 두개의 과금 방식을 따른다.
|
|
BEGIN
|
|
SET @IPType = 'C'
|
|
END
|
|
|
|
-- PC방 과금종류를 체크한다.
|
|
-- T:정량제,D:정액제
|
|
EXEC @FLAG = USPCheckBilling_GameRoom_Post @intCRMIndex1,@intCRMIndex2,@IPType,@OutCRMIndex OUTPUT,@strBillingType OUTPUT,@canUseTime OUTPUT
|
|
|
|
IF @FLAG <> 0 --ERROR
|
|
BEGIN
|
|
-- PC방 과금이 종료된 경우이므로 다시 개인정량제로 과금을 적용시킨다.
|
|
|
|
/************************ 수정 후 *********************
|
|
* 개인정량으로 가지전.......
|
|
*
|
|
* 통합빌링 시스템으로 넘어가서 해당 아이피가 통합빌링에 등록되어있는 아이피인지 검색한다.
|
|
*****************************************************/
|
|
SET @FLAG = 3
|
|
SET @strBillingType2 = 'T'
|
|
SET @intCRMIndex1 = 0
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF @strBillingType = 'D' -- 정액제
|
|
BEGIN
|
|
-- 아이피 하나를 사용해서 카운트를 1 더하기 한다.
|
|
EXEC USPCheckBilling_UpIPCount @OutCRMIndex
|
|
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'E'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
ELSE IF @strBillingType = 'T' -- 정액제
|
|
BEGIN
|
|
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
END
|
|
END
|
|
|
|
END
|
|
END
|
|
-- 개인과금이 실패된 경우 다시 과금등록된 피시방인지 아닌지 체크한다.
|
|
ELSE
|
|
BEGIN
|
|
|
|
--AGAIN CHECK ClientIP
|
|
/*********************************************
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 숫자 -- 피시방 아이피가 정액과 정량 모두를 사용함
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 0 -- 피시방 아이피가 정액 또는 정량중 하나 임
|
|
* @FLAG = 1,@intCRMIndex1 = 0,@intCRMIndex2 = 0 -- 피시방 아이피가 아님
|
|
*********************************************/
|
|
EXEC @FLAG = USPCheckBilling_ClientIP @ClientIP,@intCRMIndex1 OUTPUT,@intCRMIndex2 OUTPUT
|
|
|
|
-- PC방이 아닌경우
|
|
IF @FLAG <> 0
|
|
BEGIN
|
|
|
|
/*********임시 적용 부분 ***********
|
|
SET @FLAG = 0
|
|
SET @intCRMIndex1 = 0
|
|
SET @strBillingType = 'N'
|
|
--접속테이블에 입력한다.
|
|
|
|
INSERT INTO TblCurrentUser_temp(strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
********임시 적용 부분 끝 ************/
|
|
|
|
-- 에러리턴한다
|
|
|
|
SET @FLAG = 2
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
|
|
RETURN
|
|
|
|
END
|
|
ELSE IF @FLAG = 0
|
|
BEGIN
|
|
|
|
-- 해당 아이피의 과금 방식 가져오기
|
|
IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 = 0) -- 하나의 과금 방식만 따른다.
|
|
BEGIN
|
|
SELECT @IPType = strBillingType
|
|
FROM TblPCRoomBillingInfo
|
|
WHERE intCRMIndex = @intCRMIndex1
|
|
END
|
|
ELSE IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 <> 0) -- 두개의 과금 방식을 따른다.
|
|
BEGIN
|
|
SET @IPType = 'C'
|
|
END
|
|
|
|
-- PC방 과금종류를 체크한다.
|
|
-- T:정량제,D:정액제
|
|
EXEC @FLAG = USPCheckBilling_GameRoom_Post @intCRMIndex1,@intCRMIndex2,@IPType,@OutCRMIndex OUTPUT,@strBillingType OUTPUT,@canUseTime OUTPUT
|
|
|
|
IF @FLAG <> 0 --ERROR
|
|
BEGIN
|
|
|
|
SET @FLAG = 2
|
|
SET @strBillingType = 'N'
|
|
-- PC방 과금이 종료된 에러를 리턴한다.
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
ELSE -- SUCCESS
|
|
BEGIN
|
|
IF @strBillingType = 'D' -- 정액제
|
|
BEGIN
|
|
|
|
-- 아이피 하나를 사용해서 카운트를 1 더하기 한다.
|
|
EXEC USPCheckBilling_UpIPCount @OutCRMIndex
|
|
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'E'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
RETURN
|
|
END
|
|
ELSE IF @strBillingType = 'T' -- 정액제
|
|
BEGIN
|
|
|
|
-- 임시테이블 TblCurrentUser_Temp에 입력한다.
|
|
INSERT INTO TblCurrentUser_Temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
END
|
|
END
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
GO
|
|
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_CharIDLogin_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_CharIDLogin_Post
|
|
|
|
GO
|
|
|
|
-- 캐릭터 선택창 가기 전에 과금 여부를 체크한다.
|
|
-- 캐릭터 선택창에서 다시 실행한다.
|
|
-- 추가사항 : 블럭된 캐릭터인지 아닌지를 가려야한다.
|
|
CREATE PROC USPCheckBilling_CharIDLogin_Post @strClientID VARCHAR(20),@UID INT,@check TINYINT,@ClientIP VARCHAR(15),@ServerID TINYINT
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @strBillingType CHAR(1) --D,T
|
|
DECLARE @strBillingType2 CHAR(2) -- RETURN VALUES
|
|
|
|
DECLARE @PlayTime INT --남은시간(분),남은일자
|
|
DECLARE @CanUseTime INT
|
|
DECLARE @FLAG INT
|
|
|
|
DECLARE @EndDate VARCHAR(8)
|
|
|
|
SET @strBillingType = 'N'
|
|
SET @PlayTime = 0
|
|
SET @CanUseTime = 0
|
|
SET @FLAG = -1
|
|
|
|
DECLARE @IPType CHAR(1) --D,T
|
|
DECLARE @intCRMIndex1 INT
|
|
DECLARE @intCRMIndex2 INT
|
|
SET @intCRMIndex1 =0
|
|
SET @intCRMIndex2 =0
|
|
|
|
DECLARE @BillingDate CHAR(1)
|
|
DECLARE @BillingTime CHAR(1)
|
|
SET @BillingDate = 'D'
|
|
SET @BillingTime = 'T'
|
|
|
|
-- 피시방중 정량제와 정액제를 같이 사용하는 경우 해당 과금의 피시방인덱스를 얻어와야한다.
|
|
DECLARE @OutCRMIndex INT
|
|
DECLARE @tinyServerID INT
|
|
SET @tinyServerID = -1
|
|
|
|
DECLARE @FreeTime INT
|
|
|
|
-- 현재 로그인 된 사용자 인지 아닌지 체크한다.
|
|
SELECT @tinyServerID = tinyServerID FROM TblCurrentUser WHERE strClientid = @strClientID
|
|
IF @tinyServerID > -1
|
|
BEGIN
|
|
SET @FLAG = 1 --중복된 유저임.
|
|
SET @intCRMIndex1 = @tinyServerID
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,@PlayTime as PlayTime,@intCRMIndex1 as ServerID
|
|
RETURN
|
|
END
|
|
|
|
-- 무료계정 여부 체크
|
|
IF (@Check = 1) --무료계정
|
|
BEGIN
|
|
SET @FLAG = 0
|
|
--접속테이블에 입력한다.
|
|
INSERT INTO TblCurrentUser(strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
END
|
|
|
|
-- 배틀로한 로그인하기
|
|
IF (@ServerID = 7) --무료계정
|
|
BEGIN
|
|
SET @FLAG = 0
|
|
--접속테이블에 입력한다.
|
|
INSERT INTO TblCurrentUser(strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
END
|
|
|
|
-- 무료계정인지 아닌지 체크한다
|
|
SELECT @FreeTime = DATEDIFF(DAY,GETDATE(),RegLoginTime),@EndDate = CONVERT(VARCHAR(8),GETDATE(),112)
|
|
FROM TBLPERSONINFO
|
|
WHERE UID = @UID
|
|
|
|
-- 실제 무료 계정임을 나타냄.
|
|
IF (@FreeTime >= 0)
|
|
BEGIN
|
|
|
|
SET @FLAG = 0
|
|
-- 임시테이블 TblCurrentUser에 입력한다.
|
|
INSERT INTO TblCurrentUser (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'F'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
CAST(@EndDate AS INT),@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
|
|
END
|
|
|
|
|
|
/*************************************************
|
|
* @FLAG = 0,@strBillingType ='D',@PlayTime = 남은일자 --개인정액제 성공
|
|
* @FLAG = 0,@strBillingType ='T',@PlayTime = 남은시간 --개인정량제 성공
|
|
* @FLAG = 1,@strBillingType ='N',@PlayTime = 0 --과금등록이 되어있지 않음
|
|
* @FLAG = 2,@strBillingType ='D',@PlayTime = 0 --개인정액제 과금이 종료된 경우
|
|
* @FLAG = 3,@strBillingType ='T',@PlayTime = 0 --개인정량제 과금이 종료된 경우
|
|
**************************************************/
|
|
EXEC @FLAG = USPCheckBilling_Person_Post @strClientID,@strBillingType OUTPUT,@PlayTime OUTPUT
|
|
|
|
-- 개인과금이 성공적인경우
|
|
IF (@FLAG = 0)
|
|
BEGIN
|
|
-- 정액제 개인 유저인경우
|
|
IF (@strBillingType =@BillingDate)
|
|
BEGIN
|
|
--접속테이블에 입력한다.
|
|
INSERT INTO TblCurrentUser(strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@intCRMIndex1,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'E'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
END
|
|
|
|
-- 정량제 개인 유저인경우
|
|
ELSE IF (@strBillingType =@BillingTime)
|
|
BEGIN
|
|
SET @FLAG = -1
|
|
|
|
--AGAIN CHECK ClientIP
|
|
/*********************************************
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 숫자 -- 피시방 아이피가 정액과 정량 모두를 사용함
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 0 -- 피시방 아이피가 정액 또는 정량중 하나 임
|
|
* @FLAG = 1,@intCRMIndex1 = 0,@intCRMIndex2 = 0 -- 피시방 아이피가 아님
|
|
*********************************************/
|
|
EXEC @FLAG = USPCheckBilling_ClientIP @ClientIP,@intCRMIndex1 OUTPUT,@intCRMIndex2 OUTPUT
|
|
|
|
-- PC방이 아닌경우
|
|
IF @FLAG <> 0
|
|
BEGIN
|
|
|
|
|
|
/************************ 수정 후 *********************
|
|
* 개인정량으로 가지전.......
|
|
*
|
|
* 통합빌링 시스템으로 넘어가서 해당 아이피가 통합빌링에 등록되어있는 아이피인지 검색한다.
|
|
*****************************************************/
|
|
SET @FLAG = 3
|
|
SET @intCRMIndex1 = 0
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
|
|
|
|
END
|
|
|
|
-- PC방 아이피인경우
|
|
ELSE IF @FLAG = 0
|
|
BEGIN
|
|
|
|
-- 해당 아이피의 과금 방식 가져오기
|
|
IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 = 0) -- 하나의 과금 방식만 따른다.
|
|
BEGIN
|
|
SELECT @IPType = strBillingType
|
|
FROM TblPCRoomBillingInfo
|
|
WHERE intCRMIndex = @intCRMIndex1
|
|
END
|
|
ELSE IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 <> 0) -- 두개의 과금 방식을 따른다.
|
|
BEGIN
|
|
SET @IPType = 'C'
|
|
END
|
|
|
|
-- PC방 과금종류를 체크한다.
|
|
-- T:정량제,D:정액제
|
|
EXEC @FLAG = USPCheckBilling_GameRoom_Post @intCRMIndex1,@intCRMIndex2,@IPType,@OutCRMIndex OUTPUT,@strBillingType OUTPUT,@canUseTime OUTPUT
|
|
|
|
IF @FLAG <> 0 --ERROR
|
|
BEGIN
|
|
-- PC방 과금이 종료된 경우이므로 다시 개인정량제로 과금을 적용시킨다.
|
|
|
|
/************************ 수정 후 *********************
|
|
* 개인정량으로 가지전.......
|
|
*
|
|
* 통합빌링 시스템으로 넘어가서 해당 아이피가 통합빌링에 등록되어있는 아이피인지 검색한다.
|
|
*****************************************************/
|
|
SET @FLAG = 3
|
|
SET @strBillingType = @BillingTime
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SET @intCRMIndex1 = 0
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
RETURN
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF @strBillingType = 'D' -- 정액제
|
|
BEGIN
|
|
-- 아이피 하나를 사용해서 카운트를 1 더하기 한다.
|
|
EXEC USPCheckBilling_UpIPCount @OutCRMIndex
|
|
|
|
--접속테이블에 입력한다.
|
|
INSERT INTO TblCurrentUser (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'E'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
ELSE IF @strBillingType = 'T' -- 정액제
|
|
BEGIN
|
|
|
|
--접속테이블에 입력한다.
|
|
INSERT INTO TblCurrentUser (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
END
|
|
END
|
|
|
|
END
|
|
END
|
|
-- 개인과금이 실패된 경우 다시 과금등록된 피시방인지 아닌지 체크한다.
|
|
ELSE
|
|
BEGIN
|
|
|
|
--AGAIN CHECK ClientIP
|
|
/*********************************************
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 숫자 -- 피시방 아이피가 정액과 정량 모두를 사용함
|
|
* @FLAG = 0,@intCRMIndex1 = 숫자,@intCRMIndex2 = 0 -- 피시방 아이피가 정액 또는 정량중 하나 임
|
|
* @FLAG = 1,@intCRMIndex1 = 0,@intCRMIndex2 = 0 -- 피시방 아이피가 아님
|
|
*********************************************/
|
|
EXEC @FLAG = USPCheckBilling_ClientIP @ClientIP,@intCRMIndex1 OUTPUT,@intCRMIndex2 OUTPUT
|
|
|
|
-- PC방이 아닌경우
|
|
IF @FLAG <> 0
|
|
BEGIN
|
|
|
|
|
|
-- 에러리턴한다.
|
|
|
|
SET @FLAG = 2
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
|
|
RETURN
|
|
|
|
END
|
|
ELSE IF @FLAG = 0
|
|
BEGIN
|
|
|
|
-- 해당 아이피의 과금 방식 가져오기
|
|
IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 = 0) -- 하나의 과금 방식만 따른다.
|
|
BEGIN
|
|
SELECT @IPType = strBillingType
|
|
FROM TblPCRoomBillingInfo
|
|
WHERE intCRMIndex = @intCRMIndex1
|
|
END
|
|
ELSE IF (@intCRMIndex1 <> 0 AND @intCRMIndex2 <> 0) -- 두개의 과금 방식을 따른다.
|
|
BEGIN
|
|
SET @IPType = 'C'
|
|
END
|
|
|
|
-- PC방 과금종류를 체크한다.
|
|
-- T:정량제,D:정액제
|
|
EXEC @FLAG = USPCheckBilling_GameRoom_Post @intCRMIndex1,@intCRMIndex2,@IPType,@OutCRMIndex OUTPUT,@strBillingType OUTPUT,@canUseTime OUTPUT
|
|
|
|
IF @FLAG <> 0 --ERROR
|
|
BEGIN
|
|
|
|
SET @FLAG = 2 --ERROR
|
|
|
|
SET @strBillingType = 'N'
|
|
-- PC방 과금이 종료된 에러를 리턴한다.
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@PlayTime as PlayTime,@intCRMIndex1 as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
ELSE -- SUCCESS
|
|
BEGIN
|
|
IF @strBillingType = 'D' -- 정액제
|
|
BEGIN
|
|
|
|
-- 아이피 하나를 사용해서 카운트를 1 더하기 한다.
|
|
EXEC USPCheckBilling_UpIPCount @OutCRMIndex
|
|
|
|
--접속테이블에 입력한다.
|
|
INSERT INTO TblCurrentUser (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = 'E'
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
RETURN
|
|
END
|
|
ELSE IF @strBillingType = 'T' -- 정액제
|
|
BEGIN
|
|
|
|
--접속테이블에 입력한다.
|
|
INSERT INTO TblCurrentUser (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@OutCRMIndex,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
SET @strBillingType2 = @strBillingType
|
|
|
|
SELECT @FLAG as FLAG,@strBillingType2 as BillingType,
|
|
@canUseTime as PlayTime,@OutCRMIndex as CRMIndex
|
|
|
|
RETURN
|
|
END
|
|
END
|
|
END
|
|
END
|
|
|
|
|
|
GO
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_InsertCurrentUser_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_InsertCurrentUser_Post
|
|
GO
|
|
|
|
CREATE PROC USPCheckBilling_InsertCurrentUser_Post @TableType INT,@strClientID VARCHAR(20),@UID INT,@ClientIP VARCHAR(15),
|
|
@ServerID TINYINT,@strBillingType CHAR(1),@MCHK INT
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @intCRMIndex INT
|
|
SET @intCRMIndex = 0
|
|
|
|
DECLARE @FLAG INT
|
|
SET @FLAG = 0 -- SUCCESS
|
|
IF @TableType = 0
|
|
BEGIN
|
|
-- 에러처리를 하느냐...안 하느냐..
|
|
INSERT INTO TblCurrentUser_temp (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@MCHK,@ClientIP,@strBillingType,@ServerID)
|
|
|
|
IF @@ERROR <> 0
|
|
BEGIN
|
|
SET @FLAG = 1
|
|
END
|
|
END
|
|
ELSE IF @TableType = 1
|
|
BEGIN
|
|
|
|
--접속테이블에 입력한다.
|
|
-- MCHK = -1 : 미디어웹에서 인증을 받아서 게임접속된 유저
|
|
-- MCHK = 0 : 가마에서 인증을 받아서 게임접속된 유저
|
|
-- 에러처리를 하느냐...안 하느냐..
|
|
INSERT INTO TblCurrentUser (strClientid,UID,intCRMIndex,strip,strBillingType,tinyServerID)
|
|
VALUES (@strClientID,@UID,@MCHK,@ClientIP,@strBillingType,@ServerID)
|
|
IF @@ERROR <> 0
|
|
BEGIN
|
|
SET @FLAG = 1
|
|
END
|
|
END
|
|
|
|
SELECT @FLAG
|
|
RETURN
|
|
|
|
|
|
|
|
GO
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_LogOut_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_LogOut_Post
|
|
GO
|
|
/***********************************
|
|
* 로그아웃 시 과금체크 부분
|
|
*
|
|
* 로그아웃시 과금이 지난 경우는 불활성 상태로 저장하고 종료한다.
|
|
* 통합빌링에서 로그인 된 유저가 로그아웃 될때 성공은 4, 실패는 5
|
|
0 : 성공 , 1 : 실패
|
|
통합빌링:10, 실패:11
|
|
***********************************/
|
|
CREATE PROC USPCheckBilling_LogOut_Post @ClientID VARCHAR(20)
|
|
AS
|
|
SET NOCOUNT ON
|
|
-- TblCurrentUser 테이블에 컬럼을 하나 추가
|
|
|
|
-- 현재 로그인 된 정보 값을 가져온다.
|
|
DECLARE @BillingType CHAR(1)
|
|
DECLARE @strIp VARCHAR(15)
|
|
DECLARE @tinyServerID TINYINT
|
|
DECLARE @UID INT
|
|
SET @UID = -1
|
|
DECLARE @CRMIndex INT
|
|
SET @CRMIndex = -1
|
|
|
|
DECLARE @MWebCHK TINYINT
|
|
|
|
DECLARE @DateLoginTime SMALLDATETIME
|
|
DECLARE @FirstLoginTime SMALLDATETIME
|
|
DECLARE @UsingTime INT
|
|
|
|
DECLARE @ERROR INT
|
|
|
|
-- 임시로그인 테이블에 존재하는지 안하는지 확인한다.
|
|
SELECT @UID = UID,@CRMIndex = intCRMIndex,@strIp = strIp,@BillingType = strBillingType,
|
|
@tinyServerID = tinyServerID,@DateLoginTime = DateLoginTime
|
|
FROM TblCurrentUser_temp
|
|
WHERE strClientid = @ClientID
|
|
|
|
-- 존재안한다고 하면
|
|
-- 캐릭터 선택하고 플레이하고 난뒤 로그아웃 할때 적용되는 부분
|
|
IF @UID = -1
|
|
BEGIN
|
|
SELECT @UID = UID,@CRMIndex = intCRMIndex,@strIp = strIp,@BillingType = strBillingType,@tinyServerID = tinyServerID,
|
|
@DateLoginTime = DateLoginTime,@FirstLoginTime = FirstLoginTime
|
|
FROM TblCurrentUser
|
|
WHERE strClientid = @ClientID
|
|
|
|
-- 현재 접속된 유저가 없음 (TBLCURRENTUSER)
|
|
IF @UID = -1
|
|
BEGIN
|
|
SELECT 1 AS ERROR
|
|
RETURN
|
|
END
|
|
|
|
-- 로그인 정보로 부터 현재까지 사용한 PLAYTIME을 구한다.
|
|
SET @UsingTime = DATEDIFF(MINUTE,@DateLoginTime,GETDATE())
|
|
|
|
-- 개인유저인경우
|
|
IF @CRMIndex = 0
|
|
BEGIN
|
|
-- 과금타입을 구분, 정량제인경우
|
|
IF @BillingType = 'T'
|
|
BEGIN
|
|
EXEC @ERROR =USPCheckBilling_LogOut_PersonTime @ClientID,@UsingTime
|
|
|
|
-- ERROR HANDLER
|
|
IF @ERROR <> 0
|
|
BEGIN
|
|
SELECT 1
|
|
RETURN
|
|
END
|
|
|
|
END
|
|
ELSE -- 개인정액제,무료계정일경우 경우
|
|
BEGIN
|
|
-- 데이터를 삭제한다
|
|
DELETE TblCurrentUser WHERE strClientid = @ClientID
|
|
|
|
END
|
|
END
|
|
-- 일반 게임방인 경우
|
|
ELSE IF (@CRMIndex > 0)
|
|
BEGIN
|
|
|
|
-- 게임방 코드를 구한다.
|
|
DECLARE @CRMCode VARCHAR(20)
|
|
SELECT @CRMCode = strCRMCode FROM TblPCRoomBillingInfo WHERE intCRMIndex = @CRMIndex
|
|
|
|
IF @BillingType = 'T'
|
|
BEGIN
|
|
EXEC @ERROR = USPCheckBilling_LogOut_PCTime 'Y',@CRMIndex,@CRMCode,@UsingTime,@ClientID
|
|
-- ERROR HANDLER
|
|
IF @ERROR <> 0
|
|
BEGIN
|
|
SELECT 1
|
|
RETURN
|
|
END
|
|
|
|
END
|
|
ELSE IF @BillingType ='D'-- 게임방 정액제인 경우
|
|
BEGIN
|
|
|
|
EXEC @ERROR= USPCheckBilling_LogOut_PCDate 'Y',@CRMIndex,@CRMCode,@UsingTime,@ClientID
|
|
|
|
IF @ERROR <> 0
|
|
BEGIN
|
|
SELECT 1
|
|
RETURN
|
|
END
|
|
|
|
END
|
|
END
|
|
ELSE IF (@CRMIndex < 0 ) -- 통합빌링일 경우
|
|
BEGIN
|
|
-- 데이터를 삭제한다
|
|
DELETE TblCurrentUser WHERE strClientid = @ClientID
|
|
|
|
IF @@ERROR <> 0
|
|
BEGIN
|
|
SELECT 11 -- FAILED
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
-- 로그를 남긴다.
|
|
INSERT INTO RylBillingDB_LOG.DBO.TblCurrentUser_Log
|
|
VALUES (@ClientID,@UID,@CRMIndex,@strIp,@BillingType,@tinyServerID,@FirstLoginTime,@DateLoginTime,GETDATE(),@UsingTime)
|
|
|
|
UPDATE TblPersonInfo
|
|
SET LastLogOutTime = GETDATE()
|
|
WHERE UID = @UID
|
|
|
|
IF (@CRMIndex >= 0 )
|
|
BEGIN
|
|
SELECT 0 AS SUCCESS
|
|
RETURN
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT 10 AS SUCCESS
|
|
RETURN
|
|
END
|
|
|
|
END
|
|
ELSE -- 캐릭터 선택창에서..바로 로그아웃 할때 적용되는 부분. 임시테이블에서 삭제하고 로그아웃한다.
|
|
BEGIN
|
|
BEGIN TRAN
|
|
-- 임시 피시방 아이피를 하나 낮춘다.
|
|
IF ((@CRMIndex > 0) AND (@BillingType = 'D'))
|
|
BEGIN
|
|
-- 허용아이피 갯수를 낮춘다.
|
|
UPDATE TblPCRoomBilling_Date
|
|
SET tinyUsedIpNum = tinyUsedIpNum - 1
|
|
WHERE intCRMIndex = @CRMIndex
|
|
|
|
IF @@ROWCOUNT <> 1
|
|
BEGIN
|
|
ROLLBACK TRAN
|
|
SELECT 1 AS ERROR
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
-- 로그를 남긴다.
|
|
DELETE TblCurrentUser_Temp WHERE strClientid = @ClientID
|
|
IF @@ROWCOUNT <> 1
|
|
BEGIN
|
|
ROLLBACK TRAN
|
|
SELECT 1 AS ERROR
|
|
RETURN
|
|
END
|
|
|
|
COMMIT TRAN
|
|
|
|
|
|
SELECT 0 AS SUCCESS
|
|
RETURN
|
|
|
|
END
|
|
|
|
|
|
GO
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPDisConnectLogOut_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPDisConnectLogOut_Post
|
|
GO
|
|
|
|
-- 현재 서버군에 접속되어있는 유저들을 리턴한다.
|
|
CREATE PROC USPDisConnectLogOut_Post @ServerID INT
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @RowID INT
|
|
DECLARE @strClientID VARCHAR(20)
|
|
|
|
DECLARE @TempTable TABLE
|
|
(
|
|
RowID INT IDENTITY(1,1) PRIMARY KEY
|
|
, strClientID VARCHAR(20)
|
|
, IP VARCHAR(15)
|
|
, Type INT
|
|
)
|
|
|
|
INSERT INTO @TempTable (strClientID,IP,Type)
|
|
SELECT strClientID,strIP,intCRMIndex FROM TblCurrentUser WHERE tinyServerID = @ServerID
|
|
|
|
SET @RowID = @@ROWCOUNT
|
|
|
|
WHILE @RowID <> 0
|
|
BEGIN
|
|
SELECT @strClientID = strClientID FROM @TempTable WHERE RowID = @RowID
|
|
-- 개인개인 과금을 처리한다.
|
|
EXEC USPDisConnectLogOut_Include_Post @strClientID
|
|
|
|
SET @RowID = @RowID - 1
|
|
END
|
|
|
|
-- 통합빌링에 접속된 유저만 리턴한다.
|
|
SELECT strClientID,IP FROM @TempTable WHERE Type < 0
|
|
|
|
GO
|
|
|
|
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPDisConnectLogOut_Include_Post]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPDisConnectLogOut_Include_Post
|
|
GO
|
|
|
|
/***********************************
|
|
* 로그아웃 시 과금체크 부분
|
|
*
|
|
* 로그아웃시 과금이 지난 경우는 불활성 상태로 저장하고 종료한다.
|
|
***********************************/
|
|
CREATE PROC USPDisConnectLogOut_Include_Post @ClientID VARCHAR(20)
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
-- 현재 로그인 된 정보 값을 가져온다.
|
|
DECLARE @BillingType CHAR(1)
|
|
DECLARE @strIp VARCHAR(15)
|
|
DECLARE @tinyServerID TINYINT
|
|
DECLARE @UID INT
|
|
SET @UID = -1
|
|
DECLARE @CRMIndex INT
|
|
SET @CRMIndex = -1
|
|
|
|
DECLARE @DateLoginTime SMALLDATETIME
|
|
DECLARE @FirstLoginTime SMALLDATETIME
|
|
DECLARE @UsingTime INT
|
|
|
|
-- 임시로그인 테이블에 존재하는지 안하는지 확인한다.
|
|
SELECT @UID = UID,@CRMIndex = intCRMIndex,@strIp = strIp,@BillingType = strBillingType,
|
|
@tinyServerID = tinyServerID,@DateLoginTime = DateLoginTime
|
|
FROM TblCurrentUser_temp
|
|
WHERE strClientid = @ClientID
|
|
|
|
IF @UID = -1
|
|
BEGIN
|
|
SELECT @UID = UID,@CRMIndex = intCRMIndex,@strIp = strIp,@BillingType = strBillingType,
|
|
@tinyServerID = tinyServerID,@DateLoginTime = DateLoginTime,@FirstLoginTime = FirstLoginTime
|
|
FROM TblCurrentUser
|
|
WHERE strClientid = @ClientID
|
|
|
|
-- 현재 접속된 유저가 없음 (TBLCURRENTUSER)
|
|
IF @UID = -1
|
|
BEGIN
|
|
RETURN
|
|
END
|
|
|
|
-- 로그인 정보로 부터 현재까지 사용한 PLAYTIME을 구한다.
|
|
SET @UsingTime = DATEDIFF(MINUTE,@DateLoginTime,GETDATE())
|
|
|
|
-- 개인유저인경우
|
|
IF @CRMIndex = 0
|
|
BEGIN
|
|
-- 과금타입을 구분, 정량제인경우
|
|
IF @BillingType = 'T'
|
|
BEGIN
|
|
EXEC USPCheckBilling_LogOut_PersonTime @ClientID,@UsingTime
|
|
|
|
END
|
|
ELSE -- 정액제,비과금유저인경우
|
|
BEGIN
|
|
DELETE TblCurrentUser where strClientid = @ClientID
|
|
END
|
|
END
|
|
-- 일반 게임방인 경우
|
|
ELSE IF (@CRMIndex > 0)
|
|
BEGIN
|
|
|
|
-- 게임방 코드를 구한다.
|
|
DECLARE @CRMCode VARCHAR(20)
|
|
SELECT @CRMCode = strCRMCode FROM TblPCRoomBillingInfo WHERE intCRMIndex = @CRMIndex
|
|
|
|
IF @BillingType = 'T'
|
|
BEGIN
|
|
EXEC USPCheckBilling_LogOut_PCTime 'Y',@CRMIndex,@CRMCode,@UsingTime,@ClientID
|
|
END
|
|
ELSE -- 게임방 정액제인 경우
|
|
BEGIN
|
|
|
|
EXEC USPCheckBilling_LogOut_PCDate 'Y',@CRMIndex,@CRMCode,@UsingTime,@ClientID
|
|
|
|
END
|
|
END
|
|
ELSE IF (@CRMIndex < 0 ) -- 통합빌링일 경우
|
|
BEGIN
|
|
DELETE TblCurrentUser where strClientid = @ClientID
|
|
END
|
|
|
|
-- 로그를 남긴다.
|
|
INSERT INTO RylBillingDB_LOG.DBO.TblCurrentUser_Log (strClientID,UID,intCRMIndex,strIp,strBillingType,tinyServerID,FirstLoginTime,LoginTime,LogoutTime,intPlayTime)
|
|
VALUES (@ClientID,@UID,@CRMIndex,@strIp,@BillingType,@tinyServerID,@FirstLoginTime,@DateLoginTime,GETDATE(),@UsingTime)
|
|
|
|
UPDATE TblPersonInfo
|
|
SET LastLogOutTime = GETDATE()
|
|
WHERE UID = @UID
|
|
|
|
RETURN
|
|
|
|
END
|
|
ELSE -- 임시테이블에서 삭제하고 로그아웃한다.
|
|
BEGIN
|
|
|
|
BEGIN TRAN
|
|
-- 임시 피시방 아이피를 하나 낮춘다.
|
|
IF ((@CRMIndex > 0) AND (@BillingType = 'D'))
|
|
BEGIN
|
|
-- 허용아이피 갯수를 낮춘다.
|
|
UPDATE TblPCRoomBilling_Date
|
|
SET tinyUsedIpNum = tinyUsedIpNum - 1
|
|
WHERE intCRMIndex = @CRMIndex
|
|
|
|
IF @@ROWCOUNT <> 1
|
|
BEGIN
|
|
ROLLBACK TRAN
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
COMMIT TRAN
|
|
|
|
-- 로그를 남긴다.
|
|
DELETE TblCurrentUser_Temp WHERE strClientid = @ClientID
|
|
|
|
|
|
INSERT INTO RylBillingDB_Log.dbo.TblCurrentUser_Log (strClientID,UID,intCRMIndex,strIp,strBillingType,tinyServerID,FirstLoginTime,LoginTime,LogoutTime,intPlayTime)
|
|
VALUES (@ClientID,@UID,@CRMIndex,@strIp,@BillingType,@tinyServerID,@FirstLoginTime,@DateLoginTime,GETDATE(),0)
|
|
|
|
RETURN
|
|
|
|
END
|
|
|
|
GO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
if exists (select * from dbo.sysobjects where id = object_id(N'[USPCheckBilling_BeforeLogOut]')
|
|
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
|
|
drop procedure USPCheckBilling_BeforeLogOut
|
|
*/
|
|
GO
|
|
|
|
/*
|
|
-- 개인 정량 및 정액이 종료 되었을때 자동으로 끊기전에 개인관련 빌링을 체크한다.
|
|
CREATE PROC USPCheckBilling_BeforeLogOut @strClientID VARCHAR(20)
|
|
AS
|
|
-- 로그아웃 하기 전에 개인아이디의 추가 과금여부를 체크한다.
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE @BillingType CHAR(1)
|
|
DECLARE @CanPlayTime INT
|
|
DECLARE @UsedTime INT
|
|
DECLARE @PlayTime INT
|
|
|
|
-- 현재 접속된 정보를 얻어온다.
|
|
SELECT @BillingType = strBillingType,@UsedTime = DATEDIFF(MINUTE,dateLoginTime,GETDATE())
|
|
FROM TblCurrentUser WHERE strClientID = @strClientID
|
|
|
|
IF @BillingType = 'T'
|
|
BEGIN
|
|
-- 현재 과금정보를 얻어온다.
|
|
SELECT @CanPlayTime =( intServiceTime - intUsingTime)
|
|
FROM TblPersonBillingInfo
|
|
WHERE strClientID = @strClientID
|
|
-- 날짜를 계산한다.
|
|
SET @PlayTime = @CanPlayTime - @UsedTime
|
|
SELECT @PlayTime
|
|
RETURN
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @PlayTime = 0
|
|
SELECT @PlayTime
|
|
RETURN
|
|
END
|
|
*/
|
|
|
|
GO
|
|
|
|
|
|
|
|
/***************************************TEST********************************
|
|
SELECT * FROM TblPersoninfo
|
|
SELECT * FROM TblPersonBillinginfo
|
|
SELECT * FROM TblPCRoombillinginfo
|
|
SELECT * FROM dbo.TblPCRoomBilling_Date
|
|
SELECT * FROM dbo.TblPCRoomBilling_Time
|
|
SELECT * FROM dbo.TblGameRoomIPList
|
|
|
|
insert into TblPCRoombillinginfo
|
|
values (10000,'GAMA2003','D',GETDATE())
|
|
|
|
UPDATE TblPCRoomBilling_Date
|
|
SET intCRMindex = 10000,TINYUSEDIPNUM = 0
|
|
|
|
INSERT INTO TblGameRoomIPList
|
|
select 10000,strip from tblgameroomiplist
|
|
|
|
update TblPCRoomBilling_Date
|
|
set dateEndTime = getdate()+1
|
|
|
|
SELECT * FROM dbo.TblCurrentUser
|
|
|
|
UPDATE TblPersonBillinginfo
|
|
SET dateendtime = getdate()-1,intServicetime = 100
|
|
where strclientid = 'have2do1'
|
|
|
|
insert into TblPersonBillinginfo
|
|
values ('have2do2',2222221,null,100,10,getdate())
|
|
|
|
1.개인정액
|
|
|
|
EXEC dbo.USPCheckBilling_CharIDLogin_Post 'have2do',200000,0,'192.168.3.10',1
|
|
|
|
result : 0 D 2004.11.09 0 0
|
|
|
|
2.개인정량(개인정액 : 만료된 사람)
|
|
|
|
EXEC dbo.USPCheckBilling_CharIDLogin_Post 'have2do1',200000,0,'192.168.3.10',1
|
|
result : 2 T 2004.02.03 100 0
|
|
|
|
EXEC dbo.USPCheckBilling_CharIDLogin_Post 'have2do2',200000,0,'192.168.3.10',1
|
|
result : 2 T NULL 90 0
|
|
|
|
3.피시방에서 접속중.(피시방 정액)
|
|
EXEC dbo.USPCheckBilling_CharIDLogin_Post 'have2do2',200000,0,'192.168.7.4',1
|
|
result : 0 T NULL 40000 12345
|
|
|
|
|
|
DELETE TBLCURRENTUSER
|
|
WHERE STRCLIENTID = 'have2do2'
|
|
EXEC dbo.USPCheckBilling_CharIDLogin_Post 'have2do3',200000,0,'192.168.7.5',1
|
|
|
|
EXEC dbo.USPCheckBilling_LogOut_Post 'have2do2'
|
|
|
|
**********************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|