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

251 lines
10 KiB

using EasyBL.WebApi.Message;
using Entity.Sugar;
using Newtonsoft.Json.Linq;
using SqlSugar;
using SqlSugar.Base;
using System;
using System.Collections.Generic;
using System.Data;
namespace EasyBL.WEBAPP.SYS
{
public class AuthantedProgramsService : ServiceBase
{
#region 查詢系統所有程式(系統授權)
/// <summary>
/// 查詢系統所有程式(系統授權)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
public ResponseMessage GetAuthorizeBy_(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.DB;
try
{
do
{
var sType = _fetchString(i_crm, @"Type");
var sRuleID = _fetchString(i_crm, @"RuleID");
var sChildSystem = _fetchString(i_crm, @"ChildSystem");
var sModuleID = _fetchString(i_crm, @"ModuleID");
var dic_SP = new Dictionary<string, string> {
{ "Role", "OSP_Common_GetProgramListByRuleId" },
{ "Dept", "OSP_Common_GetProgramListByDeptId" },
{ "Member", "OSP_Common_GetProgramListByMemberId" }
};
var spOrgID = new SugarParameter("@OrgID", i_crm.ORIGID);
var spRuleID = new SugarParameter("@RuleID", sRuleID);
var spChildSystem = new SugarParameter("@ChildSystem", sChildSystem);
var spModuleID = new SugarParameter("@ModuleID", sModuleID);
var dt = db.Ado.UseStoredProcedure().GetDataTable(dic_SP[sType], spOrgID, spRuleID, spChildSystem, spModuleID);
using (var tb_new = new DataTable())
{
foreach (DataColumn col in dt.Columns)
{
tb_new.Columns.Add(col.ToString());
}
var saAuth = db.Queryable<OTB_SYS_Arguments>()
.Where(x => x.OrgID == i_crm.ORIGID && x.ArgumentClassID == "99999" && x.Effective == "Y")
.ToList();
foreach (var _auth in saAuth)
{
tb_new.Columns.Add(_auth.ArgumentID);
}
foreach (DataRow row in dt.Rows)
{
var row_new = tb_new.NewRow();
foreach (DataColumn col in dt.Columns)
{
row_new[col.ToString()] = row[col];
}
var saCanAllowRight = row["CanAllowRight"].ToString().Trim().Split(new string[] { @"|" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string right in saCanAllowRight)
{
row_new[right] = right;
}
tb_new.Rows.Add(row_new);
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, tb_new);
}
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(AuthantedProgramsService), "", @"GetAuthorizeBy_(查詢系統所有程式(系統授權))", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 查詢系統所有程式(系統授權)
#region 修改(系統授權)
/// <summary>
/// 修改(系統授權)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
public ResponseMessage UpdateAuthorize(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
try
{
rm = SugarBase.ExecTran(db =>
{
do
{
var sType = _fetchString(i_crm, @"Type");
var sRuleID = _fetchString(i_crm, @"RuleID");
var sChildSystem = _fetchString(i_crm, @"ChildSystem");
var sModuleID = _fetchString(i_crm, @"ModuleID");
var dic_SP_Del = new Dictionary<string, string> {
{ "Role", "[dbo].[OSP_OTB_SYS_Authorize_Delete]" },
{ "Dept", "OSP_OTB_SYS_AuthorizeForDept_Delete" },
{ "Member", "OSP_OTB_SYS_AuthorizeForMember_Delete" }
};
var dic_SP_Add = new Dictionary<string, string> {
{ "Role", "OSP_OTB_SYS_Authorize_ADD" },
{ "Dept", "OSP_OTB_SYS_AuthorizeForDept_Add" },
{ "Member", "OSP_OTB_SYS_AuthorizeForMember_Add" }
};
var spOrgID = new SugarParameter("@OrgID", i_crm.ORIGID);
var spRuleID = new SugarParameter("@RuleID", sRuleID);
var spChildSystem = new SugarParameter("@ChildSystem", sChildSystem);
var spModuleID = new SugarParameter("@ModuleID", sModuleID);
var iRel = db.Ado.UseStoredProcedure().ExecuteCommand(dic_SP_Del[sType], spOrgID, spRuleID, spChildSystem, spModuleID);
var saAuth = i_crm.DATA["add"] as JArray;
foreach (JObject jo in saAuth)
{
var saSp = new List<SugarParameter>();
foreach (var auth in jo)
{
saSp.Add(new SugarParameter(auth.Key, auth.Value));
}
var iRel_Add = db.Ado.UseStoredProcedure().ExecuteCommand(dic_SP_Add[sType], saSp);
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
return rm;
});
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(AuthantedProgramsService), "", @"UpdateAuthorize(修改(系統授權))", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 修改(系統授權)
#region 獲取系統角色(系統授權)
/// <summary>
/// 獲取系統角色(系統授權)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
public ResponseMessage GetRules(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.DB;
try
{
do
{
var saRules = db.Queryable<OTB_SYS_Rules>().Where(x => x.OrgID == i_crm.ORIGID && x.DelStatus == "N").ToList();
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, saRules);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(AuthantedProgramsService), "", @"GetRules(獲取系統角色(系統授權))", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 獲取系統角色(系統授權)
#region 獲取系統模組(系統授權)
/// <summary>
/// 獲取系統模組(系統授權)
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
public ResponseMessage GetModulelist(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.DB;
try
{
do
{
var bParentID = _fetchBool(i_crm, @"ParentID");
var bIncludeParent = _fetchBool(i_crm, @"IncludeParent");
var saRules = db.Queryable<OTB_SYS_ModuleList>()
.Where(x => x.OrgID == i_crm.ORIGID)
.WhereIF(!bParentID && !bIncludeParent, x => SqlFunc.HasValue(x.ParentID))
.WhereIF(bParentID && !bIncludeParent, x => !SqlFunc.HasValue(x.ParentID))
.OrderBy(x => x.OrderByValue)
.ToList();
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, saRules);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(AuthantedProgramsService), "", @"GetModulelist(獲取系統模組(系統授權))", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 獲取系統模組(系統授權)
}
}