From 6817b3b51bfceff5baf06e7ecb4a88dc69660ca2 Mon Sep 17 00:00:00 2001
From: dyy <807692433@qq.com>
Date: Fri, 17 Jun 2022 14:09:01 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=A2=9E=E5=8A=A0=E3=80=91=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E5=8F=91=E9=80=81=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=AF=B9?=
=?UTF-8?q?=E6=8E=A5=E4=BA=BA=E8=84=B8=E7=B3=BB=E7=BB=9F=EF=BC=8C=E5=8F=91?=
=?UTF-8?q?=E9=80=81=E9=83=A8=E9=97=A8=E4=BF=A1=E6=81=AF=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Learun.Application.WebApi.csproj | 1 +
.../Modules/TransferApi.cs | 447 ++++++++++++++++++
2 files changed, 448 insertions(+)
create mode 100644 Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs
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