| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package com.dms.api.v1;
- import com.dms.common.ApiResponse;
- import com.dms.common.Payloads;
- import com.dms.security.AuthRequired;
- import com.dms.service.IpEntryService;
- import com.dms.service.OrganizationService;
- import jakarta.servlet.http.HttpServletRequest;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.DeleteMapping;
- 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.PutMapping;
- 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;
- /** 组织接口,对齐 backend/dms/api/v1/organizations.py。 */
- @RestController
- @RequestMapping("/api/v1/organizations")
- public class OrganizationsController {
- private final OrganizationService organizationService;
- private final IpEntryService ipEntryService;
- public OrganizationsController(OrganizationService organizationService,
- IpEntryService ipEntryService) {
- this.organizationService = organizationService;
- this.ipEntryService = ipEntryService;
- }
- @AuthRequired(requireAdmin = true)
- @GetMapping("/tree")
- public ApiResponse<Object> tree(@RequestParam(required = false) String keyword,
- @RequestParam(required = false) String status) {
- return ApiResponse.ok(organizationService.organizationTree(keyword, status));
- }
- @AuthRequired(requireAdmin = true)
- @PostMapping
- public ResponseEntity<ApiResponse<Object>> create(@RequestBody Object body,
- HttpServletRequest request) {
- return ResponseEntity.status(HttpStatus.CREATED)
- .body(ApiResponse.ok(organizationService.create(body, request)));
- }
- /** 对齐 reorder_organizations_route(契约1.27):机构树同级拖动重排。 */
- @AuthRequired(requireAdmin = true)
- @PutMapping("/reorder")
- public ApiResponse<Object> reorder(@RequestBody Object body, HttpServletRequest request) {
- return ApiResponse.ok(organizationService.reorder(body, request));
- }
- @AuthRequired(requireAdmin = true)
- @PutMapping("/{id}")
- public ApiResponse<Object> update(@PathVariable String id, @RequestBody Object body,
- HttpServletRequest request) {
- return ApiResponse.ok(organizationService.update(
- Payloads.pathId(id), body, request));
- }
- @AuthRequired(requireAdmin = true)
- @DeleteMapping("/{id}")
- public ApiResponse<Object> delete(@PathVariable String id,
- @RequestParam(required = false) String rowVersion,
- HttpServletRequest request) {
- return ApiResponse.ok(organizationService.delete(
- Payloads.pathId(id), Payloads.deleteRowVersion(rowVersion), request));
- }
- @AuthRequired(requireAdmin = true)
- @GetMapping("/{id}/ip-assignments")
- public ApiResponse<Object> ipAssignments(@PathVariable String id) {
- return ApiResponse.ok(ipEntryService.listOrgIpAssignments(Payloads.pathId(id)));
- }
- @AuthRequired(requireAdmin = true)
- @PutMapping("/{id}/ip-assignments")
- public ApiResponse<Object> updateIpAssignments(@PathVariable String id,
- @RequestBody Object body,
- HttpServletRequest request) {
- return ApiResponse.ok(ipEntryService.updateOrgIpAssignments(
- Payloads.pathId(id), body, request));
- }
- }
|