Files
Web_CRICS_Server_VS2010_Prod/CommonEntity/TCLToken.cs

159 lines
6.2 KiB
C#
Raw Normal View History

2025-12-11 09:17:16 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RestSharp;
using Common;
using System.Configuration;
namespace CommonEntity
{
public class TCLToken
{
public int errno { get; set; }
public string errmsg { get; set; }
public TCLTokenData data { get; set; }
}
public class TCLTokenData
{
public string access_token { get; set; }
public long expires_in { get; set; }
public long deadline { get; set; }
public string refresh_token { get; set; }
}
public class TCLCommon
{
public static string TCLLoginUrl = ConfigurationManager.AppSettings["TCLLoginUrl"];
public static string TCLAppId = ConfigurationManager.AppSettings["TCLAppId"];
public static string TCLAppSecret = ConfigurationManager.AppSettings["TCLAppSecret"];
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(TCLCommon));
/// <summary>
/// 获取TCL Token
/// </summary>
public static void GetTCLTV_Token()
{
try
{
var client1 = new RestClient(TCLLoginUrl);
var request1 = new RestRequest("oauth/token", Method.GET);
request1.AddParameter("app_id", TCLAppId);
request1.AddParameter("app_secret", TCLAppSecret);
var QQQ = client1.Execute(request1);
string ddd = QQQ.Content;
var FFFA = Newtonsoft.Json.JsonConvert.DeserializeObject<TCLToken>(ddd);
string TokenKey = CacheKey.TCLToken;
CSRedisCacheHelper.Set_Partition<TCLToken>(TokenKey, FFFA, 1);
}
catch (Exception ex)
{
logger.Error("TCL Token Error" + ex.Message);
}
}
/// <summary>
/// 给TCL发送数据
/// </summary>
/// <param name="CUID"></param>
/// <param name="skillid"></param>
/// <param name="sceneCode"></param>
/// <param name="count"></param>
public static void SendData(string hotelcode, string roomnum, string CUID, string skillid, string sceneCode, int count = 0)
{
try
{
string ID = Guid.NewGuid().ToString("N");
string ti = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
Dictionary<string, string> dicg = new Dictionary<string, string>();
dicg.Add("Step", "1");
dicg.Add("HotelCode", hotelcode);
dicg.Add("RoomNumber", roomnum);
dicg.Add("RequestTime", roomnum);
dicg.Add("CmdType", sceneCode);
dicg.Add("RequestId", ID);
var dic1 = new Dictionary<string, string>();
dic1.Add("cuid", roomnum);
dic1.Add("sceneCode", sceneCode);
dic1.Add("botId", skillid);
logger.Error("TCL send data");
string TokenKey = CacheKey.TCLToken;
var T = CSRedisCacheHelper.Get_Partition<TCLToken>(TokenKey, 1);
if (T != null)
{
logger.Equals("TCL Token是" + T.data.access_token);
dic1.Add("token", T.data.access_token);
var jsondic = Newtonsoft.Json.JsonConvert.SerializeObject(dic1);
dicg.Add("RequestCmd", jsondic);
//LogRecorrd.WebAPI_DataSend(dicg, "api/tcl_tv");
Interface3Log w1 = new Interface3Log();
w1.HotelCode = hotelcode;
w1.RoomNumber = roomnum;
w1.TriggerTime = DateTime.Now;
w1.ActionData = new HttpActionData() { RequestData = Newtonsoft.Json.JsonConvert.SerializeObject(dicg) };
w1.CommandType = ChangLiangValue.TCL;
var q1 = Newtonsoft.Json.JsonConvert.SerializeObject(w1);
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, q1);
var client1 = new RestClient(TCLLoginUrl);
var request1 = new RestRequest("open/countercontrol/scene_trigger", Method.POST);
request1.AddHeader("Authorization", "Bearer " + T.data.access_token);
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("cuid", CUID);
dic.Add("sceneCode", sceneCode);
dic.Add("botId", skillid);
request1.AddJsonBody(dic);
var QQQ = client1.Execute(request1);
string ddd = QQQ.Content;
//string ti1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
//Dictionary<string, string> dicg1 = new Dictionary<string, string>();
//dicg1.Add("HotelCode", hotelcode);
//dicg1.Add("RoomNumber", roomnum);
//dicg1.Add("RequestId", ID);
//dicg1.Add("ResponseMsg", ddd);
//dicg1.Add("ResponseTime", ti1);
//LogRecorrd.WebAPI_DataSend(dicg1, "api/tcl_tv");
logger.Error("TCL 电视触发了 情景。返回数据为:" + ddd);
Interface3Log ww = new Interface3Log();
ww.HotelCode = hotelcode;
ww.RoomNumber = roomnum;
ww.TriggerTime = DateTime.Now;
ww.ActionData = new HttpActionData() { ResponseData = ddd };
ww.CommandType = ChangLiangValue.TCL;
var qq = Newtonsoft.Json.JsonConvert.SerializeObject(ww);
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, qq);
}
else
{
logger.Equals("TCL Token 为空");
if (count == 0)
{
GetTCLTV_Token();
count = count + 1;
SendData(hotelcode, roomnum, CUID, skillid, sceneCode, count++);
}
}
}
catch (Exception ex)
{
logger.Error("TCL SenData" + ex.Message);
}
}
}
}