diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj index 13908fea8..0725c9ac3 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj @@ -201,6 +201,7 @@ + diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs new file mode 100644 index 000000000..4ca4689d6 --- /dev/null +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs @@ -0,0 +1,447 @@ +using Nancy; +using Learun.Util; +using System.Collections.Generic; +using Learun.Application.TwoDevelopment.EducationalAdministration; +using System; +using System.IO; +using Learun.Application.Base.SystemModule; +using System.Net; +using System.Linq; +using System.Text; +using Newtonsoft.Json; +using System.Collections; +using System.Web; +using Learun.Application.Organization; + +namespace Learun.Application.WebApi +{ + /// + /// 版 本 Learun-ADMS-Ultimate V7.0.0 力软敏捷开发框架 + /// Copyright (c) 2013-2018 上海力软信息技术有限公司 + /// 创 建:超级管理员 + /// 日 期:2019-08-19 17:50 + /// 描 述:传送接口 + /// + + public class TransferApi : BaseNoAuthentication + { + private EmpInfoIBLL empInfoIBLL = new EmpInfoBLL(); + private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL(); + private CdDeptIBLL cdDeptIBLL = new CdDeptBLL(); + private UserIBLL userIBLL = new UserBLL(); + + /// + /// 注册接口 + /// + public TransferApi() + : base("/TransferApi/BasicInfo") + { + //发送部门基础信息 + Get["/sendDeptInfo"] = SendDeptInfo; + //发送教师基础信息 + Get["/sendTeacherInfo"] = SendTeacherInfo; + } + /// + /// cookie + /// + public static CookieCollection cookie { get; set; } + public static string cookiestr { get; set; } + public static DateTime cookiestrTime { get; set; } + + #region 获取数据 + + /// + /// 获取cookie接口 + /// + /// + public static bool GetCookie() + { + var loginParam = new + { + Id = "admin", + Pwd = Md5Helper.Encrypt("Admin_123456", 32) + }; + var responseLogin = SendRequest("POST", @"http://172.70.0.4:8088/fastgate/user/login", Encoding.UTF8, JsonConvert.SerializeObject(loginParam)); + var responseLoginObj = JsonConvert.DeserializeObject(responseLogin); + if (responseLoginObj.ErrCode == 200) + { + return true; + } + else + { + return GetCookie(); + } + } + /// + /// 发送部门基础信息 + /// + /// + /// + public Response SendDeptInfo(dynamic _) + { + var result = new List(); + + if (string.IsNullOrEmpty(cookiestr) || ((DateTime.Now - cookiestrTime).Minutes > 10)) + { + //调登录接口拿到cookie + GetCookie(); + } + var deptList = cdDeptIBLL.GetAllList(); + foreach (var item in deptList) + { + var param = new + { + ParentCode = "iccsid", + pageSize = 10, + Name = "部门5", + Code = "5", + }; + + var responseSend = SendRequestWithCookie("POST", "application/json;charset=utf-8", @"http://172.70.0.4:8088/fastgate/department", Encoding.UTF8, JsonConvert.SerializeObject(param)); + var responseSendObj = JsonConvert.DeserializeObject(responseSend); + + result.Add("部门编号" + item.DeptNo + ",新增接口结果:" + responseSendObj.ErrCode + responseSendObj.ErrMsg); + + if (responseSendObj.ErrCode == 200) + { + //第三方新增成功,修改表-发送标识为true + //TODO: + } + else if (responseSendObj.ErrCode == 1010) //{ "ErrCode":1010,"ErrMsg":"登录状态已失效"} + { + //获取cookie + GetCookie(); + } + else if (responseSendObj.ErrCode == 10000) //10000 code repetition + { + //调修改接口 + var param2 = new + { + Code = "5", + Name = "部门bm5", + pageSize = 10, + }; + var responseSend2 = SendRequestWithCookie("PUT", "application/json;charset=utf-8", @"http://172.70.0.4:8088/fastgate/department", Encoding.UTF8, JsonConvert.SerializeObject(param2)); + var responseSendObj2 = JsonConvert.DeserializeObject(responseSend2); + + result.Add("部门编号" + item.DeptNo + ",修改接口结果:" + responseSendObj2.ErrCode + responseSendObj2.ErrMsg); + + if (responseSendObj2.ErrCode == 200) + { + //第三方修改成功,修改表-发送标识为true + //TODO: + } + else + { + //其他错误 + } + } + else + { + //其他错误 + } + + } + + return Success(result); + } + /// + /// 发送教师基础信息 + /// + /// + /// + public Response SendTeacherInfo(dynamic _) + { + var result = new List(); + + if (string.IsNullOrEmpty(cookiestr) || ((DateTime.Now - cookiestrTime).Minutes > 10)) + { + //调登录接口拿到cookie + GetCookie(); + } + //var teacherList = empInfoIBLL.GetAllList(); + //foreach (var item in teacherList) + { + Dictionary parameters = new Dictionary(); //参数列表 + parameters.Add("Sex", "1"); + parameters.Add("Depart", "5"); + parameters.Add("Name", "测试1"); + parameters.Add("Code", "ceshi1"); + var param = BuildQuery2(parameters, "----WebKitFormBoundaryAOT8GpQYYAP9jgGf"); + var contentType = "multipart/form-data; boundary=----WebKitFormBoundaryAOT8GpQYYAP9jgGf"; + + var responseSend = SendRequestWithCookie("POST",contentType, @"http://172.70.0.4:8088/fastgate/person", Encoding.UTF8, param); + var responseSendObj = JsonConvert.DeserializeObject(responseSend); + + result.Add("教师编号,新增接口结果:" + responseSendObj.ErrCode + responseSendObj.ErrMsg); + + if (responseSendObj.ErrCode == 200) + { + //第三方新增成功,修改表-发送标识为true + //TODO: + } + else if (responseSendObj.ErrCode == 1010) //{ "ErrCode":1010,"ErrMsg":"登录状态已失效"} + { + //获取cookie + GetCookie(); + } + else if (responseSendObj.ErrCode == 202) //202 code repeat + { + //调查询接口 + var responseSend3 = SendRequestWithCookie("GET", "application/json;charset=utf-8", @"http://172.70.0.4:8088/fastgate/personCode/ceshi1", Encoding.UTF8, null); + var responseSendObj3 = JsonConvert.DeserializeObject(responseSend3); + + result.Add("教师编号,查询接口结果:" + responseSendObj3.ErrCode + responseSendObj3.ErrMsg + JsonConvert.SerializeObject(responseSendObj3.data)); + + if (responseSendObj3.ErrCode == 200) + { + //第三方查询成功 + //调修改接口 + Dictionary parameters2 = new Dictionary(); //参数列表 + parameters2.Add("Sex", "1"); + parameters2.Add("Depart", "5"); + parameters2.Add("Name", "测试ceshi1"); + parameters2.Add("Code", "ceshi1"); + parameters2.Add("Seqid", responseSendObj3.data.Seqid.ToString()); + parameters2.Add("ImageList", string.Join(",", responseSendObj3.data.Pictures.Select(x => x.PersonPicturePath))); + var param2 = BuildQuery2(parameters2, "----WebKitFormBoundaryMAj7ABMLt3aJpmGH"); + var contentType2 = "multipart/form-data; boundary=----WebKitFormBoundaryMAj7ABMLt3aJpmGH"; + + var responseSend2 = SendRequestWithCookie("PUT", contentType2, @"http://172.70.0.4:8088/fastgate/person", Encoding.UTF8, param2); + var responseSendObj2 = JsonConvert.DeserializeObject(responseSend2); + + result.Add("教师编号,修改接口结果:" + responseSendObj2.ErrCode + responseSendObj2.ErrMsg); + + if (responseSendObj2.ErrCode == 200) + { + //第三方修改成功,修改表-发送标识为true + //TODO: + } + else if (responseSendObj2.ErrCode == 1010) //{ "ErrCode":1010,"ErrMsg":"登录状态已失效"} + { + //获取cookie + GetCookie(); + } + else + { + //其他错误 + } + + } + else if (responseSendObj3.ErrCode == 1010) //{ "ErrCode":1010,"ErrMsg":"登录状态已失效"} + { + //获取cookie + GetCookie(); + } + + } + else + { + //其他错误 + } + + } + + return Success(result); + } + + #endregion + + #region 公共方法 + /// + /// 请求获取cookie: + /// + /// GET,POST + /// + /// UTF-8 + /// 传送需要的参数 + /// + public static string SendRequest(string type, string url, Encoding encoding, string data) + { + HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); + webRequest.Method = type; + webRequest.ContentType = "application/json"; + if (type == "POST") + { + byte[] postdata = Encoding.UTF8.GetBytes(data); + webRequest.ContentLength = postdata.Length; + Stream newStream = webRequest.GetRequestStream(); + newStream.Write(postdata, 0, postdata.Length); + newStream.Close(); + } + + //使用HttpWebRequest的CookieContainer属性进行设置 + CookieContainer ckCtnr = new CookieContainer(); + if (cookie != null) + { + ckCtnr.Add(cookie); //此处的cookie是HttpWebResponse对象的Cookies属性 + } + //获取应答网页 + webRequest.CookieContainer = ckCtnr; + + //webRequest.Headers.Add("Cookie", "JSESSIONID=518211FE9243E875A3C570D510E7262F; Path=/fastgate; HttpOnly"); + HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); + + cookie = webResponse.Cookies;//获取Cookie + cookiestr = webResponse.Headers.Get("Set-Cookie");//获取Cookie字符串 + if (!string.IsNullOrEmpty(cookiestr)) + { + cookiestrTime = DateTime.Now;//获取Cookie的时间 + } + + StreamReader sr = new StreamReader(webResponse.GetResponseStream(), encoding); + string str = sr.ReadToEnd(); + sr.Close(); + webResponse.Close(); + return str; + } + /// + /// 请求携带cookie: + /// + /// GET,POST,PUT + /// 请求头类型(json是application/json;charset=utf-8,form-data是multipart/form-data; boundary=----WebKitFormBoundaryAOT8GpQYYAP9jgGf,) + /// + /// UTF-8 + /// 传送需要的参数 + /// + public static string SendRequestWithCookie(string type, string contentType, string url, Encoding encoding, string data) + { + HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); + webRequest.Method = type; + webRequest.ContentType = contentType; + webRequest.Headers.Add("Cookie", cookiestr);//携带Cookie + if (type == "POST" || type == "PUT") + { + byte[] postdata = Encoding.UTF8.GetBytes(data); + webRequest.ContentLength = postdata.Length; + Stream newStream = webRequest.GetRequestStream(); + newStream.Write(postdata, 0, postdata.Length); + newStream.Close(); + } + + HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); + StreamReader sr = new StreamReader(webResponse.GetResponseStream(), encoding); + string str = sr.ReadToEnd(); + sr.Close(); + webResponse.Close(); + return str; + } + /// + /// 组装请求参数 + /// + /// + /// + /// + private static string BuildQuery(IDictionary parameters, string encode) + { + StringBuilder postData = new StringBuilder(); + bool hasParam = false; + IEnumerator> dem = parameters.GetEnumerator(); + while (dem.MoveNext()) + { + string name = dem.Current.Key; + string value = dem.Current.Value; + // 忽略参数名或参数值为空的参数 + if (!string.IsNullOrEmpty(name)) + { + if (hasParam) + { + postData.Append("&"); + } + postData.Append(name); + postData.Append("="); + if (encode == "gb2312") + { + postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312"))); + } + else if (encode == "utf8") + { + postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8)); + } + else + { + postData.Append(value); + } + hasParam = true; + } + } + return postData.ToString(); + } + /// + /// 组装请求参数 + /// + /// key-value + /// 分隔符 + /// + private static string BuildQuery2(IDictionary parameters, string boundary) + { + StringBuilder buffer = new StringBuilder(); + foreach (string key in parameters.Keys) + { + buffer.Append("\r\n").Append("--").Append(boundary).Append("\r\n"); + if (key == "file") + { + buffer.Append("Content-Disposition: form-data; name=\"" + key + "\";filename=\"920_complete_1.jpg\"\r\n"); + buffer.Append("Content-Type: image/jpeg"); + } + else + { + buffer.Append("Content-Disposition: form-data; name=\"" + key + "\"\r\n\r\n"); + buffer.Append(parameters[key]); + } + } + buffer.Append("\r\n").Append("--").Append(boundary).Append("--"); + return buffer.ToString(); + } + #endregion + + #region 私有类 + + /// + /// 表单实体类 + /// + private class ReqFormEntity + { + public string keyValue { get; set; } + public string strEntity { get; set; } + } + + /// + /// 人员详细信息 + /// + private class PersonInfo + { + /// + /// 错误码(200表示成功, + /// + public int ErrCode { get; set; } + /// + /// 错误信息,”success”为正常 + /// + public string ErrMsg { get; set; } + public PersonInfoData data { get; set; } + } + private class PersonInfoData + { + /// + /// 人员存在数据库的唯一ID + /// + public int Seqid { get; set; } + /// + /// 头像存储的地址ur + /// + public List Pictures { get; set; } + } + private class PersonDataPictures + { + /// + /// 登记照片地址 + /// + public string PersonPicturePath { get; set; } + } + + + #endregion + + } +} \ No newline at end of file