using ICSSoft.ERPWMS.Entity; using Microsoft.IdentityModel.Protocols; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace ICSSoft.ERPWMS.SQL { public class GetToken { /// /// 返回值 /// public string Get(ICSLogin infos) { ICSLogin szJson = new ICSLogin(); DataTable dt = null; string json = ""; if (string.IsNullOrWhiteSpace(infos.LoginID)) { throw new Exception("传入参数为空!"); } if (string.IsNullOrWhiteSpace(infos.Secret)) { throw new Exception("密码为空!"); } string res = string.Empty; try { string sql = string.Empty; sql = @"SELECT StartTime,Time,Authkey from Cust_ICSLogin where LoginID='" + infos.LoginID + "' and Secret='" + infos.Secret + "'"; if (infos.Type=="ERP") { dt = ICSHelper.GetDataTableERP(sql); } else { dt = ICSHelper.GetDataTable(sql); } //json = JsonConvert.SerializeObject(dt); if (dt.Rows.Count <= 0 || dt == null) throw new Exception("传入账号有误,请核对!"); else { if (!string.IsNullOrWhiteSpace(dt.Rows[0]["StartTime"].ToString())) { DateTime dtime = Convert.ToDateTime(dt.Rows[0]["StartTime"].ToString()); int Time = Convert.ToInt32(dt.Rows[0]["Time"].ToString()); if (DateTime.Now < dtime.AddMinutes(Time)) { json = dt.Rows[0]["Authkey"].ToString(); } else { string charset = "UTF-8"; string content = infos.LoginID + infos.Secret + DateTime.Now; string key = "ICS999"; json = DoSign(content, key, charset); if (!string.IsNullOrWhiteSpace(json)) { sql = @"UPDATE Cust_ICSLogin SET Authkey ='" + json + "',StartTime='" + DateTime.Now + "' WHERE LoginID='" + infos.LoginID + "' and Secret='" + infos.Secret + "'"; if (infos.Type == "ERP") { ICSHelper.ExecuteDateERP(sql);//修改包涵拓展(公共段19) } else { ICSHelper.ExecuteDate(sql);//修改包涵拓展(公共段19) } } } } } return json; } catch (Exception ex) { throw new Exception(ex.Message); } } public bool Check(string Authkey,string Type) { bool isfalse = false; DataTable dt = new DataTable(); try { string IsOpenKey =ICSHelper.ReadConfig(ICSHelper.FileNameCompanyCon)["IsOpenKey"].ToString(); if (IsOpenKey=="true") { string sql = @"SELECT Time from Cust_ICSLogin WHERE Authkey='" + Authkey + "' "; if (Type== "ERP") { dt = ICSHelper.GetDataTableERP(sql); } else { dt = ICSHelper.GetDataTable(sql); } if (dt != null && dt.Rows.Count > 0) { string _Time = dt.Rows[0][0].ToString(); int ___Time = Int32.Parse(_Time); int a = 0; string sqlAsy = @"SELECT COUNT(*) from Cust_ICSLogin WHERE Authkey='" + Authkey + "' AND StartTime>'" + DateTime.Now.AddMinutes(-___Time) + "'"; if (Type == "ERP") { dt = ICSHelper.GetDataTableERP(sqlAsy); } else { dt = ICSHelper.GetDataTable(sqlAsy); } //json = JsonConvert.SerializeObject(dt); if (dt.Rows.Count <= 0 || dt == null) throw new Exception("Authkey已失效,请重新获取!"); else { a = Int32.Parse(dt.Rows[0][0].ToString()); } if (a > 0) isfalse = true; } else { throw new Exception("Authkey已失效,请重新获取!"); } } else isfalse = true; return isfalse; } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 请求报文签名 /// /// 内容参数 /// 编码格式 /// key值 /// public static string DoSign(string content, string key, string charset = "UTF-8") { string sign; content = content + key; //md5加密 MD5 md5 = new MD5CryptoServiceProvider(); byte[] b = md5.ComputeHash(Encoding.GetEncoding(charset).GetBytes(content)); //base64编码 sign = Convert.ToBase64String(b).Trim(); return sign; } public class ICSLogin { public string Secret; public string LoginID; public string Type; } } }