ComplianceServer/oldcode/Core.Web/WebHelper/UserRight/InitRightsToData.cs

178 lines
7.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}
}
}