156 lines
5.4 KiB
Java
156 lines
5.4 KiB
Java
package com.designhub.controller;
|
|
|
|
import com.designhub.common.Result;
|
|
import com.designhub.entity.Task;
|
|
import com.designhub.service.AdminTaskService;
|
|
import com.designhub.util.JwtUtil;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import lombok.Data;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 管理员任务调配Controller
|
|
*/
|
|
@Tag(name = "管理员任务管理", description = "管理员任务调配相关API")
|
|
@RestController
|
|
@RequestMapping("/api/admin/tasks")
|
|
@RequiredArgsConstructor
|
|
public class AdminTaskController {
|
|
|
|
private final AdminTaskService adminTaskService;
|
|
private final JwtUtil jwtUtil;
|
|
|
|
@Operation(summary = "分配任务")
|
|
@PostMapping("/{taskId}/assign")
|
|
public Result<Task> assignTask(
|
|
@PathVariable Long taskId,
|
|
@RequestParam Long designerId,
|
|
@RequestHeader("Authorization") String authHeader
|
|
) {
|
|
String token = jwtUtil.extractTokenFromHeader(authHeader);
|
|
Long adminId = jwtUtil.getUserIdFromToken(token);
|
|
Task task = adminTaskService.assignTask(taskId, designerId, adminId);
|
|
return Result.success(task);
|
|
}
|
|
|
|
@Operation(summary = "转移任务")
|
|
@PostMapping("/{taskId}/transfer")
|
|
public Result<Task> transferTask(
|
|
@PathVariable Long taskId,
|
|
@RequestBody TransferRequest request,
|
|
@RequestHeader("Authorization") String authHeader
|
|
) {
|
|
String token = jwtUtil.extractTokenFromHeader(authHeader);
|
|
Long adminId = jwtUtil.getUserIdFromToken(token);
|
|
Task task = adminTaskService.transferTask(
|
|
taskId,
|
|
request.getNewDesignerId(),
|
|
adminId,
|
|
request.getReason()
|
|
);
|
|
return Result.success(task);
|
|
}
|
|
|
|
@Operation(summary = "批量分配任务")
|
|
@PostMapping("/batch-assign")
|
|
public Result<Integer> batchAssignTasks(
|
|
@RequestBody BatchAssignRequest request,
|
|
@RequestHeader("Authorization") String authHeader
|
|
) {
|
|
String token = jwtUtil.extractTokenFromHeader(authHeader);
|
|
Long adminId = jwtUtil.getUserIdFromToken(token);
|
|
int count = adminTaskService.batchAssignTasks(
|
|
request.getTaskIds(),
|
|
request.getDesignerId(),
|
|
adminId
|
|
);
|
|
return Result.success(count);
|
|
}
|
|
|
|
@Operation(summary = "调整任务优先级")
|
|
@PutMapping("/{taskId}/priority")
|
|
public Result<Task> adjustTaskPriority(
|
|
@PathVariable Long taskId,
|
|
@RequestParam Integer priority,
|
|
@RequestHeader("Authorization") String authHeader
|
|
) {
|
|
String token = jwtUtil.extractTokenFromHeader(authHeader);
|
|
Long adminId = jwtUtil.getUserIdFromToken(token);
|
|
Task task = adminTaskService.adjustTaskPriority(taskId, priority, adminId);
|
|
return Result.success(task);
|
|
}
|
|
|
|
@Operation(summary = "获取任务池列表")
|
|
@GetMapping("/pool")
|
|
public Result<List<Task>> getTaskPool() {
|
|
List<Task> tasks = adminTaskService.getTaskPool();
|
|
return Result.success(tasks);
|
|
}
|
|
|
|
@Operation(summary = "获取所有进行中的任务")
|
|
@GetMapping("/in-progress")
|
|
public Result<List<Task>> getInProgressTasks() {
|
|
List<Task> tasks = adminTaskService.getInProgressTasks();
|
|
return Result.success(tasks);
|
|
}
|
|
|
|
@Operation(summary = "强制完成任务")
|
|
@PostMapping("/{taskId}/force-complete")
|
|
public Result<Task> forceCompleteTask(
|
|
@PathVariable Long taskId,
|
|
@RequestBody AdminActionRequest request,
|
|
@RequestHeader("Authorization") String authHeader
|
|
) {
|
|
String token = jwtUtil.extractTokenFromHeader(authHeader);
|
|
Long adminId = jwtUtil.getUserIdFromToken(token);
|
|
Task task = adminTaskService.forceCompleteTask(taskId, adminId, request.getReason());
|
|
return Result.success(task);
|
|
}
|
|
|
|
@Operation(summary = "取消任务")
|
|
@PostMapping("/{taskId}/cancel")
|
|
public Result<Task> cancelTask(
|
|
@PathVariable Long taskId,
|
|
@RequestBody AdminActionRequest request,
|
|
@RequestHeader("Authorization") String authHeader
|
|
) {
|
|
String token = jwtUtil.extractTokenFromHeader(authHeader);
|
|
Long adminId = jwtUtil.getUserIdFromToken(token);
|
|
Task task = adminTaskService.cancelTask(taskId, adminId, request.getReason());
|
|
return Result.success(task);
|
|
}
|
|
|
|
// DTO类
|
|
public static class TransferRequest {
|
|
private Long newDesignerId;
|
|
private String reason;
|
|
|
|
public Long getNewDesignerId() { return newDesignerId; }
|
|
public void setNewDesignerId(Long newDesignerId) { this.newDesignerId = newDesignerId; }
|
|
public String getReason() { return reason; }
|
|
public void setReason(String reason) { this.reason = reason; }
|
|
}
|
|
|
|
public static class BatchAssignRequest {
|
|
private List<Long> taskIds;
|
|
private Long designerId;
|
|
|
|
public List<Long> getTaskIds() { return taskIds; }
|
|
public void setTaskIds(List<Long> taskIds) { this.taskIds = taskIds; }
|
|
public Long getDesignerId() { return designerId; }
|
|
public void setDesignerId(Long designerId) { this.designerId = designerId; }
|
|
}
|
|
|
|
public static class AdminActionRequest {
|
|
private String reason;
|
|
|
|
public String getReason() { return reason; }
|
|
public void setReason(String reason) { this.reason = reason; }
|
|
}
|
|
}
|
|
|