通知系统-1

This commit is contained in:
yml2213
2026-05-14 17:29:12 +08:00
parent 91d74b3e59
commit b6c493d5e7
22 changed files with 1314 additions and 11 deletions
@@ -11,6 +11,7 @@ import {
getAdminCloudtentaclesAsset,
getAdminCloudtentaclesBindUrl,
getAdminCloudtentaclesCategories,
getAdminNotificationConfig,
getAdminKuaishouCloudFulfillmentConfig,
getAdminKuaishouEticketSourceConfig,
getAdminCloudtentaclesKnapsack,
@@ -29,10 +30,12 @@ import {
retryAdminNinetyoneOrder,
runAdminCloudtentaclesFullFlow,
sendAdminCloudtentaclesSmsCode,
testAdminNotification,
testAdminCloudtentaclesLogin,
updateAdminKuaishouCloudFulfillmentConfig,
updateAdminKuaishouEticketSourceConfig,
updateAdminCloudtentaclesSourceConfig,
updateAdminNotificationConfig,
updateAdminAgisoShopConfigs,
updateAdminFulfillmentBindingConfigs,
verifyAdminCloudtentaclesLoginCode,
@@ -45,6 +48,8 @@ import { createJsonHandler, requireAdminRoles } from './shared.js'
/** @typedef {import('../../types/admin-route-inputs.js').AdminFulfillmentBindingLookupRouteBody} AdminFulfillmentBindingLookupRouteBody */
/** @typedef {import('../../types/admin-route-inputs.js').AdminEntityRouteParams} AdminEntityRouteParams */
/** @typedef {import('../../types/admin-route-inputs.js').AdminKuaishouEticketSourceConfigRouteBody} AdminKuaishouEticketSourceConfigRouteBody */
/** @typedef {import('../../types/admin-route-inputs.js').AdminNotificationConfigRouteBody} AdminNotificationConfigRouteBody */
/** @typedef {import('../../types/admin-route-inputs.js').AdminNotificationTestRouteBody} AdminNotificationTestRouteBody */
/** @typedef {import('../../types/admin-route-inputs.js').AdminKuaishouEticketDetailQueryRouteBody} AdminKuaishouEticketDetailQueryRouteBody */
/** @typedef {import('../../types/admin-route-inputs.js').AdminKuaishouEticketConsumeRouteBody} AdminKuaishouEticketConsumeRouteBody */
/** @typedef {import('../../types/admin-route-inputs.js').AdminKuaishouEticketShopInfoRouteBody} AdminKuaishouEticketShopInfoRouteBody */
@@ -94,6 +99,61 @@ router.post('/platform-config/agiso-shops', createJsonHandler(
},
))
router.get('/platform-config/notifications', createJsonHandler(
() => getAdminNotificationConfig(),
{
successMessage: 'ok',
errorMessage: '读取内部通知配置失败',
scope: '[admin/platform-config/notifications]',
},
))
router.post('/platform-config/notifications', createJsonHandler(
(req) => updateAdminNotificationConfig(/** @type {AdminNotificationConfigRouteBody} */ (req.body)),
{
successMessage: '内部通知配置已保存',
errorMessage: '保存内部通知配置失败',
scope: '[admin/platform-config/notifications]',
audit: (_req, data) => {
const result = /** @type {{ filePath?: string, source?: { enabled?: boolean, channels?: { bark?: { recipients?: unknown[] } } } }} */ (data)
return {
action: 'platform_notification_config_updated',
targetType: 'platform_config',
targetId: 'notifications',
data: {
filePath: String(result.filePath || '').trim(),
enabled: Boolean(result.source?.enabled),
barkRecipientCount: Array.isArray(result.source?.channels?.bark?.recipients)
? result.source.channels.bark.recipients.length
: 0,
},
}
},
},
))
router.post('/platform-config/notifications/test', createJsonHandler(
(req) => testAdminNotification(/** @type {AdminNotificationTestRouteBody} */ (req.body)),
{
successMessage: '内部通知测试已执行',
errorMessage: '内部通知测试失败',
scope: '[admin/platform-config/notifications/test]',
audit: (_req, data) => {
const result = /** @type {{ successCount?: number, failedCount?: number, channel?: string }} */ (data)
return {
action: 'platform_notification_test_sent',
targetType: 'platform_config',
targetId: 'notifications',
data: {
channel: String(result.channel || '').trim(),
successCount: Number(result.successCount || 0),
failedCount: Number(result.failedCount || 0),
},
}
},
},
))
router.get('/platform-config/kuaishou-eticket-source', createJsonHandler(
() => getAdminKuaishouEticketSourceConfig(),
{