using System; using System.Collections.Generic; using Shared; using Shared.SimpleControl; using Shared.SimpleControl.R; namespace Shared { /// /// 接口类的返回信息 /// public class IMessageCommon { /// /// 接口类的返回信息 /// private static IMessageCommon m_Current = null; /// /// 接口类的返回信息 /// public static IMessageCommon Current { get { if (m_Current == null) { m_Current = new IMessageCommon(); //初始化全部的信息 m_Current.InitAllMsg(); } return m_Current; } } /// /// 是否在获取token /// public bool isGetingToken; /// /// 无视错误(访问云端时,此操作将不会弹出错误) /// public bool IgnoreError = false; ///// ///// 全部信息 ///// //private Dictionary> dicMsg = null; /// /// 通用错误码 /// private Dictionary stateCodeDic = null; /// /// 初始化全部的信息 /// public void InitAllMsg() { //dicMsg = new Dictionary>(); #region 共通错误码 stateCodeDic = new Dictionary(); ////与服务器通讯失败 //stateCodeDic ["NETWORK_ERROR"] = MyInternationalizationString.FailedRequestServer; ////数据异常 //stateCodeDic["DATA_EXCEPTION"] = MyInternationalizationString.DataExceptionPleaseTryAgain; ////与服务器通讯失败 //stateCodeDic[StateCode.NETWORK_ERROR] = MyInternationalizationString.FailedRequestServer; ////数据异常 //stateCodeDic[StateCode.DATA_EXCEPTION] = MyInternationalizationString.DataExceptionPleaseTryAgain; //#region 基础服务 新错误码 2020-12-07 ////系统繁忙~请稍后再试~ //stateCodeDic["1"] = MyInternationalizationString.SystemIsBusy; ////系统维护中~请稍后再试~ //stateCodeDic["2"] = MyInternationalizationString.SystemMaintenance; //////服务异常 ////stateCodeDic["3"] = MyInternationalizationString.SystemIsBusy; ////签名错误 //stateCodeDic["4"] = MyInternationalizationString.SignatureError; ////请求失败,参数异常! //stateCodeDic["9"] = MyInternationalizationString.RequestFailedParameterException; ////验证码校验失败 //stateCodeDic[StateCode.VERIFICATION_CODE_WRONG] = MyInternationalizationString.VerificationCodeWrong; ////验证码发送频繁,请稍后再试! //stateCodeDic["15"] = MyInternationalizationString.VerificationCodeSentFrequently; ////验证码发送失败 //stateCodeDic["16"] = MyInternationalizationString.FailedToSendVerificationCode; ////会话超时,请更新token //stateCodeDic[StateCode.TOKEN_EXPIRED] = MyInternationalizationString.NotLogin; ////解析用户身份错误,请重新登录 //stateCodeDic["10006"] = MyInternationalizationString.InvalidToken; ////您已在另一个设备登录 //stateCodeDic["10007"] = MyInternationalizationString.LoggedOnOtherDevices; ////登录失败,账号或者密码错误 //stateCodeDic["10008"] = MyInternationalizationString.LoginFailed_AccountOrPasswordError; ////用户已经被禁用 //stateCodeDic["10009"] = MyInternationalizationString.TheAccountHasBeenDisabled; ////账号不存在 //stateCodeDic[StateCode.ACCOUNT_NOT_EXIST] = MyInternationalizationString.AccountNotExist; ////用户未登录 //stateCodeDic["10011"] = MyInternationalizationString.InvalidToken; ////账号已存在 //stateCodeDic["10012"] = MyInternationalizationString.AccountExist; ////手机号已注册 //stateCodeDic["10013"] = MyInternationalizationString.AccountExist; ////邮箱已注册 //stateCodeDic["10014"] = MyInternationalizationString.AccountExist; ////原密码错误 //stateCodeDic["10015"] = MyInternationalizationString.OldPwdNoYes; ////绑定号码重复 //stateCodeDic["10016"] = MyInternationalizationString.DuplicateBindingNumber; ////注册失败 //stateCodeDic["10017"] = MyInternationalizationString.RegistrationFailedPleaseTryAgain; //////租户不存在 ////stateCodeDic["10018"] = MyInternationalizationString.10018; ////密码错误次数过多,账号被锁定! //stateCodeDic["10019"] = MyInternationalizationString.AccountLoginLock; ////没有权限 //stateCodeDic["10105"] = MyInternationalizationString.PermissionDenied; ////验证码已经发送 //stateCodeDic["10207"] = MyInternationalizationString.VerificationCodePrompt; ////发送验证码错误 //stateCodeDic["10210"] = MyInternationalizationString.VerificationCodeWrong; //////枚举类型错误 ////stateCodeDic["11003"] = MyInternationalizationString.11003; ////-------------------子账号模块------------------- ////子账号已经存在 //stateCodeDic["10301"] = MyInternationalizationString.BindSubAccount_Exist; ////子账号不存在 //stateCodeDic["10302"] = MyInternationalizationString.SubAccount_NoExists; ////不能把自己添加为成员 //stateCodeDic["10303"] = MyInternationalizationString.BindSubAccount_SameAccount; //////相同的远程控制 ////stateCodeDic["10304"] = MyInternationalizationString.uOperationFailed; //////子账号昵称已经存在 ////stateCodeDic["10305"] = MyInternationalizationString.BindSubAccount_Exist; ////-------------------住宅模块------------------- ////当前住宅不属于该账号 //stateCodeDic["10401"] = MyInternationalizationString.HomeIdAndTokenNoConsistent; ////住宅名称已存在 //stateCodeDic["10402"] = MyInternationalizationString.HomeName_Exist; //////住宅ID已存在 ////stateCodeDic["10403"] = MyInternationalizationString.HOME_ID_EXISTS; ////住宅不存在 //stateCodeDic["10404"] = MyInternationalizationString.Home_NoExists; ////住宅没有绑定网关 //stateCodeDic["10503"] = MyInternationalizationString.PleaseBindTheGatewayFirst; //////调用用户模块接口失败 ////stateCodeDic["10213"] = HDL_ON.MyInternationalizationString; ////*********网关********* ////网关不存在 //stateCodeDic["10506"] = MyInternationalizationString.GatewayDoesNotExist; ////控制失败 //stateCodeDic["14007"] = MyInternationalizationString.ControlFailure; ////网关离线 //stateCodeDic["14005"] = MyInternationalizationString.GatewayOffline; ////设备离线 //stateCodeDic["14006"] = MyInternationalizationString.DeviceOffline; ////*********场景/自动化********* ////场景已存在 //stateCodeDic["14501"] = MyInternationalizationString.SceneAlreadyExists; ////自动化已存在 //stateCodeDic["14502"] = MyInternationalizationString.AutomationAlreadyExists; ////*********设备********* ////设备目标重复 //stateCodeDic["10801"] = MyInternationalizationString.DuplicateDeviceTarget; ////没有远程控制权限 //stateCodeDic["10802"] = MyInternationalizationString.NoRemoteControlPermission; ////设备不能为空 //stateCodeDic["10803"] = MyInternationalizationString.TheDeviceCannotBeEmpty; ////用户没有设备的权限 //stateCodeDic["10804"] = MyInternationalizationString.NotHavePermissionToTheDevice; ////设备不存在 //stateCodeDic["10805"] = MyInternationalizationString.TheDeviceDoesNotExist; ////控制失败 //stateCodeDic["20000"] = MyInternationalizationString.ControlFailure; ////网关离线 //stateCodeDic["20001"] = MyInternationalizationString.GatewayOffline; ////设备离线 //stateCodeDic["20002"] = MyInternationalizationString.DeviceOffline; ////spk不支持该功能 //stateCodeDic["20101"] = MyInternationalizationString.SpkNotSupportThisFeature; ////spk功能不支持此功能值 //stateCodeDic["20102"] = MyInternationalizationString.SpkNotSupportThisFunctionValue; //#endregion #endregion } /// /// 根据接口的状态码,翻译返回信息 /// /// 接口 /// 云端返回的数据 /// 请求参数 /// public string GetMsgByRequestName(string statuCode) { if (IgnoreError == true) { //无视错误 return null; } //共通码 if (stateCodeDic.ContainsKey(statuCode) == true) { return Language.StringByID(stateCodeDic[statuCode]); } //if (dicMsg.ContainsKey(requestName) == true && dicMsg[requestName].ContainsKey(statuCode) == true) //{ // //在册的Msg // return Language.StringByID(dicMsg[requestName][statuCode]); //} return ErrorCode.FailedRequestServer + "\n(" + statuCode + ")"; } /// /// 弹窗提示网络请求错误信息 /// /// /// /// /// 补充的错误提示 public void ShowErrorInfoAlter(string statuCode, bool isTipStyle = true, int closeTime = 2, string tipStr = "") { try { //如果是token过期则刷新token if (statuCode == StateCode.TOKEN_EXPIRED) { StartRefreshToken(); } else { string mes = GetMsgByRequestName(statuCode); if (mes == null) return; if (!string.IsNullOrEmpty(tipStr)) { mes = tipStr + "\n" + mes; } if (isTipStyle) { Application.RunOnMainThread(() => { var tip = new Tip() { Text = mes, CloseTime = closeTime, Direction = AMPopTipDirection.None }; tip.Show(MainPage.MainFrameLayout); }); } else { Application.RunOnMainThread(() => { new Alert("", mes+$" \r\nCode:{statuCode}", Language.StringByID(MyInternationalizationString.Close)).Show(); }); } } } catch { } } /// /// StartRefreshToken /// public void StartRefreshToken() { if (isGetingToken) return; new System.Threading.Thread(() => { isGetingToken = true; try { var success = new HttpServerRequest().RefreshToken(); if (success == StateCode.SUCCESS) { Utlis.WriteLine("RefreshToken success"); } } catch { } finally { isGetingToken = false; } }) { IsBackground = true }.Start(); } } /// /// 常用状态码管理 /// public class StateCode { /// /// 网络请求异常 /// APP自定义错误码 /// public const string NETWORK_ERROR = "-1"; /// /// 数据解析错误 /// APP自定义错误码 /// public const string DATA_EXCEPTION = "-2"; /// /// 请求成功的状态码 /// public const string SUCCESS = "0"; /// /// 验证码校验失败 /// public const string VERIFICATION_CODE_WRONG = "14"; /// /// 会话超时,请更新token /// public const string TOKEN_EXPIRED = "10001"; /// /// 账号不存在的错误码 /// public const string ACCOUNT_NOT_EXIST = "10010"; /// /// 登录锁定,密码错误次数过多 /// 密码输入错误超过10次,请30分钟后重试! /// public const string AccountLoginLock = "10019"; } }