fix(widget): 修复页面访问量获取失败的问题
- 前端 trackVisit 现在传递 siteId 参数 - 后端 getPagePv 查询时处理 site_id 为空或 NULL 的情况
This commit is contained in:
@@ -12,11 +12,23 @@ export const getPagePv = async (c: Context<{ Bindings: Bindings }>) => {
|
||||
return c.json({ message: 'post_slug is required' }, 400);
|
||||
}
|
||||
|
||||
const row = await c.env.CWD_DB.prepare(
|
||||
'SELECT pv FROM page_stats WHERE post_slug = ? AND site_id = ?'
|
||||
)
|
||||
.bind(postSlug, siteId)
|
||||
.first<{ pv: number }>();
|
||||
let row: { pv: number } | null = null;
|
||||
|
||||
if (siteId) {
|
||||
// 有 siteId 时精确匹配
|
||||
row = await c.env.CWD_DB.prepare(
|
||||
'SELECT pv FROM page_stats WHERE post_slug = ? AND site_id = ?'
|
||||
)
|
||||
.bind(postSlug, siteId)
|
||||
.first<{ pv: number }>();
|
||||
} else {
|
||||
// 无 siteId 时,匹配空字符串或 NULL
|
||||
row = await c.env.CWD_DB.prepare(
|
||||
'SELECT pv FROM page_stats WHERE post_slug = ? AND (site_id = ? OR site_id IS NULL)'
|
||||
)
|
||||
.bind(postSlug, '')
|
||||
.first<{ pv: number }>();
|
||||
}
|
||||
|
||||
const pv = row?.pv || 0;
|
||||
|
||||
|
||||
@@ -122,16 +122,20 @@ export function createApiClient(config) {
|
||||
|
||||
async function trackVisit() {
|
||||
try {
|
||||
const body = {
|
||||
postSlug: config.postUrl || config.postSlug,
|
||||
postTitle: config.postTitle,
|
||||
postUrl: config.postUrl
|
||||
};
|
||||
if (config.siteId) {
|
||||
body.siteId = config.siteId;
|
||||
}
|
||||
await fetch(`${baseUrl}/api/analytics/visit`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
postSlug: config.postUrl || config.postSlug,
|
||||
postTitle: config.postTitle,
|
||||
postUrl: config.postUrl
|
||||
})
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user