diff --git a/SGGL/BLL/BLL.csproj b/SGGL/BLL/BLL.csproj index e210197f..0d63caf2 100644 --- a/SGGL/BLL/BLL.csproj +++ b/SGGL/BLL/BLL.csproj @@ -592,6 +592,7 @@ + diff --git a/SGGL/BLL/IDP/IDPDataService.cs b/SGGL/BLL/IDP/IDPDataService.cs new file mode 100644 index 00000000..57b8f5eb --- /dev/null +++ b/SGGL/BLL/IDP/IDPDataService.cs @@ -0,0 +1,170 @@ +using Apache.NMS.ActiveMQ.Commands; +using Microsoft.SqlServer.Dts.Runtime; +using Model; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Org.BouncyCastle.Ocsp; +using SgManager.AI; +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Security.Cryptography; +using System.Text; + +namespace BLL +{ + public static class IDPDataService + { + //private static readonly string IDPApiUrl = "https://idp.cwcec.com/"; + private static readonly string IDPApiUrl = SysConstSetService.WuHuanIDPPath; + ////private static readonly string publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChnc2YD0YzJPx6QTh+/n7XzjR1ugFzrsmPolJhpCfWMKrSGbT7iX/Kgcm1AI+T95K4Jzv3KS42QTecZ1ziJ4Rr9Luzw+9ZCSjMZgrmAUbY5IeBaA6GzaSk8UWHZ4n5PL+GUGq+2f+COL7+KCS2AxEpaqDZVrJrIfg/UektdgNyzwIDAQAB"; + private static readonly string publicKey = "g1sk7Xtc1TJouHdY4+FAe5atGCu2n17NhoKVDV57pki1IL+9+S7BY4gxAjmMkUU2/cbCCdbPoUJLBrCBCjX7yI3UJW6FZwQWkn3kVoeulLEwdPCIq/GUjMXaWf3Iaaad5wBUFbfXAzv15VN6z48Nt1IY/O8YEzhIpuZdtEgDdos=AQAB"; + + /// + /// 第三方加密认证接口 + /// + /// 五环IDP系统SessionId有效期30分钟 + /// + public static SessionItem GetAuthenticationSession() + { + //// 创建RSA加密服务提供者 + ////using (RSA rsa = RSA.Create()) + //using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) + //{ + //// 获取公钥false表示只导出公钥 + //string publicKey = rsa.ToXmlString(false); + //// 获取私钥true表示导出公钥和私钥 + //string privateKey = rsa.ToXmlString(true); + + SessionItem session = new SessionItem(); + + ////用户名加密 + //string encryptedUsername = EncryptData("dataviewer", publicKey); + ////密码加密 + //string encryptedPassword = EncryptData("a3365$!", publicKey); + + //用户名加密后的密文 + string encryptedUsername = "k0N0tx/hfRPY0v2lq1G8eH6hCO+UiMqlSZi1PD6bhGf4YpP/koJq5hfMsDSzdn3dZjzExrwyrjFWp/1jZLde0+gRbQ0D7tzm0R5D6AmriodD2cJvrEiwtDy7SeGNloSaNmpTEMuycpuueiOeGhMkKnTwWfRkEw73lxEpTmaahq4="; + //密码加密后的密文 + string encryptedPassword = "HLLroiNJJzyTWJt9td1xgChbVzyQkoxWCGGXqdwI2cvlUF/A30FAPaInszSwEhNRQlJZZ01EODElemkgv36DMF+XGwfDi0BfIq9jKG+/+wq0TVOHNhiu2NPzpn5Ji2X3yXIXpH1zv6XEtkvx/qiLToZYfRQCufsl5vH1cZxk2fQ="; + + string url = $"{IDPApiUrl}UAMS/authEncrypt"; + string contenttype = "application/json;charset=utf-8"; + var body = new + { + encryptedUsername = encryptedUsername, + encryptedPassword = encryptedPassword + }; + + string pushContent = JsonConvert.SerializeObject(body); + //var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, null, pushContent); + string strJosn = APIGetHttpService.Http(url, "POST", contenttype, null, pushContent); + JObject obj = JObject.Parse(strJosn); + if (!string.IsNullOrEmpty(strJosn)) + { + string value = obj["value"].ToString(); + string name = obj["name"].ToString(); + session.value = value; + session.name = name; + } + return session; + //} + } + + /// + /// 加密字符串 + /// + /// 加密信息 + /// 公钥 + /// + public static string EncryptData(string data, string publicKey) + { + using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) + { + string result = string.Empty; + try + { + rsa.FromXmlString(publicKey); //从字符串加载公钥 + byte[] dataBytes = Encoding.UTF8.GetBytes(data); + byte[] encryptedBytes = rsa.Encrypt(dataBytes, false); //使用公钥加密数据,false表示使用OAEP填充方式 + result = Convert.ToBase64String(encryptedBytes); //返回Base64编码的加密数据 + } + catch (Exception ex) + { + Console.WriteLine("Error encrypting: {0}", ex.Message); + } + return result; + } + } + + + /// + /// 获取工作包结构化数据 + /// + public static void GetIDPProjectMasterData() + { + string projectId = string.Empty;//五环主数据项目Id + string wbsCode = string.Empty;//五环主数据wbs编码 + string workitemCode = string.Empty;//五环主数据文件类别码 + + //https://idp.cwcec.com/OSS/projects/9100168/wbs/000000/workitems/CP2100/objects/latest + //string url = $"{IDPApiUrl}/OSS/projects/{projectId}/wbs/{wbsCode}/workitems/{workitemCode}/objects/latest"; + string url = $"{IDPApiUrl}/OSS/projects/9100168/wbs/000000/workitems/CP2100/objects/latest"; + + try + { + var session = GetAuthenticationSession(); + + ErrLogInfo.WriteLog($"Session——name:{session.name};value:{session.value}"); + Hashtable newToken = new Hashtable { { session.name, session.value } }; + var returndata = BLL.APIGetHttpService.OutsideHttp(url, "GET", null, newToken, null); + + } + catch (WebException ex) + { + + } + finally + { + + } + + } + + + //public static void AddPMP_Project(List newtables) + //{ + // Model.SGGLDB db = Funs.DB; + // db.PMP_Project.InsertAllOnSubmit(newtables); + // db.SubmitChanges(); + //} + + //public static void DeleteAllPMP_Project() + //{ + // Model.SGGLDB db = Funs.DB; + // if (db.PMP_Project.FirstOrDefault() != null) + // { + // db.PMP_Project.DeleteAllOnSubmit(db.PMP_Project); + // db.SubmitChanges(); + // } + //} + + + } + + + public class SessionItem + { + /// + /// value + /// + public string value { get; set; } + /// + /// name + /// + public string name { get; set; } + } +} diff --git a/SGGL/BLL/PMP/PMPDataService.cs b/SGGL/BLL/PMP/PMPDataService.cs index 1670d8b1..f87b1968 100644 --- a/SGGL/BLL/PMP/PMPDataService.cs +++ b/SGGL/BLL/PMP/PMPDataService.cs @@ -64,7 +64,7 @@ namespace BLL } catch (Exception eee) { - ErrLogInfo.WriteLog("获取五环PMP系统Token出错1:" + eee.StackTrace + eee.Message); + ErrLogInfo.WriteLog("获取五环PMP系统Token出错:" + eee.StackTrace + eee.Message); } return tokenItem; } diff --git a/SGGL/BLL/SysManage/SysConstSetService.cs b/SGGL/BLL/SysManage/SysConstSetService.cs index d9e9492a..f2fffc4e 100644 --- a/SGGL/BLL/SysManage/SysConstSetService.cs +++ b/SGGL/BLL/SysManage/SysConstSetService.cs @@ -172,7 +172,40 @@ } + #region 五环IDP + private static string _WuHuanIDPPath; + //private static string _IDPToken; + //private static string _IDPTokenExTime; + + public static string WuHuanIDPPath + { + get + { + var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "IDP接口地址" select x).ToList().FirstOrDefault(); + if (sysSet5 != null) + { + _WuHuanIDPPath = sysSet5.SetValue; + } + else + { + _WuHuanIDPPath = ""; + } + return _WuHuanIDPPath; + } + set + { + _WuHuanIDPPath = value; + } + } + #endregion + + #region 五环PMP + + + private static string _WuHuanPMPPath; + private static string _PMPToken; + private static string _PMPTokenExTime; public static string WuHuanPMPPath { @@ -181,17 +214,17 @@ var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "PMP接口地址" select x).ToList().FirstOrDefault(); if (sysSet5 != null) { - _CNCECPath = sysSet5.SetValue; + _WuHuanPMPPath = sysSet5.SetValue; } else { - _CNCECPath = ""; + _WuHuanPMPPath = ""; } - return _CNCECPath; + return _WuHuanPMPPath; } set { - _CNCECPath = value; + _WuHuanPMPPath = value; } } public static string WuHuanPMPToken @@ -201,13 +234,13 @@ var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "PMPToken" select x).ToList().FirstOrDefault(); if (sysSet5 != null) { - _CNCECToken = sysSet5.SetValue; + _PMPToken = sysSet5.SetValue; } else { - _CNCECToken = ""; + _PMPToken = ""; } - return _CNCECToken; + return _PMPToken; } } public static string WuHuanPMPTokenExTime @@ -217,13 +250,13 @@ var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "PMPTokenExTime" select x).ToList().FirstOrDefault(); if (sysSet5 != null) { - _CNCECTokenExTime = sysSet5.SetValue; + _PMPTokenExTime = sysSet5.SetValue; } else { - _CNCECTokenExTime = ""; + _PMPTokenExTime = ""; } - return _CNCECTokenExTime; + return _PMPTokenExTime; } } public static void SetWuHuanPMPToken(string token) @@ -291,6 +324,7 @@ } } + #endregion diff --git a/SGGL/WebAPI/Controllers/IDP/IDPController.cs b/SGGL/WebAPI/Controllers/IDP/IDPController.cs new file mode 100644 index 00000000..aa1161c3 --- /dev/null +++ b/SGGL/WebAPI/Controllers/IDP/IDPController.cs @@ -0,0 +1,33 @@ +using BLL; +using System; +using System.Web.Http; + +namespace WebAPI.Controllers +{ + /// + /// 五环IDP平台 + /// + public class IDPController : ApiController + { + /// + /// 每天夜间同步获取IDP系统项目开车数据 + /// + /// + [HttpPost] + public Model.ResponeData SynIDPPreRunData() + { + var responeData = new Model.ResponeData(); + try + { + IDPDataService.GetIDPProjectMasterData(); + } + catch (Exception ex) + { + responeData.code = 0; + responeData.message = ex.ToString(); + } + return responeData; + } + + } +} \ No newline at end of file diff --git a/SGGL/WebAPI/Filter/TestPermissionAttribute.cs b/SGGL/WebAPI/Filter/TestPermissionAttribute.cs index f097202d..188718df 100644 --- a/SGGL/WebAPI/Filter/TestPermissionAttribute.cs +++ b/SGGL/WebAPI/Filter/TestPermissionAttribute.cs @@ -86,8 +86,10 @@ namespace WebAPI.Filter /// /// /// - public static List lists = new List { "TowerCrane*saveTowerCraneRecord","PMP*SynPMPProjectData", "GJSX*OverdueWarningSendEmail", "User*postLoginOn", "get*token", "HazardRegister*getHazardRegisterTotalCount", + public static List lists = new List { "TowerCrane*saveTowerCraneRecord", "GJSX*OverdueWarningSendEmail", "User*postLoginOn", "get*token", "HazardRegister*getHazardRegisterTotalCount", "HazardRegister*getHazardRegisterByProjectIdStates", + "PMP*SynPMPProjectData", + "IDP*SynIDPPreRunData", "JGZL*getUserList", "JGZL*getProjedtList", "JGZL*getUnitWorkListByProjectId", diff --git a/SGGL/WebAPI/WebAPI.csproj b/SGGL/WebAPI/WebAPI.csproj index 4b77560a..92b235f5 100644 --- a/SGGL/WebAPI/WebAPI.csproj +++ b/SGGL/WebAPI/WebAPI.csproj @@ -166,6 +166,7 @@ +