Esempio n. 1
0
        //客户端查看是否有某用户消息
        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);//调用客户端方法
                    }
                }
            }
        }
Esempio n. 2
0
        /// <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;
            }
            }
        }
Esempio n. 3
0
        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 = "服务器异常,请联系管理员!" }));
            }
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        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"));
 }
Esempio n. 8
0
 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));
            }
        }
Esempio n. 11
0
 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,
     };
 }
Esempio n. 12
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;
                }
            }
        }
Esempio n. 13
0
        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("修改成功"));
            }
        }
Esempio n. 14
0
        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("修改成功"));
            }
        }
Esempio n. 15
0
        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();
        }
Esempio n. 18
0
 public ActionResult Index()
 {
     mSysWxUser = JsonHelper.JsonToT <ModelSysWxUser>(HttpContextCore.GetSession(ComConst.Wx_ModelSysWxUser));
     return(View("Index_Center", mSysWxUser));
 }