using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using HZQR.Common;
namespace ZJZCGCMemberClient.Method
{
public class CommonHelper
{
///
/// 同步数据至商业集团会员系统
///
/// 泛型
/// 对象
/// 操作类型(0:新增、1:更新、2:删除)
/// 传输地址
///
public static string PostDataToZJHY(T obj, int? operation, string Url)
{
Model.CommonModel commonModel = new Model.CommonModel()
{
appid = ZJZCGCMemberHelper.AppId,
operation = operation,
data = ZJZCGCMemberHelper.AESEncrypt(JsonConvert.SerializeObject(obj), ZJZCGCMemberHelper.AppSecret, "", true)
};
string result = HttpUtil.HttpUrlPost(JsonConvert.SerializeObject(commonModel), Url, "application/json");
LogUtil.WriteLog("传输地址:" + Url + ",传输结果:" + result);
try
{
//解析接口返回报文内容
JObject keyValuePairs = JObject.Parse(result);
if (keyValuePairs["code"].ToString() != "200")
{
//第一次传输失败了,则延迟5s再传输一次
if (keyValuePairs["code"].ToString() == "500")
{
Thread.Sleep(5000);
//重新发起通讯
result = HttpUtil.HttpUrlPost(JsonConvert.SerializeObject(commonModel), Url, "application/json");
LogUtil.WriteLog("失败后第二次传输结果:" + result);
//解析接口返回报文内容
keyValuePairs = JObject.Parse(result);
if (keyValuePairs["code"].ToString() != "200")
{
//传输失败,记录传输前后的报文
LogUtil.WriteLog("加密前:" + JsonConvert.SerializeObject(obj));
LogUtil.WriteLog("加密后:" + JsonConvert.SerializeObject(commonModel));
}
}
}
}
catch (Exception ex)
{
LogUtil.WriteLog(ex, "", DateTime.Now.ToString("yyyyMMdd") + "_ErrorLog");
LogUtil.WriteLog(null, "加密前:" + JsonConvert.SerializeObject(obj), DateTime.Now.ToString("yyyyMMdd") + "_ErrorLog");
LogUtil.WriteLog(null, "加密后:" + JsonConvert.SerializeObject(commonModel), DateTime.Now.ToString("yyyyMMdd") + "_ErrorLog");
}
return result;
}
}
}