日期:2014-05-17 浏览次数:20682 次
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go --功能:online_Deposit加款 ALTER proc [dbo].[P_Online_Deposit_Process] @billno varchar(50), --存款编号 @UpdateBy varchar(50), @UpdateIp varchar(64), @amount money, @Remark varchar(50), @TypeID int as declare @beforeBalance money; declare @afterBalance money; declare @TrueDeposited money; declare @UserId uniqueidentifier ; declare @status int; --lv等级判断参数 declare @depositnum int; declare @totaldeposit int; declare @levelid int; declare @beforeLevelid int; BEGIN SET NOCOUNT ON; set xact_abort on; If not exists(SELECT TrueDeposited,DepositId FROM Deposits WHERE DepositId=@billno and TrueDeposited=@amount) begin select '1' flag,N'交易失败:不存在此订单或交易金额与数据库中不相同.' msg RETURN; end SELECT @UserId=UserId,@status=status FROM Deposits WHERE DepositId=@billno; if(@status=4 or @status=5) begin select '1' flag,N'交易失败:该记录已经处理完成,不允许在次操作.' msg return; end; if(@TypeID=1) begin if(@status=1) begin Begin Tran ;--充值 事务处理开始 --更新存款记录状态 UPDATE Deposits WITH (ROWLOCK) SET status=4,UpdateTime=getdate() WHERE DepositId=@billno; select @beforeBalance=Balance FROM Users WHERE UserId=@UserId;--之前主帐户余额 --写入存款记录状态更新日志 insert into log_UsersDeposit (Id,Remark,TranID,status,UserId,UpdateBy,UpdateIp,UpdateTime) values (newid (),@Remark,@billno,'Success',@UserId,'IPS',@UpdateIp,getdate()); --对主帐号进行实际充值 UPDATE Users SET Balance=Balance+@amount,totaldeposit=totaldeposit+@amount,depositnum=depositnum+1,UpdateTime=getdate(),Updateby=@UpdateBy WHERE UserId=@UserId; select @afterBalance=Balance FROM Users WHERE UserId=@UserId;--充值之后主帐户余额 select @totaldeposit=(SELECT totaldeposit FROM Users WHERE UserId=@UserId);--totaldeposit select @depositnum=(SELECT depositnum FROM Users WHERE UserId=@UserId);--depositnum select @beforeLevelid=(SELECT UserLevel FROM Users WHERE UserId=@UserId);--beforeLevelid select @levelid=(SELECT top 1 levelid FROM T_LevelMap where depositnum<=@depositnum and totaldeposit<=@totaldeposit order by levelid desc);--UserLevel UPDATE Users SET UserLevel=@levelid WHERE UserId=@UserId and @levelid>@beforeLevelid; -----------------写入主帐户变动日志开始---------- insert into log_UsersBlance (Id,Remark,TranID,tranType,Operating,Amt,beforeBalance,afterBalance,UserId,UpdateBy,UpdateIp,UpdateTime) values (newid(),@Remark,@billno,1,'+',@amount,@beforeBalance,@afterBalance,@UserId,@UpdateBy,@UpdateIp,getdate()); if (@@error <> 0) begin select '1' flag,N'交易失败:该记录已经处理完成.' msg rollback tran ; return; end Commit Tran; --事务处理结束 select '0' flag,N'交易成功: Sussce.' msg end end else if(@TypeID=5) begin Begin Tran ; UPDATE Deposits WITH (ROWLOCK) SET status=5,UpdateTime=getdate(),Updateby=@Updateby where DepositId=@billno; --写入存款记录状态更新日志 insert into log_UsersDeposit (Id,Remark,TranID,status,UserId,UpdateBy,UpdateIp,UpdateTime) values (newid(),@Remark,@billno,'Reject',@UserId,@Updateby,@UpdateIp,getdate()) ; if (@@error <> 0) begin select '1' flag,N'交易失败:已经