gxc
2020-02-28 66a9965c44ecc32a6696abca876ab9d1cd091584
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSafeguardLogic.cs
@@ -56,18 +56,7 @@
        /// 安防数据缓存
        /// </summary>
        private Dictionary<int, SafeguardZoneInfo> dicAllZoneInfo = new Dictionary<int, SafeguardZoneInfo>();
        /// <summary>
        /// 安防上报信息
        /// </summary>
        public List<SafeguardAlarmInfo> listAlarmInfo = new List<SafeguardAlarmInfo>();
        /// <summary>
        /// 上一次安防上报信息保存的文件名字(考虑到用户有可能24点的时候,不退出APP)
        /// </summary>
        private string oldDeviceAlarmFile = string.Empty;
        /// <summary>
        /// 锁
        /// </summary>
        private object objLock = new object();
        #endregion
        #region ■ 刷新安防___________________________
@@ -188,7 +177,7 @@
            try
            {
                var jObject = new Newtonsoft.Json.Linq.JObject() { { "Cluster_ID", 0 }, { "Command", 4036 } };
                await mainGateway.Send("Security/GetSecurityInfo", jObject.ToString());
                mainGateway.Send("Security/GetSecurityInfo", jObject.ToString());
            }
            catch { }
@@ -969,13 +958,14 @@
        /// <summary>
        /// 修改用户密码(不存在时,则新建)
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="password"></param>
        /// <param name="userId">用户ID</param>
        /// <param name="password">密码</param>
        /// <param name="passWordTips">密码提示</param>
        /// <returns></returns>
        public async Task<bool> ChangedUserPassword(int userId, string password)
        public async Task<bool> ChangedUserPassword(int userId, string password, string passWordTips)
        {
            //创建新用户
            var result = await Safeguard.SetUserPasswordAsync(userId, password, this.GetLoginToken());
            var result = await Safeguard.SetUserPasswordAsync(userId, password, passWordTips, this.GetLoginToken());
            if (result == null || result.setUserPasswordResponseData == null)
            {
                if (userId != 5)
@@ -1067,6 +1057,37 @@
                }
            }
            return 0;
        }
        /// <summary>
        /// 添加密码的备注
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <param name="password">网关说需要原来的密码,也不知道为什么</param>
        /// <param name="passWordTips">密码备注</param>
        /// <returns></returns>
        public async Task<bool> AddPassWordTips(int userId, string password, string passWordTips)
        {
            var result = await Safeguard.SetPassWordTipsAsync(userId, password, passWordTips, this.GetLoginToken());
            if (result == null || result.setUserPasswordResponseData == null)
            {
                //修改备注信息失败
                string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
                //拼接上【网关回复超时】的Msg
                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
                this.ShowErrorMsg(msg);
                return false;
            }
            if (result.setUserPasswordResponseData.Result != 0)
            {
                //修改备注信息失败
                string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
                this.ShowErrorMsg(msg);
                return false;
            }
            return true;
        }
        #endregion
@@ -1387,6 +1408,13 @@
            {
                return GarrisonMode.None;
            }
            //判断有没有其他逻辑去修改了布防模式
            //所以再次获取模式
            var safetyMode = await this.GetSafetyMode();
            if (safetyMode != null)
            {
                return GarrisonMode.None;
            }
            //参数 
            var Pra = new Safeguard.EnableModeData();
@@ -1472,10 +1500,6 @@
                this.ShowErrorMsg(msg);
                return GarrisonMode.RemoveGarrison;
            }
            //保存布防操作信息到本地
            HdlAlarmsLogic.Current.SaveSafeguardAlarmInfo(garrison);
            return garrison;
        }
@@ -1576,13 +1600,6 @@
                this.ShowErrorMsg(msg);
                return -1;
            }
            if (garrison == GarrisonMode.RemoveGarrison)
            {
                //保存布防操作信息到本地
                HdlAlarmsLogic.Current.SaveSafeguardAlarmInfo(garrison);
            }
            return 1;
        }
@@ -1608,22 +1625,13 @@
        /// </summary>
        public async Task<string> ShowInputUserPasswordForm()
        {
            //获取当前正在激活的画面
            var form = UserCenterLogic.GetNowActionForm();
            if (form == null)
            {
                //这种情况应该不存在
                this.ShowErrorMsg("ERROR:Not Found The ActionForm!");
                return null;
            }
            DialogInputFrameControl Dialogform = null;
            NumberPswInputDialogForm Dialogform = null;
            bool isShowingProgressBar = false;
            string ProgressBarText = string.Empty;
            string pasword = null;
            Application.RunOnMainThread(() =>
            HdlThreadLogic.Current.RunMain(() =>
            {
                isShowingProgressBar = CommonPage.Loading.Visible;
                ProgressBarText = CommonPage.Loading.Text;
@@ -1633,23 +1641,14 @@
                    CommonPage.Loading.Hide();
                }
                Dialogform = new DialogInputFrameControl(form, DialogFrameMode.OnlyPassword);
                //用户密码
                Dialogform.SetTitleText(Language.StringByID(R.MyInternationalizationString.uUserPassword));
                //设置提示信息:请输入用户密码
                Dialogform.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputUserPassword));
                Dialogform = new NumberPswInputDialogForm();
                Dialogform.AddForm(Language.StringByID(R.MyInternationalizationString.uPleaseInputUserPassword), 4);
                //确认按钮
                Dialogform.ComfirmClickEvent += (() =>
                Dialogform.FinishInputEvent += ((textValue) =>
                {
                    if (Dialogform.InputText == string.Empty)
                    {
                        this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uPleaseInputUserPassword));
                        return;
                    }
                    Dialogform.CloseDialog();
                    Dialogform.CloseForm();
                    //用户密码
                    pasword = Dialogform.InputText;
                    pasword = textValue;
                    //加密密码
                    this.UserPassword = pasword;
                });
@@ -1842,36 +1841,66 @@
        /// <summary>
        /// 设置胁迫的联系人方式
        /// </summary>
        /// <param name="dicPhone">keys:联系方式 values:地区码</param>
        /// <param name="listPhone">地区码-联系方式</param>
        /// <param name="listNote">联系人备注</param>
        /// <param name="addPhone">是否是新建联系人,false的时候,只改备注</param>
        /// <returns></returns>
        public async Task<bool> SetCoercePhoneNumber(Dictionary<string, string> dicPhone)
        public async Task<bool> SetCoercePhoneNumber(List<string> listPhone, List<string> listNote, bool addPhone = true)
        {
            var Pra = new Safeguard.SetCoercePhoneNumberData();
            var Actonobj = new Safeguard.PushTargetActionObj();
            Actonobj.Type = 2;
            Pra.Actions.Add(Actonobj);
            Pra.LoginToken = this.GetLoginToken();
            foreach (string phoneNum in dicPhone.Keys)
            if (addPhone == true)
            {
                var phoneInfo = new Safeguard.PushTargetInfo();
                Actonobj.PushTarget.Add(phoneInfo);
                //电话号码
                phoneInfo.PushNumber = dicPhone[phoneNum] + "-" + phoneNum;
            }
                var Pra = new Safeguard.SetCoercePhoneNumberData();
                var Actonobj = new Safeguard.PushTargetActionObj();
                Actonobj.Type = 2;
                Pra.Actions.Add(Actonobj);
                Pra.LoginToken = this.GetLoginToken();
            var result = await Safeguard.SetCoercePhoneNumberAsync(Pra);
            if (result == null || result.setCoercePhoneNumberResponseData == null || result.setCoercePhoneNumberResponseData.Result != 0)
                for (int i = 0; i < listPhone.Count; i++)
                {
                    var phoneInfo = new Safeguard.PushTargetInfo();
                    Actonobj.PushTarget.Add(phoneInfo);
                    //电话号码
                    phoneInfo.PushNumber = listPhone[i];
                }
                var result = await Safeguard.SetCoercePhoneNumberAsync(Pra);
                if (result == null || result.setCoercePhoneNumberResponseData == null || result.setCoercePhoneNumberResponseData.Result != 0)
                {
                    //修改胁迫联系方式失败
                    string msg = Language.StringByID(R.MyInternationalizationString.uChangedCoercePhoneNumberFail);
                    //拼接上【网关回复超时】的Msg
                    msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
                    this.ShowErrorMsg(msg);
                    return false;
                }
            }
            for (int i = 0; i < listNote.Count; i++)
            {
                //修改胁迫联系方式失败
                string msg = Language.StringByID(R.MyInternationalizationString.uChangedCoercePhoneNumberFail);
                //拼接上【网关回复超时】的Msg
                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
                this.ShowErrorMsg(msg);
                return false;
                var result = await Safeguard.SetCoercePhoneNumberNoteAsync(listPhone[i], listNote[i]);
                if (result == null)
                {
                    //修改备注信息失败
                    string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
                    //拼接上【网关回复超时】的Msg
                    msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "回复超时");
                    this.ShowErrorMsg(msg);
                    return false;
                }
                if (result.Result == -2)
                {
                    //错误:网关对象丢失
                    string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
                    this.ShowErrorMsg(msg);
                    return false;
                }
                if (result.Result != 0)
                {
                    //修改备注信息失败
                    string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationFail);
                    this.ShowErrorMsg(msg);
                    return false;
                }
            }
            return true;
        }
@@ -1909,6 +1938,29 @@
            return true;
        }
        /// <summary>
        /// 给联系号码添加备注的信息
        /// </summary>
        private class AddPushNumberNoteInfo
        {
            /// <summary>
            /// 固定253
            /// </summary>
            public int ActionType = 253;
            /// <summary>
            /// LoginToken
            /// </summary>
            public string LoginToken = string.Empty;
            /// <summary>
            /// 地区码-联系方式
            /// </summary>
            public string PushNumber = string.Empty;
            /// <summary>
            /// 联系人号码备注,最大63byte
            /// </summary>
            public string PushNumberNote = string.Empty;
        }
        #endregion
        #region ■ 报警目标状态的翻译文本_____________
@@ -1920,7 +1972,7 @@
        /// <returns></returns>
        public string GetLightAlarmStatuText(List<Safeguard.TaskListInfo> listTaskInfo)
        {
            if (listTaskInfo == null)
            if (listTaskInfo == null || listTaskInfo.Count == 0)
            {
                //无动作
                return Language.StringByID(R.MyInternationalizationString.uNotAction);
@@ -2031,7 +2083,7 @@
                var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 4033 } };
                var data = new Newtonsoft.Json.Linq.JObject { { "HomeId", Common.Config.Instance.HomeId }, { "Password", password } };
                jObject.Add("Data", data);
                await realWay.Send("Security/AdminSetNewPassword", jObject.ToString());
                realWay.Send("Security/AdminSetNewPassword", jObject.ToString());
            }
            catch
            {
@@ -2169,10 +2221,11 @@
        /// 获取登陆者的Token(好像管理员登陆的时候,需要变更Token,所以暂且定义一个函数出来)
        /// </summary>
        /// <returns></returns>
        private string GetLoginToken()
        public string GetLoginToken()
        {
            //获取控制主人账号的Token
            return UserCenterLogic.GetConnectMainToken();
            //return UserCenterLogic.GetConnectMainToken();
            return Config.Instance.Token;
        }
        #endregion