/// <summary> /// 根据学生视图模型创建或者维护与之匹配的用户数据,并进行持久化处理 /// 1.缺省用户名采用学号数据 /// 2.缺省密码:1234@Abcd /// </summary> /// <param name="student"></param> /// <returns></returns> public async Task <EntityProcessResult> CreateOrEditByStudent(Student student, string userName = null) { var result = new EntityProcessResult() { Succeeded = true, Messages = new List <string> { } }; if (student.User == null) { // 检查重名 var checkName = student.EmployeeCode; if (!String.IsNullOrEmpty(userName)) { checkName = userName; } var isUniquelyForName = await IsUniquelyForUserName(checkName); if (isUniquelyForName) { var user = new ApplicationUser() { UserName = student.EmployeeCode, ChineseFullName = student.Name, Email = student.Email, MobileNumber = student.Mobile }; if (!String.IsNullOrEmpty(userName)) { user.UserName = userName; } var createResult = await _userManager.CreateAsync(user, "1234@Abcd"); result.BusinessObject = user; if (createResult.Succeeded) { student.User = user; await _studentRepository.AddOrEditAndSaveAsyn(student); // 提取用户缺省归属角色组(班级角色组) if (student.GradeAndClass != null) { var gradeAndClass = await _gradeAndClassRepository.GetSingleAsyn(student.GradeAndClass.Id, x => x.ApplicationRole); if (gradeAndClass.ApplicationRole != null) { await _userManager.AddToRoleAsync(student.User, gradeAndClass.ApplicationRole.Name); // 检查用户关联角色组类型声明 var userClaims = await _userManager.GetClaimsAsync(student.User); var userRoleTypeClaim = userClaims.FirstOrDefault(x => x.Type == ClaimTypes.Name && x.Value == gradeAndClass.ApplicationRole.ApplicationRoleType.ToString()); // 添加角色组类型声明 if (userRoleTypeClaim == null) { // 为用户创建一个归属系统角色类型的身份声明 var claim = new Claim(ClaimTypes.Name, gradeAndClass.ApplicationRole.ApplicationRoleType.ToString()); await _userManager.AddClaimAsync(student.User, claim); } } } // 加入缺省的角色组 var defaultRole = _roleManager.Roles.FirstOrDefault(x => x.ApplicationRoleType == ApplicationRoleTypeEnum.适用于普通注册用户); if (defaultRole != null) { await _userManager.AddToRoleAsync(student.User, defaultRole.Name); } } } else { result.Succeeded = false; result.Messages.Add("提交的用户名已经存在,请检查相关的数据!"); return(result); } } else { student.User.UserName = student.EmployeeCode; student.User.ChineseFullName = student.Name; student.User.Email = student.Email; student.User.MobileNumber = student.Mobile; if (!String.IsNullOrEmpty(userName)) { student.User.UserName = userName; } var editResult = await _userManager.UpdateAsync(student.User); result.BusinessObject = student.User; if (editResult.Succeeded) { await _studentRepository.AddOrEditAndSaveAsyn(student); // 提取用户缺省归属角色组(班级角色组) if (student.GradeAndClass != null) { var gradeAndClass = await _gradeAndClassRepository.GetSingleAsyn(student.GradeAndClass.Id, x => x.ApplicationRole); if (gradeAndClass.ApplicationRole != null) { await _userManager.AddToRoleAsync(student.User, gradeAndClass.ApplicationRole.Name); // 检查用户关联角色组类型声明 var userClaims = await _userManager.GetClaimsAsync(student.User); var userRoleTypeClaim = userClaims.FirstOrDefault(x => x.Type == ClaimTypes.Name && x.Value == gradeAndClass.ApplicationRole.ApplicationRoleType.ToString()); // 添加角色组类型声明 if (userRoleTypeClaim == null) { // 为用户创建一个归属系统角色类型的身份声明 var claim = new Claim(ClaimTypes.Name, gradeAndClass.ApplicationRole.ApplicationRoleType.ToString()); await _userManager.AddClaimAsync(student.User, claim); } } } } else { result.Succeeded = false; result.Messages.Add("更新用户组数据保存出现异常,请联系相关人员处理!"); foreach (var err in editResult.Errors) { result.Messages.Add(err.Description); } return(result); } } return(result); }
/// <summary> /// 根据员工视图模型创建或者维护与之匹配的用户数据,并进行持久化处理 /// </summary> /// <param name="employee"></param> /// <returns></returns> public async Task <EntityProcessResult> CreateOrEditByEmployee(Employee employee, string userName = null) { // 初始化处理结果 var result = new EntityProcessResult() { Succeeded = true, Messages = new List <string> { } }; if (employee.User == null) { // 检查重名 var newUserName = employee.EmployeeCode; // 待检查重名,缺省直接使用员工工号 if (!String.IsNullOrEmpty(userName)) { newUserName = userName; } var isUniquelyForName = await IsUniquelyForUserName(newUserName); // 是否是唯一名称 if (isUniquelyForName) { var user = new ApplicationUser() { UserName = employee.EmployeeCode, ChineseFullName = employee.Name, Email = employee.Email, MobileNumber = employee.Mobile }; user.UserName = newUserName; // 使用缺省密码创建用户 var createResult = await _userManager.CreateAsync(user, "1234@Abcd"); result.BusinessObject = user; if (createResult.Succeeded) { // 更新和持久化员工与用户关联关系 employee.User = user; await _employeeRepository.AddOrEditAndSaveAsyn(employee); // 提取用户缺省归属角色组(部门角色组) if (employee.Department != null) { var department = await _departmentRepository.GetSingleAsyn(employee.Department.Id, x => x.ApplicationRole); if (department.ApplicationRole != null) { // 将当前创建的用户添加到对应部门的角色组中 await _userManager.AddToRoleAsync(employee.User, department.ApplicationRole.Name); // 检查用户关联角色组类型声明 var userClaims = await _userManager.GetClaimsAsync(employee.User); var userRoleTypeClaim = userClaims.FirstOrDefault(x => x.Type == ClaimTypes.Name && x.Value == department.ApplicationRole.ApplicationRoleType.ToString()); // 添加角色组类型声明 if (userRoleTypeClaim == null) { // 为用户创建一个归属系统角色类型的身份声明 var claim = new Claim(ClaimTypes.Name, department.ApplicationRole.ApplicationRoleType.ToString()); await _userManager.AddClaimAsync(employee.User, claim); } } } // 再加入缺省的用户组 var defaultRole = _roleManager.Roles.FirstOrDefault(x => x.ApplicationRoleType == ApplicationRoleTypeEnum.适用于普通注册用户); if (defaultRole != null) { await _userManager.AddToRoleAsync(employee.User, defaultRole.Name); } } } else { result.Succeeded = false; result.Messages.Add("提交的用户名已经存在,请检查相关的数据!"); return(result); } } else { employee.User.UserName = employee.EmployeeCode; employee.User.ChineseFullName = employee.Name; employee.User.Email = employee.Email; employee.User.MobileNumber = employee.Mobile; if (!String.IsNullOrEmpty(userName)) { employee.User.UserName = userName; } // 更新用户数据 var editResult = await _userManager.UpdateAsync(employee.User); result.BusinessObject = employee.User; if (editResult.Succeeded) { // 持久化员工与用户的关联关系 await _employeeRepository.AddOrEditAndSaveAsyn(employee); // 提取用户缺省归属角色组(部门角色组) if (employee.Department != null) { var department = await _departmentRepository.GetSingleAsyn(employee.Department.Id, x => x.ApplicationRole); if (department.ApplicationRole != null) { await _userManager.AddToRoleAsync(employee.User, department.ApplicationRole.Name); // 检查用户关联角色组类型声明 var userClaims = await _userManager.GetClaimsAsync(employee.User); var userRoleTypeClaim = userClaims.FirstOrDefault(x => x.Type == ClaimTypes.Name && x.Value == department.ApplicationRole.ApplicationRoleType.ToString()); // 添加角色组类型声明 if (userRoleTypeClaim == null) { // 为用户创建一个归属系统角色类型的身份声明 var claim = new Claim(ClaimTypes.Name, department.ApplicationRole.ApplicationRoleType.ToString()); await _userManager.AddClaimAsync(employee.User, claim); } } } } else { result.Succeeded = false; result.Messages.Add("更新用户组数据保存出现异常,请联系相关人员处理!"); foreach (var err in editResult.Errors) { result.Messages.Add(err.Description); } return(result); } } return(result); }
/// <summary> /// 根据班级对象创建或者修改响应的角色组 /// </summary> /// <param name="department"></param> /// <returns></returns> public async Task <EntityProcessResult> CreateOrEditSaveByGradeAndClass(GradeAndClass gradeAndClass, string roleName = null) { var result = new EntityProcessResult() { Succeeded = true, Messages = new List <string> { } }; if (gradeAndClass.ApplicationRole == null) { // 检查重名 var checkName = gradeAndClass.Name; if (!String.IsNullOrEmpty(roleName)) { checkName = roleName; } // 检查重名 var isUniquelyForName = await IsUniquelyForName(checkName); if (isUniquelyForName) { // 新建用户组 var role = new ApplicationRole() { Name = gradeAndClass.Name, DisplayName = gradeAndClass.Name, Description = gradeAndClass.Description, SortCode = "G_" + gradeAndClass.SortCode, ApplicationRoleType = ApplicationRoleTypeEnum.适用于教学班级学员 }; var createResult = await _roleManager.CreateAsync(role); // 根据创建的结果返回处理状态(创建失败) if (createResult.Succeeded) { gradeAndClass.ApplicationRole = role; await _gradeAndClassRepository.AddOrEditAndSaveAsyn(gradeAndClass); } else { result.Succeeded = false; result.Messages.Add("新建用户组数据保存出现异常,请联系相关人员处理!"); foreach (var err in createResult.Errors) { result.Messages.Add(err.Description); } return(result); } } else { result.Succeeded = false; result.Messages.Add("提交的部门名称已经存在同名的用户组,请检查相关的数据!"); return(result); } } else { gradeAndClass.ApplicationRole.Name = gradeAndClass.Name; gradeAndClass.ApplicationRole.DisplayName = gradeAndClass.Name; gradeAndClass.ApplicationRole.Description = gradeAndClass.Description; gradeAndClass.ApplicationRole.SortCode = "G_" + gradeAndClass.SortCode; if (!String.IsNullOrEmpty(roleName)) { gradeAndClass.ApplicationRole.Name = roleName; } var editResult = await _roleManager.UpdateAsync(gradeAndClass.ApplicationRole); result.BusinessObject = gradeAndClass.ApplicationRole; if (editResult.Succeeded) { await _gradeAndClassRepository.AddOrEditAndSaveAsyn(gradeAndClass); } else { result.Succeeded = false; result.Messages.Add("更新用户组数据保存出现异常,请联系相关人员处理!"); foreach (var err in editResult.Errors) { result.Messages.Add(err.Description); } return(result); } } return(result); }