ArticleGenerationTaskController.java 5.8 KB
package com.aigeo.article.controller;

import com.aigeo.article.entity.ArticleGenerationTask;
import com.aigeo.article.service.ArticleGenerationTaskService;
import com.aigeo.common.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 文章生成任务控制器
 */
@Slf4j
@RestController
@RequestMapping("/api/article-tasks")
@Tag(name = "文章生成任务管理", description = "文章生成任务相关接口")
public class ArticleGenerationTaskController {
    
    @Autowired
    private ArticleGenerationTaskService articleGenerationTaskService;
    
    @PostMapping
    @Operation(summary = "创建文章生成任务", description = "创建新的文章生成任务")
    public Result<ArticleGenerationTask> createTask(@RequestBody ArticleGenerationTask task) {
        try {
            ArticleGenerationTask savedTask = articleGenerationTaskService.save(task);
            return Result.success("任务创建成功", savedTask);
        } catch (Exception e) {
            log.error("创建文章生成任务失败", e);
            return Result.error("任务创建失败");
        }
    }
    
    @GetMapping("/{id}")
    @Operation(summary = "获取文章生成任务详情", description = "根据ID获取文章生成任务详情")
    public Result<ArticleGenerationTask> getTaskById(@PathVariable Integer id) {
        try {
            return articleGenerationTaskService.findById(id)
                    .map(task -> Result.success("查询成功", task))
                    .orElse(Result.error("任务不存在"));
        } catch (Exception e) {
            log.error("获取文章生成任务详情失败, id: {}", id, e);
            return Result.error("查询失败");
        }
    }
    
    @GetMapping
    @Operation(summary = "获取文章生成任务列表", description = "获取所有文章生成任务列表")
    public Result<List<ArticleGenerationTask>> getAllTasks() {
        try {
            List<ArticleGenerationTask> tasks = articleGenerationTaskService.findAll();
            return Result.success("查询成功", tasks);
        } catch (Exception e) {
            log.error("获取文章生成任务列表失败", e);
            return Result.error("查询失败");
        }
    }
    
    @GetMapping("/company/{companyId}")
    @Operation(summary = "根据公司ID获取文章生成任务列表", description = "根据公司ID获取文章生成任务列表")
    public Result<List<ArticleGenerationTask>> getTasksByCompanyId(@PathVariable Integer companyId) {
        try {
            List<ArticleGenerationTask> tasks = articleGenerationTaskService.findByCompanyId(companyId);
            return Result.success("查询成功", tasks);
        } catch (Exception e) {
            log.error("根据公司ID获取文章生成任务列表失败, companyId: {}", companyId, e);
            return Result.error("查询失败");
        }
    }
    
    @GetMapping("/user/{userId}")
    @Operation(summary = "根据用户ID获取文章生成任务列表", description = "根据用户ID获取文章生成任务列表")
    public Result<List<ArticleGenerationTask>> getTasksByUserId(@PathVariable Integer userId) {
        try {
            List<ArticleGenerationTask> tasks = articleGenerationTaskService.findByUserId(userId);
            return Result.success("查询成功", tasks);
        } catch (Exception e) {
            log.error("根据用户ID获取文章生成任务列表失败, userId: {}", userId, e);
            return Result.error("查询失败");
        }
    }
    
    @GetMapping("/status/{status}")
    @Operation(summary = "根据状态获取文章生成任务列表", description = "根据状态获取文章生成任务列表")
    public Result<List<ArticleGenerationTask>> getTasksByStatus(@PathVariable String status) {
        try {
            ArticleGenerationTask.TaskStatus taskStatus = ArticleGenerationTask.TaskStatus.fromCode(status);
            List<ArticleGenerationTask> tasks = articleGenerationTaskService.findByStatus(taskStatus);
            return Result.success("查询成功", tasks);
        } catch (Exception e) {
            log.error("根据状态获取文章生成任务列表失败, status: {}", status, e);
            return Result.error("查询失败");
        }
    }
    
    @PutMapping("/{id}")
    @Operation(summary = "更新文章生成任务", description = "更新文章生成任务信息")
    public Result<ArticleGenerationTask> updateTask(@PathVariable Integer id, @RequestBody ArticleGenerationTask task) {
        try {
            if (!articleGenerationTaskService.findById(id).isPresent()) {
                return Result.error("任务不存在");
            }
            task.setId(id);
            ArticleGenerationTask updatedTask = articleGenerationTaskService.save(task);
            return Result.success("任务更新成功", updatedTask);
        } catch (Exception e) {
            log.error("更新文章生成任务失败, id: {}", id, e);
            return Result.error("任务更新失败");
        }
    }
    
    @DeleteMapping("/{id}")
    @Operation(summary = "删除文章生成任务", description = "删除指定ID的文章生成任务")
    public Result<String> deleteTask(@PathVariable Integer id) {
        try {
            if (!articleGenerationTaskService.findById(id).isPresent()) {
                return Result.error("任务不存在");
            }
            articleGenerationTaskService.deleteById(id);
            return Result.success("任务删除成功");
        } catch (Exception e) {
            log.error("删除文章生成任务失败, id: {}", id, e);
            return Result.error("任务删除失败");
        }
    }
}