using Microsoft.IdentityModel.Protocols;
|
using Model.InterFaceModel;
|
using Newtonsoft.Json;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Security.Policy;
|
using System.Text;
|
using Utility.Tools;
|
using WMS.DAL;
|
using WMS.Entity.Context;
|
using WMS.Entity.SysEntity;
|
using WMS.IBLL.ISysServer;
|
|
namespace WMS.BLL.SysServer
|
{
|
public class Token : DbHelper<SysToken>,IToken
|
{
|
private static readonly SqlSugarScope Db = DataContext.Db;
|
|
public Token() : base(Db)
|
{
|
}
|
public string GetMesToken(string url)
|
{
|
try
|
{
|
var str = "";
|
|
//首先判断系统内是否有token值,效期是否失效
|
var sysToken = Db.Queryable<SysToken>().First(m => m.IsDel == "0" && m.SystemName == "MES");
|
if (sysToken != null && !string.IsNullOrWhiteSpace(sysToken.Token) && sysToken.ExpireTime > DateTime.Now)
|
{
|
str = sysToken.Token;
|
return str; //返回token值
|
}
|
|
#region 获取新的令牌
|
|
var user = MesConfig.MesUser;
|
var pass = MesConfig.MesPassWord;
|
var secretKey = Md5Tools.CalcMd5(pass);
|
var nonce = Guid.NewGuid().ToString("N");
|
var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
|
|
var info = new string[] { user, secretKey, nonce, timestamp };
|
Array.Sort(info,string.CompareOrdinal); //ASCII排序
|
var miyao = string.Join("", info); //数组转换成字符串
|
var sign = Md5Tools.CalcMd5(miyao); //签名
|
|
var data = new
|
{
|
user = user,
|
nonce = nonce,
|
timestamp = timestamp,
|
sign = sign,
|
jwt = true, //是否返回JWT令牌
|
};
|
#endregion
|
|
#region 通过接口发送至mes
|
//系统对接后放开
|
var jsonData = JsonConvert.SerializeObject(data);
|
|
var response = HttpHelper.DoPost(url, jsonData, "MES申请获取令牌", "MES");
|
|
var obj = JsonConvert.DeserializeObject<MesTokenModel>(response);//解析返回数据
|
|
|
if (obj.status != "success")
|
{
|
throw new Exception("上传失败" + obj.message);
|
}
|
else
|
{
|
var token = obj.Data.token;
|
var expireTime = obj.Data.expire_time;
|
var time = DateTime.Now.AddMilliseconds(double.Parse(expireTime));
|
if (sysToken == null)//添加
|
{
|
var addToken = new SysToken()
|
{
|
SystemName = "MES",
|
Token = token,
|
ExpireTime = time,
|
CreateUser = 0
|
};
|
Db.Insertable(addToken).ExecuteCommand();
|
return token;
|
}
|
else //修改
|
{
|
sysToken.Token = token;
|
sysToken.ExpireTime = time;
|
sysToken.UpdateTime = DateTime.Now;
|
Db.Updateable(sysToken).ExecuteCommand();
|
return token;
|
}
|
}
|
|
#endregion
|
}
|
catch (Exception)
|
{
|
return "";
|
}
|
}
|
|
/// <summary>
|
/// 获取赋码token令牌
|
/// </summary>
|
/// <param name="url">获取赋码token令牌</param>
|
/// <returns></returns>
|
public string GetFuMaToken(string url)
|
{
|
try
|
{
|
var str = "";
|
|
//首先判断系统内是否有token值,效期是否失效
|
var sysToken = Db.Queryable<SysToken>().First(m => m.IsDel == "0" && m.SystemName == "FuMa");
|
if (sysToken != null && !string.IsNullOrWhiteSpace(sysToken.Token) && sysToken.ExpireTime > DateTime.Now)
|
{
|
str = sysToken.Token;
|
return str; //返回token值
|
}
|
//return str;
|
#region 获取新的令牌
|
//对接时更改路径
|
var user = MesConfig.MesUser;
|
var pass = MesConfig.MesPassWord;
|
var secretKey = Md5Tools.CalcMd5(pass);
|
var nonce = Guid.NewGuid().ToString("N");
|
var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
|
|
var info = new string[] { user, secretKey, nonce, timestamp };
|
Array.Sort(info, string.CompareOrdinal); //ASCII排序
|
var miyao = string.Join("", info); //数组转换成字符串
|
var sign = Md5Tools.CalcMd5(miyao); //签名
|
|
var data = new
|
{
|
user = user,
|
nonce = nonce,
|
timestamp = timestamp,
|
sign = sign,
|
jwt = true, //是否返回JWT令牌
|
};
|
#endregion
|
|
#region 通过接口发送至赋码
|
//系统对接后放开
|
var jsonData = JsonConvert.SerializeObject(data);
|
|
var response = HttpHelper.DoPost(url, jsonData, "FuMa申请获取令牌", "Fuma");
|
|
var obj = JsonConvert.DeserializeObject<MesTokenModel>(response);//解析返回数据
|
|
if (obj.status != "success")
|
{
|
throw new Exception("上传失败" + obj.message);
|
}
|
else
|
{
|
var token = obj.Data.token;
|
var expireTime = obj.Data.expire_time;
|
var time = DateTime.Now.AddMilliseconds(double.Parse(expireTime));
|
if (sysToken == null)//添加
|
{
|
var addToken = new SysToken()
|
{
|
SystemName = "MES",
|
Token = token,
|
ExpireTime = time,
|
CreateUser = 0
|
};
|
Db.Insertable(addToken).ExecuteCommand();
|
return token;
|
}
|
else //修改
|
{
|
sysToken.Token = token;
|
sysToken.ExpireTime = time;
|
sysToken.UpdateTime = DateTime.Now;
|
Db.Updateable(sysToken).ExecuteCommand();
|
return token;
|
}
|
}
|
|
#endregion
|
}
|
catch (Exception)
|
{
|
return "";
|
}
|
}
|
|
}
|
}
|