Esempio n. 1
0
        /// <summary>
        /// 上传单文件
        /// </summary>
        /// <param name="file"></param>
        /// <param name="config"></param>
        /// <param name="args"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <IResponseEntity <FileInfo> > UploadFileAsync(IFormFile file, FileUploadConfig config, object args, CancellationToken cancellationToken = default)
        {
            var res = new ResponseEntity <FileInfo>();

            if (file == null || file.Length < 1)
            {
                return(res.Error("请上传文件!"));
            }

            //格式限制
            if (!config.ContentType.Contains(file.ContentType))
            {
                return(res.Error("文件格式错误"));
            }

            //大小限制
            if (!(file.Length <= config.MaxSize))
            {
                return(res.Error("文件过大"));
            }

            var fileInfo = new File.FileInfo(file.FileName, file.Length)
            {
                UploadPath  = config.UploadPath,
                RequestPath = config.RequestPath
            };

            var dateTimeFormat = config.DateTimeFormat.IsNotNull() ? DateTime.Now.ToString(config.DateTimeFormat) : "";
            var format         = config.Format.IsNotNull() ? StringHelper.Format(config.Format, args) : "";

            fileInfo.RelativePath = Path.Combine(dateTimeFormat, format).ToPath();

            if (!Directory.Exists(fileInfo.FileDirectory))
            {
                Directory.CreateDirectory(fileInfo.FileDirectory);
            }



            var dataCenterId = _systemConfig.CurrentValue?.DataCenterId ?? 5;
            var workId       = _systemConfig.CurrentValue?.WorkId ?? 20;

            fileInfo.SaveName = $"{IdHelper.GenSnowflakeId(dataCenterId, workId)}.{fileInfo.Extension}";

            await SaveAsync(file, fileInfo.FilePath, cancellationToken);

            return(res.Ok(fileInfo));
        }
        /// <summary>
        /// 更新当前用户基本信息
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public async Task <IResponseEntity> UpdateUserInfo(UserEditRequest req)
        {
            if (req == null)
            {
                return(ResponseEntity.Error("更新的实体丢失"));
            }

            //req.Id = _authUser.Id;

            var entity = await _sysUserRepository.GetAsync(_authUser.Id);

            if (entity == null || entity.Id == "")
            {
                return(ResponseEntity.Error("用户不存在!"));
            }

            entity.DisplayName = req.DisplayName;
            entity.Mobile      = req.Mobile;
            entity.Mail        = req.Mail;
            entity.Description = req.Description;

            await _sysUserRepository.UpdateAsync(entity);

            return(ResponseEntity.Ok(entity));
        }
        /// <summary>
        /// 停止任务
        /// </summary>
        /// <param name="sysSchedule"></param>
        /// <returns></returns>
        public async Task <IResponseEntity> StopScheduleJobAsync(SysTaskQzEntity sysSchedule)
        {
            try
            {
                JobKey jobKey = new JobKey(sysSchedule.Id.ToString(), sysSchedule.JobGroup);
                if (!await _scheduler.Result.CheckExists(jobKey))
                {
                    await Console.Out.WriteLineAsync($"未找到要停止的任务:【{sysSchedule.Name}】");

                    return(ResponseEntity.Error($"未找到要停止的任务:【{sysSchedule.Name}】"));
                }
                else
                {
                    await _scheduler.Result.DeleteJob(jobKey);

                    await Console.Out.WriteLineAsync($"停止任务:【{sysSchedule.Name}】成功");

                    return(ResponseEntity.Ok($"停止任务:【{sysSchedule.Name}】成功"));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 4
0
        public async Task <IResponseEntity> UpdateAsync(TaskQzEditRequest req)
        {
            if (req == null || req?.Id == "")
            {
                return(ResponseEntity.Error("更新的实体主键丢失"));
            }
            var entity = _mapper.Map <SysTaskQzEntity>(req);

            if (entity.IsDefaultDatabase)
            {
                DbInfo             dbInfo           = _authUser.Tenant.DbOptions.Where(x => x.Key == Constants.SystemDbKey).FirstOrDefault();
                DbConnectionString connectionString = dbInfo.ConnectionStrings.Where(x => x.UseType == DbUseType.Master).FirstOrDefault();

                entity.ConnectionParam = JsonConvert.SerializeObject(new
                {
                    ConnectionString = connectionString.ConnectionString,
                    DbType           = Convert.ToInt32(dbInfo.DbType)
                });
            }

            await _SysTaskQzRepository.UpdateAsync(entity);

            if (entity.IsStart)
            {
                var res = await _schedulerCenter.AddScheduleJobAsync(entity);
            }
            return(ResponseEntity.Ok("更新成功"));
        }
        public async Task <IResponseEntity> UpdateAsync(UserEditRequest req)
        {
            if (req == null || req?.Id == "")
            {
                return(ResponseEntity.Error("更新的实体主键丢失"));
            }
            var entity = await _sysUserRepository.GetAsync(req.Id);

            if (entity == null || entity.Id == "")
            {
                return(ResponseEntity.Error("用户不存在!"));
            }

            if (entity.PermissionId != req.PermissionId)
            {
                //清除权限模板的资源缓存
                await _cache.RemoveByPatternAsync(CacheKeyTemplate.PermissionResourceList);

                //清除权限模板的API缓存
                await _cache.RemoveByPatternAsync(CacheKeyTemplate.PermissionApiList);
            }

            _mapper.Map(req, entity);
            //var entity = _mapper.Map<SysUserEntity>(req);
            await _sysUserRepository.UpdateAsync(entity);

            return(ResponseEntity.Ok("更新成功"));
        }
 public async Task<IResponseEntity> DeleteAsync(string id)
 {
     if (id == null || id == "")
     {
         return ResponseEntity.Error("删除对象的主键获取失败");
     }
     var result = await _sysPermissionRepository.DeleteAsync(id);
     return ResponseEntity.Result(result > 0);
 }
 public async Task<IResponseEntity> DeleteBatchAsync(string[] ids)
 {
     if (ids == null || ids.Length == 0)
     {
         return ResponseEntity.Error("删除对象的主键获取失败");
     }
     var result = await _sysPermissionRepository.Where(m => ids.Contains(m.Id)).ToDelete().ExecuteAffrowsAsync();
     return ResponseEntity.Result(result > 0);
 }
        public async Task <IResponseEntity> GetSystemConfig()
        {
            var res = await _settingService.GetSystemSettingsAsync();

            if (res != null)
            {
                return(ResponseEntity.Ok(res));
            }
            return(ResponseEntity.Error("没取到任何数据"));
        }
Esempio n. 9
0
        /// <summary>
        /// 删除 - 单条物理删除
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns></returns>
        public async Task <IResponseEntity> DeleteAsync(string id)
        {
            if (id == null || id == "")
            {
                return(ResponseEntity.Error("删除对象的主键获取失败"));
            }
            var result = await _dictionaryEntryRepository.DeleteAsync(id);

            return(ResponseEntity.Result(result > 0));
        }
Esempio n. 10
0
        /// <summary>
        /// 删除 - 单条逻辑删除(软删除)
        /// </summary>
        /// <param name="id">待删除的ID</param>
        /// <returns></returns>
        public async Task <IResponseEntity> SoftDeleteAsync(string id)
        {
            if (id == null || id == "")
            {
                return(ResponseEntity.Error("删除对象的主键获取失败"));
            }
            var result = await _sysConditionRepository.SoftDeleteAsync(id);

            return(ResponseEntity.Result(result));
        }
Esempio n. 11
0
        /// <summary>
        /// 删除 - 批量逻辑删除(软删除)
        /// </summary>
        /// <param name="ids">待删除的ID集合</param>
        /// <returns></returns>
        public async Task <IResponseEntity> SoftDeleteBatchAsync(string[] ids)
        {
            if (ids == null || ids.Length == 0)
            {
                return(ResponseEntity.Error("删除对象的主键获取失败"));
            }
            var result = await _sysConditionRepository.SoftDeleteAsync(ids);

            return(ResponseEntity.Result(result));
        }
        public async Task <IResponseEntity> UploadAvatar([FromForm] IFormFile file)
        {
            var res = await _sysUserService.UploadAvatarAsync(file);

            if (res.Success)
            {
                return(ResponseEntity.Ok(res.Data.FileRelativePath));
            }

            return(ResponseEntity.Error("上传失败!"));
        }
        public async Task <IResponseEntity> GetTenantList()
        {
            var res = await _settingService.GetTenantListAsync();

            if (res != null)
            {
                var obj = res.OrderBy(x => x.Id);
                return(ResponseEntity.Ok(obj));
            }
            return(ResponseEntity.Error("没取到任何数据"));
        }
Esempio n. 14
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="req">DTO:编辑实体</param>
        /// <returns></returns>
        public async Task <IResponseEntity> UpdateAsync(DictionaryEntryEditRequest req)
        {
            if (req == null || req?.Id == "")
            {
                return(ResponseEntity.Error("更新的实体主键丢失"));
            }
            var entity = _mapper.Map <DictionaryEntryEntity>(req);
            await _dictionaryEntryRepository.UpdateAsync(entity);

            return(ResponseEntity.Ok("更新成功"));
        }
        public async Task <IResponseEntity> UpdateAsync(ConfigEditRequest req)
        {
            if (req == null || req?.Id == "")
            {
                return(ResponseEntity.Error("更新的实体主键丢失"));
            }

            var entity = _mapper.Map <SysConfigEntity>(req);
            await _sysConfigRepository.UpdateAsync(entity);

            return(ResponseEntity.Ok("更新成功"));
        }
Esempio n. 16
0
        public async Task <IResponseEntity> DeleteAsync(string id)
        {
            if (id == null || id == "")
            {
                return(ResponseEntity.Error("删除对象的主键获取失败"));
            }
            var result = await _sysResourceRepository.DeleteAsync(id);

            //清除缓存
            await _cache.RemoveByPatternAsync(CacheKeyTemplate.PermissionResourceList);

            return(ResponseEntity.Result(result > 0));
        }
Esempio n. 17
0
        public async Task <IResponseEntity> DeleteBatchAsync(string[] ids)
        {
            if (ids == null || ids.Length == 0)
            {
                return(ResponseEntity.Error("删除对象的主键获取失败"));
            }
            var result = await _sysResourceRepository.Where(m => ids.Contains(m.Id)).ToDelete().ExecuteAffrowsAsync();

            //清除缓存
            await _cache.RemoveByPatternAsync(CacheKeyTemplate.PermissionResourceList);

            return(ResponseEntity.Result(result > 0));
        }
Esempio n. 18
0
        public async Task <IResponseEntity <FileInfo> > UploadAvatarAsync(IFormFile file, CancellationToken cancellationToken = default)
        {
            var res    = new ResponseEntity <FileInfo>();
            var config = _systemConfig.CurrentValue.UploadAvatar;

            if (file == null || file.Length < 1)
            {
                return(res.Error("请上传文件!"));
            }

            //格式限制
            if (!config.ContentType.Contains(file.ContentType))
            {
                return(res.Error("文件格式错误"));
            }

            //大小限制
            if (!(file.Length <= config.MaxSize))
            {
                return(res.Error("文件过大"));
            }

            var fileInfo = new File.FileInfo(file.FileName, file.Length);

            fileInfo.UploadPath   = config.UploadPath;
            fileInfo.RequestPath  = config.RequestPath;
            fileInfo.RelativePath = _authUser.Tenant.Id;
            fileInfo.SaveName     = $"{_authUser.Id}.{fileInfo.Extension}";

            if (!Directory.Exists(fileInfo.FileDirectory))
            {
                Directory.CreateDirectory(fileInfo.FileDirectory);
            }

            await SaveAsync(file, fileInfo.FilePath, cancellationToken);

            return(res.Ok(fileInfo));
        }
        public async Task <IResponseEntity> SoftDeleteBatchAsync(string[] ids)
        {
            if (ids == null || ids.Length == 0)
            {
                return(ResponseEntity.Error("删除对象的主键获取失败"));
            }

            var result = await _sysGroupRepository.SoftDeleteAsync(ids);

            //清除缓存
            await _cache.RemoveByPatternAsync(CacheKeyTemplate.GroupList);

            return(ResponseEntity.Result(result));
        }
        private Task HandleExceptionAsync(HttpContext context, Exception ex)
        {
            //var code = HttpStatusCode.InternalServerError; // 500 if unexpected
            var    code = StatusCodes.Status500InternalServerError;
            string info = "服务器内部错误,无法完成请求";

            switch (context.Response.StatusCode)
            {
            case 401:
                info = "没有权限";
                break;

            case 404:
                info = "未找到服务";
                break;

            case 403:
                info = "服务器理解请求客户端的请求,但是拒绝执行此请求";
                break;

            case 500:
                info = "服务器内部错误,无法完成请求";
                break;

            case 502:
                info = "请求错误";
                break;

            default:
                info = ex.Message;
                break;
            }

            _logger.LogError(info); // todo:可记录日志,如通过注入Nlog等三方日志组件记录

            //var result = JsonConvert.SerializeObject(new { Coede= code.ToString(), Message = info });
            var result = JsonConvert.SerializeObject(
                ResponseEntity.Error(info, code),
                Formatting.None,
                new JsonSerializerSettings
            {
                ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
            });

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = code;
            return(context.Response.WriteAsync(result));
        }
        public void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ModelState.IsValid)
            {
                string message = string.Empty;
                foreach (var item in context.ModelState.Values)
                {
                    foreach (var error in item.Errors)
                    {
                        message += error.ErrorMessage + "|";
                    }
                }

                context.Result = new JsonResult(ResponseEntity.Error(message));
            }
        }
        public async Task <IResponseEntity> SaveTenantConfig(TenantInfo req)
        {
            var tenants = await _settingService.GetTenantListAsync();

            if (req.Code == null || req.Code == "")
            {
                return(ResponseEntity.Error("租户编码不能为空"));
            }

            if (req.Id == null || req.Id == "") // 新增租户
            {
                var item = tenants.Where(x => x.Code == req.Code).FirstOrDefault();
                if (item != null)
                {
                    return(ResponseEntity.Error("添加失败,租户编码已经存在"));
                }

                req.Id = IdHelper.GenSnowflakeId().ToString();
            }
            else // 编辑租户
            {
                var item = tenants.Where(x => x.Id == req.Id).FirstOrDefault();
                if (item != null)
                {
                    tenants.Remove(item);
                }
            }

            #region 字典里的KEY,大小写问题
            var audience          = (string)req.Items["audience"];
            var expirationMinutes = (string)req.Items["expirationMinutes"];
            var issuer            = (string)req.Items["issuer"];
            var secret            = (string)req.Items["secret"];

            req.Items.Clear();
            req.Items.Add("Audience", audience);
            req.Items.Add("Issuer", issuer);
            req.Items.Add("ExpirationMinutes", expirationMinutes);
            req.Items.Add("Secret", secret);
            #endregion

            tenants.Add(req);
            var updateTenants = tenants.OrderBy(x => x.Id).ToList();
            var result        = await _settingService.WriteTenantsConfig(updateTenants);

            return(ResponseEntity.Result(result));
        }
Esempio n. 23
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="req">DTO:编辑实体</param>
        /// <returns></returns>
        public async Task <IResponseEntity> UpdateAsync(ConditionEditRequest req)
        {
            if (req.Id == "" || req.Code == "")
            {
                return(ResponseEntity.Error("更新的实体主键丢失"));
            }
            //var count = _sysConditionRepository.Select.Where(x => x.Code == req.Code && x.Id != req.Id).Count();
            //if (count > 0)
            //{
            //    return ResponseEntity.Error("已存在相同字典编码,请更换");
            //}

            var entity = _mapper.Map <SysConditionEntity>(req);
            await _sysConditionRepository.UpdateAsync(entity);

            return(ResponseEntity.Ok("更新成功"));
        }
Esempio n. 24
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="req">DTO:编辑实体</param>
        /// <returns></returns>
        public async Task <IResponseEntity> UpdateAsync(DictionaryHeaderEditRequest req)
        {
            if (req.Id == "" || req.Code == "")
            {
                return(ResponseEntity.Error("更新的实体主键丢失"));
            }
            var count = _dictionaryRepository.Select.Where(x => x.Code == req.Code && x.Id != req.Id).Count();

            if (count > 0)
            {
                return(ResponseEntity.Error("已存在相同字典编码,请更换"));
            }

            var entity = _mapper.Map <DictionaryHeaderEntity>(req);
            await _dictionaryRepository.UpdateAsync(entity);

            return(ResponseEntity.Ok("更新成功"));
        }
        /// <summary>
        /// 恢复指定的计划任务
        /// </summary>
        /// <param name="sysSchedule"></param>
        /// <returns></returns>
        public async Task <IResponseEntity> ResumeJob(SysTaskQzEntity sysSchedule)
        {
            try
            {
                JobKey jobKey = new JobKey(sysSchedule.Id.ToString(), sysSchedule.JobGroup);
                if (!await _scheduler.Result.CheckExists(jobKey))
                {
                    return(ResponseEntity.Error($"未找到要重新的任务:【{sysSchedule.Name}】,请先选择添加计划!"));
                }
                await this._scheduler.Result.ResumeJob(jobKey);

                return(ResponseEntity.Ok($"恢复计划任务:【{sysSchedule.Name}】成功"));
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task <IResponseEntity> DeleteTenant(string id)
        {
            var tenants = await _settingService.GetTenantListAsync();

            var item = tenants.Where(x => x.Id == id).FirstOrDefault();

            if (item != null)
            {
                tenants.Remove(item);
            }
            else
            {
                return(ResponseEntity.Error("删除失败,没有找到租户信息"));
            }
            var result = await _settingService.WriteTenantsConfig(tenants);

            return(ResponseEntity.Result(result));
        }
        public async Task <IResponseEntity> UpdateAsync(RoleEditRequest req)
        {
            if (req == null || req?.Id == "")
            {
                return(ResponseEntity.Error("更新的实体主键丢失"));
            }

            //var entity = await _sysRoleRepository.GetAsync(req.Id);
            //if (entity == null || entity?.Id == "")
            //{
            //    return ResponseEntity.Error("找不到更新的实体!");
            //}
            //_mapper.Map(req, entity);

            var entity = _mapper.Map <SysRoleEntity>(req);
            await _sysRoleRepository.UpdateAsync(entity);

            return(ResponseEntity.Ok("更新成功"));
        }
Esempio n. 28
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="req">DTO:新增实体</param>
        /// <returns></returns>
        public async Task <IResponseEntity> CreateAsync(ConditionAddRequest req)
        {
            var code = req.Code;

            if (code == null || code == "")
            {
                return(ResponseEntity.Error("字典编码不能为空"));
            }
            //var count = _sysConditionRepository.Select.Where(x => x.Code == code).Count();
            //if (count > 0)
            //{
            //    return ResponseEntity.Error("已存在相同字典编码,请更换");
            //}

            var item   = _mapper.Map <SysConditionEntity>(req);
            var result = await _sysConditionRepository.InsertAsync(item);

            return(ResponseEntity.Result(result != null && result?.Id != ""));
        }
Esempio n. 29
0
        public async Task <IResponseEntity> LoginAsync(AuthLoginRequest req)
        {
            var           password = MD5Encrypt.Encrypt32(req.Password);
            SysUserEntity user     = new SysUserEntity();

            using (_userRepository.DataFilter.Disable("Group"))
            {
                user = await _userRepository.GetAsync(a => a.UserName == req.UserName && a.Password == password);
            }

            if (user?.Id == "")
            {
                return(ResponseEntity.Error("账号或密码错误!"));
            }

            var res = await getUserItem(user);

            return(ResponseEntity.Ok(res));
        }
Esempio n. 30
0
        /// <summary>
        /// 修改当前登录人的密码
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public async Task <IResponseEntity> ChangePasswordAsync(ChangePasswordRequest req)
        {
            var oldPassword = MD5Encrypt.Encrypt32(req.OldPassword);
            var item        = _sysUserRepository.Where(a => a.Id == _authUser.Id && a.Password == oldPassword).First();

            if (item == null)
            {
                return(ResponseEntity.Error("旧密码错误,请输入正确的旧密码"));
            }
            if (req.NewPassword != req.ConfirmPassword)
            {
                return(ResponseEntity.Error("两次密码不一致,请重新输入"));
            }
            var newPassword = MD5Encrypt.Encrypt32(req.NewPassword);

            item.Password = newPassword;
            await _sysUserRepository.UpdateAsync(item);

            return(ResponseEntity.Ok("更新成功"));
        }