通知系统-1
This commit is contained in:
@@ -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(),
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user