1. 程式人生 > 其它 >傳送福利啦,拿來即用的統一返回模型

傳送福利啦,拿來即用的統一返回模型

返回模型看了公司內部的,有點不忍直視,礙於自己說了不算,但又有點強迫症,所以特意封裝了一個,給有需要的朋友分享下。廢話不多說,直接上程式碼

1、介面層

 /// <summary>
    /// 
    /// </summary>
    public interface IBaseResultModel
    {
        /// <summary>
        /// 成功
        /// </summary>
        [JsonIgnore]
        public bool Successful { get; set; }

        
/// <summary> /// 返回標識碼 /// </summary> EnumCode Code { get; set; } /// <summary> /// 訊息 /// </summary> string Msg { get; set; } } /// <summary> /// /// </summary> public interface IResultModel : IBaseResultModel {
/// <summary> /// 常規資料 /// </summary> dynamic Data { get; set; } } /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> public interface IResultModel<T> : IBaseResultModel where T : class { /// <summary>
/// 常規資料 /// </summary> T Data { get; set; } } /// <summary> /// /// </summary> public interface IResultListModel<T> : IBaseResultModel where T : class { /// <summary> /// 常規資料 /// </summary> List<T> Data { get; set; } }

介面實現

 /// <summary>
    /// 基礎返回模型
    /// </summary>
    public class BaseResultModel
    {

        /// <summary>
        /// 返回標識碼
        /// </summary>
        public EnumCode Code { get; set; }

        /// <summary>
        /// 成功
        /// </summary>
        [JsonIgnore]
        public bool Successful { get; set; }

        /// <summary>
        /// 訊息
        /// </summary>
        public string Msg { get; set; }


        /// <summary>
        /// 額外資料
        /// </summary>
        public dynamic OtherData { get; set; }

        /// <summary>
        /// 總條數
        /// </summary>1
        public int Total { get; set; }


        /// <summary>
        /// 當前頁
        /// </summary>
        public int Page { get; set; }
    }






    /// <summary>
    /// 返回模型
    /// </summary>
    public class ResultModel : BaseResultModel, IResultModel
    {
        /// <summary>
        /// 常規資料
        /// </summary>
        public dynamic Data { get; set; }

        /// <summary>
        /// 成功
        /// </summary>
        /// <returns></returns>
        public IResultModel Success(string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel Success(dynamic data = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="otherdata"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel Success(dynamic data = default, dynamic otherdata = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.OtherData = otherdata;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel Success(dynamic data = default, int total = default, int page = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.Total = total;
            this.Page = page;
            this.Msg = msg;
            return this;
        }


        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="otherdata"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel Success(dynamic data = default, dynamic otherdata = default, int total = default, int page = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.OtherData = otherdata;
            this.Total = total;
            this.Page = page;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 失敗
        /// </summary>
        /// <param name="code"></param>
        /// <param name="msg">說明</param>
        public IResultModel Failed(EnumCode code = default, string msg = "failed")
        {
            this.Code = code;
            this.Successful = false;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 失敗
        /// </summary>
        /// <param name="code"></param>
        /// <param name="otherdata"></param>
        /// <param name="msg">說明</param>
        public IResultModel Failed(EnumCode code = default, dynamic otherdata = default, string msg = "failed")
        {
            this.Code = code;
            this.Successful = false;
            this.OtherData = otherdata;
            this.Msg = msg;
            return this;
        }

    }

    /// <summary>
    /// 泛型類 返回模型
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class ResultModel<T> : BaseResultModel, IResultModel<T> where T : class
    {
        /// <summary>
        /// 常規資料
        /// </summary>
        public T Data { get; set; }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel<T> Success(T data = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="otherdata"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel<T> Success(T data = default, dynamic otherdata = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.OtherData = otherdata;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel<T> Success(T data = default, int total = default, int page = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.Total = total;
            this.Page = page;
            this.Msg = msg;
            return this;
        }


        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="otherdata"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultModel<T> Success(T data = default, dynamic otherdata = default, int total = default, int page = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.OtherData = otherdata;
            this.Total = total;
            this.Page = page;
            this.Msg = msg;
            return this;
        }

    }

    /// <summary>
    /// 泛型類 返回模型
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class ResultListModel<T> : BaseResultModel, IResultListModel<T> where T : class
    {
        /// <summary>
        /// 常規資料
        /// </summary>
        public List<T> Data { get; set; }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultListModel<T> Success(List<T> data = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="otherdata"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultListModel<T> Success(List<T> data = default, dynamic otherdata = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.OtherData = otherdata;
            this.Msg = msg;
            return this;
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultListModel<T> Success(List<T> data = default, int total = default, int page = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.Total = total;
            this.Page = page;
            this.Msg = msg;
            return this;
        }


        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data"></param>
        /// <param name="otherdata"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public IResultListModel<T> Success(List<T> data = default, dynamic otherdata = default, int total = default, int page = default, string msg = "success")
        {
            this.Code = EnumCode.Succeed;
            this.Successful = true;
            this.Data = data;
            this.OtherData = otherdata;
            this.Total = total;
            this.Page = page;
            this.Msg = msg;
            return this;
        }



    }


    /// <summary>
    /// 返回結果
    /// </summary>
    public static class ResultTo
    {

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel Success(string msg = "success")
        {
            return new ResultModel().Success(msg);
        }


        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel Success(dynamic data, string msg = "success")
        {
            return new ResultModel().Success(data, msg);
        }


        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="otherdata"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel Success(dynamic data, dynamic otherdata, string msg = "success")
        {
            return new ResultModel().Success(data, otherdata, msg);
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel Success(dynamic data, int total, int page, string msg = "success")
        {
            return new ResultModel().Success(data, total, page, msg);
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="otherdata"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel Success(dynamic data, dynamic otherdata, int total, int page, string msg = "success")
        {
            return new ResultModel().Success(data, otherdata, total, page, msg);
        }


        /// <summary>
        /// 失敗
        /// </summary>
        /// <param name="error">錯誤資訊</param>
        /// <returns></returns>
        public static IResultModel Failed(string error = null)
        {
            return new ResultModel().Failed(EnumCode.Err, error);
        }

        /// <summary>
        /// 失敗
        /// </summary>
        /// <param name="error">錯誤資訊</param>
        /// <param name="code"></param>
        /// <returns></returns>
        public static IResultModel Failed(string error = null, EnumCode code = EnumCode.Err)
        {
            return new ResultModel().Failed(code, error);
        }
    }



    /// <summary>
    /// 返回結果
    /// </summary>
    public static class ResultTo<T> where T : class
    {

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel<T> Success(T data, string msg = "success")
        {
            return new ResultModel<T>().Success(data, msg);
        }


        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="otherdata"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel<T> Success(T data, dynamic otherdata, string msg = "success")
        {
            return new ResultModel<T>().Success(data, otherdata, msg);
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel<T> Success(T data, int total, int page, string msg = "success")
        {
            return new ResultModel<T>().Success(data, total, page, msg);
        }




        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="data">返回資料</param>
        /// <param name="otherdata"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultModel<T> Success(T data, dynamic otherdata, int total, int page, string msg = "success")
        {
            return new ResultModel<T>().Success(data, otherdata, total, page, msg);
        }


    }

    /// <summary>
    /// 返回結果
    /// </summary>
    public static class ResultToList<T> where T : class
    {

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="list">返回資料</param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultListModel<T> Success(List<T> list, string msg = "success")
        {
            return new ResultListModel<T>().Success(list, msg);
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="list">返回資料</param>
        /// <param name="otherdata"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultListModel<T> Success(List<T> list, dynamic otherdata, string msg = "success")
        {
            return new ResultListModel<T>().Success(list, otherdata, msg);
        }

        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="list">返回資料</param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultListModel<T> Success(List<T> list, int total, int page, string msg = "success")
        {
            return new ResultListModel<T>().Success(list, total, page, msg);
        }




        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="list">返回資料</param>
        /// <param name="otherdata"></param>
        /// <param name="total"></param>
        /// <param name="page"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static IResultListModel<T> Success(List<T> list, dynamic otherdata, int total, int page, string msg = "success")
        {
            return new ResultListModel<T>().Success(list, otherdata, total, page, msg);
        }


    }


    /// <summary>
    /// 返回標識碼
    /// </summary>
    public enum EnumCode
    {

        /// <summary>
        /// 成功
        /// </summary>
        Succeed = 0,

        /// <summary>
        /// 異常
        /// </summary>
        Err = -1,

        /// <summary>
        /// 未找到
        /// </summary>
        NotFound = -2,

        /// <summary>
        /// 沒有許可權
        /// </summary>
        NoAccess = -3,

        /// <summary>
        /// 沒有登入
        /// </summary>
        NoLogin = -4,

        /// <summary>
        /// 引數異常
        /// </summary>
        ParameterErr = -5,
    }