fix(admin): 平台推送地址优先回显已配置的公网域名

- 引入 resolveDouyinMashidaPublicOrigin 从已配置的 claimLinkBase/certLink 提取公网域名
- 更新后台面板 message_url 展示逻辑,即使从 localhost 访问也清晰呈现已配置的公网推送地址
- 向平台订阅推送时使用已解析的公网域名,避免错误推送 localhost
- 补充前端单元测试并通过全量构建校验
This commit is contained in:
yml2213
2026-10-10 20:18:23 +08:00
parent fa1a67a03d
commit 73de90ea4f
3 changed files with 75 additions and 11 deletions
@@ -53,6 +53,7 @@ import {
describeMessageTemplateWarning,
describeMissingConfigFields,
isLocalDevBaseUrl,
resolveDouyinMashidaPublicOrigin,
} from '@/utils/douyin-mashida'
const { Text, Paragraph } = Typography
@@ -155,9 +156,14 @@ export function DouyinMashidaPanel() {
async function handleSubscribe(disable = false) {
setSubscribing(true)
try {
const targetUrl = buildDouyinMashidaMessageUrl(window.location.origin)
const targetOrigin = resolveDouyinMashidaPublicOrigin(
config.claimLinkBase,
config.certLink,
window.location.origin,
)
const targetUrl = buildDouyinMashidaMessageUrl(targetOrigin)
await subscribeAdminDouyinMashidaPush({
publicUrl: window.location.origin,
publicUrl: targetOrigin,
messageUrl: targetUrl,
topics: config.handledTopics,
disable,
@@ -216,7 +222,13 @@ export function DouyinMashidaPanel() {
certLink: config.certLink,
})
const isLocalDev = isLocalDevBaseUrl(config.baseUrl)
const messageUrl = buildDouyinMashidaMessageUrl(window.location.origin)
const publicOrigin = resolveDouyinMashidaPublicOrigin(
config.claimLinkBase,
config.certLink,
window.location.origin,
)
const messageUrl = buildDouyinMashidaMessageUrl(publicOrigin)
const isMessageUrlLocal = isLocalDevBaseUrl(publicOrigin)
const claimLinkPreview = buildDouyinMashidaClaimLinkPreview(config.claimLinkBase)
const claimLinkWarning = describeClaimLinkBaseWarning(config.claimLinkBase)
const messageTemplateWarning = describeMessageTemplateWarning(config.messageTemplate)
@@ -314,14 +326,28 @@ export function DouyinMashidaPanel() {
{/* 平台推送回调地址展示 */}
<div style={{ marginTop: 12, paddingTop: 10, borderTop: '1px dashed #e8e8e8' }}>
<Space wrap align="center">
<Text type="secondary" style={{ fontSize: 13 }}>
平台侧消息推送地址 (message_url):
</Text>
<Text code copyable={{ text: messageUrl }} style={{ fontSize: 13 }}>
{messageUrl}
</Text>
</Space>
<Row gutter={[8, 8]} align="middle">
<Col xs={24} lg={6}>
<Space>
<SendOutlined style={{ color: '#1677ff' }} />
<Text strong style={{ fontSize: 13 }}>
平台侧消息推送地址 (message_url):
</Text>
</Space>
</Col>
<Col xs={24} lg={18}>
<Space wrap align="center">
<Text code copyable={{ text: messageUrl }} style={{ fontSize: 13, fontWeight: 500 }}>
{messageUrl}
</Text>
{isMessageUrlLocal ? (
<Tag color="warning">⚠️ 当前为本地地址,请在下方配置公网域名后订阅</Tag>
) : (
<Tag color="success">✅ 公网推送就绪</Tag>
)}
</Space>
</Col>
</Row>
</div>
</Card>