Skip to content

Commit

Permalink
feat: 批量分发支持标签与分类合并
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Aug 21, 2023
1 parent 09583e4 commit 2e29bb4
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 10 deletions.
22 changes: 12 additions & 10 deletions src/components/publish/BatchPublishIndex.vue
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ import { isDev } from "~/src/utils/constants.ts"
import { ICategoryConfig } from "~/src/types/ICategoryConfig.ts"
import { SiyuanAttr } from "zhi-siyuan-api"
import { DistributionPattern } from "~/src/models/distributionPattern.ts"
import Adaptors from "~/src/adaptors"
const logger = createAppLogger("publisher-index")
Expand Down Expand Up @@ -119,8 +118,6 @@ const handlePublish = async () => {
formData.failBatchResults = []
formData.successBatchResults = []
// 思源笔记原始文章数据
const siyuanPost = formData.siyuanPost
for (const key of formData.dynList) {
if (sysKeys.includes(key)) {
logger.info(`开始发布 [${key}] 系统内置平台`)
Expand All @@ -130,15 +127,21 @@ const handlePublish = async () => {
const publishCfg = await getPublishCfg(key)
formData.publishCfg = publishCfg
// 思源笔记原始文章数据
const siyuanPost = await blogApi.getPost(id)
// 元数据初始化
formData.siyuanPost = await initPublishMethods.assignInitSlug(siyuanPost, id, formData.publishCfg)
// 合并模式需要重新获取
if (formData.distriPattern === DistributionPattern.Merge) {
// 元数据初始化
const platformPost = await initPublishMethods.assignInitAttrs(siyuanPost, id, formData.publishCfg)
throw new Error("合并模式开发中")
const mergedPost = platformPost
formData.siyuanPost = mergedPost
} else {
formData.siyuanPost = siyuanPost
const mergedPost = initPublishMethods.doMergeBatchPost(formData.siyuanPost, platformPost)
logger.debug("批量分发模式文章已合并", {
siyuanPost: toRaw(siyuanPost),
platformPost: toRaw(platformPost),
mergedPost: toRaw(mergedPost),
})
}
}
Expand Down Expand Up @@ -294,9 +297,8 @@ onMounted(async () => {
formData.publishCfg = await getPublishCfg()
// 思源笔记原始文章数据
const siyuanPost = await blogApi.getPost(id)
formData.siyuanPost = siyuanPost
// 元数据初始化
formData.siyuanPost = await initPublishMethods.assignInitSlug(formData.siyuanPost, id, formData.publishCfg)
formData.siyuanPost = await initPublishMethods.assignInitSlug(siyuanPost, id, formData.publishCfg)
logger.debug("batch inited siyuanPost =>", toRaw(formData.siyuanPost))
// ==================
// 初始化结束
Expand Down
21 changes: 21 additions & 0 deletions src/composables/usePublish.ts
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ const usePublish = () => {
* @param publishCfg - 发布配置
*/
const initPublishMethods = {
// 别名初始化
assignInitSlug: async (post: Post, id: string, publishCfg: IPublishCfg) => {
const setting: typeof SypConfig = publishCfg.setting
const postMeta = ObjectUtil.getProperty(setting, id, {})
Expand All @@ -366,6 +367,7 @@ const usePublish = () => {
return post
},

// 分配平台相关的YAML属性
assignInitAttrs: async (post: Post, id: string, publishCfg: IPublishCfg) => {
const setting: typeof SypConfig = publishCfg.setting
const cfg: BlogConfig = publishCfg.cfg
Expand Down Expand Up @@ -448,6 +450,8 @@ const usePublish = () => {
// 查询平台文章
platformPost = await api.getPost(postid)
// 更新属性
mergedPost.shortDesc = platformPost.shortDesc
mergedPost.mt_keywords = platformPost.mt_keywords
mergedPost.categories = platformPost.categories
mergedPost.cate_slugs = platformPost.cate_slugs

Expand All @@ -465,6 +469,23 @@ const usePublish = () => {
postPreviewUrl,
}
},

doMergeBatchPost: (post: Post, newPost: Post) => {
// 复制原始 post 对象以避免直接修改它
const mergedPost = { ...post }

const postKeywords = post.mt_keywords.split(",")
const newPostKeywords = newPost.mt_keywords.split(",")
// 合并并去重关键词
const mergedKeywords = [...new Set([...postKeywords, ...newPostKeywords])]
mergedPost.mt_keywords = mergedKeywords.join(",")

// 合并并去重分类
const mergedCategories = [...new Set([...post.categories, ...newPost.categories])]
mergedPost.categories = mergedCategories

return mergedPost
},
}

return {
Expand Down

0 comments on commit 2e29bb4

Please sign in to comment.