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,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().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(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 ""; } } /// /// 获取赋码token令牌 /// /// 获取赋码token令牌 /// public string GetFuMaToken(string url) { try { var str = ""; //首先判断系统内是否有token值,效期是否失效 var sysToken = Db.Queryable().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(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 ""; } } } }