const TasksModel = require("./tasks.model.js"); const TasksTool = require("./tasks.tool.js"); // Get all task configurations exports.getAllTasks = async (req, res) => { try { const tasks = await TasksModel.getAllTaskConfigs(); res.status(200).send(tasks); } catch (error) { res.status(500).send({ error: "Internal server error" }); } }; // Get player tasks exports.getPlayerTasks = async (req, res) => { try { const userId = req.params.userId; if (!userId) { return res.status(400).send({ error: "User ID is required" }); } const playerTasks = await TasksModel.getPlayerTasks(userId); if (!playerTasks) { return res.status(404).send({ error: "Player tasks not found" }); } res.status(200).send(playerTasks); } catch (error) { res.status(500).send({ error: "Internal server error" }); } }; // Save player tasks exports.savePlayerTasks = async (req, res) => { try { const userId = req.params.userId; if (!userId) { return res.status(400).send({ error: "User ID is required" }); } const tasksData = req.body; tasksData.userId = userId; const historyTasks = await TasksModel.getPlayerTasks(userId); const updatedTasks = await TasksModel.savePlayerTasks(tasksData); if (!updatedTasks) { return res.status(500).send({ error: "Failed to save player tasks" }); } // Give reward for completing a task for (let i = 0; i < req.body.tasks.length; i++) { const task = req.body.tasks[i]; const historyTask = historyTasks.tasks.find( (t) => t.taskId === task.taskId ); if (historyTask) { if (historyTask.status != task.status) { if ( task.status === TasksTool.TASK_STATUS.CLAIMED && historyTask.status === TasksTool.TASK_STATUS.COMPLETED ) { // 任务可以领取奖励 且 历史任务状态为完成 const taskConfig = await TasksModel.getTaskConfigById(task.taskId); await TasksTool.giveTaskReward(userId, taskConfig); } } } } res.status(200).send({ success: true }); } catch (error) { res.status(500).send({ error: "Internal server error" }); } };