public bool AddDepartment(DepartmentInput departmentInput, out string message) { IQueryable <RoleInfo> roleInfos = _dbContext.Set <RoleInfo>(); IQueryable <RUserRoleInfo> rUserRoleInfos = _dbContext.Set <RUserRoleInfo>(); IQueryable <DepartmentInfo> departmentInfos = _dbContext.Set <DepartmentInfo>(); DepartmentInfo department = departmentInfos.Where(d => d.DepartmentId == departmentInput.DepartmentId).FirstOrDefault(); if (department == null) { DepartmentInfo department1 = departmentInfos.Where(d => d.DepartmentName == departmentInput.DepartmentName).FirstOrDefault(); //部门名是否已被使用 if (department1 == null) { DepartmentInfo info = departmentInfos.Where(d => d.LeaderId == departmentInput.LeaderId).FirstOrDefault(); //查询此人是否已是领导 if (info == null) { try { DepartmentInfo newDepartment = new DepartmentInfo { DepartmentId = departmentInput.DepartmentId, DepartmentName = departmentInput.DepartmentName, LeaderId = departmentInput.LeaderId, ParentId = departmentInput.ParentId, Description = departmentInput.Description, AddTime = DateTime.Now }; //将该用户的角色添加多一条为部门领导 RUserRoleInfo rUserRole = new RUserRoleInfo { UserId = departmentInput.LeaderId, RoleId = roleInfos.Where(r => r.RoleName.Contains("部门领导")).FirstOrDefault().RoleId }; _dbContext.Set <RUserRoleInfo>().Add(rUserRole); _dbContext.Set <DepartmentInfo>().Add(newDepartment); if (_dbContext.SaveChanges() > 0) { message = "添加成功!"; return(true); } else { message = "添加失败!内部出现异常!"; return(false); } } catch (Exception ex) { message = "错误信息为:" + ex.Message; if (ex.InnerException != null) { message += "详细错误信息:" + ex.InnerException.Message; } return(false); } } message = "此人已是" + info.DepartmentName + "的领导!"; return(false); } message = "该部门名已被使用!"; return(false); } message = "已存在该部门ID,请检查部门ID!"; return(false); }
/// <summary> /// 修改部门信息 /// </summary> /// <param name="departmentInput">输入的信息</param> /// <param name="message">返回去的信息</param> /// <returns></returns> public bool UpdateDepartmentInfoById(DepartmentInput departmentInput, out string message) { IQueryable <RoleInfo> roleInfos = _dbContext.Set <RoleInfo>(); IQueryable <RUserRoleInfo> rUserRoleInfos = _dbContext.Set <RUserRoleInfo>(); IQueryable <DepartmentInfo> departmentInfos = _dbContext.Set <DepartmentInfo>(); DepartmentInfo department = departmentInfos.Where(d => d.DepartmentId == departmentInput.DepartmentId).FirstOrDefault();//是否存在该部门 if (department != null) { DepartmentInfo department1 = departmentInfos.Where(d => d.DepartmentName == departmentInput.DepartmentName).FirstOrDefault(); if (department1 == null || department.DepartmentName == departmentInput.DepartmentName) { DepartmentInfo info = departmentInfos.Where(l => l.LeaderId == departmentInput.LeaderId).FirstOrDefault(); //查询此人是否已是领导 if (info == null || info.LeaderId == department.LeaderId) { try { //获取部门领导这个角色的ID string roleId = roleInfos.Where(r => r.RoleName.Contains("部门领导")).FirstOrDefault().RoleId; //先移除原用户在该部门的领导角色 //找到这个人的部门领导角色的数据 RUserRoleInfo rUserRoleInfo = rUserRoleInfos.Where(r => r.UserId == department.LeaderId && r.RoleId == roleId).FirstOrDefault(); //如果该部门的原部门领导在角色信息表有部门领导角色,则删除,没有就证明是数据库手动添加的。直接跳过删除,直接赋值 if (rUserRoleInfo != null) { //挂起删除该条数据 _dbContext.Set <RUserRoleInfo>().Remove(rUserRoleInfo); } department.DepartmentName = departmentInput.DepartmentName; department.Description = departmentInput.Description; department.LeaderId = departmentInput.LeaderId; department.ParentId = departmentInput.ParentId; _dbContext.Set <DepartmentInfo>().Update(department); //为新的领导人配置角色权限 RUserRoleInfo newUserRoleInfo = new RUserRoleInfo { UserId = departmentInput.LeaderId, RoleId = roleId }; _dbContext.Set <RUserRoleInfo>().Add(newUserRoleInfo); if (_dbContext.SaveChanges() > 0) { message = "修改成功!"; return(true); } message = "修改失败!内部出现异常!"; return(false); } catch (Exception ex) { message = ex.Message; return(false); } } message = "此人已是" + info.DepartmentName + "的领导!"; return(false); } message = "此部门名称已被使用!"; return(false); } message = "内部错误!数据可能被篡改!"; return(false); }