コード例 #1
0
        public BaseOutput SetUser([FromBody] SetUserInput input)
        {
            try
            {
                _adminDbContext.Ado.BeginTran();

                var model = _mapper.Map <SetUserInput, UserModel>(input);
                if (model.Id > 0)
                {
                    model.UpdateTime = DateTime.Now;
                    if (!model.Password.IsEmpty())
                    {
                        model.Salt     = Randoms.CreateRandomValue(8, false);
                        model.Password = Encrypt.SHA256(model.Password + model.Salt);
                        // 基础字段不容许更新
                        _adminDbContext.Updateable(model)
                        .IgnoreColumns(it => new { it.UserName, it.Mobile, it.CreateTime })
                        .ExecuteCommand();
                    }
                    else
                    {
                        // 基础字段不容许更新
                        _adminDbContext.Updateable(model)
                        .IgnoreColumns(it => new { it.UserName, it.Password, it.Salt, it.Mobile, it.CreateTime })
                        .ExecuteCommand();
                    }
                }
                else
                {
                    model.CreateTime = DateTime.Now;
                    model.UpdateTime = DateTime.Now;
                    model.Salt       = Randoms.CreateRandomValue(8, false);
                    model.Password   = Encrypt.SHA256(model.Password + model.Salt);
                    model.Id         = Convert.ToInt64($"{Time.GetUnixTimestamp()}{ Randoms.CreateRandomValue(3, true) }");
                    _adminDbContext.Insertable(model).ExecuteCommand();
                }
                // 用户角色操作
                var userRoleList = new List <UserRoleModel>();
                foreach (var id in input.RoleIdList)
                {
                    // 防止重复数据
                    if (!userRoleList.Exists(it => it.RoleId == id))
                    {
                        userRoleList.Add(new UserRoleModel
                        {
                            Uid    = model.Id,
                            RoleId = id
                        });
                    }
                }
                // 删除用户当前角色
                _adminDbContext.Deleteable <UserRoleModel>().Where(f => f.Uid == model.Id).ExecuteCommand();
                // 添加用户角色
                if (userRoleList.Count > 0)
                {
                    _adminDbContext.Insertable(userRoleList).ExecuteCommand();
                }

                _adminDbContext.Ado.CommitTran();
            }
            catch (Exception ex)
            {
                _adminDbContext.Ado.RollbackTran();
                throw new Exception("事务执行失败", ex);
            }
            return(new BaseOutput {
            });
        }
コード例 #2
0
        /// <summary>
        /// 设置角色信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <SetRoleOutput> SetRole(SetRoleInput input)
        {
            try
            {
                _dbContext.Ado.BeginTran();

                #region 基础信息更新
                var redis = _redisClient.GetDatabase(_configCenter.StringGet(SysConfig.RedisConnectionKey), 2);
                var model = _mapper.Map <RoleInfo>(input);
                if (model.Id > 0)
                {
                    model.UpdateTime = DateTime.Now;
                    await _dbContext.Updateable(model)
                    .IgnoreColumns(it => new { it.PlatformKey, it.CreateTime, it.IsSys })
                    .ExecuteCommandAsync();
                }
                else
                {
                    model.CreateTime = DateTime.Now;
                    model.IsDel      = false;
                    model.Id         = await _dbContext.Insertable(model)
                                       .ExecuteReturnIdentityAsync();
                }
                #endregion

                #region 菜单权限
                // 用户角色操作
                List <RoleMenuInfo> roleMenuList = new List <RoleMenuInfo>();
                foreach (var id in input.MenuIdList)
                {
                    // 防止重复数据
                    if (!roleMenuList.Exists(it => it.MenuId == id))
                    {
                        roleMenuList.Add(new RoleMenuInfo
                        {
                            MenuId = id,
                            RoleId = model.Id
                        });
                    }
                }
                // 删除用户当前角色
                await _dbContext.Deleteable <RoleMenuInfo>().Where(f => f.RoleId == model.Id).ExecuteCommandAsync();

                // 添加用户角色
                if (roleMenuList.Count > 0)
                {
                    await _dbContext.Insertable(roleMenuList).ExecuteCommandAsync();
                }
                #endregion

                #region 菜单权限
                // 用户角色操作
                List <RoleApiInfo> roleApiList = new List <RoleApiInfo>();
                foreach (var id in input.ApiIdList)
                {
                    // 防止重复数据
                    if (!roleApiList.Exists(it => it.ApiId == id))
                    {
                        roleApiList.Add(new RoleApiInfo
                        {
                            ApiId  = id,
                            RoleId = model.Id
                        });
                    }
                }
                // 删除用户当前角色
                await _dbContext.Deleteable <RoleApiInfo>().Where(f => f.RoleId == model.Id).ExecuteCommandAsync();

                // 添加用户角色
                if (roleApiList.Count > 0)
                {
                    await _dbContext.Insertable(roleApiList).ExecuteCommandAsync();
                }
                #endregion

                #region 缓存更新
                await redis.KeyDeleteAsync(CacheKeys.RoleAllUseKey);

                // 应该立即更新缓存
                #endregion

                _dbContext.Ado.CommitTran();
            }
            catch (Exception ex)
            {
                _dbContext.Ado.RollbackTran();
                throw new Exception("事务执行失败", ex);
            }
            return(new SetRoleOutput {
            });
        }
コード例 #3
0
        public BaseOutput SetRole([FromBody] SetRoleInput input)
        {
            try
            {
                _adminDbContext.Ado.BeginTran();

                #region 基础信息更新
                var model = _mapper.Map <RoleModel>(input);
                if (model.Id > 0)
                {
                    model.UpdateTime = DateTime.Now;
                    _adminDbContext.Updateable(model)
                    .IgnoreColumns(it => new { it.PlatformKey, it.CreateTime, it.IsSys })
                    .ExecuteCommand();
                }
                else
                {
                    model.CreateTime = DateTime.Now;
                    model.IsDel      = false;
                    model.Id         = _adminDbContext.Insertable(model).ExecuteReturnIdentity();
                }
                #endregion

                #region 菜单权限
                // 用户角色操作
                List <RoleMenuModel> roleMenuList = new List <RoleMenuModel>();
                foreach (var id in input.MenuIdList)
                {
                    // 防止重复数据
                    if (!roleMenuList.Exists(it => it.MenuId == id))
                    {
                        roleMenuList.Add(new RoleMenuModel
                        {
                            MenuId = id,
                            RoleId = model.Id
                        });
                    }
                }
                // 删除用户当前角色
                _adminDbContext.Deleteable <RoleMenuModel>().Where(f => f.RoleId == model.Id).ExecuteCommand();
                // 添加用户角色
                if (roleMenuList.Count > 0)
                {
                    _adminDbContext.Insertable(roleMenuList).ExecuteCommand();
                }
                #endregion

                #region 接口权限
                // 用户角色操作
                List <RoleApiModel> roleApiList = new List <RoleApiModel>();
                foreach (var id in input.ApiIdList)
                {
                    // 防止重复数据
                    if (!roleApiList.Exists(it => it.ApiId == id))
                    {
                        roleApiList.Add(new RoleApiModel
                        {
                            ApiId  = id,
                            RoleId = model.Id
                        });
                    }
                }
                // 删除用户当前角色
                _adminDbContext.Deleteable <RoleApiModel>().Where(f => f.RoleId == model.Id).ExecuteCommand();
                // 添加用户角色
                if (roleApiList.Count > 0)
                {
                    _adminDbContext.Insertable(roleApiList).ExecuteCommand();
                }
                #endregion

                _adminDbContext.Ado.CommitTran();
            }
            catch (Exception ex)
            {
                _adminDbContext.Ado.RollbackTran();
                throw new Exception("事务执行失败", ex);
            }
            return(new BaseOutput {
            });
        }