using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using Hncore.Infrastructure.Data; using Hncore.Infrastructure.Extension; using Newtonsoft.Json; namespace Hncore.Infrastructure.WebApi { public class ApiResult { public ApiResult() { } public ApiResult(object data):this(ResultCode.C_SUCCESS,"") { Data = data; } public ApiResult(ResultCode code = ResultCode.C_SUCCESS, string message = "") { Code = code; Message = message; } [JsonProperty("Code")] public ResultCode Code { get; private set; } [JsonProperty("Message")] public string Message { get; private set; } = ""; [JsonProperty("Data")] public virtual object Data { get; set; } } public class ApiResult: ApiResult where T : class, new() { [JsonProperty("Data")] public new T Data { get; set; } private static readonly Dictionary Dic; static ApiResult() { Dic = ObjectExtension.ToDescriptionDictionary(); } public ApiResult() { } public ApiResult(T data) : this(ResultCode.C_SUCCESS, "") { Data = data; } public ApiResult(ResultCode code = ResultCode.C_SUCCESS, string message = "") : base(code, message) { } //public ApiResult(ResultCode code = ResultCode.C_SUCCESS, string message = ""):base(code,message) //{ // Code = code; // if (string.IsNullOrEmpty(message) && Dic.ContainsKey(Code)) // { // Message = Dic[Code]; // } // else // { // Message = message; // } //} } //public class ApiResult : ApiResult //{ // public ApiResult(ResultCode code = ResultCode.C_SUCCESS, string message = "") : base(code, message) // { // } //} public class ApiResultPaged : ApiResult where T : class, new() { [JsonProperty("TotalCount")] public int TotalCount { get; set; } public ApiResultPaged(ResultCode code = ResultCode.C_SUCCESS, string message = "") : base(code, message) { } } public static class PageDataExt { public static ApiResultPaged> ToApiResult(this PageData pageData) where T : class, new() { return new ApiResultPaged>() { TotalCount = pageData.RowCount, Data = pageData.List }; } public static ApiResultPaged> ToApiResult(this PageData pageData) where T2 : class, new() { return new ApiResultPaged>() { TotalCount = pageData.RowCount, Data = pageData.List.MapsTo().ToList() }; } } public enum ResultCode { /// /// 未知错误 /// [Description("服务正在更新中,请稍后再试")] C_UNKNOWN_ERROR = 0, /// /// 成功 /// [Description("成功")] C_SUCCESS = 10000, /// /// 验证码 /// [Description("验证码错误")] C_VERIFY_CODE_ERROR = 10001, /// /// 参数 /// [Description("服务正在更新中,请稍后再试")] C_PARAM_ERROR = 10002, /// /// 登录名 /// [Description("登录名错误")] C_LONGIN_NAME_ERROR = 10003, /// /// 密码 /// [Description("密码错误")] C_PASSWORD_ERROR = 10004, /// /// 无效操作 /// [Description("非法操作")] C_INVALID_ERROR = 10005, /// /// 文件 /// [Description("文件错误")] C_FILE_ERROR = 10006, /// /// 已存在错误 /// [Description("资源已存在错误")] C_ALREADY_EXISTS_ERROR = 10007, /// /// 资源无法访问:不是资源的拥有者 /// [Description("不是资源的拥有者,资源无法访问")] C_OWNER_ERROR = 10008, /// /// 资源不存在 /// [Description("资源不存在")] C_NOT_EXISTS_ERROR = 10009, /// /// 新建角色出错 /// [Description("创建角色出错")] C_ROLE_CREATE_ERROR = 10010, /// /// 新建权限出错 /// [Description("新建权限错误")] C_PERMISSION_CREATE_ERROR = 10011, /// /// 绑定角色和权限出错 /// [Description("绑定角色和权限出错")] C_ROLE_PERMISSION_CREATE_ERROR = 10012, /// /// 服务器繁忙,请稍后再试! /// [Description("服务器繁忙")] C_Server_Is_Busy = 10013, /// /// 访问被禁止 /// [Description("禁止访问")] C_Access_Forbidden = 10014, /// /// 非法操作 /// [Description("非法操作")] C_Illegal_Operation = 10015, /// /// 无效的openID /// [Description("OpenID无效")] C_OPENID_ERROR = 10016, /// /// 返回错误,但无需理会 /// [Description("可忽略的错误")] C_IGNORE_ERROR = 10017, /// /// 用户信息错误 /// [Description("用户信息错误")] C_USERINFO_ERROR = 10018, /// /// 用户需要认证 /// [Description("用户需要认证")] C_USER_SELECT_ERROR = 10019, /// /// 过期 /// [Description("超时错误")] C_TIMEOUT_ERROR = 10020, /// /// 手机和验证码不匹配 /// [Description("手机和验证码不匹配")] C_PHONE_CODE_ERROR = 10021, /// /// 微信没有选择楼 /// [Description("微信没有选择楼")] C_WX_UNIT_UNSELECT_ERROR = 10022, /// /// 黑名单错误 /// [Description("黑名单错误")] C_BLACKLIST_ERROR = 10023, /// /// 支付失败 /// [Description("支付失败")] C_PAY_FAIL = 10024, /// /// 重复支付 /// [Description("重复支付")] RepeatPay= 10025, /// /// 重定向 /// [Description("重定向")] C_REDIRECT_URL = 100302, [Description("用户重定向")] C_USER_REDIRECT_URL = 900302, [Description("人脸已经存在")] C_FACEKEY_EXIST_ERROR = 900303, [Description("人脸角度不正确")] C_FACE_ANGLE_ERROR = 900304, [Description("退款失败")] C_PAY_Refund = 900305, /// /// 用户支付中 /// [Description("用户支付中")] C_USERPAYING = 900306, [Description("审核中")] C_VISITOR_CHECKING = 11001, [Description("已过期")] C_VISITOR_OUTTIME = 11002, [Description("未到期")] C_VISITOR_NOTYETDUE = 11003, } }