40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const express = require('express');
|
|
const { listPresaleTasks } = require('../services/presaleTaskService');
|
|
const {
|
|
requireExternalAutomationApiKey,
|
|
requireDesktopPageAccess,
|
|
} = require('../services/externalAutomationAuth');
|
|
|
|
const router = express.Router();
|
|
const requirePresaleAccess = requireDesktopPageAccess('planning_upload');
|
|
|
|
function handleError(res, error, fallbackMessage) {
|
|
const statusCode = error.statusCode || error.status || 500;
|
|
if (statusCode >= 500) {
|
|
console.error('[PresaleExternalAPI] 请求失败:', error);
|
|
}
|
|
return res.status(statusCode).json({
|
|
success: false,
|
|
error: error.message || fallbackMessage,
|
|
data: error.data || undefined,
|
|
});
|
|
}
|
|
|
|
router.get('/tasks', requireExternalAutomationApiKey, requirePresaleAccess, async (req, res) => {
|
|
try {
|
|
const query = { ...(req.query || {}) };
|
|
if (req.externalApiKey?.authType === 'jwt') {
|
|
query.dingtalkUserName = String(req.user?.name || req.user?.username || '').trim();
|
|
}
|
|
const data = await listPresaleTasks(query);
|
|
res.setHeader('Cache-Control', 'no-store');
|
|
return res.json({ success: true, data });
|
|
} catch (error) {
|
|
return handleError(res, error, '查询预售处理数据失败');
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|