168 lines
5.8 KiB
C#
168 lines
5.8 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using Newtonsoft.Json;
|
|||
|
|
using System.Web.Routing;
|
|||
|
|
|
|||
|
|
namespace Common
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// FreeGo对接
|
|||
|
|
/// </summary>
|
|||
|
|
public static class FreeGoOperation
|
|||
|
|
{
|
|||
|
|
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(FreeGoOperation));
|
|||
|
|
|
|||
|
|
private static string freego_url = System.Configuration.ConfigurationManager.AppSettings["freego_url"];
|
|||
|
|
private static string freego_codes = System.Configuration.ConfigurationManager.AppSettings["freego_codes"];
|
|||
|
|
private static string freego_appid = System.Configuration.ConfigurationManager.AppSettings["freego_appid"];
|
|||
|
|
private static string freego_appsecret = System.Configuration.ConfigurationManager.AppSettings["freego_appsecret"];
|
|||
|
|
/// <summary>
|
|||
|
|
/// 调用freego获取设备密钥等信息
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="mac">主机mac地址,如34-D0-00-00-00-01格式</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static DeviceRegisterResult DeviceRegister(string mac)
|
|||
|
|
{
|
|||
|
|
string deviceName = mac.Replace("-", "").ToUpper();
|
|||
|
|
DeviceRegisterPostData postData = new DeviceRegisterPostData()
|
|||
|
|
{
|
|||
|
|
appid = freego_appid,
|
|||
|
|
timestamp = TimeHelper.DateTimeToStamp(DateTime.Now).ToString(),
|
|||
|
|
nonce_str = Guid.NewGuid().ToString(),
|
|||
|
|
device_name = deviceName
|
|||
|
|
};
|
|||
|
|
var dic = new RouteValueDictionary();
|
|||
|
|
dic["appid"] = postData.appid;
|
|||
|
|
dic["timestamp"] = postData.timestamp;
|
|||
|
|
dic["nonce_str"] = postData.nonce_str;
|
|||
|
|
dic["device_name"] = postData.device_name;
|
|||
|
|
postData.sign = HttpWebRequestHelper.GetFreeGoSignature(dic, freego_appsecret);
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
string result = HttpWebRequestHelper.PostWebRequest(freego_url, Newtonsoft.Json.JsonConvert.SerializeObject(postData));
|
|||
|
|
return JsonConvert.DeserializeObject<DeviceRegisterResult>(result);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
logger.Error("调用FreeGo接口失败:" + ex.ToString());
|
|||
|
|
return new DeviceRegisterResult() { errcode = "-1", msg = ex.Message }; ;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 给FreeGo(福瑞狗)上报SOS和DND状态
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="hotelCode"></param>
|
|||
|
|
/// <param name="roomNumber"></param>
|
|||
|
|
/// <param name="key"></param>
|
|||
|
|
/// <param name="value"></param>
|
|||
|
|
public static void UploadService(string hotelCode, string roomNumber, string key, string value)
|
|||
|
|
{
|
|||
|
|
foreach (string freego_code in freego_codes.Split(','))
|
|||
|
|
{
|
|||
|
|
if (freego_code == hotelCode)
|
|||
|
|
{
|
|||
|
|
UploadServicePostData postData = new UploadServicePostData()
|
|||
|
|
{
|
|||
|
|
appid = freego_appid,
|
|||
|
|
appsecret = freego_appsecret,
|
|||
|
|
code = freego_code,
|
|||
|
|
room_number = roomNumber,
|
|||
|
|
timestamp = TimeHelper.DateTimeToStamp(DateTime.Now).ToString(),
|
|||
|
|
key = key,
|
|||
|
|
value = value
|
|||
|
|
};
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
HttpWebRequestHelper.PostWebRequest(freego_url, Newtonsoft.Json.JsonConvert.SerializeObject(postData));
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
logger.Error("调用FreeGo接口失败:" + ex.ToString());
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
internal class DeviceRegisterPostData
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 分配的请求id
|
|||
|
|
/// </summary>
|
|||
|
|
public string appid { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 当前unix时间戳
|
|||
|
|
/// </summary>
|
|||
|
|
public string timestamp { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 随机字符串
|
|||
|
|
/// </summary>
|
|||
|
|
public string nonce_str { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 设备名称
|
|||
|
|
/// </summary>
|
|||
|
|
public string device_name { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 签名
|
|||
|
|
/// </summary>
|
|||
|
|
public string sign { get; set; }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class DeviceRegisterResult
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 错误代码,0表示成功
|
|||
|
|
/// </summary>
|
|||
|
|
public string errcode { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 设备名称
|
|||
|
|
/// </summary>
|
|||
|
|
public string device_name { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 设备密钥
|
|||
|
|
/// </summary>
|
|||
|
|
public string device_secret { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 阿里云物联网id
|
|||
|
|
/// </summary>
|
|||
|
|
public string iot_id { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 产品key
|
|||
|
|
/// </summary>
|
|||
|
|
public string product_key { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 错误信息
|
|||
|
|
/// </summary>
|
|||
|
|
public string msg { get; set; }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
internal class UploadServicePostData
|
|||
|
|
{
|
|||
|
|
public string appid { get; set; }
|
|||
|
|
public string appsecret { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 酒店编码
|
|||
|
|
/// </summary>
|
|||
|
|
public string code { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 房号
|
|||
|
|
/// </summary>
|
|||
|
|
public string room_number { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 当前unix时间戳
|
|||
|
|
/// </summary>
|
|||
|
|
public string timestamp { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// SOS/DND
|
|||
|
|
/// </summary>
|
|||
|
|
public string key { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// 当前服务值
|
|||
|
|
/// </summary>
|
|||
|
|
public string value { get; set; }
|
|||
|
|
}
|
|||
|
|
}
|