using FactorySystemModel.EnumModel;
using System;
namespace FactorySystemModel.ResponseModel
{
    public class ApiResult
    {
        #region 初始化构造函数
        /// 
        /// 初始化构造函数
        /// 
        public ApiResult()
        {
            Ticket = "";
            Code = (int)Constant.ApiResultCode.成功;
            Message = Constant.ApiResultCode.成功.ToString();
        }
        /// 
        /// 初始化构造函数,成功时调用
        /// 
        /// 接口返回内容
        public ApiResult(object data)
        {
            Code = (int)Constant.ApiResultCode.成功;
            Message = Constant.ApiResultCode.成功.ToString();
            Data = data ?? "";
        }
        #endregion
        #region 实体字段定义
        /// 
        /// 接口编码,成功=200,失败=-1,异常=-999
        /// 
        public int Code { get; set; }
        /// 
        /// 接口消息
        /// 
        public string Message { get; set; }
        /// 
        /// 接口消息
        /// 
        public string Ticket { get; set; }
        /// 
        /// 接口返回数据
        /// 
        public object Data { get => data ?? ""; set => data = value; }
        private object data;
        #endregion
        #region 错误时返回实体方法
        /// 
        /// 系统错误
        /// 
        /// 
        /// 
        public ApiResult Error(Exception ex)
        {
            this.Code = (int)Constant.ApiResultCode.异常;
            this.Message = "数据异常:" + ex.Message.ToString();
            return this;
        }
        /// 
        /// 自定义错误
        /// 
        public ApiResult Error(string message)
        {
            this.Code = (int)Constant.ApiResultCode.异常;
            this.Message = message;
            return this;
        }
        /// 
        /// 自定义错误
        /// 
        /// 
        /// 
        /// 
        public ApiResult CustomError(int Code, string Message)
        {
            this.Code = Code;
            this.Message = Message;
            return this;
        }
        /// 
        /// 返回失败
        /// 
        /// 
        public ApiResult FailError()
        {
            this.Code = (int)Constant.ApiResultCode.失败;
            this.Message = Constant.ApiResultCode.失败.ToString();
            return this;
        }
        #endregion
    }
}