黄学彪
2020-09-23 c0ce2f57a4f836ebeb9e7b8b4b5a4407fd78dc86
上传
12个文件已修改
395 ■■■■ 已修改文件
ZigbeeApp/GateWay.Droid/Assets/DeviceName.ini 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Language.ini 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/CommonPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/CommonForm/EditorCommonForm.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlACZbGatewayUpdateLogic.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/ACZbGatewayModuleUpdateForm.cs 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionDirectoryListForm.cs 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionSearchAllFile.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListMainForm.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/R.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/DeviceName.ini
@@ -139,9 +139,9 @@
;模块ID=DeviceConcreteType的值 / 设备的官方名字 / 设备默认备注名字 / DeviceBeloneType的值 /设备所属种类的名字 / 设备类型名字
;智能门锁(H06C)〆
H06C = 2800 / S-one 智能门锁 / H06C 智能门锁 / 2800 / 门锁 / 智能门锁
H06C = 2800 / H06C 智能门锁 / H06C 智能门锁 / 2800 / 门锁 / 智能门锁
;智能门锁(S-one)〆
S-one = 2802 / H06C 智能门锁 / S-one 智能门锁 / 2800 / 门锁 / 智能门锁
S-one = 2802 / S-one 智能门锁 / S-one 智能门锁 / 2800 / 门锁 / 智能门锁
;***************************************************************
;                           空调设备
ZigbeeApp/GateWay.Droid/Assets/Language.ini
@@ -2039,6 +2039,7 @@
16164=过户成功
16165=过户失败
16166=恭喜{0}成为「{1}」管理员
16167=检测到还没有备份,请先备份
;★★★★下面这些是接口的返回信息翻译,从18000开始★★★★
18004=指定网关已经被绑定
ZigbeeApp/Shared/Common/CommonPage.cs
@@ -42,7 +42,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string CodeIDString = "1.1.0120092101";
        public static string CodeIDString = "1.1.0120092301";
        /// <summary>
        /// 注册来源(0:HDL On 1:Zigbee)
        /// </summary>
ZigbeeApp/Shared/Phone/CommonForm/EditorCommonForm.cs
@@ -330,6 +330,44 @@
        #endregion
        #region ■ 显示弹窗输入界面___________________
        /// <summary>
        /// <para>显示一个Dialog的弹窗输入界面,它不会自动关闭,需要手动关闭</para>
        /// <para>.CloseDialog()为关闭弹窗</para>
        /// <para>如果输入框的内容为空,并且设置有【i_TipText】,则不会调用回调函数,并且提示【i_TipText】的内容</para>
        /// </summary>
        /// <param name="i_TitleText">弹窗的标题信息</param>
        /// <param name="i_InputText">输入框初始化值(忽略请设置为null)</param>
        /// <param name="i_TipText">输入框灰色字体说明(忽略请设置为null)</param>
        /// <param name="i_ComfirmClickEvent">确认按钮事件</param>
        /// <returns></returns>
        public void ShowDialogInputForm(string i_TitleText, string i_InputText, string i_TipText, Action<DialogInputControl, string> i_ComfirmClickEvent)
        {
            //生成一个弹窗画面
            var dialogForm = new DialogInputControl();
            //标题
            dialogForm.SetTitleText(i_TitleText);
            //输入框灰色字体说明
            if (i_TipText != null)
            {
                dialogForm.SetTipText(i_TipText);
            }
            //输入框初始值
            if (i_InputText != null)
            {
                dialogForm.Text = i_InputText;
            }
            //按下确认按钮
            dialogForm.ComfirmClickEvent += ((textValue) =>
            {
                i_ComfirmClickEvent?.Invoke(dialogForm, textValue);
            });
        }
        #endregion
        #region ■ 显示没有数据的图像显示特效_________
        /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs
@@ -507,7 +507,7 @@
    public class FirmwareVersionInfo
    {
        /// <summary>
        /// 云端上面的那个名字
        /// 云端上面的那个名字,如果是本地空调的模块时,它为全路径
        /// </summary>
        public string Name = string.Empty;
        /// <summary>
@@ -535,7 +535,7 @@
        /// </summary>
        public string HardwareVersion = string.Empty;
        /// <summary>
        /// 镜像类型
        /// 镜像类型(当等于-100时,代表它是空调的本地模块)
        /// </summary>
        public string ImagType = string.Empty;
        /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlACZbGatewayUpdateLogic.cs
@@ -172,8 +172,16 @@
            await System.Threading.Tasks.Task.Delay(1000);
            //下载固件资源
            var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = this.deviceFirmware.DistributedMark };
            this.deviceFirmwareByte = Common.CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(pra)));
            if (this.deviceFirmware.ImagType != "-100")
            {
                var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = this.deviceFirmware.DistributedMark };
                this.deviceFirmwareByte = Common.CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(pra)));
            }
            else
            {
                //取本地模板
                this.deviceFirmwareByte = HdlFileLogic.Current.ReadFileByteContent(this.deviceFirmware.Name);
            }
            if (this.deviceFirmwareByte == null)
            {
                //设备固件资源下载失败
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlFirmwareUpdateLogic.cs
@@ -445,7 +445,11 @@
            //获取需要下载的固件数据
            var listVersion = GetNeedToDownLoadVersionData(listTempDevice, listTempGateway);
            if (listVersion.Count == 0)
            //获取需要下载的空调模块
            var listAcOta = new List<OTADevice>();
            var listAcUpdate = GetNeedDownLoadAirConditionerModule(listTempDevice, ref listAcOta);
            if (listVersion.Count == 0 && listAcUpdate.Count == 0)
            {
                return 0;
            }
@@ -468,6 +472,8 @@
            //固件存储路径
            string firmwareDir = DirNameResourse.FirmwareUpdateDirectory;
            int nowCount = 0;
            int macCount = listVersion.Count + listAcUpdate.Count;
            foreach (var versionData in listVersion)
            {
                nowCount++;
@@ -476,6 +482,8 @@
                if (result == -1)
                {
                    ProgressFormBar.Current.Close();
                    //保存列表名字
                    HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName);
                    return -1;
                }
                //获取当前这个版本的固件信息
@@ -483,15 +491,17 @@
                if (versionFirmware == null)
                {
                    //云端没有这个版本  进度值
                    ProgressFormBar.Current.SetValue(nowCount, listVersion.Count);
                    ProgressFormBar.Current.SetValue(nowCount, macCount);
                    continue;
                }
                //去下载这个固件
                var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = versionFirmware.DistributedMark };
                var byteData = UserCenterLogic.GetByteResponseDataByRequestHttps("FirmwareMana/DownloadPlatformUploadFirmware", false, pra, null, true);
                var byteData = UserCenterLogic.GetByteResponseDataByRequestHttps("FirmwareMana/DownloadPlatformUploadFirmware", false, pra, new List<string> { "NotCheck" }, true);
                if (byteData == null)
                {
                    ProgressFormBar.Current.Close();
                    //保存列表名字
                    HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName);
                    return -1;
                }
                //保存固件
@@ -500,8 +510,29 @@
                dicFirmwareName[saveFile] = versionFirmware.Name;
                //进度值
                ProgressFormBar.Current.SetValue(nowCount, listVersion.Count);
                ProgressFormBar.Current.SetValue(nowCount, macCount);
            }
            for (int i = 0; i < listAcUpdate.Count; i++)
            {
                //下载空调模块
                var pra = new { RequestVersion = Common.CommonPage.RequestVersion, DistributedMark = listAcUpdate[i].DistributedMark };
                var deviceFirmwareByte = UserCenterLogic.GetByteResponseDataByRequestHttps("FirmwareMana/DownloadPlatformUploadFirmware", false, pra, new List<string> { "NotCheck" }, true);
                if (deviceFirmwareByte == null)
                {
                    ProgressFormBar.Current.Close();
                    //保存列表名字
                    HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName);
                    return -1;
                }
                //保存固件
                string fileName = "AC_" + listAcOta[i].HwVersion + "_" + listAcOta[i].ImgTypeId + "_" + listAcUpdate[i].Name;
                var saveFile = System.IO.Path.Combine(firmwareDir, fileName);
                HdlFileLogic.Current.SaveByteToFile(saveFile, deviceFirmwareByte);
                //进度值
                ProgressFormBar.Current.SetValue(nowCount, macCount);
            }
            //保存列表名字
            HdlFileLogic.Current.SaveFileContent(DirNameResourse.FirmwareUpdateList, dicFirmwareName);
            ProgressFormBar.Current.Close();
@@ -601,6 +632,39 @@
        }
        /// <summary>
        /// 获取需要下载的空调模块
        /// </summary>
        /// <param name="listDevice">设备列表</param>
        /// <param name="listTaget">与返回值对应的东西</param>
        private static List<FirmwareVersionInfo> GetNeedDownLoadAirConditionerModule(List<OTADevice> listDevice, ref List<OTADevice> listTaget)
        {
            var listUpdate = new List<FirmwareVersionInfo>();
            //固件存储路径
            string firmwareDir = DirNameResourse.FirmwareUpdateDirectory;
            foreach (var otaDevice in listDevice)
            {
                var myType = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice> { otaDevice });
                if (myType.ConcreteType != Common.DeviceConcreteType.AirConditioner_ZbGateway)
                {
                    //只处理中央空调
                    continue;
                }
                var list = GetFirmwareVersionListInfo(FirmwareLevelType.A设备, otaDevice.HwVersion.ToString(), otaDevice.ImgTypeId.ToString());
                foreach (var data in list)
                {
                    if (data.Name.EndsWith(".bin") == true && System.IO.File.Exists(firmwareDir) == false)
                    {
                        //只要.bin文件
                        listUpdate.Add(data);
                        listTaget.Add(otaDevice);
                    }
                }
            }
            return listUpdate;
        }
        /// <summary>
        /// 模板设备的版本信息
        /// </summary>
        private class TemplateDeviceVersion
ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/ACZbGatewayModuleUpdateForm.cs
@@ -77,16 +77,7 @@
        /// </summary>
        private void InitAirConditioningModuleList(VerticalListControl listView)
        {
            var list = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.A设备, otaDevice.HwVersion.ToString(), otaDevice.ImgTypeId.ToString());
            var listUpdate = new List<FirmwareVersionInfo>();
            foreach (var data in list)
            {
                if (data.Name.EndsWith(".bin") == true)
                {
                    //只要.bin文件
                    listUpdate.Add(data);
                }
            }
            var listUpdate = this.GetAirConditioningModuleData();
            if (listUpdate.Count == 0)
            {
                //没有可升级的空调模块
@@ -130,7 +121,7 @@
        /// <param name="listView"></param>
        /// <param name="info"></param>
        /// <param name="mainkeys"></param>
        private void AddModuleRow(VerticalListControl listView, FirmwareVersionInfo info, string mainkeys,bool addLine)
        private void AddModuleRow(VerticalListControl listView, FirmwareVersionInfo info, string mainkeys, bool addLine)
        {
            //获取空调模块的名字
            string textView = this.GetAirConditioningModuleName(info);
@@ -214,6 +205,47 @@
        #endregion
        #region ■ 获取空调模块数据___________________
        /// <summary>
        /// 获取空调模块数据
        /// </summary>
        /// <returns></returns>
        private List<FirmwareVersionInfo> GetAirConditioningModuleData()
        {
            var listUpdate = new List<FirmwareVersionInfo>();
            var list = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.A设备, otaDevice.HwVersion.ToString(), otaDevice.ImgTypeId.ToString());
            foreach (var data in list)
            {
                if (data.Name.EndsWith(".bin") == true)
                {
                    //只要.bin文件
                    listUpdate.Add(data);
                }
            }
            if (Common.Config.Instance.Home.TemplateMode == 2 && listUpdate.Count == 0)
            {
                //从本地获取
                var listFile = HdlFileLogic.Current.GetFileFromDirectory(DirNameResourse.FirmwareUpdateDirectory);
                string otaKey = otaDevice.HwVersion.ToString() + "_" + otaDevice.ImgTypeId.ToString();
                foreach (var file in listFile)
                {
                    if (file.StartsWith("AC_" + otaKey) == true && file.EndsWith(".bin") == true)
                    {
                        var info = new FirmwareVersionInfo();
                        info.Name = System.IO.Path.Combine(DirNameResourse.FirmwareUpdateDirectory, file);
                        info.ImagType = "-100";
                        listUpdate.Add(info);
                    }
                }
            }
            return listUpdate;
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionDirectoryListForm.cs
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.IO;
using System.Text;
namespace Shared.Phone.UserCenter.HideOption
@@ -66,10 +66,10 @@
            {
                var form = new HideOptionSearchAllFile();
                form.AddForm(Common.Config.Instance.FullPath);
            };
            };
#if iOS
            //查看全部文件
            //查看全部文件
            var row0 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row0);
            row0.AddLeftCaption("IOS图片", 800);
@@ -79,47 +79,47 @@
            row0.ButtonClickEvent += (sender, e) =>
            {
                string fileName = "Item/Add.png";
                if (File.Exists(Path.Combine(Application.RootPath, fileName)))
                {
                    var form = new HideOptionSearchAllFile();
                    form.AddForm(Application.RootPath);
                    return;
                }
                string dirPath = string.Empty;
                if (Application.Skin != null)
                {
                    dirPath = Application.Skin + "/" + fileName;
                    if (File.Exists(Path.Combine(Application.RootPath, dirPath)))
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(Path.Combine(Application.RootPath, Application.Skin + "/"));
                        return;
                    }
                    string text2 = Foundation.NSBundle.MainBundle.PathForResource(dirPath, null);
                    if (text2 != null)
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(text2.Replace(dirPath, string.Empty));
                        return;
                    }
                }
                else
                {
                    dirPath = "Phone/" + fileName;
                    if (File.Exists(Path.Combine(Application.RootPath, dirPath)))
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(Path.Combine(Application.RootPath, "Phone/"));
                        return;
                    }
                    string text2 = Foundation.NSBundle.MainBundle.PathForResource(dirPath, null);
                    if (text2 != null)
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(text2.Replace(dirPath, string.Empty));
                        return;
                    }
                if (File.Exists(Path.Combine(Application.RootPath, fileName)))
                {
                    var form = new HideOptionSearchAllFile();
                    form.AddForm(Application.RootPath);
                    return;
                }
                string dirPath = string.Empty;
                if (Application.Skin != null)
                {
                    dirPath = Application.Skin + "/" + fileName;
                    if (File.Exists(Path.Combine(Application.RootPath, dirPath)))
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(Path.Combine(Application.RootPath, Application.Skin + "/"));
                        return;
                    }
                    string text2 = Foundation.NSBundle.MainBundle.PathForResource(dirPath, null);
                    if (text2 != null)
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(text2.Replace(dirPath, string.Empty));
                        return;
                    }
                }
                else
                {
                    dirPath = "Phone/" + fileName;
                    if (File.Exists(Path.Combine(Application.RootPath, dirPath)))
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(Path.Combine(Application.RootPath, "Phone/"));
                        return;
                    }
                    string text2 = Foundation.NSBundle.MainBundle.PathForResource(dirPath, null);
                    if (text2 != null)
                    {
                        var form = new HideOptionSearchAllFile();
                        form.AddForm(text2.Replace(dirPath, string.Empty));
                        return;
                    }
                }
            };
#endif
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionSearchAllFile.cs
@@ -65,7 +65,7 @@
                    nextDir += Arry[i] + "/";
                }
                //初始化中部信息
                this.InitMiddleFrame(nextDir.Trim('/'));
                this.InitMiddleFrame(nextDir);
            };
        }
@@ -89,23 +89,16 @@
            //}
            //else
            {
                try
                {
                    var files = System.IO.Directory.GetDirectories(directory);
                    foreach (var file in files)
                    {
                        string[] arry = file.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                        listDirectory.Add(arry[arry.Length - 1]);
                    }
                    listDirectory.Sort();
                    listAllFile = HdlFileLogic.Current.GetFileFromDirectory(directory.TrimEnd('/'));
                    listAllFile.Sort();
                var files = System.IO.Directory.GetDirectories(directory);
                foreach (var file in files)
                {
                    string[] arry = file.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                    listDirectory.Add(arry[arry.Length - 1]);
                }
                catch
                {
                    this.ShowMassage(ShowMsgType.Tip, "读取文件夹内容失败");
                }
                listDirectory.Sort();
                listAllFile = HdlFileLogic.Current.GetFileFromDirectory(directory.TrimEnd('/'));
                listAllFile.Sort();
            }
            var listView = new VerticalListControl(23);
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListMainForm.cs
@@ -258,11 +258,11 @@
                btnTransfer.TextID = R.MyInternationalizationString.uTransfer;
                btnTransfer.ButtonClickEvent += (sender, e) =>
                {
                    rowLayout.HideMenu();
                    HdlCheckLogic.Current.CheckSecondarySecurity(() =>
                    {
                        //验证成功
                        var form = new Transfer.TransferResidenceMainForm();
                        form.AddForm(1);
                        //执行过户操作
                        this.DoTransferResidence();
                    },
                    () =>
                    {
@@ -576,6 +576,85 @@
        #endregion
        #region ■ 过户_______________________________
        /// <summary>
        /// 执行过户操作
        /// </summary>
        private void DoTransferResidence()
        {
            this.ShowProgressBar();
            HdlThreadLogic.Current.RunThread(() =>
            {
                //检测它有没有备份
                var listBack = HdlBackupLogic.Current.GetBackupListNameFromDB();
                this.CloseProgressBar();
                if (listBack == null)
                {
                    return;
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    if (listBack.Count > 0)
                    {
                        var form = new Transfer.TransferResidenceMainForm();
                        form.AddForm(1);
                    }
                    else
                    {
                        //检测到还没有备份,请先备份
                        this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uIsNotHadBackupByCheckPleaseBackup));
                        //生成一个弹窗画面
                        this.ShowDialogInputForm(Language.StringByID(R.MyInternationalizationString.uAddBackup),
                         Config.Instance.Home.Name,
                         Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackupName), (dialogForm, textValue) =>
                         {
                             //画面关闭
                             dialogForm.CloseDialog();
                             HdlThreadLogic.Current.RunThread(() =>
                             {
                                 //创建一个备份名字
                                 string backupClassId = HdlBackupLogic.Current.CreatNewBackupNameToDB(textValue);
                                 if (backupClassId == null)
                                 {
                                     //创建备份名字失败
                                     string msg = Language.StringByID(R.MyInternationalizationString.uCreatBackupNameFail);
                                     this.ShowMassage(ShowMsgType.Error, msg);
                                     return;
                                 }
                                 //上传数据到云端
                                 bool result = HdlBackupLogic.Current.UpLoadBackupFileToDB(backupClassId);
                                 if (result == false)
                                 {
                                     //文件上传失败
                                     string msg = Language.StringByID(R.MyInternationalizationString.uFileUpLoadFail);
                                     this.ShowMassage(ShowMsgType.Error, msg);
                                     //如果上传失败的话,就把它删除
                                     HdlBackupLogic.Current.DeleteDbBackupData(backupClassId);
                                     return;
                                 }
                                 HdlThreadLogic.Current.RunMain(() =>
                                 {
                                     var form = new Transfer.TransferResidenceMainForm();
                                     form.AddForm(1);
                                 });
                             });
                         });
                    }
                });
            });
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
ZigbeeApp/Shared/R.cs
@@ -6479,7 +6479,11 @@
        /// <summary>
        /// 恭喜XXXXX成为「NNNNN」管理员
        /// </summary>
        public const int uCongratulationsXXBecomingNNAdministrator = 16166;
        public const int uCongratulationsXXBecomingNNAdministrator = 16166;
        /// <summary>
        /// 检测到还没有备份,请先备份
        /// </summary>
        public const int uIsNotHadBackupByCheckPleaseBackup = 16167;
        //★★★★下面这些是接口的返回信息翻译,从18000开始★★★★