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 ["10107"] = MyInternationalizationString.DataExceptionPleaseTryAgain; ////枚举类型错误 //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; //mac已被绑定 stateCodeDic ["10510"] = MyInternationalizationString.MacHasBeenBound; //控制失败 stateCodeDic ["14007"] = MyInternationalizationString.ControlFailure2; //网关离线 stateCodeDic ["14005"] = MyInternationalizationString.GatewayOffline; //设备离线 stateCodeDic ["14006"] = MyInternationalizationString.DeviceOffline; //*********场景/自动化********* //场景已存在 stateCodeDic ["14501"] = MyInternationalizationString.SceneAlreadyExists; //自动化已存在 stateCodeDic ["14502"] = MyInternationalizationString.AutomationAlreadyExists; //-------------------备份模块------------------- //备注名称已经存在,请更换后重试!文件夹名称已经存在 stateCodeDic ["10601"] = SimpleControl.R.MyInternationalizationString.FileNamehasExisted; //备份文件夹不存在 stateCodeDic ["10602"] = SimpleControl.R.MyInternationalizationString.FolderNoExist; //备份文件不存在 stateCodeDic ["10603"] = SimpleControl.R.MyInternationalizationString.FileNoExist; //备份失败 stateCodeDic ["10607"] = SimpleControl.R.MyInternationalizationString.FailedToBackupFile; //*********设备********* //设备目标重复 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(() => { //弹出Tip提示 Utlis.ShowTip (mes); }); } 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"; } }