public void Update(object entity) { IEntitySchema es = IEntitySchemaHelper.Get(entity.GetType()); IOperationManager opm = new DefaultOperationManager(this._context, this._currentUser); List <string> modifiedPropertys = (from p in es.PropertyTypes select p.Key).ToList <string>(); opm.AUD_OperationCheck(es, entity, EntityOperationEnum.Update); this.UpdateActionUniqueKeyCheck(es, entity, modifiedPropertys); if (es.PrivilegeModel() == PrivilegeModel.Persional) { entity.SetPropertyValue("UpdateTime", DateTime.Now, null); entity.SetPropertyValue("UpdateUserId", opm.CurrentUser.User_ID, null); } if (es.EntityName == T_AttachmentTable) { this._attachHandler.UpdateAttachment(entity as T_Attachment); } else { this.AutoUpdateSystemLevelCode(es, entity); this.UpdateTableVersion(es, entity); this.UpdateEntityChangeLog(es, entity, modifiedPropertys); this._context.Update(entity); this.SaveAttachmentOwner(es, entity); } }
public static string Q_OperationCheck(this IOperationManager opm, IEntitySchema es, int objectId) { List <int> userIdByDeptId; string str2; IUserIdentity currentUser = opm.CurrentUser; if (currentUser == null) { throw new ApplicationException("登录用户为空,无法判断权限"); } EntityPrivilegeEnum enum2 = opm.TryCanOperation(currentUser.User_ID, es.EntityId, EntityOperationEnum.Query); string str = ""; if ((enum2 == EntityPrivilegeEnum.NoPermission) && !opm.CheckHasSharedPrivilege(objectId, es.EntityName, EntityOperationEnum.Query)) { throw new ApplicationException(string.Format("当前登录的用户没有对 {0} 的查询权限", es.EntityName)); } if (es.PrivilegeModel() == King.Framework.EntityLibrary.PrivilegeModel.Organization) { if ((enum2 != EntityPrivilegeEnum.AllRights) && !opm.CheckHasSharedPrivilege(objectId, es.EntityName, EntityOperationEnum.Query)) { throw new ApplicationException(string.Format("当前登录的用户没有对 {0} 的查询权限", es.EntityName)); } return(""); } if ((enum2 == EntityPrivilegeEnum.Personal) && !opm.CheckHasSharedPrivilege(objectId, es.EntityName, EntityOperationEnum.Query)) { str = string.Format(" ( it.OwnerId = {0} )", currentUser.User_ID); } if ((enum2 == EntityPrivilegeEnum.Department) && !opm.CheckHasSharedPrivilege(objectId, es.EntityName, EntityOperationEnum.Query)) { userIdByDeptId = opm.GetUserIdByDeptId(new int[] { currentUser.Department_ID.Value }); if (userIdByDeptId.Count == 0) { userIdByDeptId.Add(-2147483647); } str2 = string.Join <int>(" , ", userIdByDeptId); str2 = "{ " + str2 + " }"; str = string.Format(" ( it.OwnerId in {0} )", str2); } if ((enum2 == EntityPrivilegeEnum.DepartmentAndSubSector) && !opm.CheckHasSharedPrivilege(objectId, es.EntityName, EntityOperationEnum.Query)) { List <int> subDeptIds = opm.GetSubDeptIds(currentUser.Department_ID); subDeptIds.Add(currentUser.Department_ID.Value); userIdByDeptId = opm.GetUserIdByDeptId(subDeptIds.ToArray()); if (userIdByDeptId.Count == 0) { userIdByDeptId.Add(-2147483647); } str2 = string.Join <int>(" , ", userIdByDeptId); str2 = "{ " + str2 + " }"; str = string.Format(" ( it.OwnerId in {0} )", str2); } return(str); }