Ejemplo n.º 1
0
        private IActionResult HandleGenericException(Exception ex)
        {
            var exception = ex.InnerException ?? ex;

            ErrorResultModel errorResultModel = null;

            if (showFriendlyError)
            {
                errorResultModel = new ErrorResultModel
                {
                    Message = "Internal server error"
                };
            }
            else
            {
                errorResultModel = new ErrorResultModel()
                {
                    Message    = exception.Message,
                    StackTrace = exception.StackTrace
                };
            }

            return(new ObjectResult(errorResultModel)
            {
                StatusCode = 500,
                DeclaredType = typeof(ErrorResultModel)
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 删除学年表 (逻辑删除)
        /// </summary>
        /// <param name="IDs"></param>
        /// <returns></returns>
        public BaseResultModel <int> DeleteAcademicYear(List <Guid?> IDs)
        {
            SuccessResultModel <int> result = new SuccessResultModel <int>();
            ErrorResultModel <int>   error  = new ErrorResultModel <int>();

            try
            {
                List <AcademicYearInputModel> delList = new List <AcademicYearInputModel>();
                foreach (Guid?item in IDs)
                {
                    delList.Add(new AcademicYearInputModel()
                    {
                        AcademicYearID = item,
                        IsDelete       = true
                    });
                }
                result.Data = this.AcademicYearRepository.UpdateWithKeys(delList.ToArray());

                if (result.Data == 0)
                {
                    error.ErrorCode    = EnumErrorCode.业务执行失败;
                    error.ErrorMessage = "请确认需要删除的数据!";
                    return(error);
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogWriter.WriteLog(EnumLogLevel.Fatal, "DeleteAcademicYear", JsonConvert.SerializeObject(IDs), "AcademicYear", "删除学年表 (逻辑删除)异常!", ex);
                error.ErrorCode    = EnumErrorCode.系统异常;
                error.ErrorMessage = "删除学年表 (逻辑删除)异常!";
                return(error);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 新增、修改学年表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public BaseResultModel <AcademicYearOutputModel> ModifyAcademicYear(AcademicYearInputModel model)
        {
            SuccessResultModel <AcademicYearOutputModel> result = new SuccessResultModel <AcademicYearOutputModel>();
            ErrorResultModel <AcademicYearOutputModel>   error  = new ErrorResultModel <AcademicYearOutputModel>();

            try
            {
                if (model.AcademicYearID.IsNullOrEmpty())
                {
                    result.Data = this.AcademicYearRepository.InsertAndReturn(model);
                }
                else
                {
                    result.Data = this.AcademicYearRepository.UpdateWithKeysAndReturn(model);
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogWriter.WriteLog(EnumLogLevel.Fatal, "ModifyAcademicYear", JsonConvert.SerializeObject(model), "AcademicYear", "新增、修改学年表异常!", ex);
                error.ErrorCode    = EnumErrorCode.系统异常;
                error.ErrorMessage = "新增、修改学年表异常!";
                return(error);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 删除模块表 (逻辑删除)
        /// </summary>
        /// <param name="IDs"></param>
        /// <returns></returns>
        public BaseResultModel <int> DeleteModel(List <Guid?> IDs)
        {
            SuccessResultModel <int> result = new SuccessResultModel <int>();
            ErrorResultModel <int>   error  = new ErrorResultModel <int>();

            try
            {
                ModelOutputModel   selModel   = new ModelOutputModel();
                ModelInputModel    inputModel = new ModelInputModel();
                TransactionOptions option     = new TransactionOptions();
                option.IsolationLevel = IsolationLevel.ReadCommitted;
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, option))
                {
                    foreach (Guid?item in IDs)
                    {
                        selModel = this.ModelRepository.SelectWithKeys(new ModelModel()
                        {
                            ModelID = item
                        });

                        inputModel = new ModelInputModel()
                        {
                            ModelID   = selModel.ModelID,
                            ModelCode = selModel.ModelCode,
                            IsDelete  = true
                        };

                        result.Data = this.ModelDetailRepository.UpdateWithModel(new ModelDetailModel()
                        {
                            IsDelete = true
                        }, new ModelDetailModel()
                        {
                            ModelID = selModel.ModelID
                        });
                        result.Data = this.ModelRepository.UpdateWithKeys(inputModel);

                        this.ModelRepository.DelDBTable(inputModel);
                    }
                    scope.Complete();
                }
                if (result.Data == 0)
                {
                    error.ErrorCode    = EnumErrorCode.业务执行失败;
                    error.ErrorMessage = "请确认需要删除的数据!";
                    return(error);
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogWriter.WriteLog(EnumLogLevel.Fatal, "DeleteModel", JsonConvert.SerializeObject(IDs), "Model", "删除模块表 (逻辑删除)异常!", ex);
                error.ErrorCode    = EnumErrorCode.系统异常;
                error.ErrorMessage = "删除模块表 (逻辑删除)异常!";
                return(error);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 删除模块明细表 (逻辑删除)
        /// </summary>
        /// <param name="IDs"></param>
        /// <returns></returns>
        public BaseResultModel <int> DeleteModelDetail(List <Guid?> IDs)
        {
            SuccessResultModel <int> result = new SuccessResultModel <int>();
            ErrorResultModel <int>   error  = new ErrorResultModel <int>();

            try
            {
                ModelDetailViewModel selDetailModel = new ModelDetailViewModel();
                ModelOutputModel     selModel       = new ModelOutputModel();

                TransactionOptions option = new TransactionOptions();
                option.IsolationLevel = IsolationLevel.ReadCommitted;

                foreach (Guid?item in IDs)
                {
                    using (this.ModelDetailRepository.BeginSelView())
                    {
                        selDetailModel = this.ModelDetailRepository.SelectWithViewModel(new ModelDetailViewModel()
                        {
                            ModelDetailID = item,
                        });
                    }

                    if (this.ModelDetailRepository.ListDynamicTableListByPer(selDetailModel))
                    {
                        error.ErrorCode    = EnumErrorCode.业务执行失败;
                        error.ErrorMessage = "该数据字段已有业务数据,不可删除";
                        return(error);
                    }
                    selDetailModel.IsDelete = true;

                    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, option))
                    {
                        result.Data = this.ModelDetailRepository.UpdateWithKeys(selDetailModel);
                        this.ModelDetailRepository.DropDynamicTableCol(selDetailModel);
                        scope.Complete();
                    }
                }

                if (result.Data == 0)
                {
                    error.ErrorCode    = EnumErrorCode.业务执行失败;
                    error.ErrorMessage = "请确认需要删除的数据!";
                    return(error);
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogWriter.WriteLog(EnumLogLevel.Fatal, "DeleteModelDetail", JsonConvert.SerializeObject(IDs), "ModelDetail", "删除模块明细表 (逻辑删除)异常!", ex);
                error.ErrorCode    = EnumErrorCode.系统异常;
                error.ErrorMessage = "删除模块明细表 (逻辑删除)异常!";
                return(error);
            }
        }
Ejemplo n.º 6
0
        public ObjectResult ErrorResult(Exception ex)
        {
            logger.LogInformation($"Process ErrorResult with Exception");

            var error = new ErrorResultModel
            {
                Errors = new List <ErrorModel>
                {
                    new ErrorModel {
                        Code        = "InternalServerError",
                        Description = ex.Message
                    }
                }
            };

            return(ErrorResult(error));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 处理异常
        /// </summary>
        /// <param name="actionContext"></param>
        protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
        {
            base.HandleUnauthorizedRequest(actionContext);

            var response = actionContext.Response = actionContext.Response ?? new HttpResponseMessage();

            response.StatusCode = HttpStatusCode.Forbidden;//Http 403
            var content = new ErrorResultModel <string>();

            content.Data         = "Server denied access: you have no permission or be offline";
            content.ErrorCode    = this.ErrorCode;
            content.ErrorMessage = this.ErrorMessage;
            JsonSerializerSettings settings = new JsonSerializerSettings();

            settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            response.Content          = new StringContent(JsonConvert.SerializeObject(content, settings), Encoding.UTF8, "application/json");
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 返回错误格式
        /// </summary>
        /// <param name="context"></param>
        /// <param name="statusCode"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private Task HandleExceptionAsync(HttpContext context, int statusCode, string msg)
        {
            ErrorResultModel errorModel = new ErrorResultModel()
            {
                Message    = msg,
                Code       = statusCode,
                RequestUri = context.Request.GetAbsoluteUri()
            };

            BaseLogModel logModel = new BaseLogModel()
            {
                ServiceName = _logOptions.ServiceName,
                Type        = 4,
                Content     = msg
            };

            //增加到日志
            _log.Info <BaseLogModel>(logModel);

            var result = JsonConvert.SerializeObject(new { error = errorModel });

            context.Response.ContentType = "application/json;charset=utf-8";
            return(context.Response.WriteAsync(result));
        }
Ejemplo n.º 9
0
 /// <summary>
 /// 重写OnExceptionAsync方法,定义自己的处理逻辑
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public Task OnExceptionAsync(ExceptionContext context)
 {
     // 如果异常没有被处理则进行处理
     if (context.ExceptionHandled == false)
     {
         // 定义返回类型
         var result = new ErrorResultModel <object>
         {
             ErrorCode    = "40000",
             ErrorMessage = context.Exception.Message
         };
         context.Result = new ContentResult
         {
             // 返回状态码设置为200,表示成功
             StatusCode = StatusCodes.Status200OK,
             // 设置返回格式
             ContentType = "application/json;charset=utf-8",
             Content     = JsonConvert.SerializeObject(result)
         };
     }
     // 设置为true,表示异常已经被处理了
     context.ExceptionHandled = true;
     return(Task.CompletedTask);
 }
Ejemplo n.º 10
0
        private IActionResult ReturnError(Exception ex)
        {
            var error = new ErrorResultModel(ex.Message, ex.StackTrace);

            return(StatusCode(500, JsonConvert.SerializeObject(error)));
        }
Ejemplo n.º 11
0
        public ObjectResult ErrorResult(ErrorResultModel errorResultModel)
        {
            logger.LogInformation($"Process ErrorResult with ErrorResultModel");

            return(StatusCode(HttpStatusCode.InternalServerError, errorResultModel));
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 新增、修改模块明细表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public BaseResultModel <ModelDetailOutputModel> ModifyModelDetail(ModelDetailInputModel model)
        {
            SuccessResultModel <ModelDetailOutputModel> result = new SuccessResultModel <ModelDetailOutputModel>();
            ErrorResultModel <ModelDetailOutputModel>   error  = new ErrorResultModel <ModelDetailOutputModel>();

            try
            {
                ModelOutputModel selModel = this.ModelRepository.SelectWithModel(new ModelModel()
                {
                    ModelID = model.ModelID
                });
                if (selModel == null)
                {
                    return(new ErrorResultModel <ModelDetailOutputModel>(EnumErrorCode.参数校验未通过, "明细表对应的模块项目不存在!"));
                }

                ModelDetailViewModel selDetailModel = new ModelDetailViewModel();
                using (this.ModelDetailRepository.BeginSelView())
                {
                    selDetailModel = this.ModelDetailRepository.SelectWithViewModel(new ModelDetailViewModel()
                    {
                        ModelID = model.ModelID,
                        ColName = model.ColName
                    });
                }

                if (selDetailModel != null)
                {
                    if (model.ModelDetailID.IsNullOrEmpty())
                    {
                        return(new ErrorResultModel <ModelDetailOutputModel>(EnumErrorCode.参数校验未通过, "名称已存在!"));
                    }
                    else if (selDetailModel.ModelDetailID != model.ModelDetailID)
                    {
                        return(new ErrorResultModel <ModelDetailOutputModel>(EnumErrorCode.参数校验未通过, "名称已存在!"));
                    }
                }

                selDetailModel           = new ModelDetailViewModel();
                selDetailModel.ModelCode = selModel.ModelCode;
                selDetailModel.ColName   = model.ColName;
                selDetailModel.ColType   = model.ColType;
                TransactionOptions option = new TransactionOptions();
                option.IsolationLevel = IsolationLevel.ReadCommitted;
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, option))
                {
                    if (model.ModelDetailID.IsNullOrEmpty())
                    {
                        result.Data = this.ModelDetailRepository.InsertAndReturn(model);
                        this.ModelDetailRepository.AddDynamicTableCol(selDetailModel);
                    }
                    else
                    {
                        result.Data = this.ModelDetailRepository.UpdateWithKeysAndReturn(model);
                        this.ModelDetailRepository.ModifyDynamicTableCol(selDetailModel);
                    }
                    scope.Complete();
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogWriter.WriteLog(EnumLogLevel.Fatal, "ModifyModelDetail", JsonConvert.SerializeObject(model), "ModelDetail", "新增、修改模块明细表异常!", ex);
                return(new ErrorResultModel <ModelDetailOutputModel>(EnumErrorCode.系统异常, "新增、修改模块明细表异常!"));
            }
        }