wxr
2022-09-26 418b0d0a4002bc06ba3a55d1809fe46043f06c09
HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -6,22 +6,23 @@
using System.Text;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using Newtonsoft.Json.Linq;
using Shared;
namespace HDL_ON.UI.Music
{
    public class SendMethod
    {
        private static SendMethod sMethod = null;
        public static SendMethod mMethod
        private static SendMethod s_Current = null;
        public static SendMethod Current
        {
            get
            {
                if (sMethod == null)
                if (s_Current == null)
                {
                    sMethod = new SendMethod();
                    s_Current = new SendMethod();
                }
                return sMethod;
                return s_Current;
            }
        }
@@ -44,12 +45,11 @@
        {
            new System.Threading.Thread(() =>
            {
                DriverLayer.Control.Ins.SendWriteCommand(function, dic,false,0);
                DriverLayer.Control.Ins.SendWriteCommand(function, dic, false, 0);
            })
            { IsBackground = true }.Start();
        }
        //记录歌曲播放时间
        private int songPlayTime = -1;
        /// <summary>
        /// 获取设备最新的状态
        /// </summary>
@@ -60,7 +60,7 @@
            {
                //RefreshDeviceStatus(functionIds);
                //a31Music.LastDateTime = DateTime.Now;
                ///从缓存里面查找音乐播放器对象<缓存数据收到推送过来的状态会更新缓存数据>
                ///从缓存里面查找音乐播放器对象<收到推送过来的状态会更新缓存数据>
                var allLocalFuntion = FunctionList.List.GetDeviceFunctionList();
                var localFunction = allLocalFuntion.Find((obj) => obj.sid == sid);
                if (localFunction == null)
@@ -69,13 +69,6 @@
                }
                ///更新的数据
                a31Music.functionMusic = localFunction;
                if (int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(UI2.FuntionControlView.Music.KeyProperty.playing_time)) != songPlayTime)
                {
                    ///歌曲记录时间和当前时间不一样,立即更新数据反馈时间
                    a31Music.LastDateTime = DateTime.Now;
                    ///歌曲记录时间和当前时间不一样,立即更新歌曲播放时间
                    songPlayTime = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(UI2.FuntionControlView.Music.KeyProperty.playing_time));
                }
            }
            catch { }
@@ -92,12 +85,11 @@
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("deviceIds", functionIds);
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_RefreshDeviceStatus);
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_RefreshDeviceStatus, "刷新设备状态");
                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                {
                    return;
                }
            }
            catch { }
        }
@@ -129,7 +121,7 @@
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("deviceIds", new List<string> { music.deviceId });
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList);
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList, "获取音乐列表");
                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                {
                    return;
@@ -139,7 +131,7 @@
                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
                if (palyLists == null)
                {
                    palyLists = new List<PalyListInfo>();
                    palyLists =new List<PalyListInfo>();
                }
                if (palyLists.Count > 0)
                {
@@ -152,16 +144,96 @@
            }
        }
        /// <summary>
        /// 获取列表名列表
        /// </summary>
        /// <param name="music"></param>
        /// <returns></returns>
        public List<GroupList> GetListName(Function music)
        {
            try
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);
                d.Add("deviceIds", new List<string> { music.deviceId });
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_GroupList, "获取列表名列表");
                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                {
                    return new List<GroupList>();
                }
                //数据返序列化为Function对象
                var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data);
                var groupLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupList>>(str);
                if (groupLists == null)
                {
                    groupLists = new List<GroupList>();
                }
                return groupLists;
            }
            catch
            {
                return new List<GroupList>();
            }
        }
        /// <summary>
        /// 获取列表音乐
        /// </summary>
        /// <param name="music"></param>
        /// <param name="listName">列表名</param>
        /// <returns></returns>
        public PalyList GetListMusic(Function music, string listName)
        {
            try
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                Dictionary<string, object> d1 = new Dictionary<string, object>();
                Dictionary<string, object> d2 = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);
                d2.Add("group", listName);
                d1.Add("sid", music.sid);
                d1.Add("groupList", new List<Dictionary<string, object>> { d2 });
                d.Add("sidGroups", new List<Dictionary<string, object>> { d1 });
                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_GroupPlayerList, "获取列表音乐");
                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                {
                    return new PalyList();
                }
                //数据返序列化为Function对象
                var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data);
                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
                if (palyLists == null)
                {
                    palyLists = new List<PalyListInfo>();
                }
                if (palyLists.Count == 0)
                {
                    return new PalyList();
                }
                //默认第一个列表里面第一个音乐列表
                return palyLists[0].playlist.Count > 0 ? palyLists[0].playlist[0] : new PalyList();
            }
            catch
            {
                return new PalyList();
            }
        }
        /// <summary>
        ///请求服务器(与住宅有关:例如;homeId) 
        /// </summary>
        /// <param name="o">发送数据</param>
        /// <param name="api_Url">请求地址(不是绝对地址)</param>
        /// <param name="tag">标记->描述接口(自定义)</param>
        /// <returns></returns>
        public ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 5)
        public ResponsePackNew RequestServerhomeId(object o, string api_Url, string tag, int mTimeout = 5)
        {
            var requestJson = HttpUtil.GetSignRequestJson(o);
            return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
            JObject jobject = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(o));
            return UI2.Intelligence.Automation.Send.Current.RequestServerhomeId(jobject, api_Url, tag, mTimeout);
        }
    }
}