傳送福利啦,拿來即用的統一返回模型
阿新 • • 發佈:2021-10-27
返回模型看了公司內部的,有點不忍直視,礙於自己說了不算,但又有點強迫症,所以特意封裝了一個,給有需要的朋友分享下。廢話不多說,直接上程式碼
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, }