Files

88 lines
2.8 KiB
C#
Raw Permalink Normal View History

2026-09-02 16:31:50 +08:00
using JSMachine.WMS.Infrastructure.Helper;
using JSMachine.WMS.RPC.ErpRPC.Dto.In.BusinessDto;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace JSMachine.WMS.RPC.ErpRPC.Dto.In
{
/// <summary>
/// 企望api请求参数封装类
/// </summary>
public class RequestParam<T> where T : BusinessParamBase
{
/// <summary>
/// 客户ID,默认为空
/// </summary>
public string CustNo { get; set; } = string.Empty;
/// <summary>
/// 时间戳
/// </summary>
public string Timestamp { get; set; } = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
/// <summary>
/// 值为md5(CustNo+CustSecret+Timetamp)加密后的32位结果(小写);CustNo、CustSecret的值默认为空,某些接口特殊需要的请开发前电话联系我司获取。
/// </summary>
public string EncryptStr { get; set; }
/// <summary>
/// 业务参数(json)
/// </summary>
public ActionParam<T> JsonParam { get; set; }
public RequestParam()
{
EncryptStr= Md5EncryptionHelper.MD5Encrypt32(CustNo + string.Empty + Timestamp, true);
}
private static PropertyInfo[] PropertyInfos = typeof(RequestParam<BusinessParamBase>).GetProperties();
/// <summary>
/// 创建请求参数
/// </summary>
/// <param name="actionID"></param>
/// <param name="data"></param>
/// <returns></returns>
public static Dictionary<string, object> CreateParam(ActionID actionID, T data)
{
RequestParam<BusinessParamBase> requestParam = new()
{
JsonParam = new ActionParam<BusinessParamBase>()
{
ActionID = actionID.ToString(),
Data = data
}
};
Dictionary<string, object> dic = new();
PropertyInfos.ToList().ForEach(p =>
{
if (p.Name == "JsonParam")
{
dic.Add("params", JsonConvert.SerializeObject(p.GetValue(requestParam)));
}
else
{
dic.Add(p.Name, p.GetValue(requestParam));
}
});
return dic;
}
public static string CreateJsonParam(ActionID actionID, T data)
{
var requestParam = new ActionParam<BusinessParamBase>()
{
ActionID = actionID.ToString(),
Data = data
};
var result = JsonConvert.SerializeObject(requestParam);
return result;
}
}
}