Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }