示例#1
0
        /// <summary>
        ///     保存各种用户:组织机构、岗位、组、人员【先进行删除,再进行添加】
        /// </summary>
        /// <param name="master">类型</param>
        /// <param name="value">业务表Id:如组织机构Id、组Id、岗位Id、人员Id等</param>
        /// <param name="userIds">权限类型:组织机构、组、岗位、人员Id</param>
        /// <returns></returns>
        public async Task <OperateStatus> SavePermissionUserBeforeDelete(EnumPrivilegeMaster master,
                                                                         Guid value,
                                                                         IList <Guid> userIds)
        {
            var operateStatus = new OperateStatus();
            //删除
            await _permissionUsernRepository.DeletePermissionUser(master, value);

            IList <SystemPermissionUser> systemPermissionUsers = userIds.Select(userId => new SystemPermissionUser
            {
                PrivilegeMaster       = (byte)master,
                PrivilegeMasterUserId = userId,
                PrivilegeMasterValue  = value
            }).ToList();

            if (systemPermissionUsers.Any())
            {
                //批量保存
                operateStatus = await InsertMultipleAsync(systemPermissionUsers);
            }
            else
            {
                operateStatus.ResultSign = ResultSign.Successful;
                operateStatus.Message    = Chs.Successful;
            }
            return(operateStatus);
        }
        /// <summary>
        ///     保存权限信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <OperateStatus> SavePermission(SystemPermissionSaveInput input)
        {
            var operateStatus = new OperateStatus();

            try
            {
                IList <SystemPermission> systemPermissions = input.Permissiones.Select(per => new SystemPermission
                {
                    PrivilegeAccess      = (byte)input.PrivilegeAccess,
                    PrivilegeAccessValue = per,
                    PrivilegeMasterValue = input.PrivilegeMasterValue,
                    PrivilegeMaster      = (byte)input.PrivilegeMaster,
                    PrivilegeMenuId      = input.PrivilegeMenuId
                }).ToList();

                //删除该角色的权限信息
                await _permissionRepository.DeletePermissionByPrivilegeMasterValue(input.PrivilegeAccess, input.PrivilegeMasterValue, input.PrivilegeMenuId);

                if (input.PrivilegeMaster == EnumPrivilegeMaster.人员)
                {
                    //删除对应人员数据
                    await _permissionUsernRepository.DeletePermissionUser(input.PrivilegeMaster, input.PrivilegeMasterValue);

                    //判断是否具有权限
                    if (!systemPermissions.Any())
                    {
                        operateStatus.ResultSign = ResultSign.Successful;
                        operateStatus.Message    = Chs.Successful;
                        return(operateStatus);
                    }
                    //插入权限人员数据
                    var permissionUser = new SystemPermissionUser
                    {
                        PrivilegeMaster       = (byte)input.PrivilegeMaster,
                        PrivilegeMasterUserId = input.PrivilegeMasterValue,
                        PrivilegeMasterValue  = input.PrivilegeMasterValue
                    };
                    await _permissionUsernRepository.InsertAsync(permissionUser);
                }

                //是否具有权限数据
                if (!systemPermissions.Any())
                {
                    operateStatus.ResultSign = ResultSign.Successful;
                    operateStatus.Message    = Chs.Successful;
                    return(operateStatus);
                }
                //插入数据库
                await _permissionRepository.BulkInsertAsync(systemPermissions);

                operateStatus.ResultSign = ResultSign.Successful;
                operateStatus.Message    = Chs.Successful;
                return(operateStatus);
            }
            catch (Exception ex)
            {
                operateStatus.Message = ex.Message;
                return(operateStatus);
            }
        }