HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-11-04 c7698e163e43cea9e7f8ee45f8e3f91c9265cca4
ZigbeeApp/Shared/Phone/ZigBee/Device/Safeguard.cs
@@ -877,7 +877,10 @@
            /// 最少4个字符,最大32个字符
            /// </summary>
            public string Password;
            /// <summary>
            /// 用户密码提示语
            /// </summary>
            public string PassWordTips = string.Empty;
        }
        #endregion
@@ -886,10 +889,11 @@
        /// *新增或重设用户密码(需要管理员权限)
        /// <para>userId:用户id 如果用户id存在,则修改密码。如果用户id不存在,则为该id新增密码
        /// 为0时,自动分配新的用户id。为5时,则修改胁迫密码。取值范围0-5。</para>
        ///  <para>password:新管理员密码</para>
        /// <para>password:新管理员密码</para>
        /// <para>passWordTips:密码提示</para>
        /// <para>loginToken:登陆标识,最大32个字符。由app自动生成的唯一标识。与管理员登陆指令的“LoginToken”一致,否则将返回“Security/Error_Respon”错误。</para>
        /// </summary> 
        public static async System.Threading.Tasks.Task<SetUserPasswordResponseAllData> SetUserPasswordAsync(int userId, string password,string loginToken)
        public static async System.Threading.Tasks.Task<SetUserPasswordResponseAllData> SetUserPasswordAsync(int userId, string password, string passWordTips, string loginToken)
        {
            return await System.Threading.Tasks.Task.Run(async () =>
            {
@@ -980,6 +984,7 @@
                    {
                     { "UserId", userId  },
                     { "Password", password},
                     { "PassWordTips", passWordTips},
                     { "LoginToken", loginToken}
                    };
                    jObject.Add("Data", data);
@@ -1005,6 +1010,129 @@
                return d;
            });
        }
        /// <summary>
        /// *新增或重设用户密码(需要管理员权限)
        /// <para>userId:用户id 如果用户id存在,则修改密码。如果用户id不存在,则为该id新增密码
        /// 为0时,自动分配新的用户id。为5时,则修改胁迫密码。取值范围0-5。</para>
        /// <para>password:新管理员密码</para>
        /// <para>passWordTips:密码提示</para>
        /// <para>loginToken:登陆标识,最大32个字符。由app自动生成的唯一标识。与管理员登陆指令的“LoginToken”一致,否则将返回“Security/Error_Respon”错误。</para>
        /// </summary>
        public static async System.Threading.Tasks.Task<SetUserPasswordResponseAllData> SetPassWordTipsAsync(int userId, string password, string passWordTips, string loginToken)
        {
            return await System.Threading.Tasks.Task.Run(async () =>
            {
                SetUserPasswordResponseAllData d = null;
                var mainGateway = ZbGateway.MainGateWay;
                if (mainGateway == null)
                {
                    d = new SetUserPasswordResponseAllData { errorMessageBase = "当前没有主网关" };
                    return d;
                }
                Action<string, string> action = (topic, message) =>
                {
                    var gatewayID = topic.Split('/')[0];
                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
                    if (topic == gatewayID + "/" + "Error_Respon")
                    {
                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
                        if (temp == null)
                        {
                            d = new SetUserPasswordResponseAllData { errorMessageBase = "网关错误回复,且数据是空" };
                        }
                        else
                        {
                            d = new SetUserPasswordResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
                        }
                    }
                    if (topic == gatewayID + "/" + "Security/Error_Respon")
                    {
                        var securityTemp = new Safeguard() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.getGatewayBaseInfo.gwID };
                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
                        d = new SetUserPasswordResponseAllData { };
                        if (temp == null)
                        {
                            d.errorMessageBase = "网关错误回复,且数据是空";
                        }
                        else
                        {
                            if (temp.Error == 1)
                            {
                                d.errorMessageBase = "网关不是主网关,无法进行该操作。";
                            }
                            else if (temp.Error == 2)
                            {
                                d.errorMessageBase = "该操作需要安防管理员权限,需先以管理员身份进行登陆。";
                            }
                            d.errorResponData = temp;
                        }
                    }
                    if (topic == gatewayID + "/" + "Security/AddPassWordTips_Respon")
                    {
                        var security = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId };
                        var result = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
                        if (result == 0)
                        {
                            security.setUserPasswordResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<SetUserPasswordResponseData>(jobject["Data"].ToString());
                            if (security.setUserPasswordResponseData != null)
                            {
                                d = new SetUserPasswordResponseAllData { setUserPasswordResponseData = security.setUserPasswordResponseData };
                            }
                        }
                        else
                        {
                            d = new SetUserPasswordResponseAllData { };
                            var r = new SetUserPasswordResponseData();
                            r.Result = result;
                            d.setUserPasswordResponseData = r;
                        }
                    }
                };
                mainGateway.Actions += action;
                try
                {
                    var jObject = new Newtonsoft.Json.Linq.JObject() {
                                    { "Cluster_ID", 0 },
                                    { "Command", 4037}
                                };
                    var data = new JObject
                    {
                     { "UserId", userId  },
                     { "Password", password},
                     { "PassWordTips", passWordTips},
                     { "LoginToken", loginToken}
                    };
                    jObject.Add("Data", data);
                    mainGateway.Send("Security/AddPassWordTips", jObject.ToString());
                }
                catch
                {
                }
                var dateTime = DateTime.Now;
                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
                {
                    await System.Threading.Tasks.Task.Delay(10);
                    if (d != null)
                    {
                        break;
                    }
                }
                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
                {
                    d = new SetUserPasswordResponseAllData { errorMessageBase = " 回复超时,请重新操作" };
                }
                mainGateway.Actions -= action;
                return d;
            });
        }
        /// <summary>