You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ERP/TradeData/JC_RoleInfoService.cs

225 lines
8.8 KiB
C#

2 months ago
using NetLibrary.Data;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using TradeModel;
using NetLibrary;
namespace TradeData
{
public class JC_RoleInfoService
{
#region 读取角色列表
public static List<JC_RoleInfo> GetList(int CompanyID)
{
string tsql = @"
select * from JC_RoleInfo where CompanyID=@CompanyID
order by RoleId desc
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@CompanyID", DbType.Int32, CompanyID);
DataTable tb= db.ExecuteDataTable(cmd);
return tb.ToList<JC_RoleInfo>();
}
#endregion
#region 读取角色列表
public static List<JC_RoleUser> GetUserRoleList(int UserId)
{
string tsql = @"
select * from JC_RoleUser where UserId=@UserId and RoleType=1
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@UserId", DbType.Int32, UserId);
DataTable tb = db.ExecuteDataTable(cmd);
return tb.ToList<JC_RoleUser>();
}
#endregion
#region 删除角色
public static void Delete(int RoleId)
{
string tsql = @"
delete from JC_RoleInfo where RoleId=@RoleId
delete from JC_RoleUser where RoleID=@RoleID
delete from JC_RoleMenu where RoleID=@RoleID
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@RoleId", DbType.Int32, RoleId);
db.ExecuteNonQuery(cmd);
}
#endregion
#region 保存角色
public static void Save(int RoleID,int CompanyID,string RoleName)
{
string tsql = @"
if @RoleID>0
begin
update JC_RoleInfo set RoleName=@RoleName where RoleID=@RoleID
end
else
begin
INSERT INTO [JC_RoleInfo](RoleName,CompanyID)values(@RoleName,@CompanyID)
end
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@RoleID", DbType.Int32, RoleID);
db.AddInParameter(cmd, "@CompanyID", DbType.Int32, CompanyID);
db.AddInParameter(cmd, "@RoleName", DbType.String, RoleName);
db.ExecuteNonQuery(cmd);
}
#endregion
#region 保存角色明细
public static void SaveDetail(int CompanyID, JC_RoleInfo Model)
{
string tsql = @"
delete from JC_RoleUser where RoleID=@RoleID
delete from JC_RoleMenu where RoleID=@RoleID
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@RoleID", DbType.Int32, Model.RoleID);
db.ExecuteNonQuery(cmd);
tsql = "insert JC_RoleUser(RoleId,RoleType,UserId,UserName)values(@RoleId,1,@UserId,@UserName)";
cmd = db.GetSqlStringCommand(tsql);
foreach (var item in Model.ListRoleUser)
{
cmd.Parameters.Clear();
db.AddInParameter(cmd, "@RoleId", DbType.Int32, Model.RoleID);
db.AddInParameter(cmd, "@UserId", DbType.Int32, item.UserId);
db.AddInParameter(cmd, "@UserName", DbType.String, item.UserName);
db.ExecuteNonQuery(cmd);
}
tsql = @"
declare @ParentModuleNo1 int,@ParentModuleNo2 int
select @ParentModuleNo1=ParentModuleNo from JC_MenuList where ModuleNo=@ModuleNo
if @ParentModuleNo1 is not null and @PopedomType>0
begin
insert JC_RoleMenu(RoleID,ModuleNo,PopedomType)values(@RoleID,@ParentModuleNo1,@PopedomType)
select @ParentModuleNo2=ParentModuleNo from JC_MenuList where ModuleNo=@ParentModuleNo1
if @ParentModuleNo2 is not null
begin
insert JC_RoleMenu(RoleID,ModuleNo,PopedomType)values(@RoleID,@ParentModuleNo2,@PopedomType)
end
end
insert JC_RoleMenu(RoleID,ModuleNo,PopedomType)values(@RoleID,@ModuleNo,@PopedomType)";
cmd = db.GetSqlStringCommand(tsql);
foreach (var item in Model.ListRoleMenu)
{
cmd.Parameters.Clear();
db.AddInParameter(cmd, "@RoleID", DbType.Int32, Model.RoleID);
db.AddInParameter(cmd, "@ModuleNo", DbType.Int32, item.ModuleNo);
db.AddInParameter(cmd, "@PopedomType", DbType.Int32, item.PopedomType);
db.ExecuteNonQuery(cmd);
}
}
#endregion
#region 读取菜单父节点
public static List<JC_MenuList> GetParentMenuList(int CompanyID)
{
string tsql = @"
select * from JC_MenuList
where (isnull(CompanyID,0)=0 or CompanyID=@CompanyID) and isnull(ParentModuleNo,0)<=0 and IsUse=1
order by SortNo
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@CompanyID", DbType.Int32, CompanyID);
DataTable tb= db.ExecuteDataTable(cmd);
return tb.ToList<JC_MenuList>();
}
#endregion
#region 读取角色对象
public static JC_RoleInfo GetModel(int CompanyID,int RoleID)
{
List<JC_MenuList> ListMenu = JC_RoleInfoService.GetParentMenuList(CompanyID);
string tsql = @"
select * from JC_RoleInfo where RoleID=@RoleID
select a.*,UserName=b.Name
from JC_RoleUser a
inner join JC_UserInfo b on a.UserID=b.UserID and b.State=1
where a.RoleID=@RoleID
select a.ParentModuleNo,a.ModuleNo,a.ModuleName,b.PopedomType,IsUrl=case when isnull(a.ModuleUrl,'')='' then 0 else 1 end
from JC_MenuList a
left join JC_RoleMenu b on a.ModuleNo=b.ModuleNo and b.RoleID=@RoleID
where a.IsUse=1
order by a.SortNo
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@RoleID", DbType.Int32, RoleID);
DataSet ds = db.ExecuteDataSet(cmd);
JC_RoleInfo Model = ds.Tables[0].Rows[0].ToModel<JC_RoleInfo>();
Model.ListRoleUser = ds.Tables[1].ToList<JC_RoleUser>();
Model.ListRoleMenu = new List<JC_RoleMenu>();
List<JC_RoleMenu> ListMenu2 = ds.Tables[2].ToList<JC_RoleMenu>();
foreach (var item in ListMenu)
{
List<JC_RoleMenu> ListMenu3 = new List<JC_RoleMenu>();
JC_RoleInfoService.GetChildMenu(ListMenu2, item.ModuleNo.Value, ListMenu3);
foreach (var item2 in ListMenu3)
{
JC_RoleMenu model = new JC_RoleMenu();
model.ModuleName = item2.ModuleName;
model.ModuleNo = item2.ModuleNo;
model.ParentModuleNo = item2.ParentModuleNo;
model.PopedomType = item2.PopedomType;
Model.ListRoleMenu.Add(model);
}
}
return Model;
}
#endregion
#region 读取子菜单
public static void GetChildMenu(List<JC_RoleMenu> ListMenu, int ParentModuleNo, List<JC_RoleMenu> OutListMenu)
{
var query = ListMenu.Where(m => m.ParentModuleNo == ParentModuleNo);
foreach (var item in query)
{
if (item.IsUrl == 0)
{
GetChildMenu(ListMenu, item.ModuleNo, OutListMenu);
}
else
{
JC_RoleMenu model = new JC_RoleMenu();
model.ModuleName = item.ModuleName;
model.ModuleNo = item.ModuleNo;
model.ParentModuleNo = item.ParentModuleNo;
model.PopedomType = item.PopedomType;
OutListMenu.Add(model);
}
}
}
#endregion
#region 保存角色成员
public static void SaveRoleUser(JC_RoleUser Model)
{
string tsql = @"
select top 1 @Id=Id from JC_RoleUser where RoleId=@RoleId and RoleType=@RoleType and UserId=@UserId
if @Id is null
begin
INSERT INTO [JC_RoleUser]([RoleId],[RoleType],[UserId],[UserName])values(@RoleId,@RoleType,@UserId,@UserName)
end
";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(tsql);
db.AddInParameter(cmd, "@Id", DbType.Int32, Model.Id);
db.AddInParameter(cmd, "@RoleId", DbType.Int32, Model.RoleId);
db.AddInParameter(cmd, "@RoleType", DbType.Int32, Model.RoleType);
db.AddInParameter(cmd, "@UserId", DbType.Int32, Model.UserId);
db.AddInParameter(cmd, "@UserName", DbType.String, Model.UserName);
db.ExecuteNonQuery(cmd);
}
#endregion
}
}