删除用户前逻辑判断,检查当前用户是否关联业务数据或创建业务数据
作者:作者不详  发布日期:2020-03-21 19:36:33
  删除用户前逻辑判断,检查当前用户是否关联业务数据或创建业务数据

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

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

【系统管理】-->【用户管理】-->【删除】按钮。

贴图图片-删除用户前检查当前用户是否关联业务数据



有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



删除用户的存储过程:


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



统计当前用户创建业务单据的数量:


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


C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信:
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

上一篇 下一篇