using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Http.Results; using Learun.Application.Base.AuthorizeModule; using Learun.Application.Base.SystemModule; using Learun.Application.OA.File.FileFolder; using Learun.Application.OA.File.FileInfo; using Learun.Application.Organization; using Learun.Application.TwoDevelopment.EducationalAdministration; using Learun.Application.TwoDevelopment.Permission; using Learun.Util; using Nancy; using Nancy.Extensions; using Newtonsoft.Json; using Permission.Service.DTO.ApiModels; using Permission.Utils.FormatModels; using UserModel = Permission.Service.DTO.ApiModels.UserModel; namespace Learun.Application.WebApi.Modules.Feixing { public class UserApiController : FeixingNoAuthentication { private UserIBLL userIbll = new UserBLL(); private EmpInfoIBLL empInfoIbll = new EmpInfoBLL(); private DepartmentIBLL departmentIbll = new DepartmentBLL(); private CompanyIBLL companyIbll = new CompanyBLL(); private Perm_ChartGroupIBLL chartGroupIbll = new Perm_ChartGroupBLL(); private DataItemIBLL dataItemIBLL = new DataItemBLL(); DataSourceIBLL dataSourceIBLL = new DataSourceBLL(); private FileFolderIBLL fileFolderBLL = new FileFolderBLL(); private FileInfoIBLL fileInfoBLL = new FileInfoBLL(); Perm_FunctionIBLL permFunctionIbll = new Perm_FunctionBLL(); AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL(); private UserRelationIBLL userRelationIBLL = new UserRelationBLL(); public UserApiController() : base("/api/") { Get["/userlogin"] = CheckLogin; Get["/getusers"] = GetUserOrgList; Get["/getgroups"] = GetGroups; Get["/getuser"] = GetUserInfo; Post["/updateuser"] = UpdateUserInfo; Get["/getdictitems"] = GetDictitems; Get["/getdfiles"] = GetdFiles; Post["savefolder"] = SaveFolder; Post["/editfolder"] = EditFolder; Post["/editdfile"] = EditFile; Post["/delfolder"] = DelFolder; Post["/delfile"] = DelFile; Get["/getmainserver"] = GetMainServer; Get["/getssopublicsecret"] = GetSSOPublicSecret; Post["/savefile"] = SaveFile; Get["/getsystems"] = GetSystems; } private Response GetSystems(dynamic _) { string userid = Request.Query["userId"]; var data = permFunctionIbll.GetListByUserId(userid); List sysinfolist = new List(); foreach (var dataitem in data) { SystemInfoApiViewModel sysinfo = new SystemInfoApiViewModel(); sysinfo.Id = dataitem.FId; sysinfo.SysTypeName = dataitem.FTName; sysinfo.SysName = dataitem.FName; sysinfo.SysHost = dataitem.FUrl; sysinfo.SysInterface = dataitem.FInterfaceUrl; sysinfo.IsManagerPage = Convert.ToInt32(dataitem.FIsManagePage != null && dataitem.FIsManagePage.Value); sysinfo.SysSecret = dataitem.FSecret; var imagePath = annexesFileIBLL.GetEntityByFolderId(dataitem.FImage).F_FilePath; if (!string.IsNullOrEmpty(imagePath)) sysinfo.SysLogo = imagePath.Substring(imagePath.IndexOf("Resource") - 1); sysinfolist.Add(sysinfo); } return Success("ok", sysinfolist); } private Response SaveFile(dynamic _) { var reqbody = JsonConvert.DeserializeObject(Request.Body.AsString()); if (reqbody == null) { return Fail("响应失败,参数错误"); } FileInfoEntity folder = new FileInfoEntity(); folder.Create(); folder.F_FileName = reqbody.FileName; folder.F_CreateUserId = reqbody.UserId; folder.F_ModifyUserId = reqbody.UserId; folder.F_FolderId = reqbody.FolderId; if (folder.F_FolderId==null) { folder.F_FolderId = "0"; } folder.F_FileSize = reqbody.FileSize; folder.F_FileExtensions = reqbody.ExtendName; folder.F_FileType = folder.F_FileExtensions.TrimStart('.'); folder.F_FilePath = reqbody.FileUrl; folder.F_DeleteMark = 0; fileInfoBLL.SaveForm(null, folder); return Success("ok", folder.F_FolderId); } private Response GetSSOPublicSecret(dynamic _) { string webrootpath = ConfigurationManager.AppSettings.Get("SSOPublicSecret"); return Success("ok", webrootpath); } private Response GetMainServer(dynamic _) { string webrootpath = ConfigurationManager.AppSettings.Get("webrootpath"); return Success("ok", webrootpath); } private Response DelFile(dynamic _) { var reqbody = JsonConvert.DeserializeObject(Request.Body.AsString()); if (reqbody == null) { return Fail("响应失败,参数错误"); } FileInfoEntity fileInfo = fileInfoBLL.GetEntity(reqbody.fileid.ToString()); if (fileInfo != null) { fileInfoBLL.RemoveForm(fileInfo.F_FileId); } return Success("ok"); } private Response DelFolder(dynamic _) { var reqbody = JsonConvert.DeserializeObject(Request.Body.AsString()); if (reqbody == null) { return Fail("响应失败,参数错误"); } FileFolderEntity fileInfo = fileFolderBLL.GetEntity(reqbody.fileid.ToString()); if (fileInfo != null) { fileFolderBLL.RemoveForm(fileInfo.F_FolderId); } return Success("ok"); } private Response EditFile(dynamic _) { var reqbody = JsonConvert.DeserializeObject(Request.Body.AsString()); if (reqbody == null) { return Fail("响应失败,参数错误"); } FileInfoEntity fileInfo = fileInfoBLL.GetEntity(reqbody.fileid.ToString()); fileInfo.F_FileName = reqbody.newfilename; fileInfo.F_ModifyUserId = reqbody.userid; fileInfoBLL.SaveForm(fileInfo.F_FileId, fileInfo); return Success("ok"); } private Response EditFolder(dynamic _) { var reqbody = JsonConvert.DeserializeObject(Request.Body.AsString()); if (reqbody == null) { return Fail("响应失败,参数错误"); } FileFolderEntity folder = fileFolderBLL.GetEntity(reqbody.folderid.ToString()); folder.F_FolderName = reqbody.newfoldername; folder.F_ModifyUserId = reqbody.userid; fileFolderBLL.SaveForm(folder.F_FolderId, folder); return Success("ok"); } private Response SaveFolder(dynamic _) { var reqbody = JsonConvert.DeserializeObject(Request.Body.AsString()); if (reqbody == null) { return Fail("响应失败,参数错误"); } FileFolderEntity folder = new FileFolderEntity(); folder.Create(); folder.F_FolderName = reqbody.FolderName; folder.F_CreateUserId = reqbody.UserId; folder.F_ModifyUserId = reqbody.UserId; folder.F_ParentId = reqbody.Parent; folder.F_DeleteMark = 0; fileFolderBLL.SaveForm(null, folder); return Success("ok", folder.F_FolderId); } private Response GetdFiles(dynamic _) { string userid = Request.Query["userid"]; if (string.IsNullOrEmpty(userid)) { return Fail("响应失败userid为空"); } try { string webrootpath = ConfigurationManager.AppSettings.Get("webrootpath"); List diskFilelist = new List(); List files = new List(); var folderlist = fileFolderBLL.GetList(userid).Where(m => m.F_DeleteMark == 0); foreach (var folderEntity in folderlist) { BaseFile baseFile = new BaseFile { FileId = folderEntity.F_FolderId, Name = folderEntity.F_FolderName, ParentId = string.IsNullOrEmpty(folderEntity.F_ParentId) ? "0" : folderEntity.F_ParentId, FileType = 0, DownloadPath = "", TotalBytes = 0, ModifiedTime = folderEntity.F_ModifyDate ?? folderEntity.F_CreateDate.Value }; files.Add(baseFile); } var filelist = fileInfoBLL.GetList(userid).Where(m => m.F_DeleteMark == 0); foreach (var fileInfoEntity in filelist) { BaseFile baseFile = new BaseFile { FileId = fileInfoEntity.F_FileId, Name = fileInfoEntity.F_FileName, ParentId = fileInfoEntity.F_FolderId, FileType = FileTypeConvert.ConvertToIntType(fileInfoEntity.F_FileType), DownloadPath = webrootpath + fileInfoEntity.F_FilePath.TrimStart('~'), TotalBytes = Convert.ToInt32(fileInfoEntity.F_FileSize), ModifiedTime = fileInfoEntity.F_ModifyDate ?? fileInfoEntity.F_CreateDate.Value }; files.Add(baseFile); } var d = files.Where(f => f.ParentId == "0").ToList(); foreach (var fmodel in d) { NetDiskFile diskFile = new NetDiskFile { FileId = fmodel.FileId, Name = fmodel.Name, FileType = fmodel.FileType, TotalBytes = fmodel.TotalBytes, DownloadPath = fmodel.DownloadPath, ModifiedTime = fmodel.ModifiedTime, ChildFiles = CreateChildTree(files, fmodel) }; diskFilelist.Add(diskFile); } var data = diskFilelist.OrderBy(r => r.FileType).ToList(); return Success("ok", data); } catch (Exception e) { return Fail("响应失败"); } } /// /// 递归生成子树 /// /// /// /// private List CreateChildTree(List list, BaseFile model) { string parentid = model.FileId;//根节点ID List nodeList = new List(); var children = list.Where(t => t.ParentId == parentid); if (children.Any()) { NetDiskFile node = null; foreach (var chl in children) { node = new NetDiskFile { FileId = chl.FileId, Name = chl.Name, FileType = chl.FileType, TotalBytes = chl.TotalBytes, DownloadPath = chl.DownloadPath, ModifiedTime = chl.ModifiedTime, ChildFiles = CreateChildTree(list, chl) }; nodeList.Add(node); } } return nodeList; } private Response GetDictitems(dynamic _) { try { string req = Request.Query["code"]; if (string.IsNullOrEmpty(req)) { return Fail("响应失败code为空"); } if (req == "Political") { var data = dataSourceIBLL.GetDataTable("BCdPartyFace", ""); DictDataModel dictDataModel = new DictDataModel(); for (int i = 0; i < data.Rows.Count; i++) { dictDataModel.Items.Add(new SysDictDetailApiViewModel { ItemName = data.Rows[i]["partyface"].ToString(), ItemValue = data.Rows[i]["partyfaceno"].ToString() }); } return Success("OK", dictDataModel); } if (req == "Nation") { var data = dataSourceIBLL.GetDataTable("BCdNationality", ""); DictDataModel dictDataModel = new DictDataModel(); for (int i = 0; i < data.Rows.Count; i++) { dictDataModel.Items.Add(new SysDictDetailApiViewModel { ItemName = data.Rows[i]["nationality"].ToString(), ItemValue = data.Rows[i]["nationalityno"].ToString() }); } return Success("OK", dictDataModel); } if (req == "gender") { var data = dataItemIBLL.GetDetailList("usersex", ""); DictDataModel dictDataModel = new DictDataModel(); foreach (var t in data) { dictDataModel.Items.Add(new SysDictDetailApiViewModel { ItemName = t.F_ItemName, ItemValue = t.F_ItemValue }); } return Success("OK", dictDataModel); } return Fail("响应失败code未找到"); } catch (Exception e) { return Fail("响应失败"); } } private Response UpdateUserInfo(dynamic model) { UserModel userModel = JsonConvert.DeserializeObject(Request.Body.AsString()); var userinfo = userIbll.GetEntityByUserId(userModel.UserId); if (!string.IsNullOrEmpty(userModel.HeadBytes)) { try { string radomstr = Util.CommonHelper.CreateNo(); byte[] headbytes = Convert.FromBase64String(userModel.HeadBytes); string filepath = ConfigurationManager.AppSettings["AnnexesFile"] + "\\" + userModel.Account + "\\" + DateTime.Now.ToString("yyyyMMdd"); if (!Directory.Exists(filepath)) { Directory.CreateDirectory(filepath); } File.WriteAllBytes(filepath+"\\"+ radomstr + ".jpg",headbytes); userinfo.F_HeadIcon = "/Resource/" + userModel.Account +"/"+DateTime.Now.ToString("yyyyMMdd") +"/"+ radomstr + ".jpg"; //更新子表 var empinfo = empInfoIbll.GetEmpInfoEntityByEmpNo(userinfo.F_Account); if (!string.IsNullOrEmpty(empinfo.Photo)) { var annexesFileEntity = annexesFileIBLL.GetEntityByFolderId(empinfo.Photo); annexesFileEntity.F_FilePath = filepath + "\\" + radomstr + ".jpg"; annexesFileEntity.F_FileName = radomstr + ".jpg"; annexesFileEntity.F_FileSize = headbytes.Length.ToString(); annexesFileEntity.F_FileExtensions = ".jpg"; annexesFileEntity.F_FileType = "jpg"; annexesFileIBLL.SaveEntityByKey(annexesFileEntity.F_Id,annexesFileEntity); } else { string folderid = Guid.NewGuid().ToString(); var annexesFileEntity =new AnnexesFileEntity(); annexesFileEntity.F_Id = Guid.NewGuid().ToString(); annexesFileEntity.F_FolderId = folderid; annexesFileEntity.F_FilePath = filepath + "\\" + radomstr + ".jpg"; annexesFileEntity.F_FileName = radomstr + ".jpg"; annexesFileEntity.F_FileSize = headbytes.Length.ToString(); annexesFileEntity.F_FileExtensions = ".jpg"; annexesFileEntity.F_FileType = "jpg"; annexesFileEntity.F_CreateDate = DateTime.Now; annexesFileEntity.F_CreateUserId = userinfo.F_Account; annexesFileEntity.F_CreateUserName = userinfo.F_RealName; annexesFileIBLL.SaveEntity(folderid, annexesFileEntity); empInfoIbll.UpdatePhoto(empinfo.EmpId, folderid); } } catch (Exception e) { } } userinfo.F_Mobile = userModel.Mobile; userinfo.F_RealName = userModel.RealName; userinfo.F_Gender = Convert.ToInt32(userModel.Gender); userinfo.F_Birthday = userModel.Birthday; userIbll.SaveEntity(userModel.UserId, userinfo); return Success("OK"); } private Response GetUserInfo(dynamic _) { string id = Request.Query["id"]; if (string.IsNullOrEmpty(id)) { return Fail("响应失败id为空"); } try { var userEntity = userIbll.GetEntityByUserId(id); var empinfoEntity = empInfoIbll.GetEmpInfoEntityByEmpNo(userEntity.F_Account); UserModel userModel = new UserModel(); if (userEntity != null && empinfoEntity != null) { userModel.UserId = userEntity.F_UserId; userModel.Secretkey = userEntity.F_Secretkey; userModel.Account = userEntity.F_Account; userModel.RealName = userEntity.F_RealName; userModel.NickName = userEntity.F_NickName; userModel.Birthday = userEntity.F_Birthday; userModel.HeadIcon = userEntity.F_HeadIcon; userModel.HeadIsNew = true; userModel.CardId = empinfoEntity.IdentityCardNo; userModel.Gender = userEntity.F_Gender.HasValue ? userEntity.F_Gender.ToString() : "1"; userModel.Nation = empinfoEntity.NationalityNo; userModel.Origin = empinfoEntity.LocusOfResidence; userModel.Political = empinfoEntity.PartyFaceNo; userModel.DepartmentId = userEntity.F_DepartmentId; userModel.DepName = userEntity.F_DepartmentId != null ? departmentIbll.GetEntity(userEntity.F_DepartmentId).F_FullName : ""; userModel.OrganizeId = userEntity.F_CompanyId; userModel.OrganizeName = userEntity.F_CompanyId != null ? companyIbll.GetEntity(userEntity.F_CompanyId).F_FullName : ""; userModel.Description = ""; userModel.DutyName = ""; userModel.Mobile = userEntity.F_Mobile; userModel.Telephone = userEntity.F_Telephone; userModel.Email = userEntity.F_Email; userModel.Address = empinfoEntity.LocusOfResidence; userModel.Status = 1; userModel.LastLoginTime = userEntity.F_ModifyDate; return Success("OK", userModel); } else { return Fail("响应失败"); } } catch (Exception e) { return Fail("响应失败"); } } private Response GetGroups(dynamic _) { string userId = Request.Query["userId"]; if (string.IsNullOrEmpty(userId)) { return Fail("响应失败userId为空"); } try { List grouplist = new List(); var empinfolist = empInfoIbll.GetAllList(); var chartgroup = chartGroupIbll.GetGroupListByUserId(userId); foreach (var ctitem in chartgroup) { GroupModel gm = new GroupModel(); gm.GroupId = ctitem.Id; gm.GroupName = ctitem.GroupName; gm.GroupType = 0; gm.SortCode = ctitem.SortCode; gm.CreateTime = DateTime.Now; gm.CreateName = ""; gm.Description = ""; var groupuser = chartGroupIbll.GetUserList(ctitem.Id); foreach (var userdeptitem in groupuser) { var empinfoEntity = empinfolist.FirstOrDefault(m => m.EmpNo == userdeptitem.F_Account); if (empinfoEntity != null) gm.UserModels.Add(new UserModel { UserId = userdeptitem.F_UserId, Secretkey = userdeptitem.F_Secretkey, Account = userdeptitem.F_Account, RealName = userdeptitem.F_RealName, NickName = userdeptitem.F_NickName, Birthday = userdeptitem.F_Birthday, HeadIcon = userdeptitem.F_HeadIcon, HeadIsNew = true, CardId = empinfoEntity.IdentityCardNo, Gender = userdeptitem.F_Gender.HasValue ? userdeptitem.F_Gender.ToString() : "1", Nation = empinfoEntity.NationalityNo, Origin = empinfoEntity.LocusOfResidence, Political = empinfoEntity.PartyFaceNo, DepartmentId = userdeptitem.F_DepartmentId, DepName = userdeptitem.F_DepartmentId != null ? departmentIbll.GetEntity(userdeptitem.F_DepartmentId).F_FullName : "", OrganizeId = userdeptitem.F_CompanyId, OrganizeName = userdeptitem.F_CompanyId != null ? companyIbll.GetEntity(userdeptitem.F_CompanyId).F_FullName : "", Description = "", DutyName = "", Mobile = userdeptitem.F_Mobile, Telephone = userdeptitem.F_Telephone, Email = userdeptitem.F_Email, Address = empinfoEntity.LocusOfResidence, Status = 1, LastLoginTime = userdeptitem.F_ModifyDate }); } grouplist.Add(gm); } return Success("OK", grouplist); } catch (Exception e) { return Fail("响应失败"); } } private Response GetUserOrgList(dynamic _) { string orgId = Request.Query["orgId"]; if (string.IsNullOrEmpty(orgId)) { return Fail("响应失败orgId为空"); } try { var userlist = userIbll.GetAllList(); var empinfolist = empInfoIbll.GetAllList(); List depUserList = new List(); var deptlist = departmentIbll.GetList(orgId); foreach (var deptitem in deptlist) { DepUserModel depUserModel = new DepUserModel(); depUserModel.DepId = deptitem.F_DepartmentId; depUserModel.DepName = deptitem.F_FullName; depUserModel.OrgId = deptitem.F_CompanyId; depUserModel.SortCode = deptitem.F_SortCode; var userdept = userlist.Where(m => m.F_DepartmentId == deptitem.F_DepartmentId); foreach (var userdeptitem in userdept) { var empinfoEntity = empinfolist.FirstOrDefault(m => m.EmpNo == userdeptitem.F_Account); if (empinfoEntity != null) depUserModel.UserModels.Add(new UserModel { UserId = userdeptitem.F_UserId, Secretkey = userdeptitem.F_Secretkey, Account = userdeptitem.F_Account, RealName = userdeptitem.F_RealName, NickName = userdeptitem.F_NickName, Birthday = userdeptitem.F_Birthday, HeadIcon = userdeptitem.F_HeadIcon, HeadIsNew = true, CardId = empinfoEntity.IdentityCardNo, Gender = userdeptitem.F_Gender.HasValue ? userdeptitem.F_Gender.ToString() : "1", Nation = empinfoEntity.NationalityNo, Origin = empinfoEntity.LocusOfResidence, Political = empinfoEntity.PartyFaceNo, DepartmentId = userdeptitem.F_DepartmentId, DepName = userdeptitem.F_DepartmentId != null ? departmentIbll.GetEntity(userdeptitem.F_DepartmentId).F_FullName : "", OrganizeId = userdeptitem.F_CompanyId, OrganizeName = userdeptitem.F_CompanyId != null ? companyIbll.GetEntity(userdeptitem.F_CompanyId).F_FullName : "", Description = "", DutyName = "", Mobile = userdeptitem.F_Mobile, Telephone = userdeptitem.F_Telephone, Email = userdeptitem.F_Email, Address = empinfoEntity.LocusOfResidence, Status = 1, LastLoginTime = userdeptitem.F_ModifyDate }); } depUserList.Add(depUserModel); } return Success("OK", depUserList); } catch (Exception e) { return Fail("响应失败"); } } [System.Web.Mvc.HttpGet] public Response CheckLogin(dynamic _) { UserModel userModel = new UserModel(); string msg = string.Empty; try { string account = Request.Query["account"]; string password = Request.Query["password"]; //验证账户 var userEntity = userIbll.CheckLogin(account, Md5Helper.Encrypt(password, 32)); var empinfoEntity = empInfoIbll.GetEmpInfoEntityByEmpNo(userEntity.F_Account); msg = userEntity.LoginMsg; if (userEntity.LoginOk && empinfoEntity != null) { userModel.UserId = userEntity.F_UserId; userModel.Secretkey = userEntity.F_Secretkey; userModel.Account = userEntity.F_Account; userModel.RealName = userEntity.F_RealName; userModel.NickName = userEntity.F_NickName; userModel.Birthday = userEntity.F_Birthday; userModel.HeadIcon = userEntity.F_HeadIcon; userModel.HeadIsNew = true; userModel.CardId = empinfoEntity.IdentityCardNo; userModel.Gender = userEntity.F_Gender.HasValue ? userEntity.F_Gender.ToString() : "1"; userModel.Nation = empinfoEntity.NationalityNo; userModel.Origin = empinfoEntity.LocusOfResidence; userModel.Political = empinfoEntity.PartyFaceNo; userModel.DepartmentId = userEntity.F_DepartmentId; userModel.DepName = userEntity.F_DepartmentId != null ? departmentIbll.GetEntity(userEntity.F_DepartmentId).F_FullName : ""; userModel.OrganizeId = userEntity.F_CompanyId; userModel.OrganizeName = userEntity.F_CompanyId != null ? companyIbll.GetEntity(userEntity.F_CompanyId).F_FullName : ""; userModel.UserPost = userRelationIBLL.GetObjectIds(userEntity.F_UserId, 2); userModel.Description = ""; userModel.DutyName = ""; userModel.Mobile = userEntity.F_Mobile; userModel.Telephone = userEntity.F_Telephone; userModel.Email = userEntity.F_Email; userModel.Address = empinfoEntity.LocusOfResidence; userModel.Status = 1; userModel.LastLoginTime = userEntity.F_ModifyDate; return Success(msg, new { Message = msg, UserModel = userModel }); } else { var data = new { type = ResultType.Error, message = msg, resultdata = new { Message = msg, UserModel = userModel } }; return Fail(new { Message = msg, UserModel = userModel }); } } catch (Exception ex) { return Fail("响应失败"+ex.Message+msg); } } } }