using Tiger.Model;
using SqlSugar;
using System;
using System.Collections.Generic;
using Tiger.IBusiness;
using System.Threading.Tasks;
using Rhea.Common;
using System.Net;
using System.Linq;
using Newtonsoft.Json;
namespace Tiger.Business
{
public partial class Biz
{
///
/// 保存角色
///
///
///
///
public async Task SaveRole(ApiAction action)
{
var apiAction = new ApiAction();
try
{
SaveRoleStrictlyParams data = action.Data;
SYS_ROLE func = Biz.Db.Queryable().Where(x => x.ID == data.ID).First();
if (func != null)
{
func.ROLE_CODE = data.ROLE_CODE;
func.ROLE_DESC = data.ROLE_DESC;
func.IS_ACTIVE = data.IS_ACTIVE;
}
else
{
func = new()
{
ID = Guid.NewGuid().ToString("N"),
ROLE_CODE = data.ROLE_CODE,
ROLE_DESC = data.ROLE_DESC,
IS_ACTIVE = data.IS_ACTIVE
};
}
//保存角色菜单
List roleMenuList = new List();
if (data.menu.Checked != null)
{
foreach (var item in data.menu.Checked)
{
SYS_ROLE_MENU roleMenu = new()
{
ROLE_CODE = func.ID,
FUNC_CODE = item,
HALF_CHECK = "N"
};
roleMenuList.Add(roleMenu);
}
}
if (data.menu.halfChecked != null)
{
foreach (var item in data.menu.halfChecked)
{
SYS_ROLE_MENU roleMenu = new()
{
ROLE_CODE = func.ID,
FUNC_CODE = item,
HALF_CHECK = "Y"
};
roleMenuList.Add(roleMenu);
}
}
//保存角色组织
List roleOrgList = new List();
if (data.org.Checked != null)
{
foreach (var item in data.org.Checked)
{
SYS_ROLE_ORG roleOrg = new()
{
ROLE_CODE = func.ID,
ORG_CODE = item,
HALF_CHECK = "N"
};
roleOrgList.Add(roleOrg);
}
}
if (data.org.halfChecked != null)
{
foreach (var item in data.org.halfChecked)
{
SYS_ROLE_ORG roleOrg = new()
{
ROLE_CODE = func.ID,
ORG_CODE = item,
HALF_CHECK = "Y"
};
roleOrgList.Add(roleOrg);
}
}
//保存角色仓库
List roleWhList = new List();
if (data.wh.Checked != null)
{
foreach (var item in data.wh.Checked)
{
SYS_ROLE_WH roleWh = new()
{
ROLE_CODE = func.ID,
WH_CODE = item,
HALF_CHECK = "N"
};
roleWhList.Add(roleWh);
}
}
if (data.wh.halfChecked != null)
{
foreach (var item in data.wh.halfChecked)
{
SYS_ROLE_WH roleWh = new()
{
ROLE_CODE = func.ID,
WH_CODE = item,
HALF_CHECK = "Y"
};
roleWhList.Add(roleWh);
}
}
//保存角色工厂
List rolePrdList = new List();
if (data.fty.Checked != null)
{
foreach (var item in data.fty.Checked)
{
SYS_ROLE_PROD roleFty = new()
{
ROLE_CODE = func.ID,
PROD_CODE = item,
HALF_CHECK = "N"
};
rolePrdList.Add(roleFty);
}
}
if (data.fty.halfChecked != null)
{
foreach (var item in data.fty.halfChecked)
{
SYS_ROLE_PROD roleFty = new()
{
ROLE_CODE = func.ID,
PROD_CODE = item,
HALF_CHECK = "Y"
};
rolePrdList.Add(roleFty);
}
}
//保存到数据库
var db = Business.Biz.Db;
var dbTran = db.UseTran(() =>
{
//更新
if (data != null && data.isUpdate)
{
db.Updateable(func, "system").ExecuteCommand();
}
//新增
else
{
db.Insertable(func, "system").ExecuteCommand();
}
if (roleMenuList.Count > 0)
{
if (!string.IsNullOrEmpty(data.ID))
{
db.Deleteable().Where(x => x.ROLE_CODE == data.ID).ExecuteCommand();
}
db.Storageable(roleMenuList, "system").ExecuteCommand();
}
if (roleOrgList.Count > 0)
{
if (!string.IsNullOrEmpty(data.ID))
{
db.Deleteable().Where(x => x.ROLE_CODE == data.ID).ExecuteCommand();
}
db.Storageable(roleOrgList, "system").ExecuteCommand();
}
if (rolePrdList.Count > 0)
{
if (!string.IsNullOrEmpty(data.ID))
{
db.Deleteable().Where(x => x.ROLE_CODE == data.ID).ExecuteCommand();
}
db.Storageable(rolePrdList, "system").ExecuteCommand();
}
if (roleWhList.Count > 0)
{
if (!string.IsNullOrEmpty(data.ID))
{
db.Deleteable().Where(x => x.ROLE_CODE == data.ID).ExecuteCommand();
}
db.Storageable(roleWhList, "system").ExecuteCommand();
}
});
if (!dbTran.IsSuccess)
{
apiAction.Data = null;
apiAction.IsSuccessed = false;
apiAction.Message += $"保存数据失败:{dbTran.ErrorMessage}";
return apiAction;
}
}
catch (System.Exception ex)
{
}
return apiAction;
}
///
/// 用户组关联角色保存方法
///
///
///
///
public async Task SetRoleToGroupAsync( string roleIdIn, string userGroupId)
{
var action = new ApiAction();
try
{
var userIds = roleIdIn.Split(',').ToList();
List list = await Biz.Db.Queryable().Where(x => userIds.Contains(x.ROLE_CODE)).ToListAsync();
//保存到数据库
var db = Business.Biz.Db;
var dbTran = db.UseTran(() =>
{
List roleingroupList = new();
db.Deleteable().Where(x => x.USERGROUP_CODE == userGroupId).ExecuteCommand();
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
SYS_USERGROUP_ROLE g = new SYS_USERGROUP_ROLE();
g.ROLE_CODE = item.ID;
g.USERGROUP_CODE = userGroupId;
roleingroupList.Add(g);
}
db.Insertable(roleingroupList, "admin").ExecuteCommand();
}
});
if (!dbTran.IsSuccess)
{
throw dbTran.ErrorException;
}
action.IsSuccessed = true;
action.Message = $"保存用户组中的角色列表成功。";
}
catch (Exception ex)
{
action.CatchExceptionWithLog(ex, $"保存用户组中的角色列表异常");
}
return action;
}
}
}