package jnpf.dmsController.permission; import jakarta.validation.Valid; import jnpf.base.ActionResult; import jnpf.dmsEntity.permission.entity.DmsDocumentEntity; import jnpf.dmsEntity.permission.entity.DmsFileVersionEntity; import jnpf.dmsEntity.permission.entity.DmsFolderEntity; import jnpf.dmsEntity.permission.enums.DmsResourceType; import jnpf.dmsEntity.permission.form.FolderCreateUserForm; import jnpf.dmsEntity.permission.vo.DmsCursorPageVO; import jnpf.dmsEntity.permission.vo.DmsPermissionGrantVO; import jnpf.dmsEntity.permission.vo.DmsPermissionResourceVO; import jnpf.dmsEntity.permission.vo.DmsResourceTypeDefinitionVO; import jnpf.dmsService.DmsPermissionAdminQueryService; import jnpf.dmsService.DmsResourceQueryService; import jnpf.dmsService.DmsResourceService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.UUID; @RestController @RequestMapping @RequiredArgsConstructor public class PermissionResourceController { private final DmsResourceQueryService resourceQueryService; private final DmsPermissionAdminQueryService permissionQueryService; private final DmsResourceService resourceService; @GetMapping("/permission-resource-types") public ActionResult> resourceTypes() { return ActionResult.success(resourceQueryService.typeDefinitions()); } @GetMapping("/permission-resources") public ActionResult> resources( @RequestParam(value = "resourceType", required = false) String resourceType, @RequestParam(value = "cursor", required = false) String cursor, @RequestParam(value = "pageSize", required = false) Integer pageSize) { return ActionResult.success(resourceQueryService.page(resourceType, cursor, pageSize)); } @GetMapping("/permission-resources/tree") public ActionResult> resourceTree( @RequestParam(value = "parentId", required = false) UUID parentId, @RequestParam(value = "pageSize", required = false) Integer pageSize) { return ActionResult.success(resourceQueryService.children(parentId, pageSize)); } @GetMapping("/permission-resources/{id}") public ActionResult resource(@PathVariable("id") UUID id) { return ActionResult.success(resourceQueryService.resource(id)); } @GetMapping("/permission-resources/{id}/grants") public ActionResult> resourceGrants(@PathVariable("id") UUID id) { DmsPermissionResourceVO resource = resourceQueryService.resource(id); return ActionResult.success(permissionQueryService.resourceGrants( DmsResourceType.valueOf(resource.getResourceType()), id)); } @GetMapping("/folders/{id}") public ActionResult folder(@PathVariable("id") UUID id) { return ActionResult.success(resourceQueryService.folder(id)); } @PostMapping("/folders") public ActionResult createFolder( @RequestBody @Valid FolderCreateUserForm form) { return ActionResult.success(resourceService.createFolder(form)); } @GetMapping("/documents/{id}") public ActionResult document(@PathVariable("id") UUID id) { return ActionResult.success(resourceQueryService.document(id)); } @GetMapping("/file-versions/{id}") public ActionResult fileVersion(@PathVariable("id") UUID id) { return ActionResult.success(resourceQueryService.fileVersion(id)); } }