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