package com.red.circle.other.adapter.app.task;

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.other.app.dto.task.TaskDTO;
import com.red.circle.other.app.service.task.TaskService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/app/tasks", produces = MediaType.APPLICATION_JSON_VALUE)
public class TaskController {

    private final TaskService taskService;

    /**
     * 获取任务列表、任务详情和用户状态
     * @param cmd 包含公参的命令对象
     * @return 任务列表的复合对象
     */
    @GetMapping
    public List<TaskDTO> getTaskList(AppExtCommand cmd) {
        return taskService.getTaskList(cmd);
    }

    /**
     * 获取任务状态（用户完成但未领取）
     * @param cmd 包含公参的命令对象
     * @return 是否有完成但未领取的任务
     */
    @GetMapping("/status")
    public Boolean getTaskStatus(AppExtCommand cmd) {
        return taskService.getTaskStatus(cmd.getReqUserId());
    }

    /**
     * 领取任务奖励
     * @param cmd 包含任务 ID 的命令对象
     * @return 操作结果
     */
    @GetMapping("/reward")
    public Boolean claimReward(@RequestParam Long taskId,AppExtCommand cmd) {
        return taskService.claimReward(cmd, taskId);
    }
}
