删除用户前逻辑判断,检查当前用户是否关联业务数据或创建业务数据


我们设计的业务系统,在删除用户前必须检查当前用户是否关联业务数据、是否创建业务数据,若有关联业务数据是不可删除用户的,并且要有提示,如下图:
【系统管理】-->【用户管理】-->【删除】按钮。

有2种解决方案仅供参考:
1. 在删除操作的存储过程中进行逻辑判断,若有关联业务数据,抛出异常。
2. 在删除按钮事件中判断,调用判断逻辑,若有关联业务数据,退出操作。
下面提供在删除操作的存储过程中进行逻辑判断:
DAL层调用删除用户的存储过程:
C# Code:
/// <summary>
/// 删除用户
/// </summary>
/// <param name="account">帐号</param>
/// <returns></returns>
public bool DeleteUser(string account)
{
CommandHelper sp = _Database.CreateSqlProc("usp_DeleteUser");
sp.AddParam("@Account", DbType.String, account);
sp.AddParam("@DataSetID", DbType.String, _Loginer.DBID);
int i = _Database.ExecuteCommand(sp.Command);
return i != 0;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 删除用户
/// </summary>
/// <param name="account">帐号</param>
/// <returns></returns>
public bool DeleteUser(string account)
{
CommandHelper sp = _Database.CreateSqlProc("usp_DeleteUser");
sp.AddParam("@Account", DbType.String, account);
sp.AddParam("@DataSetID", DbType.String, _Loginer.DBID);
int i = _Database.ExecuteCommand(sp.Command);
return i != 0;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
删除用户的存储过程:
SQL Code:
ALTER PROCEDURE [dbo].[usp_DeleteUser]
@Account VARCHAR(30),--用户帐号(登陆账号)
@DataSetID VARCHAR(30)--帐套编号
as
BEGIN
/************************************************************
功能:删除用户,包括组的用户,应用角色的用户
SELECT * FROM dbo.tb_DataSet
SELECT * FROM dbo.tb_MyUser
SELECT * FROM dbo.tb_MyGroupUser
SELECT * FROM dbo.tb_MyUserRoles
usp_DeleteUser 'admin','BusinessDB'
*************************************************************/
DECLARE @MSG NVARCHAR(200)
--检查当前用户是否创建业务数据
IF NN_OMS_Business.dbo.ufn_IsUserUsed(@Account)>0
BEGIN
SELECT @MSG='当前用户关联业务数据,不可删除!';
RAISERROR (@MSG,16,1);
RETURN;
END ELSE
BEGIN
--删除用户
DELETE FROM tb_MyUser WHERE Account=@Account
--删除用户组
DELETE FROM tb_MyGroupUser WHERE Account=@Account AND DataSetID=@DataSetID
--删除用户权限
DELETE FROM tb_MyUserRoles WHERE Account=@Account AND DataSetID=@DataSetID
END;
END
//来源:C/S框架网 | www.csframework.com | QQ:23404761
@Account VARCHAR(30),--用户帐号(登陆账号)
@DataSetID VARCHAR(30)--帐套编号
as
BEGIN
/************************************************************
功能:删除用户,包括组的用户,应用角色的用户
SELECT * FROM dbo.tb_DataSet
SELECT * FROM dbo.tb_MyUser
SELECT * FROM dbo.tb_MyGroupUser
SELECT * FROM dbo.tb_MyUserRoles
usp_DeleteUser 'admin','BusinessDB'
*************************************************************/
DECLARE @MSG NVARCHAR(200)
--检查当前用户是否创建业务数据
IF NN_OMS_Business.dbo.ufn_IsUserUsed(@Account)>0
BEGIN
SELECT @MSG='当前用户关联业务数据,不可删除!';
RAISERROR (@MSG,16,1);
RETURN;
END ELSE
BEGIN
--删除用户
DELETE FROM tb_MyUser WHERE Account=@Account
--删除用户组
DELETE FROM tb_MyGroupUser WHERE Account=@Account AND DataSetID=@DataSetID
--删除用户权限
DELETE FROM tb_MyUserRoles WHERE Account=@Account AND DataSetID=@DataSetID
END;
END
//来源:C/S框架网 | www.csframework.com | QQ:23404761
统计当前用户创建业务单据的数量:
SQL Code:
ALTER FUNCTION ufn_IsUserUsed
(
@UserID VARCHAR(50)
)
RETURNS INT
AS
BEGIN
/***********************************************************
程序说明:统计当前用户创建的业务单据
SELECT dbo.ufn_IsUserUsed('admin')
************************************************************/
--统计当前用户创建的业务单据
DECLARE @Count INT
SELECT @Count=
--报价单
(SELECT COUNT(1) FROM tb_QO WHERE CreatedBy=@UserID)+
--形式发票
(SELECT COUNT(1) FROM tb_PI WHERE CreatedBy=@UserID)+
--客人发票
(SELECT COUNT(1) FROM tb_IV WHERE CreatedBy=@UserID)+
--付款单
(SELECT COUNT(1) FROM tb_PM WHERE CreatedBy=@UserID)
RETURN @Count
END;
//来源:C/S框架网 | www.csframework.com | QQ:23404761
(
@UserID VARCHAR(50)
)
RETURNS INT
AS
BEGIN
/***********************************************************
程序说明:统计当前用户创建的业务单据
SELECT dbo.ufn_IsUserUsed('admin')
************************************************************/
--统计当前用户创建的业务单据
DECLARE @Count INT
SELECT @Count=
--报价单
(SELECT COUNT(1) FROM tb_QO WHERE CreatedBy=@UserID)+
--形式发票
(SELECT COUNT(1) FROM tb_PI WHERE CreatedBy=@UserID)+
--客人发票
(SELECT COUNT(1) FROM tb_IV WHERE CreatedBy=@UserID)+
--付款单
(SELECT COUNT(1) FROM tb_PM WHERE CreatedBy=@UserID)
RETURN @Count
END;
//来源:C/S框架网 | www.csframework.com | QQ:23404761

扫一扫加微信:


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网