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";
}
}