package jnpf.dmsController.permission; import cn.dev33.satoken.same.SaSameUtil; import jakarta.validation.Valid; import jnpf.base.ActionResult; import jnpf.base.UserInfo; import jnpf.dmsEntity.permission.form.DocumentCreateForm; import jnpf.dmsEntity.download.form.DmsWorkflowDownloadAuthorizeForm; import jnpf.dmsEntity.download.vo.DmsWorkflowDownloadAuthorizationVO; import jnpf.dmsEntity.print.form.DmsWorkflowPrintAuthorizeForm; import jnpf.dmsEntity.print.form.DmsWorkflowPrintFilesGrantForm; import jnpf.dmsEntity.print.vo.DmsWorkflowPrintAuthorizationVO; import jnpf.dmsEntity.print.vo.DmsWorkflowPrintFilesGrantResultVO; import jnpf.dmsEntity.permission.form.FileVersionCreateForm; import jnpf.dmsEntity.permission.form.FolderCreateForm; import jnpf.dmsEntity.permission.form.DmsPersonalFolderBorrowForm; import jnpf.dmsEntity.permission.form.DmsPersonalFolderDownloadForm; import jnpf.dmsEntity.permission.vo.DmsPersonalFolderAddResultVO; import jnpf.dmsEntity.permission.vo.DmsPermissionResourceVO; import jnpf.dmsEntity.storage.form.DmsFileLifecycleUpdateForm; import jnpf.dmsEntity.storage.form.DmsFileRevisionRegisterForm; import jnpf.dmsEntity.storage.form.DmsFileUploadRegisterForm; import jnpf.dmsEntity.storage.form.DmsWorkflowFilePrepareForm; import jnpf.dmsEntity.storage.vo.DmsWorkflowFilePrepareVO; import jnpf.dmsEntity.storage.form.DmsApprovedRegistrationCallback; import jnpf.dmsEntity.storage.approval.DmsApprovedBatch; import jnpf.dmsEntity.storage.form.DmsWorkflowFileActivateForm; import jnpf.dmsEntity.storage.form.DmsWorkflowRevisionRegisterForm; import jnpf.dmsEntity.storage.vo.DmsFileLifecycleUpdateVO; import jnpf.dmsEntity.storage.vo.DmsFileUploadVO; import jnpf.dmsPermission.DmsCurrentIdentity; import jnpf.dmsPermission.DmsTrustedServiceGuard; import jnpf.dmsService.DmsFileLifecycleService; import jnpf.dmsService.DmsFileRevisionService; import jnpf.dmsService.DmsFileUploadService; import jnpf.dmsService.DmsPersonalFolderService; import jnpf.dmsService.DmsResourceService; import jnpf.dmsService.DmsWorkflowFilePrepareService; import jnpf.dmsService.DmsApprovedFlowService; import jnpf.dmsService.DmsWorkflowFileRegistrationService; import jnpf.dmsService.DmsWorkflowFileActivationService; import jnpf.dmsService.DmsWorkflowDownloadAuthorizationService; import jnpf.dmsService.DmsWorkflowPrintAuthorizationService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/Internal/dms") @RequiredArgsConstructor public class DmsInternalResourceController { private final DmsTrustedServiceGuard trustedServiceGuard; private final DmsResourceService resourceService; private final DmsFileUploadService fileUploadService; private final DmsFileRevisionService fileRevisionService; private final DmsFileLifecycleService fileLifecycleService; private final DmsWorkflowFilePrepareService workflowFilePrepareService; private final DmsApprovedFlowService approvedFlowService; private final DmsWorkflowFileRegistrationService workflowFileRegistrationService; private final DmsWorkflowFileActivationService workflowFileActivationService; private final DmsWorkflowDownloadAuthorizationService workflowDownloadAuthorizationService; private final DmsWorkflowPrintAuthorizationService workflowPrintAuthorizationService; private final DmsPersonalFolderService personalFolderService; private final DmsCurrentIdentity currentIdentity; @PostMapping("/file-versions/lifecycle") public ActionResult updateFileLifecycle( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid DmsFileLifecycleUpdateForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(fileLifecycleService.updateExpired(form, trustedServiceId)); } @PostMapping("/personal-folders/borrow/files") public ActionResult addBorrowedFilesToPersonalFolder( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid DmsPersonalFolderBorrowForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(personalFolderService.addBorrowSnapshots(form, trustedServiceId)); } @PostMapping("/personal-folders/download/files") public ActionResult addDownloadedFilesToPersonalFolder( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid DmsPersonalFolderDownloadForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(personalFolderService.addDownloadSnapshots(form, trustedServiceId)); } @PostMapping("/workflow-prints/authorize") public ActionResult authorizeWorkflowPrint( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestHeader(value = "X-Audit-Biz-Sign", required = false) String auditBizSign, @RequestBody @Valid DmsWorkflowPrintAuthorizeForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); UserInfo user = currentIdentity.requireUser(); if (auditBizSign != null && !auditBizSign.trim().isEmpty()) { form.setBizSign(auditBizSign.trim()); } return ActionResult.success(workflowPrintAuthorizationService.authorize( currentIdentity.tenantId(user), form, trustedServiceId)); } @PostMapping("/workflow-prints/files") public ActionResult grantWorkflowPrintFiles( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid DmsWorkflowPrintFilesGrantForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(personalFolderService.grantPrintPermissions(form, trustedServiceId)); } @PostMapping("/workflow-downloads/authorize") public ActionResult authorizeWorkflowDownload( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestHeader(value = "X-Audit-Biz-Sign", required = false) String auditBizSign, @RequestBody @Valid DmsWorkflowDownloadAuthorizeForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); UserInfo user = currentIdentity.requireUser(); if (auditBizSign != null && !auditBizSign.trim().isEmpty()) { form.setBizSign(auditBizSign.trim()); } return ActionResult.success(workflowDownloadAuthorizationService.authorize( currentIdentity.tenantId(user), form, trustedServiceId)); } @PostMapping("/workflow-files/uploads") public ActionResult registerWorkflowUpload( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestHeader(value = "X-Audit-Biz-Sign", required = false) String auditBizSign, @RequestBody @Valid DmsApprovedRegistrationCallback form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(approvedFlowService.completeRegistration(form, trustedServiceId)); } @PostMapping("/workflow-files/revisions") public ActionResult registerWorkflowRevision( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestHeader(value = "X-Audit-Biz-Sign", required = false) String auditBizSign, @RequestBody @Valid DmsWorkflowRevisionRegisterForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(workflowFileRegistrationService.revise(form, trustedServiceId)); } @PostMapping("/folders") public ActionResult createFolder( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid FolderCreateForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(resourceService.createFolder(form, trustedServiceId)); } @PostMapping("/documents") public ActionResult createDocument( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid DocumentCreateForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(resourceService.createDocument(form, trustedServiceId)); } @PostMapping("/file-versions") public ActionResult createFileVersion( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid FileVersionCreateForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(resourceService.createFileVersion(form, trustedServiceId)); } @PostMapping("/uploads") public ActionResult registerUpload( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestHeader(value = "X-Audit-Biz-Sign", required = false) String auditBizSign, @RequestBody @Valid DmsFileUploadRegisterForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(fileUploadService.register(form, trustedServiceId)); } @PostMapping("/revisions") public ActionResult registerRevision( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestHeader(value = "X-Audit-Biz-Sign", required = false) String auditBizSign, @RequestBody @Valid DmsFileRevisionRegisterForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(fileRevisionService.register(form, trustedServiceId)); } @PostMapping("/workflow-files/prepare") public ActionResult prepareWorkflowFile( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid DmsWorkflowFilePrepareForm form) { SaSameUtil.checkCurrentRequestToken(); String trustedServiceId = trustedServiceGuard.requireAllowed(serviceId); return ActionResult.success(workflowFilePrepareService.prepare(form, trustedServiceId)); } @PostMapping("/workflow-files/activate") public ActionResult activateWorkflowFile( @RequestHeader(value = "X-DMS-Service-Id", required = false) String serviceId, @RequestBody @Valid DmsWorkflowFileActivateForm form) { SaSameUtil.checkCurrentRequestToken(); trustedServiceGuard.requireAllowed(serviceId); UserInfo user = currentIdentity.requireUser(); return ActionResult.success(workflowFileActivationService.activate( currentIdentity.tenantId(user), form.getSourceId().trim(), form.getTaskId().trim(), form.getFileType(), user.getUserId())); } }