From 4ca32c22f9d97ea0fe9a8985bd9769c4bd0edac1 Mon Sep 17 00:00:00 2001 From: richarjiang Date: Sun, 25 Oct 2026 15:21:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E9=A6=86=E4=B8=BB?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/owner-introduction.md | 25 + packages/app/src/components/AboutSection.vue | 16 +- .../app/src/components/OwnerIntroduction.vue | 44 ++ .../app/src/composables/use-owner-profile.ts | 12 + packages/app/src/pages.json | 6 + packages/app/src/pages/admin/index.vue | 4 + packages/app/src/pages/admin/owner.vue | 239 ++++++++++ packages/app/src/pages/teacher/detail.vue | 438 +++--------------- packages/app/src/utils/teacher.ts | 12 +- .../migration.sql | 3 + packages/server/prisma/schema.prisma | 2 + .../booking/__tests__/booking.service.spec.ts | 2 + .../studio/__tests__/studio.service.spec.ts | 58 +++ .../__tests__/update-studio.dto.spec.ts | 31 ++ .../src/studio/dto/update-studio.dto.ts | 21 +- packages/server/src/studio/studio.service.ts | 13 +- packages/shared/src/index.ts | 2 + packages/shared/src/owner-profile.ts | 14 + packages/shared/src/types/studio.ts | 4 + 19 files changed, 556 insertions(+), 390 deletions(-) create mode 100644 docs/owner-introduction.md create mode 100644 packages/app/src/components/OwnerIntroduction.vue create mode 100644 packages/app/src/composables/use-owner-profile.ts create mode 100644 packages/app/src/pages/admin/owner.vue create mode 100644 packages/server/prisma/migrations/20261025090000_owner_introduction/migration.sql create mode 100644 packages/server/src/studio/__tests__/update-studio.dto.spec.ts create mode 100644 packages/shared/src/owner-profile.ts diff --git a/docs/owner-introduction.md b/docs/owner-introduction.md new file mode 100644 index 0000000..455b824 --- /dev/null +++ b/docs/owner-introduction.md @@ -0,0 +1,25 @@ +# 馆主介绍 + +- 入口:管理中心 → 系统设置 → 馆主介绍。 +- 个人介绍支持多段文字,最多 5000 字。首页摘要与详情页使用同一份内容。 +- 认证最多 30 项,每项最多 200 字;支持新增、删除、上移、下移。 +- 展示预览使用与前台相同的内容组件,点击“保存并更新”后才生效。 +- 保存前后端均保留段落和认证顺序,去除首尾空白、空认证及重复认证。 +- 清空个人介绍或全部认证并保存后,对应详情模块隐藏。未编辑的旧工作室继续显示原有介绍与认证。 +- 更新工作室其他设置不会覆盖馆主内容。写入沿用管理员鉴权,访客可读取展示内容。 + +## 发布顺序 + +本次增加 `studio_config.owner_introduction`(TEXT,可空)与 `owner_certifications`(JSON,可空),没有新环境变量。 + +1. 在服务端目录执行 `pnpm exec prisma migrate deploy`,应用 `20261025090000_owner_introduction` 迁移。 +2. 重新生成 Prisma Client、构建 shared 和服务端并发布。 +3. 构建、发布小程序。 + +## 验收 + +1. 后台编辑个人介绍,包含中文、换行及空行;添加两项认证并调整顺序。 +2. 检查展示预览,保存后返回首页,打开“馆主介绍”,确认文字与顺序同步。 +3. 重新进入后台,确认已保存内容回填;修改工作室名称后,馆主内容保持不变。 +4. 清空一项模块并保存,确认前台隐藏该模块;随后可重新填写。 +5. 修改后返回,确认出现未保存提醒;网络加载或保存失败时可重试,编辑内容不丢失。 diff --git a/packages/app/src/components/AboutSection.vue b/packages/app/src/components/AboutSection.vue index 6152ecf..1004a00 100644 --- a/packages/app/src/components/AboutSection.vue +++ b/packages/app/src/components/AboutSection.vue @@ -2,7 +2,7 @@ - 老师介绍 + 馆主介绍 查看详情 @@ -19,7 +19,7 @@ {{ teacher.name }} - + 馆主 {{ teacher.title }} @@ -46,12 +46,12 @@ + + diff --git a/packages/app/src/composables/use-owner-profile.ts b/packages/app/src/composables/use-owner-profile.ts new file mode 100644 index 0000000..f95cfab --- /dev/null +++ b/packages/app/src/composables/use-owner-profile.ts @@ -0,0 +1,12 @@ +import { computed } from 'vue' +import { useStudioStore } from '../stores/studio' +import { irisProfile } from '../utils/teacher' + +export function useOwnerProfile() { + const studioStore = useStudioStore() + return computed(() => ({ + ...irisProfile, + intro: studioStore.studioInfo?.ownerIntroduction ?? irisProfile.intro, + certifications: studioStore.studioInfo?.ownerCertifications ?? irisProfile.certifications, + })) +} diff --git a/packages/app/src/pages.json b/packages/app/src/pages.json index 556b632..54184e2 100644 --- a/packages/app/src/pages.json +++ b/packages/app/src/pages.json @@ -201,6 +201,12 @@ "navigationStyle": "custom" } }, + { + "path": "owner", + "style": { + "navigationStyle": "custom" + } + }, { "path": "member-progress", "style": { diff --git a/packages/app/src/pages/admin/index.vue b/packages/app/src/pages/admin/index.vue index ba26f06..208dae5 100644 --- a/packages/app/src/pages/admin/index.vue +++ b/packages/app/src/pages/admin/index.vue @@ -82,6 +82,10 @@ 工作室设置 › + + 馆主介绍 + › + 增加订阅次数 剩余 {{ user?.adminBookingSubscriptionCount ?? 0 }} 次 diff --git a/packages/app/src/pages/admin/owner.vue b/packages/app/src/pages/admin/owner.vue new file mode 100644 index 0000000..4a19e81 --- /dev/null +++ b/packages/app/src/pages/admin/owner.vue @@ -0,0 +1,239 @@ +