178 lines
7.2 KiB
C#
178 lines
7.2 KiB
C#
using Core.Web.WebHelper.UtilityModel;
|
||
using CRM.Core.BLL.Base;
|
||
using CRM.Core.Model.Entity;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using WX.CRM.Common;
|
||
|
||
namespace Core.Web.WebHelper.UserRight
|
||
{
|
||
public class InitRightsToData
|
||
{
|
||
public bool Insert(ref WX.CRM.Common.ValidationErrors errors)
|
||
{
|
||
// Common.ValidationErrors errors = new Common.ValidationErrors();
|
||
//string message = "";
|
||
//try
|
||
//{
|
||
var right_bl = new BAS_RIGHT_BL();
|
||
var rightgroup_bl = new BAS_RIGHTGROUP_BL();
|
||
|
||
var initRights = InitRights.getInitRights(); //代码配置的权限
|
||
var basright = right_bl.GetList(); //数据库中的权限
|
||
var rightgrouplist = rightgroup_bl.GetList(); //权限组别
|
||
//foreach (InnerRight item in initRights)
|
||
//{
|
||
// BAS_RIGHT model = basright.FirstOrDefault(m => m.RIGHTID == item.RightId);
|
||
// if (model == null)//没数据就新增
|
||
// {
|
||
// BAS_RIGHT right = new BAS_RIGHT
|
||
// {
|
||
// RIGHTID = item.RightId,
|
||
// RNAME = item.RightName,
|
||
// CTIME = DateTime.Now,
|
||
// CREATEUSER = 10000
|
||
// };
|
||
// right_bl.Create(ref errors, right);
|
||
|
||
// }
|
||
// else if (model != null)
|
||
// {
|
||
|
||
|
||
// }
|
||
//}
|
||
|
||
var group = initRights.GroupBy(c => c.RigGroup);
|
||
foreach (var item in group)
|
||
{
|
||
//LogHelper.Info(item.Key);
|
||
if (!rightgrouplist.Any(p => p.NAME == item.Key))
|
||
{
|
||
var model = new BAS_RIGHTGROUP() { NAME = item.Key, PARENTID = 0 };
|
||
rightgroup_bl.Create(ref errors, model);
|
||
}
|
||
}
|
||
rightgrouplist = rightgroup_bl.GetList();//重新获取一下,需要获取返回ID
|
||
|
||
//create Right
|
||
var dataRights = (from m in basright
|
||
select new InnerRight()
|
||
{
|
||
RightId = m.RIGHTID,
|
||
RightName = m.RNAME,
|
||
RigGroup = m.GROUPID.ToString()
|
||
}).ToList();
|
||
var InsertRights = initRights.Except(dataRights, new InitRightComPare()).ToList();//新增的权限
|
||
var bas_rights = new List<BAS_RIGHT>();
|
||
foreach (var innerright in InsertRights)
|
||
{
|
||
var rgId = rightgrouplist.FirstOrDefault(p => p.NAME == innerright.RigGroup);
|
||
var right = new BAS_RIGHT
|
||
{
|
||
RIGHTID = innerright.RightId,
|
||
RNAME = innerright.RightName,
|
||
CTIME = DateTime.Now,
|
||
CREATEUSER = 10000
|
||
};
|
||
if (rgId != null)
|
||
right.GROUPID = rgId.PKID;
|
||
bas_rights.Add(right);
|
||
}
|
||
|
||
|
||
if (bas_rights.Count > 0)
|
||
{
|
||
bool rightResult = right_bl.CreateList(ref errors, bas_rights);
|
||
if (!rightResult)
|
||
{
|
||
errors.Add("添加权限失败。");
|
||
return false;
|
||
}
|
||
}
|
||
//Tool Bar
|
||
List<ToolBarBtn> toolBarBtns = new List<ToolBarBtn>();
|
||
foreach (InnerRight inRight in initRights)
|
||
{
|
||
toolBarBtns.AddRange(inRight.ToolBars);
|
||
}
|
||
BAS_RIGHT_TOOLBUTTON_BL right_toolButton_bl = new BAS_RIGHT_TOOLBUTTON_BL();
|
||
List<ToolBarBtn> entitys = (from m in right_toolButton_bl.GetALLToolButton()
|
||
select new ToolBarBtn()
|
||
{
|
||
RightId = m.RIGHTID,
|
||
ToolBarId = (int)m.BUTTONID,
|
||
ToolBarName = m.BUTTONNAME,
|
||
ToolBarCode = m.BUTTONCODE
|
||
}
|
||
).ToList();
|
||
List<ToolBarBtn> CreateToolBtn = toolBarBtns.Except(entitys, new InitToolBarComPare()).ToList();//新增的权限
|
||
List<ToolBarBtn> DeleteToolBtn = entitys.Except(toolBarBtns, new InitToolBarComPare()).ToList();//缺失的权限
|
||
//create
|
||
var listToolButton = new List<BAS_RIGHT_TOOLBUTTON>();
|
||
foreach (ToolBarBtn btn in CreateToolBtn)
|
||
{
|
||
BAS_RIGHT_TOOLBUTTON Right_ToolButton = new BAS_RIGHT_TOOLBUTTON
|
||
{
|
||
RIGHTID = btn.RightId,
|
||
BUTTONID = btn.ToolBarId,
|
||
BUTTONNAME = btn.ToolBarName,
|
||
BUTTONCODE = btn.ToolBarCode
|
||
};
|
||
listToolButton.Add(Right_ToolButton);
|
||
}
|
||
if (listToolButton.Count > 0)
|
||
{
|
||
bool isOk = right_toolButton_bl.Create_ListToolButton(ref errors, listToolButton);
|
||
if (!isOk)
|
||
{
|
||
errors.Add("添加toolbutton失败。");
|
||
return false;
|
||
}
|
||
}
|
||
//delete
|
||
foreach (ToolBarBtn btn in DeleteToolBtn)
|
||
{
|
||
bool isOk = right_toolButton_bl.Delete_ToolButton(ref errors, btn.RightId, Convert.ToDecimal(btn.ToolBarId));
|
||
if (!isOk)
|
||
{
|
||
errors.Add("删除toolbutton失败。");
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
//}
|
||
//catch (Exception ex)
|
||
//{
|
||
// string message = ex.Message;
|
||
// return false;
|
||
//}
|
||
}
|
||
public class InitRightComPare : IEqualityComparer<InnerRight>
|
||
{
|
||
public bool Equals(InnerRight x, InnerRight y)
|
||
{
|
||
return x.RightId == y.RightId;
|
||
}
|
||
public int GetHashCode(InnerRight obj)
|
||
{
|
||
return obj.RightId.GetHashCode();
|
||
}
|
||
}
|
||
|
||
public class InitToolBarComPare : IEqualityComparer<ToolBarBtn>
|
||
{
|
||
public bool Equals(ToolBarBtn x, ToolBarBtn y)
|
||
{
|
||
return x.RightId == y.RightId && x.ToolBarId == y.ToolBarId;
|
||
}
|
||
public int GetHashCode(ToolBarBtn obj)
|
||
{
|
||
return obj.ToolBarId.GetHashCode();
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
} |