Browse Source

数据对接添加验证

西昌分支
ndbs 3 months ago
committed by dao
parent
commit
47a0ea0e62
5 changed files with 1135 additions and 0 deletions
  1. +7
    -0
      Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj
  2. +346
    -0
      Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/ArrangelessonLogin.cs
  3. +290
    -0
      Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/BaseNoAuthenticationNoLogin.cs
  4. +473
    -0
      Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs
  5. +19
    -0
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Attributes/EnumAttribute.cs

+ 7
- 0
Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj View File

@@ -191,6 +191,13 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Bootstraper.cs" />
<Compile Include="Modules\ArrangelessonLogin.cs" />
<Compile Include="Modules\BaseNoAuthenticationNoLogin.cs" />
<Compile Include="Modules\UsernologinApi.cs" />
<Compile Include="Modules\VisitmanageApi.cs" />
<Compile Include="Modules\LessonInfoOfElectiveOnlineApi.cs" />
<Compile Include="Modules\RepairReport\RepairReportTeacherApi.cs" />
<Compile Include="Modules\RepairReport\RepairReportStudentApi.cs" />
<Compile Include="Modules\EducationalAdministration\ArrangeExamTermApi.cs" />
<Compile Include="Modules\EducationalAdministration\ArrangeExamTermNewApi.cs" />
<Compile Include="Modules\FunctionApi.cs" />


+ 346
- 0
Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/ArrangelessonLogin.cs View File

@@ -0,0 +1,346 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Learun.Application.Organization;
using Learun.Application.TwoDevelopment.EducationalAdministration;
using Nancy;

namespace Learun.Application.WebApi.Modules
{
public class ArrangelessonLogin : BaseNoAuthenticationNoLogin
{
public ArrangelessonLogin()
: base("/arrangelessonlogin/")
{
Get["/lessontype"] = GetLessonTypes;
Get["/classtype"] = GetClassType;
Get["/student"] = GetStudents;
Get["/lessonsortdetail"] = GetLessonSortDetails;
Get["/lessonsort"] = GetLessonSorts;
Get["/classlesson"] = GetClassLessons;
Get["/bukaolist"] = GetBuKaoList;
//以下接口需要传值学年学期
Get["/school"] = GetSchools;
Get["/dept"] = GetDepts;
Get["/major"] = GetMajors;
Get["/classroom"] = GetClassrooms;
Get["/lesson"] = GetLessons;
Get["/teacher"] = GetTeachers;
Get["/class"] = GetClasses;
Get["/stu"] = GetStus;
//以下返回全部
Get["/department"] = GetDepartment;
Get["/allteacher"] = GetAllTeachers;
Get["/allstudent"] = GetAllStudents;
Get["/alldept"] = GetAllDept;
Get["/allmajor"] = GetAllMajor;
Get["/alllesson"] = GetAllLesson;
Get["/allclass"] = GetAllClass;
Get["/alluser"] = GetAllUsers;
Get["/allschool"] = GetAllSchools;
Get["/allclasslesson"] = GetAllClassLesson;
Get["/allelelectivelesson"] = GetAllElectiveLesson;

//以下接口不往ArrangeLessonSync里记录已传数据
Get["/schoolNotRecord"] = GetSchoolsNotRecord;
Get["/deptNotRecord"] = GetDeptsNotRecord;
Get["/majorNotRecord"] = GetMajorsNotRecord;
Get["/classroomNotRecord"] = GetClassroomsNotRecord;
Get["/lessonNotRecord"] = GetLessonsNotRecord;
Get["/teacherNotRecord"] = GetTeachersNotRecord;
Get["/classNotRecord"] = GetClassesNotRecord;
Get["/stuNotRecord"] = GetStusNotRecord;
Get["trantest"] = TranTest;
//按条件重置基础数据同步状态
Get["/initbasicdata"] = InitBasicData;

}
private readonly ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL();
private readonly StuScoreIBLL stuScoreIBLL = new StuScoreBLL();
private DepartmentIBLL departmentIBLL = new DepartmentBLL();
EmpInfoIBLL empInfoIbll = new EmpInfoBLL();
private StuInfoBasicIBLL stuInfoBasicIbll = new StuInfoBasicBLL();
CdDeptIBLL cdDeptIbll = new CdDeptBLL();
CdMajorIBLL cdMajorIbll = new CdMajorBLL();
private LessonInfoIBLL lessonInfoIbll = new LessonInfoBLL();
ClassInfoIBLL classInfoIbll = new ClassInfoBLL();
UserIBLL userIbll = new UserBLL();
private CompanyIBLL companyIbll = new CompanyBLL();

private StuSelectLessonListOfElectiveIBLL stuSelectLessonListOfElectiveIbll =
new StuSelectLessonListOfElectiveBLL();

private Response TranTest(dynamic _)
{
return Success("ok");
}

private Response GetAllLesson(dynamic _)
{
var result = lessonInfoIbll.GetAllLesson();
return Success(result);
}
private Response GetAllClass(dynamic _)
{
var result = classInfoIbll.GetAllClass();
return Success(result);
}
private Response GetAllTeachers(dynamic _)
{
var result = empInfoIbll.GetAllList().Where(m => m.CheckMark == true).ToList();
return Success(result);
}
private Response GetAllSchools(dynamic _)
{
var result = companyIbll.GetList();
return Success(result);
}
private Response GetAllClassLesson(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetAllClassLesson(AcademicYearNo, Semester);
return Success(result);
}
private Response InitBasicData(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
string BaseTable = Request.Query["BaseTable"];
if (string.IsNullOrEmpty(AcademicYearNo) || string.IsNullOrEmpty(Semester))
{
return Fail("学年学期参数不能为空");
}
if (string.IsNullOrEmpty(BaseTable))
{
return Fail("基础表参数不能为空");
}
ArrangeLessonTermEntity arrangeLessonTermEntity = new ArrangeLessonTermEntity();
arrangeLessonTermEntity.AcademicYearNo = AcademicYearNo;
arrangeLessonTermEntity.Semester = Semester;
arrangeLessonTermEntity.SyncBasicTable = BaseTable;
arrangeLessonTermIBLL.InitAsyncDataByCondition(arrangeLessonTermEntity);
return Success("操作成功");
}
private Response GetAllElectiveLesson(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = stuSelectLessonListOfElectiveIbll.GetAllElectiveLesson(AcademicYearNo, Semester);
return Success(result);
}
private Response GetAllUsers(dynamic _)
{
var result = userIbll.GetAllList().Where(m => !m.F_Account.Contains("System") && m.F_DeleteMark == 0 && m.F_EnabledMark == 1).Select(m => new
{
m.F_UserId,
m.F_CompanyId,
m.F_DepartmentId,
F_Description = m.F_Description == "教师" ? "2" : "3",
ClassNo = stuInfoBasicIbll.GetStuInfoBasicEntityByStuNo(m.F_Account)?.ClassNo,
m.F_RealName,
m.F_Account,
Year = "20" + stuInfoBasicIbll.GetStuInfoBasicEntityByStuNo(m.F_Account)?.Grade,
m.F_IdentityCardNo
});
return Success(result);
}
private Response GetAllStudents(dynamic _)
{
var result = stuInfoBasicIbll.GetAllList();
return Success(result);
}
private Response GetDepartment(dynamic _)
{
var result = departmentIBLL.GetAllList();
return Success(result);
}
private Response GetAllDept(dynamic _)
{
var result = cdDeptIbll.GetAllList();
return Success(result);
}
private Response GetAllMajor(dynamic _)
{
var result = cdMajorIbll.GetAllList();
return Success(result);
}
private Response GetLessonTypes(dynamic _)
{
var result = arrangeLessonTermIBLL.GetLessonTypes();
return Success(result);
}
private Response GetDepts(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetDepts(AcademicYearNo, Semester);
return Success(result);
}
private Response GetDeptsNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetDeptsNotRecord(AcademicYearNo, Semester);
return Success(result);
}

private Response GetSchools(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetSchools(AcademicYearNo, Semester);
return Success(result);
}
private Response GetSchoolsNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetSchoolsNotRecord(AcademicYearNo, Semester);
return Success(result);
}

private Response GetClassLessons(dynamic _)
{
var result = arrangeLessonTermIBLL.GetClassLessons().Select(m => new
{
m.AcademicYearNo,
m.Semester,
m.DeptNo,
m.MajorNo,
m.LessonNo,
m.TeachClassNo,
m.EmpNo,
m.LessonSortNo
});
return Success(result);
}
public Response GetStudents(dynamic _)
{
var result = arrangeLessonTermIBLL.GetStudents();
return Success(result);
}
public Response GetMajors(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetMajors(AcademicYearNo, Semester);
return Success(result);
}
public Response GetMajorsNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetMajorsNotRecord(AcademicYearNo, Semester);
return Success(result);
}

public Response GetClassrooms(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetClassrooms(AcademicYearNo, Semester);
return Success(result);
}
public Response GetClassroomsNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetClassroomsNotRecord(AcademicYearNo, Semester);
return Success(result);
}

public Response GetClassType(dynamic _)
{
var result = arrangeLessonTermIBLL.GetClassType();
return Success(result);
}
public Response GetLessons(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetLessons(AcademicYearNo, Semester);
return Success(result);
}
public Response GetLessonsNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetLessonsNotRecord(AcademicYearNo, Semester);
return Success(result);
}
public Response GetLessonSortDetails(dynamic _)
{
var result = arrangeLessonTermIBLL.GetLessonSortDetails();
return Success(result);
}
public Response GetLessonSorts(dynamic _)
{
var result = arrangeLessonTermIBLL.GetLessonSorts();
return Success(result);
}

public Response GetTeachers(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetTeachers(AcademicYearNo, Semester);
return Success(result);
}
public Response GetTeachersNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetTeachersNotRecord(AcademicYearNo, Semester);
return Success(result);
}

public Response GetClasses(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetClasses(AcademicYearNo, Semester);
return Success(result);
}
public Response GetClassesNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetClassesNotRecord(AcademicYearNo, Semester);
return Success(result);
}

public Response GetStus(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetStus(AcademicYearNo, Semester);
return Success(result);
}

public Response GetStusNotRecord(dynamic _)
{
string AcademicYearNo = Request.Query["AcademicYearNo"];
string Semester = Request.Query["Semester"];
var result = arrangeLessonTermIBLL.GetStusNotRecord(AcademicYearNo, Semester);
return Success(result);
}
/// <summary>
/// 补考名单数据
/// </summary>
/// <param name="_"></param>
/// <returns></returns>
private Response GetBuKaoList(dynamic _)
{
var allList = new List<StuScoreEntity>();
var notPassList = stuScoreIBLL.GetStuScoreNotPassList();
allList.AddRange(notPassList);
var notPassTwoList = stuScoreIBLL.GetStuScoreNotPassTwoList();
allList.AddRange(notPassTwoList);

var result = allList.Select(x => new { x.BuKaoFlag, x.AcademicYearNo, x.Semester, x.StuId, x.StuName, x.LessonId, x.LessonName, x.ClassId, x.ClassName, x.EmpId, x.EmpName }).OrderBy(x => x.BuKaoFlag).ThenByDescending(x => x.AcademicYearNo).ThenByDescending(x => x.Semester).ThenBy(x => x.StuId);
return Success(result);
}
}
}

+ 290
- 0
Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/BaseNoAuthenticationNoLogin.cs View File

@@ -0,0 +1,290 @@
using Learun.Application.Base.SystemModule;
using Learun.Loger;
using Learun.Util;
using Learun.Util.Operat;
using Nancy;
using Nancy.ModelBinding;
using System;//D:\Item\repos\DigitalScholl\Learun.Framework.Ultimate V7\Learun.Application.WebApi\Modules\TransferApi.cs
using static Learun.Application.WebApi.TransferApi;

namespace Learun.Application.WebApi
{
/// <summary>
/// 版 本 Learun-ADMS V7.0.0 数字化智慧校园
/// Copyright (c) 2013-2018 北京泉江科技有限公司
/// 创建人:数字化智慧校园-框架开发组
/// 日 期:2017.05.12
/// 描 述:Nancy-Api基础模块
/// </summary>
public class BaseNoAuthenticationNoLogin : NancyModule
{
#region 构造函数
public BaseNoAuthenticationNoLogin()
: base()
{
Before += BeforeRequest;
OnError += OnErroe;
}
public BaseNoAuthenticationNoLogin(string baseUrl)
: base(baseUrl)
{
Before += BeforeRequest;
OnError += OnErroe;
}
#endregion

#region 获取请求数据
/// <summary>
/// 获取请求数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public T GetReqData<T>() where T : class
{
try
{
ReqParameter<string> req = this.Bind<ReqParameter<string>>();
return req.data.ToObject<T>();
}
catch (Exception)
{
throw;
}

}
/// <summary>
/// 获取请求数据
/// </summary>
/// <returns></returns>
public string GetReqData()
{
try
{
ReqParameter<string> req = this.Bind<ReqParameter<string>>();
return req.data;
}
catch (Exception)
{
throw;
}

}
/// <summary>
/// 获取请求数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public T GetReq<T>() where T : class
{
try
{
T req = this.Bind<T>();
return req;
}
catch (Exception)
{
throw;
}
}
#endregion

#region 响应接口
/// <summary>
/// 成功响应数据
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public Response Success(string info)
{
ResParameter res = new ResParameter { code = ResponseCode.success, info = info, data = new object { } };
return Response.AsText(res.ToJson()).WithContentType("application/json");
}
/// <summary>
/// 成功响应数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="res"></param>
/// <returns></returns>
public Response Success(object data)
{
ResParameter res = new ResParameter { code = ResponseCode.success, info = "响应成功", data = data };
return Response.AsText(res.ToJson()).WithContentType("application/json");
}
/// <summary>
/// 成功响应数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="res"></param>
/// <returns></returns>
public Response Success<T>(T data) where T : class
{
ResParameter res = new ResParameter { code = ResponseCode.success, info = "响应成功", data = data };
return Response.AsText(res.ToJson()).WithContentType("application/json");
}
/// <summary>
/// 成功响应数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="res"></param>
/// <returns></returns>
public Response SuccessString(string data)
{
ResParameter res = new ResParameter { code = ResponseCode.success, info = "响应成功", data = data };
return Response.AsText(res.ToJson()).WithContentType("application/json");
}
/// <summary>
/// 接口响应失败
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public Response Fail(string info)
{
ResParameter res = new ResParameter { code = ResponseCode.fail, info = info, data = new object { } };
return Response.AsText(res.ToJson()).WithContentType("application/json");
}
public Response FailNoLogin(string info)
{
ResParameter res = new ResParameter { code = ResponseCode.nologin, info = info, data = new object { } };
return Response.AsText(res.ToJson()).WithContentType("application/json");
}
#endregion

#region 异常抓取
/// <summary>
/// 日志对象实体
/// </summary>
private Log _logger;
/// <summary>
/// 日志操作
/// </summary>
public Log Logger
{
get { return _logger ?? (_logger = LogFactory.GetLogger(this.GetType().ToString())); }
}
/// <summary>
/// 监听接口异常
/// </summary>
/// <param name="ctx">连接上下信息</param>
/// <param name="ex">异常信息</param>
/// <returns></returns>
private Response OnErroe(NancyContext ctx, Exception ex)
{
try
{
this.WriteLog(ctx, ex);
}
catch (Exception)
{
}
string msg = "提示:" + ex.Message;
return Response.AsText(new ResParameter { code = ResponseCode.exception, info = msg }.ToJson()).WithContentType("application/json").WithStatusCode(HttpStatusCode.OK);
}
/// <summary>
/// 写入日志(log4net)
/// </summary>
/// <param name="context">提供使用</param>
private void WriteLog(NancyContext context, Exception ex)
{
if (context == null)
return;
string path = context.ResolvedRoute.Description.Path;
var log = LogFactory.GetLogger("workflowapi");
Exception Error = ex;
LogMessage logMessage = new LogMessage();
logMessage.OperationTime = DateTime.Now;
logMessage.Url = path;
logMessage.Class = "learunwebapi";
logMessage.Ip = Net.Ip;
logMessage.Host = Net.Host;
logMessage.Browser = Net.Browser;
if (Error.InnerException == null)
{
logMessage.ExceptionInfo = Error.Message;
logMessage.ExceptionSource = Error.Source;
logMessage.ExceptionRemark = Error.StackTrace;
}
else
{
logMessage.ExceptionInfo = Error.InnerException.Message;
logMessage.ExceptionSource = Error.InnerException.Source;
logMessage.ExceptionRemark = Error.InnerException.StackTrace;
}
string strMessage = new LogFormat().ExceptionFormat(logMessage);
log.Error(strMessage);

LogEntity logEntity = new LogEntity();
logEntity.F_CategoryId = 4;
logEntity.F_OperateTypeId = ((int)OperationType.Exception).ToString();
logEntity.F_OperateType = EnumAttribute.GetDescription(OperationType.Exception);
logEntity.F_OperateAccount = logMessage.UserName;
logEntity.F_ExecuteResult = -1;
logEntity.F_ExecuteResultJson = strMessage;
logEntity.F_Description = "移动端";
logEntity.WriteLog();
}
#endregion

#region 权限验证
public UserInfo userInfo;
public string loginMark;
public string token;

/// <summary>
/// 前置拦截器
/// </summary>
/// <param name="ctx"></param>
/// <returns></returns>
private Response BeforeRequest(NancyContext ctx)
{
//var Requesttoken = DESEncrypt.Decrypt(Request.Headers["token"].ToString());
var Requesttoken = DESEncrypt.Decrypt(Request.Query["token"].ToString());

var a = EnumAttribute.GetVsS(typeof(loginins));

//if (Requesttoken == loginins.school)
//{

//}
ctx.Request.Url.Query = Learun.Util.WebHelper.Formatstr(ctx.Request.Url.Query);
foreach (var p in ctx.Parameters)
{
if (p.ParameterType == typeof(string))
{
if (ctx.Parameters[p.ParameterName] != null)
{
ctx.Parameters[p.ParameterName] = Learun.Util.WebHelper.Formatstr(ctx.Parameters[p.ParameterName].ToString());
}
}
}
string path = ctx.ResolvedRoute.Description.Path;
//验证登录状态
ReqParameter req = this.Bind<ReqParameter>();
loginMark = req.loginMark;
token = req.token;
if (path == "/learun/adms/user/login" || path == "/learun/adms/user/loginbyIdCard" || path == "/" || path == "/bgimg" || path == "/learun/adms/user/img" || path == "/learun/adms/desktop/img" || path == "/learun/adms/user/imgfordc" || path == "/learun/adms/timetable/timeTableData" || path == "/quanjiang/sso/authorize" || path == "/learun/nologin/adms/annexes/upload" || path == "/learun/adms/annexes/wxlist" || path == "/learun/visitmanage/save" || path == "/learun/visitmanage/getweixinaccess_token")
{// 登录接口,默认页面接口不做权限验证处理
return null;
}

OperatorResult res = OperatorHelper.Instance.IsOnLine(req.token, req.loginMark);
if (res.stateCode == -1)
{
return this.FailNoLogin("未找到登录信息");
}
if (res.stateCode == 0)
{
return this.FailNoLogin("登录信息已过期");
}
else
{
// 获取登录者信息
userInfo = res.userInfo;
}
return null;
}
#endregion

}
}

+ 473
- 0
Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs View File

@@ -0,0 +1,473 @@
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
{
/// <summary>
/// 版 本 Learun-ADMS-Ultimate V7.0.0 力软敏捷开发框架
/// Copyright (c) 2013-2018 上海力软信息技术有限公司
/// 创 建:超级管理员
/// 日 期:2019-08-19 17:50
/// 描 述:传送接口
/// </summary>

public class TransferApi : BaseNoAuthentication
{
private EmpInfoIBLL empInfoIBLL = new EmpInfoBLL();
private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
private DepartmentIBLL departmentIBLL = new DepartmentBLL();
private UserIBLL userIBLL = new UserBLL();

/// <summary>
/// 注册接口
/// <summary>
public TransferApi()
: base("/TransferApi/BasicInfo")
{
//发送部门基础信息
Get["/sendDepartmentInfo"] = SendDepartmentInfo;
//发送教师基础信息
Get["/sendTeacherInfo"] = SendTeacherInfo;
//发送学生基础信息
Get["/sendStudentInfo"] = SendStudentInfo;
}
/// <summary>
/// cookie
/// </summary>
public static CookieCollection cookie { get; set; }
public static string cookiestr { get; set; }
public static DateTime cookiestrTime { get; set; }

#region 获取数据

/// <summary>
/// 获取cookie接口
/// </summary>
/// <returns></returns>
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<dynamic>(responseLogin);
if (responseLoginObj.ErrCode == 200)
{
return true;
}
else
{
return GetCookie();
}
}
/// <summary>
/// 发送部门基础信息
/// <summary>
/// <param name="_"></param>
/// <returns></returns>
public Response SendDepartmentInfo(dynamic _)
{
var result = new List<string>();

if (string.IsNullOrEmpty(cookiestr) || ((DateTime.Now - cookiestrTime).Minutes > 10))
{
//调登录接口拿到cookie
GetCookie();
}
var departmentList = departmentIBLL.GetAllList().Where(x => x.SendFlag == false);
foreach (var item in departmentList)
{
var param = new
{
ParentCode = string.IsNullOrEmpty(item.F_ParentId) || item.F_ParentId == "0" ? "iccsid" : (departmentIBLL.GetEntity(item.F_ParentId) == null ? "iccsid" : departmentIBLL.GetEntity(item.F_ParentId)?.F_EnCode),
pageSize = 10,
Name = item.F_FullName,
Code = item.F_EnCode,
};

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<dynamic>(responseSend);

result.Add("部门编号" + item.F_EnCode + ",新增接口结果:" + responseSendObj.ErrCode + responseSendObj.ErrMsg);

if (responseSendObj.ErrCode == 200)
{
//第三方新增成功,修改表-发送标识为true
//TODO:
var entity = departmentIBLL.GetEntity(item.F_DepartmentId);
if (entity != null)
{
entity.SendFlag = true;
departmentIBLL.SaveEntity2(entity.F_DepartmentId, entity);
}
}
else if (responseSendObj.ErrCode == 1010) //{ "ErrCode":1010,"ErrMsg":"登录状态已失效"}
{
//获取cookie
GetCookie();
}
else if (responseSendObj.ErrCode == 10000) //10000 code repetition
{
//调修改接口
var param2 = new
{
Code = item.F_EnCode,
Name = item.F_FullName,
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<dynamic>(responseSend2);

result.Add("部门编号" + item.F_EnCode + ",修改接口结果:" + responseSendObj2.ErrCode + responseSendObj2.ErrMsg);

if (responseSendObj2.ErrCode == 200)
{
//第三方修改成功,修改表-发送标识为true
//TODO:
var entity = departmentIBLL.GetEntity(item.F_DepartmentId);
if (entity != null)
{
entity.SendFlag = true;
departmentIBLL.SaveEntity2(entity.F_DepartmentId, entity);
}
}
else
{
//其他错误
}
}
else
{
//其他错误
}

}

return Success(result);
}
/// <summary>
/// 发送教师基础信息
/// <summary>
/// <param name="_"></param>
/// <returns></returns>
public Response SendTeacherInfo(dynamic _)
{
var result = new List<string>();

if (string.IsNullOrEmpty(cookiestr) || ((DateTime.Now - cookiestrTime).Minutes > 10))
{
//调登录接口拿到cookie
GetCookie();
}
//var teacherList = empInfoIBLL.GetAllList();
//foreach (var item in teacherList)
{
Dictionary<string, string> parameters = new Dictionary<string, string>(); //参数列表
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<dynamic>(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<PersonInfo>(responseSend3);

result.Add("教师编号,查询接口结果:" + responseSendObj3.ErrCode + responseSendObj3.ErrMsg + JsonConvert.SerializeObject(responseSendObj3.data));

if (responseSendObj3.ErrCode == 200)
{
//第三方查询成功
//调修改接口
Dictionary<string, string> parameters2 = new Dictionary<string, string>(); //参数列表
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<dynamic>(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);
}

/// <summary>
/// 发送学生基础信息
/// </summary>
/// <returns></returns>
public Response SendStudentInfo(dynamic _)
{
return Success("成功了!");
}
#endregion

#region 公共方法
/// <summary>
/// 请求获取cookie:
/// </summary>
/// <param name="type">GET,POST</param>
/// <param name="url"></param>
/// <param name="encoding">UTF-8</param>
/// <param name="data">传送需要的参数</param>
/// <returns></returns>
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;
}
/// <summary>
/// 请求携带cookie:
/// </summary>
/// <param name="type">GET,POST,PUT</param>
/// <param name="contentType">请求头类型(json是application/json;charset=utf-8,form-data是multipart/form-data; boundary=----WebKitFormBoundaryAOT8GpQYYAP9jgGf,)</param>
/// <param name="url"></param>
/// <param name="encoding">UTF-8</param>
/// <param name="data">传送需要的参数</param>
/// <returns></returns>
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;
}
/// <summary>
/// 组装请求参数
/// </summary>
/// <param name="parameters"></param>
/// <param name="encode"></param>
/// <returns></returns>
private static string BuildQuery(IDictionary<string, string> parameters, string encode)
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;
IEnumerator<KeyValuePair<string, string>> 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();
}
/// <summary>
/// 组装请求参数
/// </summary>
/// <param name="parameters">key-value</param>
/// <param name="boundary">分隔符</param>
/// <returns></returns>
private static string BuildQuery2(IDictionary<string, string> 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 私有类

/// <summary>
/// 表单实体类
/// <summary>
private class ReqFormEntity
{
public string keyValue { get; set; }
public string strEntity { get; set; }
}

/// <summary>
/// 人员详细信息
/// <summary>
private class PersonInfo
{
/// <summary>
/// 错误码(200表示成功,
/// </summary>
public int ErrCode { get; set; }
/// <summary>
/// 错误信息,”success”为正常
/// </summary>
public string ErrMsg { get; set; }
public PersonInfoData data { get; set; }
}
private class PersonInfoData
{
/// <summary>
/// 人员存在数据库的唯一ID
/// </summary>
public int Seqid { get; set; }
/// <summary>
/// 头像存储的地址ur
/// </summary>
public List<PersonDataPictures> Pictures { get; set; }
}
private class PersonDataPictures
{
/// <summary>
/// 登记照片地址
/// </summary>
public string PersonPicturePath { get; set; }
}

public enum loginins
{
school,
CODE,
}
#endregion

}
}

+ 19
- 0
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Attributes/EnumAttribute.cs View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;

@@ -40,5 +41,23 @@ namespace Learun.Util
}
return null;
}

/// <summary>
/// 返回枚举项的描述信息。
/// </summary>
/// <param name="value">要获取描述信息的枚举项。</param>
/// <returns>枚举想的描述信息。</returns>
public static List<string> GetVsS(Type value)
{
var ls = new List<string>();
var vs = Enum.GetValues(value);
foreach (var item in vs)
{
ls.Add(item.ToString());
}
return ls;

}
}
}

Loading…
Cancel
Save