mac
2023-11-06 ffd628ec7a69778387681b6aebcbb3713d3aab51
2023年11月06日16:57:19

app启动读取自动化列表
4个文件已修改
327 ■■■■■ 已修改文件
HDL_ON/Common/ApiUtlis.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/ApiUtlis.cs
@@ -535,11 +535,12 @@
                        //======================安防====================
                        GetSecurityList();
                        //===================读取逻辑列表==========================
                        Logic.LogicList.Clear();//主页下拉强制刷新自动化列表
                        MainView.GetLogicList();//读取自动化列表
                    })
                    { IsBackground = true }.Start();
                    //===================读取逻辑列表==========================
                    Logic.LogicList.Clear();//主页下拉强制刷新自动化列表
                    //======================注册推送====================
                    httpRequest.RegisteredPush();
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -1080,18 +1080,17 @@
                //不是主账号直接返回
                return;
            }
            List<LogicData> logicDataList = new List<LogicData>();
            List<LogicIdData> logicDataList = new List<LogicIdData>();
            logicDataList.Clear();
            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    //获取逻辑ID列表,目前针对所有<备注:如果只针对当前手机的话,可以直接拿缓存数据自动化列表遍历>
                    var idStr = Send.Current.GetLogicIdList();
                    if (idStr != null)
                    var idStrList = Send.Current.GetLogicIdList();
                    if (idStrList != null)
                    {
                        var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data);
                        logicDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date);
                        logicDataList.AddRange(idStrList);
                    }
                    ///有自动列表才处理
                    if (logicDataList.Count > 0)
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -17,119 +17,152 @@
        /// </summary>
        public static void MainShow()
        {
            automationPage.RemoveAll();
            VerticalRefreshLayout vv = new VerticalRefreshLayout();
            vv.Height = Application.GetRealHeight(667 - 64 - 49);//模拟高度
            automationPage.AddChidren(vv);
            vv.BeginHeaderRefreshingAction += () =>
            System.Threading.Tasks.Task.Run(() =>
            {
                //清除之前自动化列表;
                Logic.LogicList.Clear();
                //获取自动列表
                GetLogicList();
                //刷新自动化界面
                MainShow();
                //关闭刷新View;
                vv.EndHeaderRefreshing();
            };
            //获取自动化列表
            GetLogicList();
            for (int i = Logic.LogicList.Count - 1; i >= 0; i--)//降序排列
            //for (int i = 0; i < Logic.LogicList.Count; i++)
            {
                var currLogic = Logic.LogicList[i];
                ///上下间隔12像素
                vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) });
                LogicView.SingleLogicView logicView = new LogicView.SingleLogicView();
                vv.AddChidren(logicView.FLayoutView());
                logicView.btnLogicName.Text = currLogic.name;
                logicView.btnWeekText.Text = GetCyclicText(currLogic);
                logicView.btnclick.MouseUpEventHandler += (sen, e) =>
                try
                {
                    //Logic.currlogic = currLogic;
                    //var addLogic = new AddLogic();
                    //MainPage.BasePageView.AddChidren(addLogic);
                    //addLogic.Show();
                    //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    new MainView { }.SkipAddLogicPage(currLogic);
                };
                //开关图标的点击事件
                logicView.btnSwitchIcon.MouseUpEventHandler += (sender1, e1) =>
                    //获取自动化列表
                    GetLogicList();
                }
                catch { }
                finally
                {
                    logicView.btnSwitchIcon.IsSelected = !logicView.btnSwitchIcon.IsSelected;
                    if (logicView.btnSwitchIcon.IsSelected)
                    Application.RunOnMainThread(() =>
                    {
                        logicView.btnSwitchIcon.IsSelected = true;
                        currLogic.enable = "true";
                    }
                    else
                    {
                        logicView.btnSwitchIcon.IsSelected = false;
                        currLogic.enable = "false";
                    }
                    new System.Threading.Thread(() =>
                    {
                        try
                        automationPage.RemoveAll();
                        VerticalRefreshLayout vv = new VerticalRefreshLayout();
                        vv.Height = Application.GetRealHeight(667 - 64 - 49);//模拟高度
                        automationPage.AddChidren(vv);
                        vv.BeginHeaderRefreshingAction += () =>
                        {
                            //逻辑使能的命令
                            Send.Current.EnableLogic(currLogic);
                            System.Threading.Tasks.Task.Run(() =>
                            {
                                try
                                {
                                    //强制更新自动化列表;
                                    Logic.LogicList.Clear();
                                    //获取自动化列表
                                    GetLogicList();
                                }
                                catch { }
                                finally
                                {
                                    Application.RunOnMainThread(() =>
                                    {
                                        //刷新自动化界面
                                        MainShow();
                                        //关闭刷新View;
                                        vv.EndHeaderRefreshing();
                                    });
                                }
                            });
                        };
                        for (int i = Logic.LogicList.Count - 1; i >= 0; i--)//降序排列
                        {
                            var currLogic = Logic.LogicList[i];
                            ///上下间隔12像素
                            vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) });
                            LogicView.SingleLogicView logicView = new LogicView.SingleLogicView();
                            vv.AddChidren(logicView.FLayoutView());
                            logicView.btnLogicName.Text = currLogic.name;
                            logicView.btnWeekText.Text = GetCyclicText(currLogic);
                            logicView.btnclick.MouseUpEventHandler += (sen, e) =>
                            {
                                //Logic.currlogic = currLogic;
                                //var addLogic = new AddLogic();
                                //MainPage.BasePageView.AddChidren(addLogic);
                                //addLogic.Show();
                                //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                new MainView { }.SkipAddLogicPage(currLogic);
                            };
                            //开关图标的点击事件
                            logicView.btnSwitchIcon.MouseUpEventHandler += (sender1, e1) =>
                            {
                                logicView.btnSwitchIcon.IsSelected = !logicView.btnSwitchIcon.IsSelected;
                                if (logicView.btnSwitchIcon.IsSelected)
                                {
                                    logicView.btnSwitchIcon.IsSelected = true;
                                    currLogic.enable = "true";
                                }
                                else
                                {
                                    logicView.btnSwitchIcon.IsSelected = false;
                                    currLogic.enable = "false";
                                }
                                new System.Threading.Thread(() =>
                                {
                                    try
                                    {
                                        //逻辑使能的命令
                                        Send.Current.EnableLogic(currLogic);
                                    }
                                    catch { }
                                })
                                { IsBackground = true }.Start();
                            };
                            GetSelectIcon(logicView.frameLayout, currLogic);
                            if (i == 0)//降序排列
                            {
                                ///最后一个距离最底部12,界面显示效果作用;
                                vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(20) });
                            }
                            if (currLogic.enable == "true")
                            {
                                logicView.btnSwitchIcon.IsSelected = true;
                            }
                            else
                            {
                                logicView.btnSwitchIcon.IsSelected = false;
                            }
                            ///显示特殊自动化标志
                            if (currLogic.tag == true)
                            {
                                logicView.btnIsDelTag.Visible = true;
                            }
                            else
                            {
                                logicView.btnIsDelTag.Visible = false;
                            }
                        }
                        catch { }
                    })
                    { IsBackground = true }.Start();
                };
                        if (Logic.LogicList.Count == 0)
                        {
                            Button btnTipNot = new Button()
                            {
                                Gravity = Gravity.CenterHorizontal,
                                Y = Application.GetRealHeight(120),
                                Width = Application.GetRealWidth(180),
                                Height = Application.GetRealWidth(180),
                                UnSelectedImagePath = "TipNot.png",
                            };
                            automationPage.AddChidren(btnTipNot);
                            Button btnTipNotText = new Button()
                            {
                                Y = btnTipNot.Bottom + Application.GetRealHeight(16),
                                Height = Application.GetRealHeight(20),
                                TextID = StringId.logicnull,
                                TextAlignment = TextAlignment.Center,
                                TextSize = LogicView.TextSize.text14,
                                TextColor = CSS.CSS_Color.textConfirmColor,
                            };
                            automationPage.AddChidren(btnTipNotText);
                        }
                    });
                }
            });
                GetSelectIcon(logicView.frameLayout, currLogic);
                if (i == 0)//降序排列
                //if (Logic.LogicList.Count - 1 == i)
                {
                    ///最后一个距离最底部12,界面显示效果作用;
                    vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) });
                }
                if (currLogic.enable == "true")
                {
                    logicView.btnSwitchIcon.IsSelected = true;
                }
                else
                {
                    logicView.btnSwitchIcon.IsSelected = false;
                }
                ///显示特殊自动化标志
                if (currLogic.tag == true)
                {
                    logicView.btnIsDelTag.Visible = true;
                }
                else
                {
                    logicView.btnIsDelTag.Visible = false;
                }
            }
            if (Logic.LogicList.Count == 0)
            {
                Button btnTipNot = new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Y = Application.GetRealHeight(120),
                    Width = Application.GetRealWidth(180),
                    Height = Application.GetRealWidth(180),
                    UnSelectedImagePath = "TipNot.png",
                };
                automationPage.AddChidren(btnTipNot);
                Button btnTipNotText = new Button()
                {
                    Y = btnTipNot.Bottom + Application.GetRealHeight(16),
                    Height = Application.GetRealHeight(20),
                    TextID = StringId.logicnull,
                    TextAlignment = TextAlignment.Center,
                    TextSize = LogicView.TextSize.text14,
                    TextColor = CSS.CSS_Color.textConfirmColor,
                };
                automationPage.AddChidren(btnTipNotText);
            }
        }
        /// <summary>
        ///  按+跳转到逻辑界面的方法
@@ -265,13 +298,11 @@
                //自动化列表为0才去获取自动化列表;
                return;
            }
            List<string> logicIdList = new List<string>();
            var logicIdList = new List<string>();
            //获取逻辑ID列表
            var idStr = Send.Current.GetLogicIdList();
            if (idStr != null)
            var dateList = Send.Current.GetLogicIdList();
            if (dateList != null)
            {
                var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data);
                var dateList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date);
                for (int i = 0; i < dateList.Count; i++)
                {
                    //添加逻辑ID
@@ -279,16 +310,15 @@
                }
            }
            //获取自动化列表
            var logicListStr = Send.Current.GetLogic(logicIdList);
            if (logicListStr != null)
            var logicList = Send.Current.GetLogic(logicIdList);
            if (logicList != null)
            {
                var logicList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Logic>>(logicListStr.Data.ToString());
                for (int j = 0; j < logicList.Count; j++)
                {
                    var logic = logicList[j];
                    if (logic != null)
                    {
                        //查找是否已经存在该逻辑
                        //去重
                        var if_logic = Logic.LogicList.Find((c) => c.userLogicId == logic.userLogicId);
                        if (if_logic == null)
                        {
@@ -574,8 +604,8 @@
                return false;
            }
        }
    }
    class LogicData
    }
   public class LogicIdData
    {
        /// <summary>
        /// 云端唯一id
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -47,7 +47,7 @@
        /// 获取逻辑ID列表
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetLogicIdList(bool isTip = false)
        public List<LogicIdData> GetLogicIdList(bool isTip = false)
        {
            var jObject = new JObject { { "homeId", LogicMethod.Current.HomeId } };
            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_List, "获取逻辑ID列表");
@@ -61,14 +61,15 @@
            {
                return null;
            }
            return responsePackNew;
            var dateList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicIdData>>(responsePackNew.Data.ToString());
            return dateList;
        }
        /// <summary>
        /// 获取自动化详情
        /// </summary>
        /// <param name="listIdList">自动化ID列表</param>
        /// <returns></returns>
        public  ResponsePackNew GetLogic(List<string> listIdList, bool isTip = false)
        public  ResponsePackNew GetLogic1(List<string> listIdList, bool isTip = false)
        {
            var jArray = new JArray { };
            for (int i = 0; i < listIdList.Count; i++)
@@ -89,6 +90,35 @@
            }
            return responsePackNew;
        }
        /// <summary>
        /// 获取自动化详情
        /// </summary>
        /// <param name="listIdList">自动化ID列表</param>
        /// <returns></returns>
        public List<Logic> GetLogic(List<string> listIdList, bool isTip = false)
        {
            var jArray = new JArray { };
            for (int i = 0; i < listIdList.Count; i++)
            {
                jArray.Add(listIdList[i]);
            }
            var jObject = new JObject { { "userLogicIds", jArray } };
            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Info, "获取自动化详情");
            //如果是token过期则刷新token
            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
            {
                RefreshToken();
                GetLogic(listIdList, isTip);
            }
            if (Check(responsePackNew, isTip) == false)
            {
                return null;
            }
            var logicList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Logic>>(responsePackNew.Data.ToString());
            return logicList;
        }
        /// <summary>
        /// 添加自动化命令 
        /// </summary>
@@ -581,21 +611,18 @@
        /// <returns></returns>
        public bool Check(ResponsePackNew r, bool isTip)
        {
            if (r == null)
            {
                r = new ResponsePackNew { message = "没回复,请确认网络是否正常.", Code = "-1", };
            }
            if (r.Code == "0" && r.Data != null && r.Data.ToString() != "")
            {
                return true;
            }
            if (r.Code != "0")
            //失败时是否要提示
            if (isTip)
            {
                //失败时是否要提示
                if (isTip)
                {
                    if (r == null)
                    {
                        r = new ResponsePackNew { message = "没回复,请确认网络是否正常.", Code = "-1", };
                    }
                    new LogicView.TipPopView().FlashingBox(r.message + $"({r.Code})");
                }
                new LogicView.TipPopView().FlashingBox(r.message + $"({r.Code})");
            }
            return false;
        }