| | |
| | | /// </summary> |
| | | public class IMessageCommon |
| | | { |
| | | |
| | | |
| | | /// <summary> |
| | | /// 接口类的返回信息 |
| | | /// </summary> |
| | |
| | | return m_Current; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 是否在获取token |
| | | /// </summary> |
| | | public bool isGetingToken; |
| | | |
| | | /// <summary> |
| | | /// 无视错误(访问云端时,此操作将不会弹出错误) |
| | | /// </summary> |
| | | public bool IgnoreError = false; |
| | | |
| | | /// <summary> |
| | | /// 全部信息 |
| | | /// </summary> |
| | | private Dictionary<string, Dictionary<string, int>> dicMsg = null; |
| | | ///// <summary> |
| | | ///// 全部信息 |
| | | ///// </summary> |
| | | //private Dictionary<string, Dictionary<string, int>> dicMsg = null; |
| | | |
| | | /// <summary> |
| | | /// 通用错误码 |
| | |
| | | /// </summary> |
| | | public void InitAllMsg() |
| | | { |
| | | dicMsg = new Dictionary<string, Dictionary<string, int>>(); |
| | | //dicMsg = new Dictionary<string, Dictionary<string, int>>(); |
| | | #region 共通错误码 |
| | | stateCodeDic = new Dictionary<string, int>(); |
| | | //与服务器通讯失败 |
| | | stateCodeDic["NETWORK_ERROR"] = HDL_ON.StringId.FailedRequestServer; |
| | | stateCodeDic["NETWORK_ERROR"] = StringId.FailedRequestServer; |
| | | //数据异常 |
| | | stateCodeDic["DATA_EXCEPTION"] = HDL_ON.StringId.DataExceptionPleaseTryAgain; |
| | | |
| | | #region 基础服务 新错误码 |
| | | stateCodeDic["DATA_EXCEPTION"] = StringId.DataExceptionPleaseTryAgain; |
| | | //与服务器通讯失败 |
| | | stateCodeDic[StateCode.NETWORK_ERROR] = StringId.FailedRequestServer; |
| | | //数据异常 |
| | | stateCodeDic[StateCode.DATA_EXCEPTION] = StringId.DataExceptionPleaseTryAgain; |
| | | #region 基础服务 新错误码 2020-12-07 |
| | | //系统繁忙~请稍后再试~ |
| | | stateCodeDic["1"] = StringId.SystemIsBusy; |
| | | //系统维护中~请稍后再试~ |
| | | stateCodeDic["2"] = HDL_ON.StringId.SystemMaintenance; |
| | | stateCodeDic["2"] = StringId.SystemMaintenance; |
| | | ////服务异常 |
| | | //stateCodeDic["3"] = StringId.SystemIsBusy; |
| | | //签名错误 |
| | | stateCodeDic["4"] = StringId.SignatureError; |
| | | //请求失败,参数异常! |
| | | stateCodeDic["9"] = StringId.RequestFailedParameterException; |
| | | //验证码校验失败 |
| | | stateCodeDic["14"] = HDL_ON.StringId.VerificationCodeWrong; |
| | | ////会话超时,请更新token |
| | | //stateCodeDic["10001"] = HDL_ON.StringId.uOperationFailed; |
| | | ////登录失败,账号或者密码错误 |
| | | stateCodeDic["10008"] = HDL_ON.StringId.LoginFailed_AccountOrPasswordError; |
| | | stateCodeDic[StateCode.VERIFICATION_CODE_WRONG] = StringId.VerificationCodeWrong; |
| | | //验证码发送频繁,请稍后再试! |
| | | stateCodeDic["15"] = StringId.VerificationCodeSentFrequently; |
| | | //验证码发送失败 |
| | | stateCodeDic["16"] = StringId.FailedToSendVerificationCode; |
| | | |
| | | //会话超时,请更新token |
| | | stateCodeDic[StateCode.TOKEN_EXPIRED] = StringId.NotLogin; |
| | | //解析用户身份错误,请重新登录 |
| | | stateCodeDic["10006"] = StringId.InvalidToken; |
| | | //您已在另一个设备登录 |
| | | stateCodeDic["10007"] = StringId.LoggedOnOtherDevices; |
| | | //登录失败,账号或者密码错误 |
| | | stateCodeDic["10008"] = StringId.LoginFailed_AccountOrPasswordError; |
| | | //用户已经被禁用 |
| | | stateCodeDic["10009"] = StringId.TheAccountHasBeenDisabled; |
| | | //账号不存在 |
| | | stateCodeDic[StateCode.ACCOUNT_NOT_EXIST] = HDL_ON.StringId.AccountNotExist; |
| | | //#endregion |
| | | |
| | | ////return; |
| | | //#region 2020-09-18 新对接错误码 |
| | | //////操作失败,请重试 |
| | | ////stateCodeDic ["10001"] = HDL_ON.StringId.uOperationFailed; |
| | | ////请求参数错误 |
| | | //stateCodeDic["10101"] = HDL_ON.StringId.uParameterError; |
| | | ////无效登录Token |
| | | //stateCodeDic["10102"] = HDL_ON.StringId.uNoLogin; |
| | | ////登录失败,账号或者密码错误 |
| | | //stateCodeDic["10103"] = HDL_ON.StringId.Accountorpassworderro; |
| | | ////没有记录 |
| | | //stateCodeDic["10104"] = HDL_ON.StringId.NoRecord; |
| | | ////操作权限不足 |
| | | //stateCodeDic["10105"] = HDL_ON.StringId.uBeRestrict; |
| | | ////不存在 |
| | | //stateCodeDic["10106"] = HDL_ON.StringId.NO_EXISTS; |
| | | stateCodeDic[StateCode.ACCOUNT_NOT_EXIST] = StringId.AccountNotExist; |
| | | //用户未登录 |
| | | stateCodeDic["10011"] = StringId.InvalidToken; |
| | | //账号已存在 |
| | | stateCodeDic["10012"] = StringId.AccountExist; |
| | | //手机号已注册 |
| | | stateCodeDic["10013"] = StringId.AccountExist; |
| | | //邮箱已注册 |
| | | stateCodeDic["10014"] = StringId.AccountExist; |
| | | //原密码错误 |
| | | stateCodeDic["10015"] = StringId.OldPwdNoYes; |
| | | //绑定号码重复 |
| | | stateCodeDic["10016"] = StringId.DuplicateBindingNumber; |
| | | //注册失败 |
| | | stateCodeDic["10017"] = StringId.RegistrationFailedPleaseTryAgain; |
| | | ////租户不存在 |
| | | //stateCodeDic["10018"] = StringId.10018; |
| | | //密码错误次数过多,账号被锁定! |
| | | stateCodeDic["10019"] = StringId.AccountLoginLock; |
| | | //没有权限 |
| | | stateCodeDic["10105"] = StringId.PermissionDenied; |
| | | //验证码已经发送 |
| | | stateCodeDic["10207"] = StringId.VerificationCodePrompt; |
| | | //发送验证码错误 |
| | | stateCodeDic["10210"] = StringId.VerificationCodeWrong; |
| | | |
| | | |
| | | ////-------------------用户模块------------------- |
| | | ////账号不存在 |
| | | //stateCodeDic["10201"] = HDL_ON.StringId.uAccountNoExists; |
| | | ////账号已经存在 |
| | | //stateCodeDic["10202"] = HDL_ON.StringId.RegisterSendVerCode_Exist; |
| | | ////验证码已失效 |
| | | //stateCodeDic["10203"] = HDL_ON.StringId.ValidatorCode_NoRecord; |
| | | ////验证码错误 |
| | | //stateCodeDic["10204"] = HDL_ON.StringId.VerificationCodeError; |
| | | |
| | | |
| | | ////登录失败,密码错误 |
| | | //stateCodeDic["10205"] = HDL_ON.StringId.PasswordIsError; |
| | | ////验证码无效[用户没有通过手机[邮箱]号获取验证码] |
| | | //stateCodeDic["10206"] = HDL_ON.StringId.ValidatorCode_ValidCodeAndPhoneNoEqual; |
| | | ////验证码发送频繁 |
| | | //stateCodeDic["10207"] = HDL_ON.StringId.VERIFY_CODE_SENDED; |
| | | ////该账号已经绑定 |
| | | //stateCodeDic["10208"] = HDL_ON.StringId.Exist; |
| | | ////用户名称已经存在 |
| | | //stateCodeDic["10209"] = HDL_ON.StringId.Exist; |
| | | ////验证码发送失败 |
| | | //stateCodeDic["10210"] = HDL_ON.StringId.RegisterSendVerCode_SendFail; |
| | | ////枚举类型错误 |
| | | //stateCodeDic["11003"] = StringId.11003; |
| | | |
| | | ////-------------------更新密码模块------------------- |
| | | ////原密码和新密码相同 |
| | | //stateCodeDic["10211"] = HDL_ON.StringId.UpdatePassword_NewPasswordAndOldPasswordEqual; |
| | | ////旧密码不对 |
| | | //stateCodeDic["10212"] = HDL_ON.StringId.UpdatePassword_OldPwdNoYes; |
| | | |
| | | ////-------------------子账号模块------------------- |
| | | ////子账号已经存在 |
| | | //stateCodeDic["10301"] = HDL_ON.StringId.BindSubAccount_Exist; |
| | | ////子账号不存在 |
| | | //stateCodeDic["10302"] = HDL_ON.StringId.uAccountNoExists; |
| | | ////不能把自己添加为成员 |
| | | //stateCodeDic["10303"] = HDL_ON.StringId.BindSubAccount_SameAccount; |
| | | ////一样的远程请求 |
| | | //stateCodeDic["10304"] = HDL_ON.StringId.uOperationFailed; |
| | | ////账号已经存在于此住宅 |
| | | //stateCodeDic["10305"] = HDL_ON.StringId.BindSubAccount_Exist; |
| | | |
| | | ////-------------------住宅模块------------------- |
| | | ////当前住宅不属于该账号 |
| | | //stateCodeDic["10401"] = HDL_ON.StringId.HomeIdAndTokenNoConsistent; |
| | | ////住宅名称已存在 |
| | | //stateCodeDic["10402"] = HDL_ON.StringId.EditZigbeeHome_Exist; |
| | | //-------------------子账号模块------------------- |
| | | //子账号已经存在 |
| | | stateCodeDic["10301"] = StringId.BindSubAccount_Exist; |
| | | //子账号不存在 |
| | | stateCodeDic["10302"] = StringId.SubAccount_NoExists; |
| | | //不能把自己添加为成员 |
| | | stateCodeDic["10303"] = StringId.BindSubAccount_SameAccount; |
| | | ////相同的远程控制 |
| | | //stateCodeDic["10304"] = StringId.uOperationFailed; |
| | | ////子账号昵称已经存在 |
| | | //stateCodeDic["10305"] = StringId.BindSubAccount_Exist; |
| | | //-------------------住宅模块------------------- |
| | | //当前住宅不属于该账号 |
| | | stateCodeDic["10401"] = StringId.HomeIdAndTokenNoConsistent; |
| | | //住宅名称已存在 |
| | | stateCodeDic["10402"] = StringId.HomeName_Exist; |
| | | ////住宅ID已存在 |
| | | //stateCodeDic["10403"] = HDL_ON.StringId.HOME_ID_EXISTS; |
| | | ////住宅不存在 |
| | | //stateCodeDic["10404"] = HDL_ON.StringId.uZigbeeHome_NoRecord; |
| | | //stateCodeDic["10403"] = StringId.HOME_ID_EXISTS; |
| | | //住宅不存在 |
| | | stateCodeDic["10404"] = StringId.Home_NoExists; |
| | | //住宅没有绑定网关 |
| | | stateCodeDic["10503"] = StringId.PleaseBindTheGatewayFirst; |
| | | |
| | | ////-------------------住宅分享模块------------------- |
| | | ////住宅分享不存在 |
| | | //stateCodeDic["10405"] = HDL_ON.StringId.NO_EXISTS; |
| | | ////调用用户模块接口失败 |
| | | //stateCodeDic["10213"] = HDL_ON.StringId; |
| | | |
| | | ////-------------------网关模块------------------- |
| | | ////是否强制解绑网关 |
| | | //stateCodeDic["10501"] = HDL_ON.StringId.BindGwToHome_BindGatewaysExists; |
| | | ////应用成功 |
| | | //stateCodeDic["10502"] = HDL_ON.StringId.AmendTheSuccess; |
| | | ////当前住宅下并没有绑定指定的网关 |
| | | //stateCodeDic["10503"] = HDL_ON.StringId.ReleaseGatewayToZigbeeHome_NoBind; |
| | | ////不支持 |
| | | //stateCodeDic["10504"] = HDL_ON.StringId.NOT_SUPPORT; |
| | | ////网关MAC不存在 |
| | | //stateCodeDic["10505"] = HDL_ON.StringId.MACError; |
| | | |
| | | ////-------------------备份模块------------------- |
| | | ////备注名称已经存在,请更换后重试!文件夹名称已经存在 |
| | | //stateCodeDic["10601"] = HDL_ON.StringId.uBackupNameExists; |
| | | ////备份文件夹不存在 |
| | | //stateCodeDic["10602"] = HDL_ON.StringId.FolderNoExist; |
| | | ////备份文件不存在 |
| | | //stateCodeDic["10603"] = HDL_ON.StringId.FileNoExist; |
| | | //*********网关********* |
| | | //网关不存在 |
| | | stateCodeDic["10506"] = StringId.GatewayDoesNotExist; |
| | | |
| | | |
| | | ////-------------------跨区------------------- |
| | | ////该接口不存在跨区操作 |
| | | //stateCodeDic["11001"] = HDL_ON.StringId.NOT_SUPPORT; |
| | | ////跨区调用失败 |
| | | //stateCodeDic["11002"] = HDL_ON.StringId.NOT_SUPPORT; |
| | | ////枚举错误 |
| | | //stateCodeDic["11003"] = HDL_ON.StringId.uOperationFailed; |
| | | //控制失败 |
| | | stateCodeDic["14007"] = StringId.ControlFailure; |
| | | //网关离线 |
| | | stateCodeDic["14005"] = StringId.GatewayOffline; |
| | | //设备离线 |
| | | stateCodeDic["14006"] = StringId.DeviceOffline; |
| | | |
| | | //*********场景/自动化********* |
| | | //场景已存在 |
| | | stateCodeDic["14501"] = StringId.SceneAlreadyExists; |
| | | //自动化已存在 |
| | | stateCodeDic["14502"] = StringId.AutomationAlreadyExists; |
| | | |
| | | //*********设备********* |
| | | //设备目标重复 |
| | | stateCodeDic["10801"] = StringId.DuplicateDeviceTarget; |
| | | //没有远程控制权限 |
| | | stateCodeDic["10802"] = StringId.NoRemoteControlPermission; |
| | | //设备不能为空 |
| | | stateCodeDic["10803"] = StringId.TheDeviceCannotBeEmpty; |
| | | //用户没有设备的权限 |
| | | stateCodeDic["10804"] = StringId.NotHavePermissionToTheDevice; |
| | | //设备不存在 |
| | | stateCodeDic["10805"] = StringId.TheDeviceDoesNotExist; |
| | | |
| | | //控制失败 |
| | | stateCodeDic["20000"] = StringId.ControlFailure; |
| | | //网关离线 |
| | | stateCodeDic["20001"] = StringId.GatewayOffline; |
| | | //设备离线 |
| | | stateCodeDic["20002"] = StringId.DeviceOffline; |
| | | //spk不支持该功能 |
| | | stateCodeDic["20101"] = StringId.SpkNotSupportThisFeature; |
| | | //spk功能不支持此功能值 |
| | | stateCodeDic["20102"] = StringId.SpkNotSupportThisFunctionValue; |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | /// <param name="revertObj">云端返回的数据</param> |
| | | /// <param name="pra">请求参数</param> |
| | | /// <returns></returns> |
| | | public string GetMsgByRequestName(string requestName, string statuCode) |
| | | public string GetMsgByRequestName(string statuCode) |
| | | { |
| | | if (IgnoreError == true) |
| | | { |
| | |
| | | return Language.StringByID(stateCodeDic[statuCode]); |
| | | } |
| | | |
| | | if (dicMsg.ContainsKey(requestName) == true && dicMsg[requestName].ContainsKey(statuCode) == true) |
| | | { |
| | | //在册的Msg |
| | | return Language.StringByID(dicMsg[requestName][statuCode]); |
| | | } |
| | | //if (dicMsg.ContainsKey(requestName) == true && dicMsg[requestName].ContainsKey(statuCode) == true) |
| | | //{ |
| | | // //在册的Msg |
| | | // return Language.StringByID(dicMsg[requestName][statuCode]); |
| | | //} |
| | | |
| | | return Language.StringByID(HDL_ON.StringId.FailedRequestServer) + "\n(" + statuCode + ")"; |
| | | return Language.StringByID(StringId.FailedRequestServer) + "\n(" + statuCode + ")"; |
| | | } |
| | | |
| | | |
| | |
| | | /// <param name="statuCode"></param> |
| | | /// <param name="isTipStyle"></param> |
| | | /// <param name="tipStr">补充的错误提示</param> |
| | | public void ShowErrorInfoAlter(string requestName, string statuCode, bool isTipStyle = false, string tipStr = "") |
| | | public void ShowErrorInfoAlter(string statuCode, bool isTipStyle = true, int closeTime = 2, string tipStr = "",bool showAllMsg = true) |
| | | { |
| | | try |
| | | { |
| | | string mes = GetMsgByRequestName(requestName, statuCode); |
| | | if (mes == null) return; |
| | | if (!string.IsNullOrEmpty(tipStr)) |
| | | //如果是token过期则刷新token |
| | | if (statuCode == StateCode.TOKEN_EXPIRED) |
| | | { |
| | | mes = tipStr + "\n" + mes; |
| | | } |
| | | if (isTipStyle) |
| | | { |
| | | //MainPage.AddTip(mes); |
| | | StartRefreshToken(); |
| | | } |
| | | else |
| | | { |
| | | Application.RunOnMainThread(() => { |
| | | new Alert("", mes, Language.StringByID(HDL_ON.StringId.Close)).Show(); |
| | | }); |
| | | string mes = GetMsgByRequestName(statuCode); |
| | | if (mes == null) return; |
| | | if (!string.IsNullOrEmpty(tipStr)) |
| | | { |
| | | if (showAllMsg) |
| | | { |
| | | mes = tipStr + "\n" + mes; |
| | | }else |
| | | { |
| | | mes = tipStr; |
| | | } |
| | | } |
| | | if (isTipStyle) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | var tip = new Tip() |
| | | { |
| | | Text = mes, |
| | | CloseTime = closeTime, |
| | | Direction = AMPopTipDirection.None |
| | | }; |
| | | tip.Show(MainPage.BaseView); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | new Alert("", mes+$" \r\nCode:{statuCode}", Language.StringByID(StringId.Close)).Show(); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// StartRefreshToken |
| | | /// </summary> |
| | | 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 |
| | | { |
| | | /// <summary> |
| | | /// 网络请求异常 |
| | | /// APP自定义错误码 |
| | | /// </summary> |
| | | public const string NETWORK_ERROR = "-1"; |
| | | /// <summary> |
| | | /// 数据解析错误 |
| | | /// APP自定义错误码 |
| | | /// </summary> |
| | | public const string DATA_EXCEPTION = "-2"; |
| | | /// <summary> |
| | | /// 请求成功的状态码 |
| | | /// </summary> |
| | | public const string SUCCESS = "0"; |
| | | /// <summary> |
| | | /// 验证码校验失败 |
| | | /// </summary> |
| | | public const string VERIFICATION_CODE_WRONG = "14"; |
| | | /// <summary> |
| | | /// 会话超时,请更新token |
| | | /// </summary> |
| | | public const string TOKEN_EXPIRED = "10001"; |
| | | /// <summary> |
| | | /// 账号不存在的错误码 |
| | | /// </summary> |
| | | public const string ACCOUNT_NOT_EXIST = "10010"; |
| | | /// <summary> |
| | | /// 登录锁定,密码错误次数过多 |
| | | /// 密码输入错误超过10次,请30分钟后重试! |
| | | /// </summary> |
| | | public const string AccountLoginLock = "10019"; |
| | | |
| | | |
| | | |
| | | } |
| | | } |