package com.designhub.controller; import com.designhub.common.Result; import com.designhub.dto.TaskApprovalDTO; import com.designhub.entity.Task; import com.designhub.service.TaskApprovalService; import com.designhub.util.JwtUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; /** * 任务审核控制器 */ @Tag(name = "任务审核管理") @RestController @RequestMapping("/api/tasks") @RequiredArgsConstructor public class TaskApprovalController { private final TaskApprovalService taskApprovalService; private final JwtUtil jwtUtil; @Operation(summary = "需求部门审核通过") @PostMapping("/{id}/approve-demand") public Result approveDemandLevel( @PathVariable Long id, @RequestBody TaskApprovalDTO dto, @RequestHeader("Authorization") String authHeader ) { String token = jwtUtil.extractTokenFromHeader(authHeader); Long approverId = jwtUtil.getUserIdFromToken(token); taskApprovalService.approveDemandLevel(id, approverId, dto); return Result.success(); } @Operation(summary = "需求部门驳回") @PostMapping("/{id}/reject-demand") public Result rejectByDemandLeader( @PathVariable Long id, @RequestBody Map params, @RequestHeader("Authorization") String authHeader ) { String token = jwtUtil.extractTokenFromHeader(authHeader); Long approverId = jwtUtil.getUserIdFromToken(token); String reason = params.getOrDefault("reason", ""); taskApprovalService.rejectByDemandLeader(id, approverId, reason); return Result.success(); } @Operation(summary = "接单部门审核通过") @PostMapping("/{id}/approve-receiving") public Result approveReceivingLevel( @PathVariable Long id, @RequestBody TaskApprovalDTO dto, @RequestHeader("Authorization") String authHeader ) { String token = jwtUtil.extractTokenFromHeader(authHeader); Long approverId = jwtUtil.getUserIdFromToken(token); // 从dto中获取指定的接收人ID taskApprovalService.approveReceivingLevel(id, approverId, dto, dto.getAssignedReceiverId()); return Result.success(); } @Operation(summary = "接单部门驳回") @PostMapping("/{id}/reject-receiving") public Result rejectByReceivingLeader( @PathVariable Long id, @RequestBody Map params, @RequestHeader("Authorization") String authHeader ) { String token = jwtUtil.extractTokenFromHeader(authHeader); Long approverId = jwtUtil.getUserIdFromToken(token); String reason = params.getOrDefault("reason", ""); taskApprovalService.rejectByReceivingLeader(id, approverId, reason); return Result.success(); } @Operation(summary = "获取待审核任务列表") @GetMapping("/pending-approval") public Result> getPendingApprovalTasks( @RequestHeader("Authorization") String authHeader ) { String token = jwtUtil.extractTokenFromHeader(authHeader); Long userId = jwtUtil.getUserIdFromToken(token); List tasks = taskApprovalService.getPendingApprovalTasks(userId); return Result.success(tasks); } }