📄 注册帐号.sql
字号:
----------------------------------------------------------------------------------------------------
USE QPGameUserDB
GO
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[GSP_GP_RegisterAccounts]') and OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[GSP_GP_RegisterAccounts]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
----------------------------------------------------------------------------------------------------
-- 帐号注册
CREATE PROC GSP_GP_RegisterAccounts
@strAccounts NVARCHAR(31), -- 用户帐号
@strPassword NCHAR(32), -- 用户密码
@strSpreader NVARCHAR(31), -- 推广员名
@wFaceID INT, -- 头像标识
@cbGender TINYINT, -- 用户性别
@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 @SpreaderID INT
DECLARE @Gender TINYINT
DECLARE @Experience INT
DECLARE @Loveliness INT
DECLARE @MemberOrder INT
DECLARE @MemberOverDate DATETIME
-- 辅助变量
DECLARE @EnjoinLogon AS INT
DECLARE @EnjoinRegister AS INT
DECLARE @ErrorDescribe AS NVARCHAR(128)
-- 执行逻辑
BEGIN
-- 效验名字
IF (SELECT COUNT(*) FROM ConfineContent(NOLOCK) WHERE CHARINDEX(String,@strAccounts)>0)>0
BEGIN
SELECT [ErrorDescribe]=N'抱歉地通知您,您所输入的帐号名含有限制字符串,请更换帐号名后再次申请帐号!'
RETURN 4
END
-- 效验地址
SELECT @EnjoinRegister=EnjoinRegister FROM ConfineAddress(NOLOCK) WHERE AddrString=@strClientIP AND GETDATE()<EnjoinOverDate
IF @EnjoinRegister IS NOT NULL AND @EnjoinRegister<>0
BEGIN
SELECT [ErrorDescribe]=N'抱歉地通知您,系统禁止了您所在的 IP 地址的注册功能,请联系客户服务中心了解详细情况!'
RETURN 5
END
-- 效验机器
SELECT @EnjoinRegister=EnjoinRegister FROM ConfineMachine(NOLOCK) WHERE MachineSerial=@strMachineSerial AND GETDATE()<EnjoinOverDate
IF @EnjoinRegister IS NOT NULL AND @EnjoinRegister<>0
BEGIN
SELECT [ErrorDescribe]=N'抱歉地通知您,系统禁止了您的机器的注册功能,请联系客户服务中心了解详细情况!'
RETURN 6
END
-- 查询用户
IF EXISTS (SELECT UserID FROM AccountsInfo(NOLOCK) WHERE Accounts=@strAccounts)
BEGIN
SELECT [ErrorDescribe]=N'此帐号名已被注册,请换另一帐号名字尝试再次注册!'
RETURN 7
END
-- 查推广员
IF @strSpreader<>''
BEGIN
-- 查推广员
SELECT @SpreaderID=UserID FROM AccountsInfo(NOLOCK) WHERE Accounts=@strSpreader
-- 结果处理
IF @SpreaderID IS NULL
BEGIN
SELECT [ErrorDescribe]=N'您所填写的推荐人不存在或者填写错误,请检查后再次注册!'
RETURN 8
END
END
ELSE SET @SpreaderID=0
-- 注册用户
INSERT AccountsInfo (Accounts,RegAccounts,LogonPass,InsurePass,SpreaderID,Gender,FaceID,MachineSerial,GameLogonTimes,RegisterIP,LastLogonIP)
VALUES (@strAccounts,@strAccounts,@strPassword,@strPassword,@SpreaderID,@cbGender,@wFaceID,@strMachineSerial,1,@strClientIP,@strClientIP)
-- 错误判断
IF @@ERROR<>0
BEGIN
SELECT [ErrorDescribe]=N'帐号已存在,请换另一帐号名字尝试再次注册!'
RETURN 8
END
-- 查询用户
SELECT @UserID=UserID, @Accounts=Accounts, @UnderWrite=UnderWrite, @Gender=Gender, @FaceID=FaceID, @Experience=Experience,
@MemberOrder=MemberOrder, @MemberOverDate=MemberOverDate, @Loveliness=Loveliness
FROM AccountsInfo(NOLOCK) WHERE Accounts=@strAccounts
-- 分配标识
SELECT @GameID=GameID FROM GameIdentifier(NOLOCK) WHERE UserID=@UserID
IF @GameID IS NULL
BEGIN
SET @GameID=0
SET @ErrorDescribe=N'用户注册成功,但未成功获取游戏 ID 号码,系统稍后将给您分配!'
END
ELSE UPDATE AccountsInfo SET GameID=@GameID WHERE UserID=@UserID
-- 记录日志
DECLARE @DateID INT
SET @DateID=CAST(CAST(GETDATE() AS FLOAT) AS INT)
UPDATE SystemStreamInfo SET GameRegisterSuccess=GameRegisterSuccess+1 WHERE DateID=@DateID
IF @@ROWCOUNT=0 INSERT SystemStreamInfo (DateID, GameRegisterSuccess) 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 + -