aaa

create procedure sp_dealHotelOrder(@state int,@id int)
as
declare @result int--返回结果
set @result=-1
declare @state1 int
set @state1=(select ho_state from hotelorder where ho_id=@id)
if(@state<=@state1)
set @result=0--处理状态不能倒回
else
begin
if(@state=1)
begin
declare @ismember int
set @ismember=(select ho_ismember from hotelorder where ho_id=@id)
if(@ismember=0)
begin
update hotelorder set ho_state=1 where ho_id=@id
set @result=1--非会员订单通过
end
else if(@ismember=1)--会员状态订单审核通过
begin
declare @point int--会员现有拥有的积分
set @point=(select m_points from member where m_email=(select ho_memberemail from hotelorder where ho_id=@id))
declare @point1 int--此订单需要的积分
set @point1=(select ho_payPoints from hotelorder where ho_id=@id)
declare @email varchar(50),@num varchar(50),@addpoint int
set @email=(select ho_memberemail from hotelorder where ho_id=@id)
set @num=(select ho_num from hotelorder where ho_id=@id)
set @addpoint=(select ho_points from hotelorder where ho_id=@id)--订单成功要加的积分
if(@point>=@point1)
begin
declare @update_error int,@insert_error int,@update_error1 int,@update_error2 int,@insert_error1 int
begin tran
update member set m_points=(@point-@point1+@addpoint) where m_email=@email--扣除会员积分
select @update_error=@@error--保存扣除积分错误
insert into point (p_member,p_time,p_orderid,p_ordertype,p_description,p_type,p_num) values (@email,getdate(),@id,0,'the hotel order '+@num+' was succeed, '+cast(@point1 as varchar(10))+' points was used',1,@point1)--写积分消耗日志
select @insert_error =@@error--保存日志错误
update hotelorder set ho_state=1 where ho_id=@id--订单更新为通过状态
select @update_error1=@@error--保存订单更新错误

select @update_error2=@@error--增加积分错误
insert into point (p_member,p_time,p_orderid,p_ordertype,p_description,p_type,p_num) values (@email,getdate(),@id,0,'the hotel order '+@num+' was succeed, you get '+cast(@addpoint as varchar(50))+' points',1,@addpoint )--写增加积分日志
select @insert_error1=@@error--写日志错误
if @update_error=0 and @insert_error=0 and @update_error1=0 and @update_error2=0 and @insert_error1=0
begin
commit tran
set @result=2--会员订单通过
end
else
begin
rollback tran
set @result=3--会员订单未通过
end

end
else
set @result=4--会员订单未通过,积分不足

end

end
else if(@state=2)
begin
if(@state1=0)
begin
update hotelorder set ho_state=2 where ho_id=@id
set @result=5--会员订单设为回收站成功
end
else
set @result=6
end


end
select @result as result
GO

你可能感兴趣的:(a)