📄 帐号登录.sql
字号:
----------------------------------------------------------------------------------------------------
USE QPGameUserDB
GO
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[GSP_GP_EfficacyAccounts]') and OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[GSP_GP_EfficacyAccounts]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
----------------------------------------------------------------------------------------------------
-- 帐号登陆
CREATE PROC GSP_GP_EfficacyAccounts
@strAccounts NVARCHAR(31), -- 用户帐号
@strPassword NCHAR(32), -- 用户密码
@strClientIP NVARCHAR(15), -- 连接地址
@strMachineSerial NCHAR(32) -- 机器标识
WITH ENCRYPTION AS
-- 属性设置
SET NOCOUNT ON
-- 基本信息
DECLARE @UserID INT
DECLARE @FaceID INT
DECLARE @Accounts NVARCHAR(31)
DECLARE @UnderWrite NVARCHAR(63)
-- 扩展信息
DECLARE @GameID INT
DECLARE @Gender TINYINT
DECLARE @Experience INT
DECLARE @Loveliness INT
DECLARE @MemberOrder INT
DECLARE @MemberOverDate DATETIME
-- 辅助变量
DECLARE @EnjoinLogon AS INT
DECLARE @ErrorDescribe AS NVARCHAR(128)
-- 执行逻辑
BEGIN
-- 效验地址
SELECT @EnjoinLogon=EnjoinLogon FROM ConfineAddress(NOLOCK) WHERE AddrString=@strClientIP AND GETDATE()<EnjoinOverDate
IF @EnjoinLogon IS NOT NULL AND @EnjoinLogon<>0
BEGIN
SELECT [ErrorDescribe]=N'抱歉地通知您,系统禁止了您所在的 IP 地址的登录功能,请联系客户服务中心了解详细情况!'
RETURN 4
END
-- 效验机器
SELECT @EnjoinLogon=EnjoinLogon FROM ConfineMachine(NOLOCK) WHERE MachineSerial=@strMachineSerial AND GETDATE()<EnjoinOverDate
IF @EnjoinLogon IS NOT NULL AND @EnjoinLogon<>0
BEGIN
SELECT [ErrorDescribe]=N'抱歉地通知您,系统禁止了您的机器的登录功能,请联系客户服务中心了解详细情况!'
RETURN 7
END
-- 查询用户
DECLARE @Nullity BIT
DECLARE @StunDown BIT
DECLARE @LogonPass AS NCHAR(32)
DECLARE @MachineSerial NCHAR(32)
DECLARE @MoorMachine AS TINYINT
SELECT @UserID=UserID, @GameID=GameID, @Accounts=Accounts, @UnderWrite=UnderWrite, @LogonPass=LogonPass, @FaceID=FaceID,
@Gender=Gender, @Nullity=Nullity, @StunDown=StunDown, @Experience=Experience, @MemberOrder=MemberOrder, @MemberOverDate=MemberOverDate,
@MoorMachine=MoorMachine, @MachineSerial=MachineSerial, @Loveliness=Loveliness
FROM AccountsInfo(NOLOCK) WHERE Accounts=@strAccounts
-- 查询用户
IF @UserID IS NULL
BEGIN
SELECT [ErrorDescribe]=N'您的帐号不存在或者密码输入有误,请查证后再次尝试登录!'
RETURN 1
END
-- 帐号禁止
IF @Nullity<>0
BEGIN
SELECT [ErrorDescribe]=N'您的帐号暂时处于冻结状态,请联系客户服务中心了解详细情况!'
RETURN 2
END
-- 帐号关闭
IF @StunDown<>0
BEGIN
SELECT [ErrorDescribe]=N'您的帐号使用了安全关闭功能,必须重新开通后才能继续使用!'
RETURN 2
END
-- 固定机器
IF @MoorMachine=1
BEGIN
IF @MachineSerial<>@strMachineSerial
BEGIN
SELECT [ErrorDescribe]=N'您的帐号使用固定机器登陆功能,您现所使用的机器不是所指定的机器!'
RETURN 1
END
END
-- 密码判断
IF @LogonPass<>@strPassword
BEGIN
SELECT [ErrorDescribe]=N'您的帐号不存在或者密码输入有误,请查证后再次尝试登录!'
RETURN 3
END
-- 固定机器
IF @MoorMachine=2
BEGIN
SET @MoorMachine=1
SET @ErrorDescribe=N'您的帐号成功使用了固定机器登陆功能!'
UPDATE AccountsInfo SET MoorMachine=@MoorMachine, MachineSerial=@strMachineSerial WHERE UserID=@UserID
END
-- 会员等级
IF GETDATE()>@MemberOverDate SET @MemberOrder=0
-- 更新信息
UPDATE AccountsInfo SET MemberOrder=@MemberOrder, GameLogonTimes=GameLogonTimes+1,LastLogonDate=GETDATE(),
LastLogonIP=@strClientIP,MachineSerial=@strMachineSerial WHERE UserID=@UserID
-- 记录日志
DECLARE @DateID INT
SET @DateID=CAST(CAST(GETDATE() AS FLOAT) AS INT)
UPDATE SystemStreamInfo SET GameLogonSuccess=GameLogonSuccess+1 WHERE DateID=@DateID
IF @@ROWCOUNT=0 INSERT SystemStreamInfo (DateID, GameLogonSuccess) VALUES (@DateID, 1)
-- 输出变量
SELECT @UserID AS UserID, @GameID AS GameID, @Accounts AS Accounts, @UnderWrite AS UnderWrite, @FaceID AS FaceID,
@Gender AS Gender, @Experience AS Experience, @MemberOrder AS MemberOrder, @MemberOverDate AS MemberOverDate,
@ErrorDescribe AS ErrorDescribe, @Loveliness AS Loveliness
END
RETURN 0
GO
----------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -