黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
@@ -167,9 +167,9 @@
                            framBack.AddChidren(frameDate);
                            var btnDate = new NormalViewControl(500, 60, true);
                            btnDate.TextSize = 15;
                            btnDate.X = ControlCommonResourse.XXLeft;
                            btnDate.X = HdlControlResourse.XXLeft;
                            btnDate.Y = Application.GetRealHeight(35);
                            btnDate.Text = Convert.ToDateTime(listGroup[0][0].CreatedOnUtc).ToString("MM" + strMonth + "dd" + strDate);
                            btnDate.Text = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(listGroup[0][0].CreateTime).ToString("MM" + strMonth + "dd" + strDate);
                            frameDate.AddChidren(btnDate);
                        }
@@ -179,7 +179,7 @@
                            for (int j = 0; j < listData[i].listMsg.Count; j++)
                            {
                                //设置已读的初始值
                                listData[i].ListReading.Add(listData[i].IsReading);
                                listData[i].ListReading.Add(listData[i].IsRead);
                                //添加信息行
                                bool addLine = i != listData.Count - 1 || j != listData[i].listMsg.Count - 1;
                                this.AddMsgRowControl(framBack, listData[i], j, addLine);
@@ -229,7 +229,7 @@
        /// </summary>
        private void ShowBottomMenu()
        {
            bool authority = UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2;
            bool authority = HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.AuthorityNo == 2;
            var menuContr = new BottomMenuSelectForm();
            menuContr.AddForm(authority == true ? 2 : 1);
@@ -284,7 +284,7 @@
            var btnTime = rowControl.frameTable.AddMostRightView("", 200, 50);
            btnTime.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnTime.Y = btnMsg.Bottom + Application.GetRealHeight(12);
            var convertTime = UserCenterLogic.ConvertUtcTimeToLocalTime(recordInfo.CreatedOnUtc);
            var convertTime = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(recordInfo.CreateTime);
            btnTime.Text = convertTime.ToString("HH:mm");
            rowControl.frameTable.AddChidren(btnTime, ChidrenBindMode.BindEvent);
            //底线
@@ -316,7 +316,7 @@
            }
            //主要主人和管理员能够删除
            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
            if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.AuthorityNo == 2)
            {
                //删除
                var btnDelete = rowControl.AddDeleteControl();
@@ -332,7 +332,7 @@
            }
            //点击
            rowControl.frameTable.ButtonClickEvent += async (sender, e) =>
            rowControl.frameTable.ButtonClickEvent += (sender, e) =>
            {
                if (recordInfo.ListReading[msgIndex] == true)
                {
@@ -363,11 +363,7 @@
        /// <param name="strId"></param>
        private bool SetTickIsRead(string strId)
        {
            var pra = new MessageReadStatuPra();
            pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
            pra.Id = strId;
            var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/TagMessageMessageCenterItem", true, pra);
            return result;
            return HdlMessageLogic.Current.SetTickIsRead(strId);
        }
        /// <summary>
@@ -387,10 +383,8 @@
                    //打开进度条
                    this.ShowProgressBar();
                    var pra = new MessageReadStatuPra();
                    pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                    pra.TagAllOrClearType = 0;
                    var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/TagAllOrClearMessageCenter", true, pra);
                    var result = HdlMessageLogic.Current.SetAllTickIsRead();
                    //关闭进度条
                    this.CloseProgressBar();
                    if (result == false)
@@ -422,10 +416,7 @@
        /// <param name="rowContr"></param>
        private bool DeleteMsg(string strId, FrameListControl frameList, RowLayoutControl rowContr)
        {
            var pra = new MessageReadStatuPra();
            pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
            pra.Id = strId;
            var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/DelMessageCenterItem", true, pra);
            var result = HdlMessageLogic.Current.DeleteCloundMessage(strId);
            if (result == false)
            {
                return false;
@@ -462,10 +453,7 @@
                    //打开进度条
                    this.ShowProgressBar();
                    var pra = new MessageReadStatuPra();
                    pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                    pra.TagAllOrClearType = 1;
                    var result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/TagAllOrClearMessageCenter", true, pra);
                    var result = HdlMessageLogic.Current.DeleteAllCloundMessage();
                    if (result == false)
                    {
                        //关闭进度条
@@ -555,98 +543,30 @@
        private Dictionary<string, List<List<MessageRecordInfo>>> GetMessageData()
        {
            this.dicAllRow = new Dictionary<string, RowLayoutControl>();
            var allListData = new List<MessageRecordInfo>();
            var pra = new MessageInfoPra();
            pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
            //传感器上报
            pra.Topic = "/IASInfoReport";
            var dataInfo = this.GetMessageDataFromDb(pra);
            if (dataInfo == null)
            {
                return null;
            }
            allListData.AddRange(dataInfo);
            //门锁上报
            pra.Topic = "/Alarms/SendAlarmInform";
            dataInfo = this.GetMessageDataFromDb(pra);
            if (dataInfo == null)
            {
                return null;
            }
            allListData.AddRange(dataInfo);
            //撤防
            pra.Topic = "/Security/WithdrawMode_Respon";
            dataInfo = this.GetMessageDataFromDb(pra);
            if (dataInfo == null)
            {
                return null;
            }
            allListData.AddRange(dataInfo);
            //布防
            pra.Topic = "/Security/EnableMode_Respon";
            dataInfo = this.GetMessageDataFromDb(pra);
            if (dataInfo == null)
            {
                return null;
            }
            allListData.AddRange(dataInfo);
            //逻辑触发上报
            pra.Topic = "/Logic/Execute_Respon";
            dataInfo = this.GetMessageDataFromDb(pra);
            if (dataInfo == null)
            {
                return null;
            }
            allListData.AddRange(dataInfo);
            //场景触发上报
            pra.Topic = "/Scene/Exec_Respon";
            dataInfo = this.GetMessageDataFromDb(pra);
            if (dataInfo == null)
            {
                return null;
            }
            allListData.AddRange(dataInfo);
            //合并数据
            return this.MergeMessageRecordData(allListData);
        }
        /// <summary>
        /// 从云端获取数据
        /// </summary>
        /// <param name="pra"></param>
        /// <returns></returns>
        private List<MessageRecordInfo> GetMessageDataFromDb(MessageInfoPra pra)
        {
            var result = UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra);
            if (string.IsNullOrEmpty(result) == true)
            {
                return null;
            }
            var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<MessageCentetInfo>(result);
            var listData = new List<MessageRecordInfo>();
            for (int i = 0; i < dataInfo.PageData.Count; i++)
            var listMsg = HdlMessageLogic.Current.GetListMessageFromDb();
            if (listMsg == null)
            {
                return new Dictionary<string, List<List<MessageRecordInfo>>>();
            }
            for (int i = 0; i < listMsg.Count; i++)
            {
                try
                {
                    var data = dataInfo.PageData[i];
                    var data = listMsg[i];
                    //处理消息类型
                    this.AdjustMsgContent(ref data);
                    listData.Add(data);
                    if (this.AdjustMsgContent(ref data) == true)
                    {
                        listData.Add(data);
                    }
                }
                catch { continue; }
            }
            return listData;
            //合并数据
            return this.MergeMessageRecordData(listData);
        }
        /// <summary>
@@ -663,12 +583,12 @@
            var listSortKeys = new List<string>();
            foreach (var data in dataInfo)
            {
                if (dicTemp.ContainsKey(data.CreatedOnUtc) == false)
                if (dicTemp.ContainsKey(data.CreateTime) == false)
                {
                    dicTemp[data.CreatedOnUtc] = new List<MessageRecordInfo>();
                    listSortKeys.Add(data.CreatedOnUtc);
                    dicTemp[data.CreateTime] = new List<MessageRecordInfo>();
                    listSortKeys.Add(data.CreateTime);
                }
                dicTemp[data.CreatedOnUtc].Add(data);
                dicTemp[data.CreateTime].Add(data);
            }
            listSortKeys.Sort();
@@ -678,30 +598,30 @@
                var listData = dicTemp[listSortKeys[i]];
                foreach (var data2 in listData)
                {
                    if (data2.Topic == "/DoorLock/DoorLockOperatingEventNotificationCommand")
                    try
                    {
                        //暂时不处理这个主题
                        continue;
                        if (data2.MessageTitle == "/DoorLock/DoorLockOperatingEventNotificationCommand")
                        {
                            //暂时不处理这个主题
                            continue;
                        }
                        string strDay = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(data2.CreateTime).ToString("yyyy/MM/dd");
                        //按每天分组
                        if (dicData.ContainsKey(strDay) == false)
                        {
                            listGroup = new List<MessageRecordInfo>();
                            dicData[strDay] = new List<List<MessageRecordInfo>>();
                            dicData[strDay].Add(listGroup);
                        }
                        if (listGroup.Count > 20)
                        {
                            //每20个一组
                            listGroup = new List<MessageRecordInfo>();
                            dicData[strDay].Add(listGroup);
                        }
                        listGroup.Add(data2);
                    }
                    string[] myArry = data2.CreatedOnUtc.Split(new string[] { "T" }, StringSplitOptions.RemoveEmptyEntries);
                    if (myArry.Length != 2)
                    {
                        continue;
                    }
                    string dicKeys = myArry[0];//日期
                    if (dicData.ContainsKey(dicKeys) == false)
                    {
                        listGroup = new List<MessageRecordInfo>();
                        dicData[dicKeys] = new List<List<MessageRecordInfo>>();
                        dicData[dicKeys].Add(listGroup);
                    }
                    if (listGroup.Count > 20)
                    {
                        //每20个一组
                        listGroup = new List<MessageRecordInfo>();
                        dicData[dicKeys].Add(listGroup);
                    }
                    listGroup.Add(data2);
                    catch { }
                }
            }
            return dicData;
@@ -715,39 +635,50 @@
        /// 处理消息类型
        /// </summary>
        /// <param name="recordInfo">消息数据</param>
        private void AdjustMsgContent(ref MessageRecordInfo recordInfo)
        private bool AdjustMsgContent(ref MessageRecordInfo recordInfo)
        {
            var jobject = JObject.Parse(recordInfo.PayloadJson);
            //传感器上报
            if (recordInfo.Topic == "/IASInfoReport")
            if (recordInfo.MessageTitle == "/IASInfoReport")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.SensorDeviceReportPush(jobject, ref recordInfo);
            }
            //门锁上报
            else if (recordInfo.Topic == "/Alarms/SendAlarmInform")
            else if (recordInfo.MessageTitle == "/Alarms/SendAlarmInform")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.DoorLockDeviceReportPush(jobject, ref recordInfo);
            }
            //撤防
            else if (recordInfo.Topic == "/Security/WithdrawMode_Respon")
            else if (recordInfo.MessageTitle == "/Security/WithdrawMode_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.RemoveSafetyGarrisonPush(jobject, ref recordInfo);
            }
            //布防
            else if (recordInfo.Topic == "/Security/EnableMode_Respon")
            else if (recordInfo.MessageTitle == "/Security/EnableMode_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.SetSafetyGarrisonPush(jobject, ref recordInfo);
            }
            //逻辑触发上报
            else if (recordInfo.Topic == "/Logic/Execute_Respon")
            else if (recordInfo.MessageTitle == "/Logic/Execute_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.LogicExecutePush(jobject, ref recordInfo);
            }
            //场景触发上报
            else if (recordInfo.Topic == "/Scene/Exec_Respon")
            else if (recordInfo.MessageTitle == "/Scene/Exec_Respon")
            {
                var jobject = JObject.Parse(recordInfo.MessageExpand);
                this.SceneExecPush(jobject, ref recordInfo);
            }
            else
            {
                //不处理的主题
                return false;
            }
            return true;
        }
        #endregion
@@ -763,21 +694,22 @@
            var ias = new IASZone() { DeviceAddr = receiveData.Value<string>("DeviceAddr"), DeviceEpoint = receiveData.Value<int>("Epoint") };
            ias.iASInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.IASInfoData>(receiveData["Data"].ToString());
            //图标
            var localDevice = Common.LocalDevice.Current.GetDevice(ias.DeviceAddr, ias.DeviceEpoint);
            var localDevice = HdlDeviceCommonLogic.Current.GetDevice(ias.DeviceAddr, ias.DeviceEpoint);
            if (localDevice == null)
            {
                recordInfo.IconPath = "Device/Sensor.png";
                //消息类型:传感器
                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uDeviceBelongId1200);
                var infoContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo("A402");
                recordInfo.MsgObjectText = infoContent != null ? infoContent.A官方名字 : string.Empty;
            }
            else
            {
                string selectPath = string.Empty;
                string unselecPath = string.Empty;
                Common.LocalDevice.Current.GetDeviceIcon(localDevice, ref unselecPath, ref selectPath);
                HdlDeviceCommonLogic.Current.GetDeviceIcon(localDevice, ref unselecPath, ref selectPath);
                recordInfo.IconPath = unselecPath;
                //消息类型
                recordInfo.MsgObjectText = Common.LocalDevice.Current.GetDeviceEpointName(localDevice);
                recordInfo.MsgObjectText = HdlDeviceCommonLogic.Current.GetDeviceEpointName(localDevice);
            }
            //消息
@@ -821,21 +753,22 @@
        private void DoorLockDeviceReportPush(JObject receiveData, ref MessageRecordInfo recordInfo)
        {
            //图标
            var device = Common.LocalDevice.Current.GetDevice(receiveData.Value<string>("DeviceAddr"), receiveData.Value<int>("Epoint"));
            var device = HdlDeviceCommonLogic.Current.GetDevice(receiveData.Value<string>("DeviceAddr"), receiveData.Value<int>("Epoint"));
            if (device == null)
            {
                recordInfo.IconPath = "Device/IntelligentLocks.png";
                //消息类型:智能门锁
                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uDeviceBelongId2800);
                var infoContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo("A405");
                recordInfo.MsgObjectText = infoContent != null ? infoContent.A官方名字 : string.Empty;
            }
            else
            {
                string selectPath = string.Empty;
                string unselecPath = string.Empty;
                Common.LocalDevice.Current.GetDeviceIcon(device, ref unselecPath, ref selectPath);
                HdlDeviceCommonLogic.Current.GetDeviceIcon(device, ref unselecPath, ref selectPath);
                recordInfo.IconPath = unselecPath;
                //消息类型
                recordInfo.MsgObjectText = Common.LocalDevice.Current.GetDeviceEpointName(device);
                recordInfo.MsgObjectText = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
            }
            //消息
            var msgInfo = HdlAlarmsLogic.Current.GetDoorLockAlarmInfo(receiveData);