Example #1
0
        public override void Initialize(ProjectMetadata project)
        {
            base.Initialize(project);

            InheritEntitys.Insert(0, Entity);
            InitializeInheritEntity(project, Entity);

            var controller = Entity.Definition.Controller;

            if (controller.AuthorizeMode == EAuthorizeMode.Authorize)
            {
                Permission = project.Compiler.Permission;
            }
            if (controller.AuthorizeMode != EAuthorizeMode.Anonymous)
            {
                Write("Wilmar.Service.Common.Attributes.Authorize");
            }
            if (Entity.PrimaryPropertys.Count > 0)
            {
                project.Service.Entitys.Add(Entity);

                if (Entity.PrimaryPropertys.Count == 1)
                {
                    var member = Entity.PrimaryPropertys.Values.First();
                    EntityKeyParameter = $"[FromODataUri] {member.PropertyType.TypeName} key";
                    EntityLinqWhere    = $"item => item.{member.Name} == key";
                }
                else
                {
                    EntityKeyParameter = string.Join(" ,", Entity.PrimaryPropertys.Values.Select(a => $"[FromODataUri] {a.PropertyType.TypeName} key{a.Name}").ToArray());
                    EntityLinqWhere    = $"item => " + string.Join(" && ", Entity.PrimaryPropertys.Values.Select(a => $"item.{a.Name} == key{a.Name}").ToArray());
                }

                if (controller.CanGet)
                {
                    GenerateGetAction(controller);
                }
                if (!this.Entity.IsDimFast)
                {
                    if (controller.CanPost)
                    {
                        GeneratePostAction(controller);
                    }
                    if (controller.CanPut)
                    {
                        GeneratePutAction(controller);
                    }
                    if (controller.CanDelete)
                    {
                        GenerateDeleteAction(controller);
                    }

                    GenerateCustomAction(controller);
                }
            }
        }
Example #2
0
        private void InitializeInheritEntity(ProjectMetadata project, EntityMetadata parent)
        {
            int            id = parent.Definition.Configure.InheritEntityId;
            EntityMetadata entity;

            if (id > 0 && project.Entitys.TryGetValue(id, out entity))
            {
                InheritEntitys.Insert(0, entity);
                InitializeInheritEntity(project, entity);
            }
        }
Example #3
0
        private void GeneratePutAction(ControllerConfigure controller)
        {
            int permissionid = PermissionAction("UPDATE", "修改权限", "修改数据[" + Entity.ProjectItem.Title + "]的权限");

            var put = new ControllerMethodMetadata(EControllerMethodType.Put);

            if (controller.AuthPut)
            {
                put.PermissionAction(permissionid);
            }
            Methods.Add(put);

            var patch = new ControllerMethodMetadata(EControllerMethodType.Patch);

            if (controller.AuthPut)
            {
                patch.PermissionAction(permissionid);
            }
            Methods.Add(patch);


            var update = new ControllerMethodMetadata(EControllerMethodType.OnUpdateEntity);
            int count  = InheritEntitys.SelectMany(a => a.Definition.Members).OfType <ColumnMember>().Where(a => a.GenerateMode == EColumnGenerateMode.CodeCreate).Count();

            count += InheritEntitys.SelectMany(a => a.Definition.Members).OfType <ColumnMember>().Where(a => a.GenerateMode == EColumnGenerateMode.CodeUpdate || a.GenerateMode == EColumnGenerateMode.CodeCreateUpdate).Count();

            if (InheritEntitys.Select(a => a.Definition.Controller).Where(a => !string.IsNullOrEmpty(a.PutInterceptor)).Count() > 0 || count > 0)
            {
                Methods.Add(update);
            }

            if (Permission != null && controller.AuthPut)
            {
                foreach (var a in Entity.ColumnPropertys.Values.Where(a => a.Member.EnableAuth && a.Member.GenerateMode == EColumnGenerateMode.None))
                {
                    UpdateEntityCommonPropertyPerssions.Add(Permission.Write(Entity.ProjectItem.Id, ServiceCompile.PermissionModify, a.Name, a.Member.Title + "修改", $"修改属性[{Entity.ProjectItem.Title}]的权限"), a.Name);
                }
                foreach (var a in Entity.NavigationPropertys.Values.Where(a => a.Member.EnableAuth))
                {
                    UpdateEntityNavigatePropertyPermissions.Add(a.Name, Permission.Write(Entity.ProjectItem.Id, ServiceCompile.PermissionModify, a.Name, a.Member.Title + "修改", $"修改属性[{Entity.ProjectItem.Title}]的权限"));
                }
            }

            if (InheritEntitys.SelectMany(a => a.NavigationPropertys).Count() > 0)
            {
                Methods.Add(new ControllerMethodMetadata(EControllerMethodType.CreateRef));
                Methods.Add(new ControllerMethodMetadata(EControllerMethodType.CreateRefOverride));
                Methods.Add(new ControllerMethodMetadata(EControllerMethodType.DeleteRef1));
                Methods.Add(new ControllerMethodMetadata(EControllerMethodType.DeleteRef2));
                Methods.Add(new ControllerMethodMetadata(EControllerMethodType.DeleteRefOverride));
            }
        }
Example #4
0
        private void GenerateDeleteAction(ControllerConfigure controller)
        {
            int permissionid = PermissionAction("DELETE", "删除权限", "删除数据[" + Entity.ProjectItem.Title + "]的权限");

            var delete = new ControllerMethodMetadata(EControllerMethodType.Delete);

            if (controller.AuthDelete)
            {
                delete.PermissionAction(permissionid);
            }
            Methods.Add(delete);

            if (InheritEntitys.Select(a => a.Definition.Controller).Where(a => !string.IsNullOrEmpty(a.DeleteInterceptor)).Count() > 0)
            {
                Methods.Add(new ControllerMethodMetadata(EControllerMethodType.OnDeleteEntity));
            }
        }
Example #5
0
        private void GeneratePostAction(ControllerConfigure controller)
        {
            int permissionid = PermissionAction("CREATE", "创建权限", "创建数据[" + Entity.ProjectItem.Title + "]的权限");
            var post         = new ControllerMethodMetadata(EControllerMethodType.Post);

            if (controller.AuthPost)
            {
                post.PermissionAction(permissionid);
            }
            Methods.Add(post);

            var create = new ControllerMethodMetadata(EControllerMethodType.OnCreateEntity);

            int count = InheritEntitys.SelectMany(a => a.Definition.Members).OfType <PrimaryMember>().Where(a => a.GenerateMode == EPrimaryGenerateMode.Code).Count();

            count += InheritEntitys.SelectMany(a => a.Definition.Members).OfType <ColumnMember>().Where(a => a.GenerateMode == EColumnGenerateMode.CodeCreate || a.GenerateMode == EColumnGenerateMode.CodeCreateUpdate).Count();

            if (InheritEntitys.Select(a => a.Definition.Controller).Where(a => !string.IsNullOrEmpty(a.PostInterceptor)).Count() > 0 || count > 0)
            {
                Methods.Add(create);
            }
        }