Esempio n. 1
0
        /// <summary>
        /// 级联删除
        /// </summary>
        /// <param name="usrIds"></param>
        public OperationResult DeleteWithRelations(int[] usrIds)
        {
            OperationResult result = new OperationResult();

            if (usrIds == null || usrIds.Length < 1)
            {
                result.ResultType = OperationResultType.ParamError;
                result.Message    = string.Format("{0}失败,{1}", Msg_DeleteWithRelations, "用户id不能为空");
                return(result);
            }
            base.UnitOfWork.AutoCommit = false;
            try
            {
                base.UnitOfWork.BeginTransaction();
                result = base.Delete(u => usrIds.Contains(u.Id));
                if (result.ResultType != OperationResultType.Success)
                {
                    base.UnitOfWork.Rollback();
                    return(result);
                }
                _usrRoleRelRepository.Delete(r => usrIds.Contains(r.UserId));
                base.UnitOfWork.Commit();

                result.ResultType = OperationResultType.Success;
                result.Message    = Msg_DeleteWithRelations + "成功";
            }
            catch (Exception ex)
            {
                base.UnitOfWork.Rollback();
                base.ProcessException(ref result, Msg_DeleteWithRelations + "失败", ex);
            }
            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// 保存用户角色关联关系
        /// </summary>
        /// <param name="roleIds">角色</param>
        /// <param name="usrIds">用户</param>
        /// <param name="delStrictly">是否精确删除(即是否按照roleId和usrId删除)</param>
        /// <returns></returns>
        private OperationResult SaveRelations(int[] roleIds, int[] usrIds, bool delStrictly)
        {
            OperationResult result = new OperationResult();

            if (roleIds == null || roleIds.Length < 1)
            {
                result.ResultType = OperationResultType.ParamError;
                result.Message    = Msg_Assign + "失败,roleIds不能为空";
                return(result);
            }
            if (usrIds == null || usrIds.Length < 1)
            {
                result.ResultType = OperationResultType.ParamError;
                result.Message    = Msg_Assign + "失败,usrIds不能为空";
                return(result);
            }

            if (_usrRepository.Find(usr => usrIds.Contains(usr.Id) && usr.UserName == "admin").Count() > 0)
            {
                result.ResultType = OperationResultType.ParamError;
                result.Message    = Msg_Assign + "失败,不能修改管理员的角色";
                return(result);
            }

            /*
             * 1、删除指定用户指定角色
             * 2、给指定用户添加新角色
             */
            var query = from usr in usrIds
                        join role in roleIds on 1 equals 1
                        select new UserRoleRelation
            {
                UserId = usr,
                RoleId = role
            };

            base.UnitOfWork.AutoCommit = false;
            base.UnitOfWork.BeginTransaction();
            try
            {
                _usrRoleRelRepository.Delete(r => usrIds.Contains(r.UserId) && (delStrictly ? roleIds.Contains(r.RoleId) : true));
                _usrRoleRelRepository.AddBatch(query.ToList());

                base.UnitOfWork.Commit();

                result.ResultType = OperationResultType.Success;
            }
            catch (Exception ex)
            {
                base.UnitOfWork.Rollback();
                base.ProcessException(ref result, Msg_Assign + "失败", ex);
            }

            return(result);
        }