public FrontUserDto GetFrontUserDtoByID(string frontUserID) { using (var db = new BCEnterpriseContext()) { var user = db.FrontUsers.Where(o => o.UserID == frontUserID).Select(o => new FrontUserDto() { UserID = o.UserID, Name = o.Name, Picture = o.Picture, EnterpiseID = o.EnterpiseID }).FirstOrDefault(); if (user != null) { user.Picture = UriExtensions.GetFullUrl(user.Picture); } return(user); } }
public ActionResult SetUserPicture(ModelBase model) { var result = new StandardJsonResult <string>(); result.Try(() => { if (!ModelState.IsValid) { throw new KnownException(ModelState.GetFirstError()); } if (Request.Files.Count == 0) { throw new KnownException("没有图片上传到服务器!"); } var service = Ioc.GetService <IEnterpriseAccountService>(); var tempUser = service.GetById(BCSession.User.UserID); var pictureStream = ML.BC.Infrastructure.Utilities.ImageHelper.PressImage(Request.Files[0].InputStream, 200, 200); var filePath = string.Format("/UserAvatar/{0}_{1}.jpg", tempUser.UserID, DateTime.Now.ToString("yyyyMMddHHmmssfff")); using (var file = System.IO.File.OpenWrite(Server.MapPath(filePath))) { pictureStream.WriteTo(file); file.Flush(); } var userSecurService = Ioc.GetService <IEnterpriseUserManagementService>(); userSecurService.SetUserAvatar(tempUser.UserID, filePath); if (System.IO.File.Exists(Server.MapPath(tempUser.Picture))) { try { var file = new System.IO.FileInfo(Server.MapPath(tempUser.Picture)); file.Attributes = System.IO.FileAttributes.Normal; file.Delete(); } catch { } } result.Value = UriExtensions.GetFullUrl(filePath); }); return(result); }
public Account.Dtos.SessionUserDto GetSessionUser(string userId, string device) { try { if (string.IsNullOrEmpty(userId)) { throw new KnownException("用户名称不能为空!"); } using (var db = new BCEnterpriseContext()) { ClearUserLoginState(db); var user = (from u in db.FrontUsers where u.UserID == userId join ls in db.UserLoginStates on u.UserID equals ls.UserID where ls.Device == device join ep in db.Enterprises on u.EnterpiseID equals ep.EnterpriseID into tempEP join ur in db.UserRoles on u.UserID equals ur.UserID into tempUR select new { u, ls, ep = tempEP.DefaultIfEmpty().FirstOrDefault(), roles = tempUR.DefaultIfEmpty().Where(n => !n.Deleted).Select(n => n.RoleID), functions = (from tur in tempUR.DefaultIfEmpty() where tur.Deleted == false join r in db.RFARoles on tur.RoleID equals r.RoleID where r.Available join rf in db.RFAAuthorizations on tur.RoleID equals rf.RoleID into tempRF from trf in tempRF.DefaultIfEmpty() where !trf.Deleted select trf.FunctionID) }).FirstOrDefault(); if (user == null) { throw new KnownException("用户名不存在或用户当前登录状态丢失请重新登录。"); } #region get functionIds //TODO:get it from the cache var functions = db.RFAFunctions.ToList(); var functionIds = new List <string>(); Action <string> recursionFunctions = null; recursionFunctions = (functionId) => { if (functionIds.Contains(functionId)) { return; } functionIds.Add(functionId); var tempParent = (from fun in functions where fun.FunctionID == functionId join tfun in functions on fun.ParentID equals tfun.FunctionID select tfun).FirstOrDefault(); if (tempParent != null) { recursionFunctions(tempParent.FunctionID); } }; user.functions.ToList().ForEach(recursionFunctions); #endregion var sessionUserDto = new Account.Dtos.SessionUserDto { UserID = user.u.UserID, UserName = user.u.Name, LastLoginTime = user.u.LastDate ?? DateTime.Now, LastIP = user.u.LastIP, Picture = UriExtensions.GetFullUrl(user.u.Picture), Device = user.ls.Device, Token = user.ls.LoginToken, EnterpriseID = user.u.EnterpiseID, EnterpriseName = user.ep == null ? string.Empty : user.ep.Name, DepartmentID = user.u.DepartmentID, RoleIDs = user.roles.ToArray(), FunctionIDs = functionIds.ToArray() }; return(sessionUserDto); } } catch (Exception) { throw; } }
public List <SceneItemDto> GetSceneItemForSync(string userId, string device) { lock (GETSCENEITEMFORSYNCLOCK) { using (var db = new BCEnterpriseContext()) { List <string> sceneIDs = new List <string>(); #region get sceneIDs var userDepartmentID = db.FrontUsers.Where(o => o.UserID == userId).Select(o => o.DepartmentID).FirstOrDefault().ToString(); if (!string.IsNullOrEmpty(userDepartmentID)) { sceneIDs = (from scene in db.Scenes join project in db.Projects on scene.ProjectID equals project.ProjectID into tPrj from prj in tPrj.DefaultIfEmpty() where prj.Departments.Contains(userDepartmentID) select scene.SceneID ).Distinct() .ToList(); } if (!(db.SyncStates.Any(n => n.UserID == userId && n.DeviceID == device && n.ActionType == (int)ML.BC.Infrastructure.MsmqHelper.TypeEnum.SceneData))) { var syncSceneData = new SyncState() { UserID = userId, DeviceID = device, ActionType = (int)TypeEnum.SceneData, SyncTime = DBTimeHelper.DBNowTime(db) }; db.SyncStates.Add(syncSceneData); if (0 < db.SaveChanges()) { return(new List <SceneItemDto>()); } else { var logger = log4net.LogManager.GetLogger(typeof(SceneItemManagementService)); logger.Error("第一次写入同步现场数据的状态失败!"); return(new List <SceneItemDto>()); } } var lastSyncTime = (db.SyncStates.FirstOrDefault( n => n.UserID == userId && n.DeviceID == device && n.ActionType == (int)ML.BC.Infrastructure.MsmqHelper.TypeEnum.SceneData) ?? new SyncState { SyncTime = DateTime.MinValue }).SyncTime; #endregion var mgdb = new MongoDbProvider <SceneItem>(); var sceneItems = mgdb.GetAll(n => (sceneIDs.Contains(n.SceneID)) && (n.UpdateTime >= lastSyncTime)); var userIds = sceneItems.Select(n => n.UserID).ToList(); var relateUsers = db.FrontUsers.Where(obj => userIds.Contains(obj.UserID)).Select(o => new { uid = o.UserID, name = o.Name, picture = o.Picture }).ToList(); var resultList = (from item in sceneItems join r in relateUsers on item.UserID equals r.uid into tempSU from t in tempSU.DefaultIfEmpty() select new SceneItemDto { Id = item.Id, SceneID = item.SceneID, PictureGuid = item.PictureGuid, Count = item.Count, Status = item.Status, UserID = item.UserID, CreateTime = item.CreateTime, UpdateTime = item.UpdateTime, Address = item.Address, GPS = item.GPS, Description = item.Description, Images = item.Images, Relation = item.Relation, IsExamine = item.IsExamine, Comments = item.Comments, Type = item.Type, UserName = t == null ? string.Empty : t.name, UserPicture = t == null ? string.Empty : UriExtensions.GetFullUrl(t.picture) }) .OrderByDescending(o => o.UpdateTime) .ToList(); foreach (var r in resultList) { r.Images = MakeUrlWithPictureName(r.Images); } return(resultList); } } }
public List <SceneItemDto> GetAllByStatus(string userID, string deviceID, string sceneID, ItemStatus status, int pageSize, DateTime time, out int count) { if (string.IsNullOrEmpty(sceneID)) { throw new ArgumentNullException("sceneID"); } using (var db = new BCEnterpriseContext()) { var iSsync = db.SyncStates.Any( n => n.UserID == userID && n.DeviceID == deviceID && n.ActionType == (int)ML.BC.Infrastructure.MsmqHelper.TypeEnum.SceneData); if (!iSsync) { var syncSceneData = new SyncState() { UserID = userID, DeviceID = deviceID, ActionType = (int)TypeEnum.SceneData, SyncTime = DBTimeHelper.DBNowTime(db) }; db.SyncStates.Add(syncSceneData); if (!(0 < db.SaveChanges())) { var logger = log4net.LogManager.GetLogger(typeof(SceneItemManagementService)); logger.Error("第一次写入同步现场数据的状态失败!"); } } } var mgdb = new MongoDbProvider <SceneItem>(); var query = ItemStatus.All == status ? mgdb.GetAll(o => (o.SceneID == sceneID) && (o.UpdateTime < time)) : mgdb.GetAll(o => (o.SceneID == sceneID) && (o.Status == status) && (o.UpdateTime < time)); count = query.Count(); if (pageSize < 1) { pageSize = 10; } var sceneItems = query .OrderByDescending(obj => obj.CreateTime) .Take(pageSize) .ToList(); using (var db = new BCEnterpriseContext()) { if (0 == sceneItems.Count) { return(new List <SceneItemDto>()); } var userIds = sceneItems.Select(o => o.UserID).ToList(); var reUserInfo = db.FrontUsers.Where(obj => userIds.Contains(obj.UserID)).Select(o => new { uid = o.UserID, name = o.Name, picture = o.Picture }).ToList(); var re = (from item in sceneItems join r in reUserInfo on item.UserID equals r.uid into tempSU from t in tempSU.DefaultIfEmpty() select new SceneItemDto { Id = item.Id, SceneID = item.SceneID, PictureGuid = item.PictureGuid, Count = item.Count, Status = item.Status, UserID = item.UserID, CreateTime = item.CreateTime, UpdateTime = item.UpdateTime, Address = item.Address, GPS = item.GPS, Description = item.Description, Images = item.Images, Examines = item.Examines, Comments = item.Comments, Relation = item.Relation, IsExamine = item.IsExamine, Type = item.Type, UserName = t == null ? string.Empty : t.name, UserPicture = t == null ? string.Empty : UriExtensions.GetFullUrl(t.picture) }) .ToList(); foreach (var r in re) { r.Images = MakeUrlWithPictureName(r.Images); } return(re); } }
public List <SceneItemDto> GetAllByStatus(string sceneID, ItemStatus status, int pageSize, int pageIndex, out int count) { try { if (string.IsNullOrEmpty(sceneID)) { throw new ArgumentNullException("sceneID"); } var mgdb = new MongoDbProvider <SceneItem>(); var query = ItemStatus.All == status ? mgdb.GetAll(o => (o.SceneID == sceneID)) : mgdb.GetAll(o => (o.SceneID == sceneID) && (o.Status == status)); count = query.Count(); int pageTotal; if (pageSize > 0) { pageTotal = (count + pageSize - 1) / pageSize; } else { pageSize = 10; pageTotal = (count + pageSize - 1) / pageSize; } if (pageIndex > pageTotal) { pageIndex = pageTotal; } if (pageIndex < 1) { pageIndex = 1; } var sceneItems = query .OrderByDescending(obj => obj.CreateTime) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize) .ToList(); using (var db = new BCEnterpriseContext()) { if (0 == sceneItems.Count) { return(new List <SceneItemDto>()); } var userIds = sceneItems.Select(o => o.UserID).ToList(); var reUserInfo = db.FrontUsers.Where(obj => userIds.Contains(obj.UserID)).Select(o => new { uid = o.UserID, name = o.Name, picture = o.Picture }).ToList(); var re = (from item in sceneItems join r in reUserInfo on item.UserID equals r.uid into tempSU from t in tempSU.DefaultIfEmpty() select new SceneItemDto { Id = item.Id, SceneID = item.SceneID, PictureGuid = item.PictureGuid, Count = item.Count, Status = item.Status, UserID = item.UserID, CreateTime = item.CreateTime, UpdateTime = item.UpdateTime, Address = item.Address, GPS = item.GPS, Relation = item.Relation, Description = item.Description, Images = item.Images, IsExamine = item.IsExamine, Comments = item.Comments, Type = item.Type, Examines = item.Examines, UserName = t == null ? string.Empty : t.name, UserPicture = t == null ? string.Empty : UriExtensions.GetFullUrl(t.picture) }) .ToList(); foreach (var r in re) { r.Images = MakeUrlWithPictureName(r.Images); } return(re); } } catch (Exception ex) { throw ex; } }