package com.sinata.appointment.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; import com.sinata.appointment.common.Result; import com.sinata.appointment.common.ResultUtil; import com.sinata.appointment.dto.DeptCreateRequest; import com.sinata.appointment.dto.DeptTreeNodeVo; import com.sinata.appointment.dto.DeptUpdateRequest; import com.sinata.appointment.service.DeptManageApplicationService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import java.util.List; import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; 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; @Tag(name = "部门管理") @RestController @RequestMapping("/api/sys/dept-manage") @RequiredArgsConstructor @Validated public class DeptManageController { private final DeptManageApplicationService deptManageApplicationService; @Operation(summary = "部门树(含禁用部门,最多五级)") @GetMapping("/tree") @SaCheckPermission( value = { "config:approval-settings:page", "sys:depts:page", "sys:staff:page", "sys:staff-groups:page", "sys:local-units:page" }, mode = SaMode.OR) public Result> tree() { return ResultUtil.data(deptManageApplicationService.tree()); } @Operation(summary = "新增部门") @PostMapping @SaCheckPermission("sys:depts:create") public Result> create(@Valid @RequestBody DeptCreateRequest request) { return ResultUtil.data(deptManageApplicationService.create(request)); } @Operation(summary = "编辑部门(body 须含 uuid)") @PutMapping("/{id}") @SaCheckPermission("sys:depts:update") public Result update(@PathVariable Long id, @Valid @RequestBody DeptUpdateRequest request) { deptManageApplicationService.update(id, request); return ResultUtil.success(); } @Operation(summary = "删除(逻辑删除,无下级时允许)") @DeleteMapping("/{id}") @SaCheckPermission("sys:depts:delete") public Result delete( @PathVariable Long id, @RequestParam @NotBlank(message = "uuid 不能为空") String uuid) { deptManageApplicationService.delete(id, uuid); return ResultUtil.success(); } }