初始化CRICS
This commit is contained in:
473
CommonEntity/FCS.cs
Normal file
473
CommonEntity/FCS.cs
Normal file
@@ -0,0 +1,473 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Configuration;
|
||||
using RestSharp;
|
||||
using System.Net;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Common;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CommonEntity
|
||||
{
|
||||
public class User
|
||||
{
|
||||
public string username { get; set; }
|
||||
public string password { get; set; }
|
||||
public int oauth_id { get; set; }
|
||||
}
|
||||
public class FCS_ReturnInfo
|
||||
{
|
||||
public int success { get; set; }
|
||||
public FCS_ReturnData data { get; set; }
|
||||
}
|
||||
// {"success": 1, "data": true, "rmsg": {"code": "s_job_orders", "param": ["JO-0001970-01"]}}
|
||||
public class FCS_JobResponse
|
||||
{
|
||||
public int success { get; set; }
|
||||
public bool data { get; set; }
|
||||
//"rmsg":
|
||||
//[
|
||||
//{
|
||||
// "code": "s_user_not_found",
|
||||
// "param": []
|
||||
//}
|
||||
//]
|
||||
public List<FCSJobResponseData> rmsg { get; set; }
|
||||
|
||||
}
|
||||
public class FCSJobResponseData
|
||||
{
|
||||
public string code { get; set; }
|
||||
public List<string> param { get; set; }
|
||||
}
|
||||
public class FCS_ReturnData
|
||||
{
|
||||
public bool is_authenticated { get; set; }
|
||||
public string access_token { get; set; }
|
||||
public string refresh_token { get; set; }
|
||||
public bool show_password_expire { get; set; }
|
||||
public string password_expired_date { get; set; }
|
||||
public bool password_expired { get; set; }
|
||||
public bool valid_license_access { get; set; }
|
||||
public bool require_reset { get; set; }
|
||||
public string property_config { get; set; }
|
||||
public string show_pp { get; set; }
|
||||
public int oauth_id { get; set; }
|
||||
public bool is_ip_valid { get; set; }
|
||||
public bool is_support_aliyun { get; set; }
|
||||
}
|
||||
|
||||
public class FCS_JobRequest
|
||||
{
|
||||
public List<string> location_uuid { get; set; }
|
||||
public List<FCS_service_items> service_items { get; set; }
|
||||
public string remark { get; set; }
|
||||
public string assigned_to { get; set; }
|
||||
public int user_type { get; set; }
|
||||
public bool get_details { get; set; }
|
||||
}
|
||||
public class FCS_service_items
|
||||
{
|
||||
public string item_uuid { get; set; }
|
||||
public int quantity { get; set; }
|
||||
}
|
||||
public struct FCS_OrderData
|
||||
{
|
||||
public string LocationUUID { get; set; }
|
||||
public string ItemUUID { get; set; }
|
||||
public string PropertyID { get; set; }
|
||||
public string ItemType { get; set; }
|
||||
public string OrderUUID { get; set; }
|
||||
public string OrderNo { get; set; }
|
||||
public string HotelCode { get; set; }
|
||||
public string RoomNUMBER { get; set; }
|
||||
public string HostNUMBER { get; set; }
|
||||
}
|
||||
public class FCS_Response
|
||||
{
|
||||
public int success { get; set; }
|
||||
public List<FCS_R_DataItem> data { get; set; }
|
||||
public RMSG rmsg { get; set; }
|
||||
}
|
||||
public class FCS_R_DataItem
|
||||
{
|
||||
public string job_no { get; set; }
|
||||
public string job_status_colour { get; set; }
|
||||
public string job_uuid { get; set; }
|
||||
}
|
||||
public class RMSG
|
||||
{
|
||||
public string code { get; set; }
|
||||
public List<string> param { get; set; }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询 类
|
||||
/// </summary>
|
||||
public class QueryFCSOrder
|
||||
{
|
||||
public string filter { get; set; }
|
||||
public OrderQueryItem column_filter { get; set; }
|
||||
}
|
||||
public class OrderQueryItem
|
||||
{
|
||||
public string field { get; set; }
|
||||
public List<string> value { get; set; }
|
||||
}
|
||||
|
||||
public class QueryOrderResponse
|
||||
{
|
||||
public string success { get; set; }
|
||||
public List<Dictionary<string, string>> data { get; set; }
|
||||
public object[] rmsg { get; set; }
|
||||
}
|
||||
|
||||
public class RR
|
||||
{
|
||||
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(RR));
|
||||
private static void SSLXieYi()
|
||||
{
|
||||
//ssl 协议不兼容
|
||||
var A = (SecurityProtocolType)48;
|
||||
var B = (SecurityProtocolType)192;
|
||||
var C = (SecurityProtocolType)768;
|
||||
var D = (SecurityProtocolType)3072;
|
||||
var E = (SecurityProtocolType)12288;
|
||||
ServicePointManager.SecurityProtocol = A | B | C | D | E;
|
||||
}
|
||||
public static void Login(string FCSLoginUrl, string FCSLoginUserName, string FCSLoginPassWord, string HotelCode, string RoomNum)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
SSLXieYi();
|
||||
|
||||
var client1 = new RestClient(FCSLoginUrl);
|
||||
var request1 = new RestRequest("/api/security/authenticate", Method.POST);
|
||||
|
||||
Dictionary<string, string> dic = new Dictionary<string, string>();
|
||||
User us = new User();
|
||||
us.username = FCSLoginUserName;
|
||||
us.password = FCSLoginPassWord;
|
||||
us.oauth_id = 1;
|
||||
request1.AddJsonBody(us);
|
||||
|
||||
|
||||
Interface3Log w1 = new Interface3Log();
|
||||
w1.HotelCode = HotelCode;
|
||||
w1.RoomNumber = RoomNum;
|
||||
w1.TriggerTime = DateTime.Now;
|
||||
w1.ActionData = new HttpActionData() { RequestData = Newtonsoft.Json.JsonConvert.SerializeObject(dic) };
|
||||
w1.CommandType = ChangLiangValue.CommandType_FCS;
|
||||
|
||||
var q1 = Newtonsoft.Json.JsonConvert.SerializeObject(w1);
|
||||
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, q1);
|
||||
|
||||
var QQQ = client1.Execute(request1);
|
||||
HttpStatusCode HHH = QQQ.StatusCode;
|
||||
if (HHH == HttpStatusCode.Created || HHH == HttpStatusCode.OK)
|
||||
{
|
||||
string ddd = QQQ.Content;
|
||||
|
||||
Interface3Log w2 = new Interface3Log();
|
||||
w2.HotelCode = HotelCode;
|
||||
w2.RoomNumber = RoomNum;
|
||||
w2.TriggerTime = DateTime.Now;
|
||||
w2.ActionData = new HttpActionData() { ResponseData = ddd };
|
||||
w2.CommandType = ChangLiangValue.CommandType_FCS;
|
||||
|
||||
var q2 = Newtonsoft.Json.JsonConvert.SerializeObject(w2);
|
||||
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, q2);
|
||||
|
||||
var FFFA = Newtonsoft.Json.JsonConvert.DeserializeObject<FCS_ReturnInfo>(ddd);
|
||||
|
||||
string TokenKey = CacheKey.FCSToken;
|
||||
CSRedisCacheHelper.Set_Partition(TokenKey, FFFA, 1);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error("FCS Login Error" + ex.Message);
|
||||
logger.Error(ex.StackTrace);
|
||||
}
|
||||
|
||||
//client1.ExecuteAsync(request1, (response) =>
|
||||
//{
|
||||
// Console.WriteLine(response.Content);
|
||||
//});
|
||||
}
|
||||
|
||||
|
||||
public static void JobRequest(string AccessToken, string location_uuid, string item_uuid, string FCSLoginUrl, string UserName, string PassWord, string PropertyID, string code, string roomno, string remarkdata, string itemclass)
|
||||
{
|
||||
if (string.IsNullOrEmpty(item_uuid))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
SSLXieYi();
|
||||
|
||||
var client1 = new RestClient(FCSLoginUrl);
|
||||
var request1 = new RestRequest("/api-secure/job/request", Method.POST);
|
||||
|
||||
FCS_JobRequest fff = new FCS_JobRequest();
|
||||
fff.location_uuid = new List<string>() { location_uuid };
|
||||
fff.service_items = new List<FCS_service_items>()
|
||||
{
|
||||
new FCS_service_items()
|
||||
{
|
||||
item_uuid=item_uuid,
|
||||
quantity=1
|
||||
}
|
||||
};
|
||||
fff.remark = remarkdata;
|
||||
fff.assigned_to = "auto";
|
||||
fff.user_type = 1;
|
||||
fff.get_details = true;
|
||||
|
||||
|
||||
string WER = Newtonsoft.Json.JsonConvert.SerializeObject(fff);
|
||||
|
||||
logger.Error("push data is " + WER);
|
||||
logger.Error("push token is " + AccessToken);
|
||||
request1.AddHeader("token", AccessToken);
|
||||
//下面这个是个定值
|
||||
request1.AddHeader("property", PropertyID);
|
||||
request1.AddParameter("payload", WER);
|
||||
|
||||
Interface3Log w1 = new Interface3Log();
|
||||
w1.HotelCode = code;
|
||||
w1.RoomNumber = roomno;
|
||||
w1.TriggerTime = DateTime.Now;
|
||||
w1.ActionData = new HttpActionData() { RequestData = Newtonsoft.Json.JsonConvert.SerializeObject(WER) };
|
||||
w1.CommandType = ChangLiangValue.CommandType_FCS;
|
||||
|
||||
var q1 = Newtonsoft.Json.JsonConvert.SerializeObject(w1);
|
||||
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, q1);
|
||||
|
||||
client1.ExecuteAsync(request1, (QQQ) =>
|
||||
{
|
||||
HttpStatusCode HHH = QQQ.StatusCode;
|
||||
|
||||
string FHS = QQQ.Content;
|
||||
|
||||
Interface3Log w2 = new Interface3Log();
|
||||
w2.HotelCode = code;
|
||||
w2.RoomNumber = roomno;
|
||||
w2.TriggerTime = DateTime.Now;
|
||||
w2.ActionData = new HttpActionData() { ResponseData = FHS };
|
||||
w2.CommandType = ChangLiangValue.CommandType_FCS;
|
||||
|
||||
var q2 = Newtonsoft.Json.JsonConvert.SerializeObject(w2);
|
||||
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, q2);
|
||||
|
||||
//{
|
||||
// "success": 1,
|
||||
// "data": [
|
||||
// {
|
||||
// "job_no": "JO-0004548-01",
|
||||
// "job_status_colour": "#FA8C16",
|
||||
// "job_uuid": "b1dcb088-6dbc-4ca5-a1c4-0a8b951113fd"
|
||||
// }
|
||||
// ],
|
||||
// "rmsg": {
|
||||
// "code": "s_job_orders",
|
||||
// "param": [
|
||||
// "JO-0004548-01"
|
||||
// ]
|
||||
// }
|
||||
//}
|
||||
logger.Error("PushData 返回值为:" + FHS);
|
||||
logger.Error("PushData Status:" + HHH.ToString());
|
||||
if (string.IsNullOrEmpty(FHS))
|
||||
{
|
||||
return;
|
||||
}
|
||||
JObject jsonObject = JObject.Parse(FHS);
|
||||
var error = jsonObject.SelectToken("error");
|
||||
//如果有错
|
||||
if (error != null)
|
||||
{
|
||||
Login(FCSLoginUrl, UserName, PassWord, code, roomno);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (itemclass.Equals("Clean"))
|
||||
{
|
||||
logger.Error("写入订单"+FHS);
|
||||
//FCS_Response
|
||||
var FFF = JsonConvert.DeserializeObject<FCS_Response>(FHS);
|
||||
var JJJ = FFF.data.FirstOrDefault();
|
||||
if (JJJ != null)
|
||||
{
|
||||
string orderuuid = JJJ.job_uuid;
|
||||
FCS_OrderData f = new FCS_OrderData();
|
||||
f.OrderUUID = orderuuid;
|
||||
f.PropertyID = PropertyID;
|
||||
f.ItemType = "Clean";
|
||||
f.OrderNo = JJJ.job_no;
|
||||
f.ItemUUID = item_uuid;
|
||||
f.LocationUUID = location_uuid;
|
||||
f.HotelCode = code;
|
||||
f.RoomNUMBER = roomno;
|
||||
string fsa = Newtonsoft.Json.JsonConvert.SerializeObject(f);
|
||||
//这个是 供轮循的时候调用使用
|
||||
CSRedisCacheHelper.HMSet(3, 60 * 24, CacheKey.FCSOrder, fsa);
|
||||
|
||||
//这个是供 取消订单的时候使用的
|
||||
//这个只 支持 取消 清理
|
||||
logger.Error("记录入循环:"+orderuuid);
|
||||
CSRedisCacheHelper.Set_PartitionWithTime(CacheKey.FCSRoom_Mapping_Order + "_" + location_uuid, orderuuid, 24 * 60, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (HHH == HttpStatusCode.OK)
|
||||
{
|
||||
}
|
||||
});
|
||||
}
|
||||
/// <summary>
|
||||
/// FCS数据推送
|
||||
/// </summary>
|
||||
/// <param name="Item_UUID"></param>
|
||||
public static void FCS_PushData(string Item_UUID, string location_UUID, string PropertyUUID, string LoginUrl, string UserName, string PassWord, string code, string roomno, string remarkdata = "", string HOSTNUMBER = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(Item_UUID))
|
||||
{
|
||||
return;
|
||||
}
|
||||
//logger.Error("FCS push data");
|
||||
if (!string.IsNullOrEmpty(location_UUID))
|
||||
{
|
||||
string Key = CacheKey.FCSToken;
|
||||
var TokenTakeOut = CSRedisCacheHelper.Get_Partition<FCS_ReturnInfo>(Key, 1);
|
||||
if (TokenTakeOut == null)
|
||||
{
|
||||
logger.Error("FCS login");
|
||||
RR.Login(LoginUrl, UserName, PassWord, code, roomno);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Error("FCS push action data");
|
||||
|
||||
string ItemClass = "";
|
||||
if (!string.IsNullOrEmpty(HOSTNUMBER))
|
||||
{
|
||||
ItemClass = "Clean";
|
||||
}
|
||||
logger.Error("FCS push action itemclass:" + ItemClass);
|
||||
RR.JobRequest(TokenTakeOut.data.access_token, location_UUID, Item_UUID, LoginUrl, UserName, PassWord, PropertyUUID, code, roomno, remarkdata, ItemClass);
|
||||
|
||||
if (!string.IsNullOrEmpty(HOSTNUMBER))
|
||||
{
|
||||
string CleanTrigger = CacheKey.CleanFCS_TriggerCount + "_" + HOSTNUMBER;
|
||||
CSRedisCacheHelper.Set_PartitionWithTime<int>(CleanTrigger, 1, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error("FCS PushData Error: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 取消Job
|
||||
/// </summary>
|
||||
/// <param name="AccessToken"></param>
|
||||
/// <param name="location_uuid"></param>
|
||||
/// <param name="item_uuid"></param>
|
||||
/// <param name="FCSLoginUrl"></param>
|
||||
/// <param name="UserName"></param>
|
||||
/// <param name="PassWord"></param>
|
||||
/// <param name="PropertyID"></param>
|
||||
/// <param name="HotelCode"></param>
|
||||
/// <param name="RoomNo"></param>
|
||||
/// <param name="remarkdata"></param>
|
||||
/// <param name="itemclass"></param>
|
||||
public static void JobCancelRequest(string AccessToken, string FCSLoginUrl, string PropertyID, string HotelCode, string RoomNo, string OrderId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(OrderId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
SSLXieYi();
|
||||
|
||||
string RUrl = string.Format("/job/order/{0}/cancelled", OrderId);
|
||||
var client1 = new RestClient(FCSLoginUrl);
|
||||
var request1 = new RestRequest(RUrl, Method.POST);
|
||||
|
||||
logger.Error("push data is " + OrderId);
|
||||
logger.Error("push token is " + AccessToken);
|
||||
request1.AddHeader("token", AccessToken);
|
||||
//下面这个是个定值
|
||||
request1.AddHeader("property", PropertyID);
|
||||
|
||||
Interface3Log w1 = new Interface3Log();
|
||||
w1.HotelCode = HotelCode;
|
||||
w1.RoomNumber = RoomNo;
|
||||
w1.TriggerTime = DateTime.Now;
|
||||
w1.ActionData = new HttpActionData() { RequestData = OrderId };
|
||||
w1.CommandType = ChangLiangValue.CommandType_FCS;
|
||||
|
||||
var q1 = Newtonsoft.Json.JsonConvert.SerializeObject(w1);
|
||||
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, q1);
|
||||
|
||||
client1.ExecuteAsync(request1, (QQQ) =>
|
||||
{
|
||||
HttpStatusCode HHH = QQQ.StatusCode;
|
||||
|
||||
string FHS = QQQ.Content;
|
||||
logger.Error("cancel PushData not data is" + FHS);
|
||||
|
||||
Interface3Log w2 = new Interface3Log();
|
||||
w2.HotelCode = HotelCode;
|
||||
w2.RoomNumber = RoomNo;
|
||||
w2.TriggerTime = DateTime.Now;
|
||||
w2.ActionData = new HttpActionData() { ResponseData = FHS };
|
||||
w2.CommandType = ChangLiangValue.CommandType_FCS;
|
||||
|
||||
var q2 = Newtonsoft.Json.JsonConvert.SerializeObject(w2);
|
||||
CSRedisCacheHelper.Publish(CacheKey.InvokeHttpInterface, q2);
|
||||
|
||||
});
|
||||
}
|
||||
public static void FCS_CancelOrderJob(string location_UUID, string PropertyUUID, string LoginUrl, string UserName, string PassWord, string code, string roomno, string OrderUUID = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(OrderUUID))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!string.IsNullOrEmpty(location_UUID))
|
||||
{
|
||||
string Key = CacheKey.FCSToken;
|
||||
var TokenTakeOut = CSRedisCacheHelper.Get_Partition<FCS_ReturnInfo>(Key, 1);
|
||||
if (TokenTakeOut == null)
|
||||
{
|
||||
logger.Error("FCS login");
|
||||
RR.Login(LoginUrl, UserName, PassWord, code, roomno);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Error("FCS cancel push action data");
|
||||
RR.JobCancelRequest(TokenTakeOut.data.access_token, LoginUrl, PropertyUUID, code, roomno, OrderUUID);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error("FCS PushData Error: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user