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); } } }
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); } }
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)); } }
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)); } }
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); } }