refactor: 合并三级缓存为统一缓存 + 重命名 saveDraft → savePreview

1. 三个 Caffeine Cache 合并为一个 jsonCache,key 用 :published/:draft 后缀区分
2. saveDraft → savePreview,更准确反映「预览版」语义(非临时草稿)
3. getPreviewBundleJson 去掉独立缓存,直接查 DB(preview 是 draft+published 逻辑并集,缓存意义不大)
4. 前端按钮「保存草稿」→「保存预览版」,API 路径 /save-draft → /save-preview
This commit is contained in:
mediabot-pt
2026-07-07 11:45:04 +08:00
parent 3cc7b932a8
commit ebfb6395db
4 changed files with 65 additions and 81 deletions

View File

@@ -57,7 +57,7 @@
<div style="display:flex;gap:8px">
<el-button size="small" @click="editSiteId=''">返回列表</el-button>
<el-button size="small" @click="saveSite" :loading="saving">保存站点</el-button>
<el-button size="small" @click="saveDraft" :loading="savingDraft">保存草稿</el-button>
<el-button size="small" @click="savePreview" :loading="savingPreview">保存预览版</el-button>
<el-button size="small" type="success" @click="publishSite" :loading="publishing">发布正式版</el-button>
</div>
</div>
@@ -108,7 +108,7 @@
<script setup>
import api from '../api'
const loading = ref(false), saving = ref(false), savingDraft = ref(false), publishing = ref(false), pendingCount = ref(0)
const loading = ref(false), saving = ref(false), savingPreview = ref(false), publishing = ref(false), pendingCount = ref(0)
const sites = ref([]), editSiteId = ref(''), editorJson = ref('{}'), jsonError = ref(false)
const form = reactive({ siteId:'', namesStr:'', urlsStr:'', tagsStr:'', desc:'', siteType:'nexusphp', status:'active' })
let syncing = false
@@ -155,13 +155,13 @@ const newSite = () => {
editorJson.value = JSON.stringify({siteId:'',names:[''],urls:[''],siteType:'nexusphp',status:'active'}, null, 2)
}
const saveDraft = async () => {
savingDraft.value = true
const savePreview = async () => {
savingPreview.value = true
try {
await api.raw.post('/admin/sites/' + editSiteId.value + '/save-draft')
ElMessage.success('草稿已保存(预览版)')
} catch { ElMessage.error('保存草稿失败') }
finally { savingDraft.value = false }
await api.raw.post('/admin/sites/' + editSiteId.value + '/save-preview')
ElMessage.success('预览版已保存')
} catch { ElMessage.error('保存预览版失败') }
finally { savingPreview.value = false }
}
const publishSite = async () => {