You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

439 lines
18 KiB

  1. using Nancy;
  2. using Learun.Util;
  3. using System.Collections.Generic;
  4. using Learun.Application.TwoDevelopment.EducationalAdministration;
  5. using static Learun.Application.WebApi.Modules.StuInfoFreshApi;
  6. using System;
  7. using System.IO;
  8. using Learun.Application.Base.SystemModule;
  9. using System.Net;
  10. using System.Linq;
  11. namespace Learun.Application.WebApi
  12. {
  13. /// <summary>
  14. /// 版 本 Learun-ADMS-Ultimate V7.0.0 力软敏捷开发框架
  15. /// Copyright (c) 2013-2018 上海力软信息技术有限公司
  16. /// 创 建:超级管理员
  17. /// 日 期:2019-08-19 17:50
  18. /// 描 述:教师注册
  19. /// </summary>
  20. public class EmpInfoApi : BaseNoLoginApi
  21. {
  22. private EmpInfoIBLL empInfoIBLL = new EmpInfoBLL();
  23. private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
  24. private TeachSwitchIBLL teachSwitchIBLL = new TeachSwitchBLL();
  25. private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
  26. /// <summary>
  27. /// 注册接口
  28. /// <summary>
  29. public EmpInfoApi()
  30. //: base("/Learun/adms/EducationalAdministration/EmpRegister")
  31. : base()
  32. {
  33. Get["/Learun/adms/EducationalAdministration/EmpRegister/pagelist"] = GetPageList;
  34. Get["/Learun/adms/EducationalAdministration/EmpRegister/list"] = GetList;
  35. Get["/Learun/adms/EducationalAdministration/EmpRegister/form"] = GetForm;
  36. Get["/Learun/adms/EducationalAdministration/EmpRegister/formForNo"] = GetFormForNo;
  37. Post["/Learun/adms/EducationalAdministration/EmpRegister/delete"] = DeleteForm;
  38. Post["/Learun/adms/EducationalAdministration/EmpRegister/save"] = SaveForm;
  39. Post["/Learun/adms/EducationalAdministration/EmpRegister/savePhoto"] = GetSavePhoto;
  40. Get["/Learun/adms/EducationalAdministration/EmpRegister/registerbutton"] = RegisterButton;
  41. Post["/Learun/adms/EducationalAdministration/EmpRegister/signon"] = Signon;
  42. //根据身份证号更新学生和老师的照片
  43. Post["/EducationalAdministration/EmpRegister/updatePhotoByIdCard"] = UpdatePhotoByIdCard;
  44. }
  45. private Response Signon(dynamic _)
  46. {
  47. SignUpHelper.AddQueue("德玛西亚", "140181199110080255");
  48. return Success("成功");
  49. }
  50. #region 获取数据
  51. /// <summary>
  52. /// 获取页面显示列表分页数据
  53. /// <summary>
  54. /// <param name="_"></param>
  55. /// <returns></returns>
  56. public Response GetPageList(dynamic _)
  57. {
  58. ReqPageParam parameter = this.GetReqData<ReqPageParam>();
  59. var data = empInfoIBLL.GetPageList(parameter.pagination, parameter.queryJson);
  60. var jsonData = new
  61. {
  62. rows = data,
  63. total = parameter.pagination.total,
  64. page = parameter.pagination.page,
  65. records = parameter.pagination.records
  66. };
  67. return Success(jsonData);
  68. }
  69. /// <summary>
  70. /// 获取页面显示列表数据
  71. /// <summary>
  72. /// <param name="_"></param>
  73. /// <returns></returns>
  74. public Response GetList(dynamic _)
  75. {
  76. string queryJson = this.GetReqData();
  77. var data = empInfoIBLL.GetList(queryJson);
  78. return Success(data);
  79. }
  80. public Response RegisterButton(dynamic _)
  81. {
  82. var result = teachSwitchIBLL.FindFirst("js").ToString();
  83. return Success(result);
  84. }
  85. /// <summary>
  86. /// 获取表单数据
  87. /// <summary>
  88. /// <param name="_"></param>
  89. /// <returns></returns>
  90. public Response GetForm(dynamic _)
  91. {
  92. string keyValue = this.GetReqData();
  93. var EmpInfoData = empInfoIBLL.GetEmpInfoEntity(keyValue);
  94. var jsonData = new
  95. {
  96. EmpInfo = EmpInfoData,
  97. };
  98. return Success(jsonData);
  99. }
  100. /// <summary>
  101. /// 获取表单数据
  102. /// <summary>
  103. /// <param name="_"></param>
  104. /// <returns></returns>
  105. public Response GetFormForNo(dynamic _)
  106. {
  107. string keyValue = this.GetReqData();
  108. var EmpInfoData = empInfoIBLL.GetEmpInfoEntityByEmpNo(keyValue);
  109. var jsonData = new
  110. {
  111. EmpInfo = EmpInfoData,
  112. };
  113. return Success(jsonData);
  114. }
  115. #endregion
  116. #region 提交数据
  117. /// <summary>
  118. /// 头像
  119. /// </summary>
  120. /// <param name="_"></param>
  121. /// <returns></returns>
  122. private Response GetSavePhoto(dynamic _)
  123. {
  124. var model = this.GetReqData<PhotoModel>();
  125. var folderId = Guid.NewGuid().ToString();
  126. string filePath = Config.GetValue("AnnexesFile");
  127. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  128. string FileEextension = ".png";
  129. string fileGuid = Guid.NewGuid().ToString();
  130. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, model.account, uploadDate, fileGuid, FileEextension);
  131. //创建文件夹
  132. string path = Path.GetDirectoryName(virtualPath);
  133. Directory.CreateDirectory(path);
  134. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  135. if (!System.IO.File.Exists(virtualPath))
  136. {
  137. //byte[] bytes = Convert.FromBase64String(model.Base64Url.Replace("data:image/jpeg;base64,", ""));
  138. byte[] bytes = Convert.FromBase64String(model.Base64Url.Substring(model.Base64Url.IndexOf("base64,") + 7));
  139. FileInfo file = new FileInfo(virtualPath);
  140. FileStream fs = file.Create();
  141. fs.Write(bytes, 0, bytes.Length);
  142. fs.Close();
  143. //文件信息写入数据库
  144. fileAnnexesEntity.F_Id = fileGuid;
  145. fileAnnexesEntity.F_FileName = "userphoto.png";
  146. fileAnnexesEntity.F_FilePath = virtualPath;
  147. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  148. fileAnnexesEntity.F_FileExtensions = FileEextension;
  149. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  150. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  151. }
  152. var data = new
  153. {
  154. Url = virtualPath.Substring(virtualPath.IndexOf("Resource")),
  155. AnnexesFileId = fileGuid
  156. };
  157. return Success(data);
  158. }
  159. /// <summary>
  160. /// 删除实体数据
  161. /// <param name="_"></param>
  162. /// <summary>
  163. /// <returns></returns>
  164. public Response DeleteForm(dynamic _)
  165. {
  166. string keyValue = this.GetReqData();
  167. empInfoIBLL.DeleteEntity(keyValue);
  168. return Success("删除成功!");
  169. }
  170. /// <summary>
  171. /// 保存实体数据(新增、修改)
  172. /// <param name="_"></param>
  173. /// <summary>
  174. /// <returns></returns>
  175. public Response SaveForm(dynamic _)
  176. {
  177. ReqFormEntity parameter = this.GetReqData<ReqFormEntity>();
  178. EmpInfoEntity entity = parameter.strEntity.ToObject<EmpInfoEntity>();
  179. empInfoIBLL.SaveEntity(this.userInfo, parameter.keyValue, entity);
  180. return Success("保存成功!");
  181. }
  182. /// <summary>
  183. /// 根据身份证号更新学生和老师的照片
  184. /// </summary>
  185. /// <param name="_"></param>
  186. /// <returns></returns>
  187. private Response UpdatePhotoByIdCard(dynamic _)
  188. {
  189. //传参
  190. var requestModels = this.GetReq<List<RequestModel>>();
  191. //回参
  192. var responseModels = new List<ResponseModel>();
  193. //限制每次最多传值50条
  194. if (requestModels.Count() > 50)
  195. {
  196. return Fail("限制每次最多传值50条");
  197. }
  198. //图片保存的文件夹地址
  199. string FileEextension = ".png";
  200. string directoryPathOfEmp = string.Format("{0}/{1}/{2}", Config.GetValue("AnnexesFile"), "ApiOfUpdatePhotoByIdCard", "Teacher");
  201. string directoryPathOfStu = string.Format("{0}/{1}/{2}", Config.GetValue("AnnexesFile"), "ApiOfUpdatePhotoByIdCard", "Student");
  202. if (!Directory.Exists(directoryPathOfEmp))
  203. {
  204. Directory.CreateDirectory(directoryPathOfEmp);
  205. };
  206. if (!Directory.Exists(directoryPathOfStu))
  207. {
  208. Directory.CreateDirectory(directoryPathOfStu);
  209. };
  210. //循环处理
  211. foreach (var item in requestModels)
  212. {
  213. if (item.IdentityFlag == 1)//老师
  214. {
  215. var entity = empInfoIBLL.GetEmpInfoEntityByIdCard(item.IdCard);
  216. if (entity == null)
  217. {
  218. var pmodel = new ResponseModel()
  219. {
  220. IdCard = item.IdCard,
  221. OperateFlag = false,
  222. FailMsg = "该身份证号的教师信息不存在!"
  223. };
  224. responseModels.Add(pmodel);
  225. }
  226. else
  227. {
  228. //图片地址
  229. var imgPath = string.Format("{0}/{1}{2}", directoryPathOfEmp, item.IdCard, FileEextension);
  230. //下载图片到本地
  231. //WebClient my = new WebClient();
  232. //byte[] mybyte = my.DownloadData(item.PhotoUrl);
  233. //FileInfo file = new FileInfo(imgPath);
  234. //FileStream fs = file.Create();
  235. //fs.Write(mybyte, 0, mybyte.Length);
  236. //fs.Close();
  237. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(item.PhotoUrl);
  238. request.Timeout = 5000;
  239. long len = 0;
  240. try
  241. {
  242. var wresp = (HttpWebResponse)request.GetResponse();
  243. var stream = wresp.GetResponseStream();
  244. System.Drawing.Image.FromStream(stream).Save(imgPath, System.Drawing.Imaging.ImageFormat.Png);
  245. len = wresp.ContentLength;
  246. stream.Close();
  247. wresp.Close();
  248. }
  249. catch (Exception ex)
  250. {
  251. //回参
  252. var pmodel2 = new ResponseModel()
  253. {
  254. IdCard = item.IdCard,
  255. OperateFlag = false,
  256. FailMsg = "请求图片地址失败!" + ex.Message
  257. };
  258. responseModels.Add(pmodel2);
  259. continue;
  260. }
  261. //图片地址保存到LR_Base_AnnexesFile表中
  262. var folderId = Guid.NewGuid().ToString();
  263. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  264. fileAnnexesEntity.F_Id = Guid.NewGuid().ToString();
  265. fileAnnexesEntity.F_FileName = string.Format("{0}{1}", item.IdCard, FileEextension);
  266. fileAnnexesEntity.F_FilePath = imgPath;
  267. fileAnnexesEntity.F_FileSize = len.ToString();
  268. fileAnnexesEntity.F_FileExtensions = FileEextension;
  269. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  270. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  271. //更新EmpInfo表照片字段
  272. entity.Photo = folderId;
  273. empInfoIBLL.SaveEntity(entity.EmpId, entity);
  274. //回参
  275. var pmodel = new ResponseModel()
  276. {
  277. IdCard = item.IdCard,
  278. OperateFlag = true
  279. };
  280. responseModels.Add(pmodel);
  281. }
  282. }
  283. else if (item.IdentityFlag == 2)//学生
  284. {
  285. var entity = stuInfoBasicIBLL.GetStuInfoBasicEntityByIdCard(item.IdCard);
  286. if (entity == null)
  287. {
  288. var pmodel = new ResponseModel()
  289. {
  290. IdCard = item.IdCard,
  291. OperateFlag = false,
  292. FailMsg = "该身份证号的学生信息不存在!"
  293. };
  294. responseModels.Add(pmodel);
  295. }
  296. else
  297. {
  298. //图片地址
  299. var imgPath = string.Format("{0}/{1}{2}", directoryPathOfStu, item.IdCard, FileEextension);
  300. //下载图片到本地
  301. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(item.PhotoUrl);
  302. request.Timeout = 5000;
  303. long len = 0;
  304. try
  305. {
  306. var wresp = (HttpWebResponse)request.GetResponse();
  307. var stream = wresp.GetResponseStream();
  308. System.Drawing.Image.FromStream(stream).Save(imgPath, System.Drawing.Imaging.ImageFormat.Png);
  309. len = wresp.ContentLength;
  310. stream.Close();
  311. wresp.Close();
  312. }
  313. catch (Exception ex)
  314. {
  315. //回参
  316. var pmodel2 = new ResponseModel()
  317. {
  318. IdCard = item.IdCard,
  319. OperateFlag = false,
  320. FailMsg = "请求图片地址失败!" + ex.Message
  321. };
  322. responseModels.Add(pmodel2);
  323. continue;
  324. }
  325. //图片地址保存到LR_Base_AnnexesFile表中
  326. var folderId = Guid.NewGuid().ToString();
  327. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  328. fileAnnexesEntity.F_Id = Guid.NewGuid().ToString();
  329. fileAnnexesEntity.F_FileName = string.Format("{0}{1}", item.IdCard, FileEextension);
  330. fileAnnexesEntity.F_FilePath = imgPath;
  331. fileAnnexesEntity.F_FileSize = len.ToString();
  332. fileAnnexesEntity.F_FileExtensions = FileEextension;
  333. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  334. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  335. //更新StuInfoBasic表照片字段
  336. entity.Photo = folderId;
  337. stuInfoBasicIBLL.SaveEntity(entity.StuId, entity);
  338. //回参
  339. var pmodel = new ResponseModel()
  340. {
  341. IdCard = item.IdCard,
  342. OperateFlag = true
  343. };
  344. responseModels.Add(pmodel);
  345. }
  346. }
  347. else
  348. {
  349. var pmodel = new ResponseModel()
  350. {
  351. IdCard = item.IdCard,
  352. OperateFlag = false,
  353. FailMsg = "身份标识不存在!"
  354. };
  355. responseModels.Add(pmodel);
  356. }
  357. }
  358. return Success(responseModels);
  359. }
  360. #endregion
  361. #region 私有类
  362. /// <summary>
  363. /// 表单实体类
  364. /// <summary>
  365. private class ReqFormEntity
  366. {
  367. public string keyValue { get; set; }
  368. public string strEntity { get; set; }
  369. }
  370. /// <summary>
  371. /// 更新照片传参
  372. /// </summary>
  373. private class RequestModel
  374. {
  375. /// <summary>
  376. /// 身份证号
  377. /// </summary>
  378. public string IdCard { get; set; }
  379. /// <summary>
  380. /// 照片地址
  381. /// </summary>
  382. public string PhotoUrl { get; set; }
  383. /// <summary>
  384. /// 身份标识(1老师,2学生)
  385. /// </summary>
  386. public int IdentityFlag { get; set; }
  387. }
  388. /// <summary>
  389. /// 更新照片回参
  390. /// </summary>
  391. private class ResponseModel
  392. {
  393. /// <summary>
  394. /// 身份证号
  395. /// </summary>
  396. public string IdCard { get; set; }
  397. /// <summary>
  398. /// 操作标识(true更新成功,false更新失败)
  399. /// </summary>
  400. public bool OperateFlag { get; set; }
  401. /// <summary>
  402. /// 更新失败原因
  403. /// </summary>
  404. public string FailMsg { get; set; }
  405. }
  406. #endregion
  407. }
  408. }