//客户端查看是否有某用户消息 public async Task CheckUserMsg() { var mlUser = JsonHelper.JsonToT <ModelLoginUser>(HttpContextCore.GetCookie(ComConst.UserLogin)); if (mlUser != null && mlUser.Staff != null) { var schoolId = mlUser.School.ID; var staffId = mlUser.Staff.ID; var schoolmsgQueue = SchoolMsgQueueDic.GetValueOrDefault(schoolId); if (schoolmsgQueue != null && schoolmsgQueue.Count > 0) { var newMsgCount = 0; foreach (var cObj in schoolmsgQueue) { if (!cObj.GotMsgStaffIds.Contains(staffId))//未收到 { newMsgCount++; } } if (newMsgCount > 0) { await Clients.Caller.SendAsync("haveNewMsg", newMsgCount);//调用客户端方法 } } } }
/// <summary> /// 刷新存储的Session /// </summary> public void RefreshEntities(string entityName) { if (null == mlUser || mlUser.School == null) { return; } int schoolId = mlUser.School.ID; switch (entityName) { case "class": { List <SYS_Class> list = UnitOfWork.Repository <SYS_Class>().GetEntitiesAsync(x => x.SchoolId == schoolId && x.Status == 1).Result.OrderBy(x => x.Grade).ToList(); HttpContextCore.SetSession(ComConst.Session_ClassList, JsonHelper.ToJson(list)); break; } case "stu": { break; } case "staff": { List <SYS_Staff> list = UnitOfWork.Repository <SYS_Staff>().GetEntitiesAsync(x => x.SchoolId == schoolId && x.Status == (byte)StaffStatus.在职).Result.OrderBy(x => x.RoleLevel).ToList(); HttpContextCore.SetSession(ComConst.Session_StaffList, JsonHelper.ToJson(list)); break; } } }
public override async Task OnDisconnectedAsync(Exception ex) { var mlUser = JsonHelper.JsonToT <ModelLoginUser>(HttpContextCore.GetCookie(ComConst.UserLogin)); var schoolId = mlUser.School.ID; string cnnId = Context.ConnectionId; //在线用户,以学校为单位 var schoolMcUsers = SchoolOnLineUsersDic.GetValueOrDefault(schoolId); if (schoolMcUsers != null) { var mcu = schoolMcUsers.Find(x => x.CnnId == cnnId); schoolMcUsers.Remove(mcu); if (schoolMcUsers.Count == 0) { SchoolOnLineUsersDic.TryRemove(schoolId, out schoolMcUsers); await Groups.RemoveFromGroupAsync(cnnId, "schoolGroup" + schoolId);//清理学校组 } else { SchoolOnLineUsersDic.AddOrUpdate(schoolId, schoolMcUsers, (key, value) => schoolMcUsers); } await Clients.All.SendAsync("chatUserChange", GetOnlineData(schoolId));//更新客户端在线状态 } await base.OnDisconnectedAsync(ex); }
/// <summary> /// 识别到人后上传图片和用户信息 /// </summary> /// <param name="siteId"></param> /// <param name="id"></param> /// <param name="score"></param> /// <returns></returns> public async Task <JsonResult> UploadFaceForUserResult(string siteId, string id, string name, string score) { try { var files = HttpContextCore.Current.Request.Form.Files; if (files.Count != 2) { return(Json(new { Code = 2, Msg = "请上传图片!" })); } string file1 = HttpContextCore.MapPath(string.Format("/uploadfiles/FaceResult/{0}/{1:yyyy}/{1:yyyyMMdd}/users/{1:HHmmssfff}_{2}_{3}_full.jpg", siteId, DateTime.Now, name, score)); string file2 = HttpContextCore.MapPath(string.Format("/uploadfiles/FaceResult/{0}/{1:yyyy}/{1:yyyyMMdd}/users/{1:HHmmssfff}_{2}_{3}_cut.jpg", siteId, DateTime.Now, name, score)); if (!Directory.Exists(Path.GetDirectoryName(file1))) { Directory.CreateDirectory(Path.GetDirectoryName(file1)); } using (var stream = System.IO.File.Create(file1)) await files[0].CopyToAsync(stream); using (var stream = System.IO.File.Create(file2)) await files[1].CopyToAsync(stream); return(Json(new { Code = 0, Msg = "保存成功!" })); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }
public override async Task OnConnectedAsync() { var mlUser = JsonHelper.JsonToT <ModelLoginUser>(HttpContextCore.GetCookie(ComConst.UserLogin)); if (mlUser != null && mlUser.Staff != null) { var schoolId = mlUser.School.ID; var staffId = mlUser.Staff.ID; string cnnId = Context.ConnectionId; //在线用户,以学校为单位 var mcu = new ModelChatUser { CnnId = cnnId, MLUser = mlUser }; var schoolMcUsers = SchoolOnLineUsersDic.GetValueOrDefault(schoolId); if (schoolMcUsers == null) { schoolMcUsers = new List <ModelChatUser>(); } schoolMcUsers.Add(mcu); SchoolOnLineUsersDic.AddOrUpdate(schoolId, schoolMcUsers, (key, value) => schoolMcUsers); await Clients.All.SendAsync("chatUserChange", GetOnlineData(schoolId));//更新客户端在线状态 //客户端以学校分组 await Groups.AddToGroupAsync(cnnId, "schoolGroup" + schoolId); //发送离线消息 HandleOfflineMsg(schoolId, staffId, cnnId); } await base.OnConnectedAsync(); }
public async Task <AjaxResult> SaveRoleAuth(RoleAuthInputDto roleAuthInputDto) { var user = HttpContextCore.GetLoginUser(_accessor); var db = _dal.GetDatabase(); await db.UseDbTransactionAsync(async (conn, tran) => { await _dal.DeleteAsync <Authorize>(new { ObjectId = roleAuthInputDto.RoleId, ObjectType = 1 }, tran); foreach (var auth in roleAuthInputDto.AuthLists) { await _dal.AddAsync(new Authorize() { Id = Guid.NewGuid().ToString("N"), ObjectId = roleAuthInputDto.RoleId, ObjectType = 1, ItemId = auth.ItemId, ItemType = auth.ItemType, CreatedId = user.UserId, CreatedBy = user.UserName, CreatedDate = DateTime.Now }, tran); } }); return(Success("保存成功")); }
/// <summary> /// 关联绑定页面 /// </summary> public ActionResult WxBind() { mSysWxUser = JsonHelper.JsonToT <ModelSysWxUser>(HttpContextCore.GetSession(ComConst.Wx_ModelSysWxUser)); if (mSysWxUser != null && mSysWxUser.OpenId.Length > 6) { ViewBag.WxBindedJson = Service.GetWxBindedJson(mSysWxUser.OpenId); } return(View("Index_WxBind")); }
public BaseController() { mlUser = JsonHelper.JsonToT <ModelLoginUser>(HttpContextCore.GetSession(ComConst.UserLogin)); if (mlUser != null) { HttpContextCore.SetSession(ComConst.UserLogin, JsonHelper.ToJson(mlUser)); } mjResult = new ModelJsonRet() { code = 0, errMsg = string.Empty, content = string.Empty }; }
public AdminBaseController() { glbAdmin = JsonHelper.JsonToT <SYS_Admin>(HttpContextCore.GetSession(ComConst.AdminLogin)); if (glbAdmin != null) { HttpContextCore.SetSession(ComConst.AdminLogin, JsonHelper.ToJson(glbAdmin)); } mjResult = new ModelJsonRet() { code = 0, errMsg = string.Empty, content = string.Empty }; }
public ActionResult Download() { string fileURL = Request.Query["fileURL"]; if (fileURL.StartsWith("http")) { return(File(new WebClient().DownloadData(fileURL), "application/octet-stream", Path.GetFileName(fileURL))); } else { string fileName = Path.GetFileName(fileURL); FileStream fs = new FileStream(HttpContextCore.MapPath(fileURL), FileMode.Open); return(File(fs, "application/octet-stream", fileName)); } }
public BaseService() { if (null == mlUser) { mlUser = JsonHelper.JsonToT <ModelLoginUser>(HttpContextCore.GetCookie(ComConst.UserLogin)); if (mlUser == null) { mlUser = JsonHelper.JsonToT <ModelLoginUser>(HttpContextCore.GetSession(ComConst.UserLogin)); if (mlUser != null) { HttpContextCore.SetSession(ComConst.UserLogin, JsonHelper.ToJson(mlUser)); } } } mjRet = new ModelJsonRet { code = 0, }; }
public WxBaseController() { ViewBag.SchoolName = "陪绮在线"; mjResult = new ModelJsonRet() { code = 0, errMsg = string.Empty, content = string.Empty }; mSysWxUser = JsonHelper.JsonToT <ModelSysWxUser>(HttpContextCore.GetSession(ComConst.Wx_ModelSysWxUser)); if (mSysWxUser != null) { HttpContextCore.SetSession(ComConst.Wx_ModelSysWxUser, JsonHelper.ToJson(mSysWxUser)); if (mSysWxUser.School != null) { ViewBag.SchoolName = mSysWxUser.School.SchoolName; } } }
public async Task <AjaxResult> EditRoleAsync(Role role) { var user = HttpContextCore.GetLoginUser(_accessor); if (string.IsNullOrWhiteSpace(role.Id)) { role.Id = Guid.NewGuid().ToString("N").ToUpper(); role.Create(user.UserId, user.UserName); await _dal.AddAsync(role); return(Success("添加成功")); } else { role.Update(user.UserId, user.UserName); await _dal.EditAsync(role); return(Success("修改成功")); } }
public async Task <AjaxResult> EditModuleAsync(Module module) { var user = HttpContextCore.GetLoginUser(_accessor); if (string.IsNullOrWhiteSpace(module.Id)) { module.Id = Guid.NewGuid().ToString("N").ToUpper(); module.Create(user.UserId, user.UserName); if (module.IsMenu == 1)//菜单 { await _moduleDAL.AddAsync(module); } if (module.IsMenu == 2)//按钮 { var button = AutoMapper.Mapper.Map <ModuleButton>(module); await _moduleDAL.AddAsync(button); } return(Success("添加成功")); } else { module.Update(user.UserId, user.UserName); if (module.IsMenu == 1)//菜单 { await _moduleDAL.EditAsync(module); } if (module.IsMenu == 2)//按钮 { var button = AutoMapper.Mapper.Map <ModuleButton>(module); await _moduleDAL.EditAsync(button); } return(Success("修改成功")); } }
public ActionResult Index() { ViewBag.SchoolName = "陪绮在线"; var mWxUserInfo = JsonHelper.JsonToT <ModelWxUserInfo>(GetSession(ComConst.Wx_ModelWxUserInfo)); var mSysWxUser = new ModelSysWxUser() { UserType = 0, }; if (mWxUserInfo != null) { Service.UpdateWxUserInfo(mWxUserInfo);//更新微信用户信息 mSysWxUser = Service.GetSysWxUserModel(glbSchoolId, mWxUserInfo.openid); SetCookie(ComConst.Wx_ModelSysWxUser, JsonHelper.ToJson(mSysWxUser)); HttpContextCore.SetSession(ComConst.Wx_ModelSysWxUser, JsonHelper.ToJson(mSysWxUser)); if (mSysWxUser.School != null) { ViewBag.SchoolName = mSysWxUser.School.SchoolName; } } return(View("Index_WxHome", mSysWxUser)); }
public async Task <JsonResult> Upload() { try { IFormFile file = Request.Form.Files[0]; Guid fileId = Guid.NewGuid(); DateTime nowDate = DateTime.Now; string path = string.Format("/uploadfiles/{0:yyyy/MMdd}/{1}", nowDate, fileId); string url = string.Format("{0}/{1}", path, file.FileName); // 服务器的存储全路径 string destFileName = HttpContextCore.MapPath(url); // 创建目录路径 if (!Directory.Exists(Path.GetDirectoryName(destFileName))) { Directory.CreateDirectory(Path.GetDirectoryName(destFileName)); } SysAttachment fileData = new SysAttachment(); fileData.Id = fileId; //fileDatas.RelationID = ""; fileData.Name = file.FileName; fileData.Names = ""; fileData.Url = url; fileData.Type = 0; fileData.Suffix = Path.GetExtension(file.FileName).ToLower(); fileData.Path = path; fileData.Status = 0; fileData.Size = 0; fileData.CreateBy = ""; fileData.CreateByName = SSOClient.User.UserName; fileData.CreateTime = nowDate; string ThumbnailSizes = Request.Form["thumbnailSizes"].FirstOrDefault(); if (isLocal) { //保存本地 using (var stream = System.IO.File.Create(destFileName)) { await file.CopyToAsync(stream); } // 图片文件扩展名验证正则表达式 Regex regexExtension = new Regex(@".*\.(jpg|jpeg|png|gif|bmp)"); if (regexExtension.IsMatch(destFileName.ToLower())) { string[] ThumbnailSizeArr = new string[] { }; //生成缩略图 if (!string.IsNullOrEmpty(ThumbnailSizes) && (ThumbnailSizeArr = ThumbnailSizes.Split(';')).Length > 0) { string[] fileNamesArr = new string[ThumbnailSizeArr.Length]; for (int i = 0; i < ThumbnailSizeArr.Length; i++) { string size = ThumbnailSizeArr[i]; string ThumbFileName = Path.GetFileNameWithoutExtension(url) + "_" + size + fileData.Suffix; string ThumbPath = url.Replace(Path.GetFileName(url), ThumbFileName); ThumbnailHelper.MakeThumbnail(Convert.ToInt32(size), HttpContextCore.MapPath(url), HttpContextCore.MapPath(ThumbPath)); fileNamesArr[i] = ThumbFileName; } fileData.Names = string.Join("|", fileNamesArr); } } } else { //保存文件服务器 HttpClient client = new HttpClient(); MultipartFormDataContent form = new MultipartFormDataContent(); byte[] uploadFileBytes = new byte[file.Length]; file.OpenReadStream().Read(uploadFileBytes, 0, (int)file.Length); MemoryStream stream = new MemoryStream(uploadFileBytes); StreamContent fileContent = new StreamContent(stream); fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); fileContent.Headers.ContentDisposition.FileName = url; form.Add(fileContent); StringContent thumbnailSizes = new StringContent(ThumbnailSizes); thumbnailSizes.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); thumbnailSizes.Headers.ContentDisposition.Name = "thumbnailSizes"; form.Add(thumbnailSizes); HttpResponseMessage res = client.PostAsync(fileServer, form).Result; var json = res.Content.ReadAsStringAsync().Result; JObject result = JObject.Parse(json); fileData.Path = (string)result["data"]["path"]; fileData.Names = (string)result["data"]["names"]; fileData.Url = (string)result["data"]["url"]; } return(Json(new { Code = 0, Msg = "", Data = fileData })); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }
/// <summary> /// 添加人脸特征,更新客户端用户人脸特征库 /// </summary> public static void AddUserFace(SysUser user) { DataContext dbContext = new DataContext(); var faceFeature = FaceCompareHelper.ExtractFeature(HttpContextCore.MapPath(user.UserImage)); if (string.IsNullOrEmpty(faceFeature)) { return; } //保存人脸特征 var feature = dbContext.Set <SysUserFaceFeature>().FirstOrDefault(x => x.UserId == user.UserId); if (feature == null) { feature = new SysUserFaceFeature { UserId = user.UserId, UserName = user.UserName, UserType = "User", FaceImage = user.UserImage, FaceFeature = faceFeature, FaceFeatureType = "", FaceTimeOut = DateTime.Now.AddYears(100), CreateTime = DateTime.Now, UpdateTime = DateTime.Now }; dbContext.Set <SysUserFaceFeature>().Add(feature); } else { feature.UserName = user.UserName; feature.FaceImage = user.UserImage; feature.FaceFeature = faceFeature; feature.UpdateTime = DateTime.Now; } //更新客户端队列(根据业务修改) var data = new Dictionary <string, string> { ["ActionName"] = "AddFace", ["Id"] = user.UserId.ToString(), ["Name"] = user.UserName, ["ImageUrl"] = user.UserImage, ["FaceFeature"] = faceFeature, ["TimeOut"] = DateTime.Now.AddYears(100).ToString() }; SysQueue queue = new SysQueue { Id = Guid.NewGuid(), ClientId = user.DepartmentId.ToString(), ActionName = "AddFace", ActionObjectId = user.UserId.ToString(), ActionData = JsonConvert.SerializeObject(data), CreateTime = DateTime.Now }; dbContext.Set <SysQueue>().Add(queue); dbContext.SaveChanges(); }
public ActionResult Index() { mSysWxUser = JsonHelper.JsonToT <ModelSysWxUser>(HttpContextCore.GetSession(ComConst.Wx_ModelSysWxUser)); return(View("Index_Center", mSysWxUser)); }