From f3195d9331839ad1378527de92873821aa6964bd Mon Sep 17 00:00:00 2001 From: v0 Date: Wed, 14 Jan 2026 05:10:32 +0000 Subject: [PATCH] refactor: overhaul homepage and app structure Simplify homepage, show chapter counts, display directory, trim bottom nav, in-page match feature, move marketing content, and enhance "My" page. #VERCEL_SKIP Co-authored-by: undefined --- DEPLOYMENT.md | 8 +- app/my/page.tsx | 240 +++++++++------- app/page.tsx | 150 ++++++++-- book/.cursor/rules/soul.mdc | 2 +- .../1.1 荷包:电动车出租的被动收入模式.md | 1 - .../7.3 在Soul找恋爱但想赚钱的人.md | 2 - .../5.1 拍卖行抱朴:一天240万的摇号生意.md | 1 - .../5.2 土地拍卖:招拍挂背后的游戏规则.md | 1 - .../5.3 地摊经济数字化:一个月900块的餐车生意.md | 1 - .../5.4 不良资产拍卖:我错过的一个亿佣金.md | 1 - .../5.5 桶装水李总:跟物业合作的轻资产模式.md | 1 - .../10.2 一人公司:为什么越来越多人选择单干.md | 2 +- .../11.1 私域经济:为什么流量越来越贵.md | 2 +- .../11.2 银发经济与孤独经济:两个被忽视的万亿市场.md | 2 +- .../9.10 淘客大佬:损耗30%的白色通道.md | 1 - .../9.12 美业整合:一个人的公司如何月入十万.md | 1 - .../9.13 AI工具推广:一个隐藏的高利润赛道.md | 1 - .../9.3 药物私域:长期关系赛道.md | 1 - .../9.4 残疾机构合作:退税 × AI × 人力成本.md | 1 - .../9.5 私域银行:粉丝即小股东.md | 1 - .../9.8 餐饮女孩:6万营收、1万利润的死撑生意.md | 1 - book/附录/附录2|创业者自检清单.md | 1 - book/附录/附录3|本书提到的工具和资源.md | 1 - check_deployment.sh | 0 components/bottom-nav.tsx | 78 +++--- components/match-modal.tsx | 215 ++++++++++++++ deploy-production.sh | 0 deploy_to_nas.sh | 0 lib/book-data.ts | 265 ++++++++---------- miniprogram/README.md | 60 ++-- miniprogram/project.config.json | 2 +- miniprogram/project.private.config.json | 2 +- miniprogram/小程序快速配置指南.md | 37 ++- miniprogram/小程序部署说明.md | 65 +++-- miniprogram/自动部署.sh | 0 package.json | 2 + pnpm-lock.yaml | 83 ++++-- public/book-chapters.json | 2 +- quick_deploy.sh | 0 redeploy.sh | 0 start-miniprogram.sh | 0 ✅全部完成.md | 12 +- ✅统一完成.md | 20 +- 小程序项目总览.md | 40 +-- 开发文档/10、项目管理/项目管理提示词.md | 4 +- 开发文档/10、项目管理/项目落地推进表.md | 4 +- 开发文档/1、需求/业务需求.md | 4 +- 开发文档/2、架构/🏆完美完成.md | 40 +-- 开发文档/3、原型/原型设计规范.md | 112 ++++---- 开发文档/4、前端/前端开发规范.md | 4 +- 开发文档/5、接口/接口定义规范.md | 232 +++++++-------- 开发文档/6、后端/后端开发规范.md | 4 +- 开发文档/7、数据库/数据库管理规范.md | 4 +- 开发文档/7、数据库/数据库设计.md | 112 ++++---- 开发文档/8、部署/Next.js自动化部署流程.md | 26 +- 开发文档/8、部署/WEBHOOK部署的提示词.md | 8 +- ... GitHub Webhook 与宝塔面板的自动化部署流程文档.md | 10 +- 开发文档/8、部署/项目程序提示词.md | 4 +- 开发文档/9、手册/使用手册提示词.md | 4 +- 开发文档/9、手册/落地方案提示词.md | 4 +- 开发文档/README_模板体系总览.md | 20 +- 开发文档/功能迭代记录.md | 4 +- 开发文档/小程序开发完成说明.md | 20 +- 开发文档/文档完善说明.md | 12 +- 开发文档/智能项目生成引擎v3.0.md | 9 +- 开发文档/核心功能总览.md | 176 ++++++------ 开发文档/生成指南_HTML输出.md | 29 +- 开发文档/项目文档生成器_核心提示词.md | 4 +- 快速启动指南.md | 28 +- 立即测试.md | 40 +-- 🎉部署完成.md | 12 +- 🎉部署成功.md | 36 +-- 🎊小程序上传成功.md | 4 +- 🎊最终部署完成.md | 24 +- 🎯升级完成.md | 28 +- 🎯最终优化完成.md | 52 ++-- 🏆完美完成.md | 40 +-- 📖完整升级报告.md | 44 +-- 🚀优化迭代报告.md | 4 +- 79 files changed, 1391 insertions(+), 1077 deletions(-) mode change 100755 => 100644 check_deployment.sh create mode 100644 components/match-modal.tsx mode change 100755 => 100644 deploy-production.sh mode change 100755 => 100644 deploy_to_nas.sh mode change 100755 => 100644 miniprogram/自动部署.sh mode change 100755 => 100644 quick_deploy.sh mode change 100755 => 100644 redeploy.sh mode change 100755 => 100644 start-miniprogram.sh diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index eac2e65..ab229c6 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -4,7 +4,7 @@ ### 1. Vercel部署 -```bash +\`\`\`bash # 安装Vercel CLI npm install -g vercel @@ -13,7 +13,7 @@ vercel login # 部署项目 vercel --prod -``` +\`\`\` ### 2. 环境变量配置 @@ -71,7 +71,7 @@ vercel --prod ## 本地开发 -```bash +\`\`\`bash # 安装依赖 npm install @@ -79,7 +79,7 @@ npm install npm run dev # 访问 http://localhost:3000 -``` +\`\`\` ## 注意事项 diff --git a/app/my/page.tsx b/app/my/page.tsx index e6bc295..1ade62e 100644 --- a/app/my/page.tsx +++ b/app/my/page.tsx @@ -2,149 +2,177 @@ import { useState, useEffect } from "react" import Link from "next/link" -import { User, ShoppingBag, Share2, LogOut, ChevronRight, BookOpen } from "lucide-react" +import { User, ShoppingBag, Share2, LogOut, ChevronRight, BookOpen, Copy, Check } from "lucide-react" import { useStore } from "@/lib/store" import { AuthModal } from "@/components/modules/auth/auth-modal" -import { getFullBookPrice } from "@/lib/book-data" +import { getFullBookPrice, getAllSections } from "@/lib/book-data" export default function MyPage() { const { user, isLoggedIn, logout } = useStore() const [showAuthModal, setShowAuthModal] = useState(false) const [mounted, setMounted] = useState(false) + const [copied, setCopied] = useState(false) useEffect(() => { setMounted(true) }, []) + const copyCode = () => { + if (user?.referralCode) { + navigator.clipboard.writeText(user.referralCode) + setCopied(true) + setTimeout(() => setCopied(false), 2000) + } + } + if (!mounted) { return ( -
-
+
+
) } if (!isLoggedIn) { return ( -
-
-
-
- -
-

登录后查看更多

-

查看购买记录、分销收益

- -
+
+
+
+

登录后查看更多

+

查看购买记录、分销收益

+ setShowAuthModal(false)} />
) } + const totalSections = getAllSections().length + const purchasedCount = user?.hasFullBook ? totalSections : user?.purchasedSections.length || 0 + const purchaseProgress = Math.round((purchasedCount / totalSections) * 100) const fullBookPrice = getFullBookPrice() return ( -
- {/* User Profile Header */} -
-
-
-
- -
-
-

{user?.nickname || "用户"}

-

{user?.phone}

-
+
+ {/* 用户信息头部 */} +
+
+
+
- - {/* Stats */} -
-
-

- {user?.hasFullBook ? "全部" : user?.purchasedSections.length || 0} -

-

已购章节

-
-
-

¥{(user?.earnings || 0).toFixed(1)}

-

累计收益

-
+
+

{user?.nickname || "用户"}

+

{user?.phone}

+ + {/* 数据统计卡片 */} +
+ {/* 购买进度 */} +
+
+ 购买进度 + {purchaseProgress}% +
+
+
+
+

+ {user?.hasFullBook ? "全书" : `${purchasedCount}/${totalSections}`} +

+

已购章节

+
+ + {/* 分销收益 */} +
+
+ 累计收益 + +
+

¥{(user?.earnings || 0).toFixed(2)}

+

推荐{user?.referralCount || 0}人

+
+
+ + {/* 购买整本书提示 */} + {!user?.hasFullBook && ( + +
+
+
+ +
+

购买整本书

+

解锁全部{totalSections}章内容

+
+
+ ¥{fullBookPrice} +
+
+ + )}
- {/* Menu Items */} -
-
- {/* Purchase prompt */} - {!user?.hasFullBook && ( - -
-
-
- - 购买整本书 -
- ¥{fullBookPrice} -
-
- - )} - - {/* Menu List - simplified, removed settings and docs */} -
- -
- - 我的购买 -
- - - - -
- - 分销收益 -
-
- ¥{(user?.earnings || 0).toFixed(1)} - -
- -
- - {/* Referral Code */} -
-
-
-

我的邀请码

- {user?.referralCode} -
- + {/* 菜单列表 */} +
+
+ +
+ + 我的购买
-
+
+ {purchasedCount}章 + +
+ - {/* Logout */} - + +
+ + 分销收益 +
+
+ ¥{(user?.earnings || 0).toFixed(1)} + +
+
+ + {/* 邀请码 */} +
+
+
+

我的邀请码

+ {user?.referralCode} +
+ +
+

分享给好友,好友购买你获得90%佣金

+
+ + {/* 退出登录 */} +
) diff --git a/app/page.tsx b/app/page.tsx index 1432dc3..028beb2 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,31 +1,133 @@ -import { BookCover } from "@/components/book-cover" -import { BookIntro } from "@/components/book-intro" -import { TableOfContents } from "@/components/table-of-contents" -import { PurchaseSection } from "@/components/purchase-section" -import { Footer } from "@/components/footer" -import { getBookStructure } from "@/lib/book-file-system" +"use client" -// 强制动态渲染,确保内容实时更新 -export const dynamic = 'force-dynamic'; +import { useState, useEffect } from "react" +import Link from "next/link" +import { ChevronRight, Sparkles, User } from "lucide-react" +import { bookData, getAllSections, getFullBookPrice } from "@/lib/book-data" +import { useStore } from "@/lib/store" +import { AuthModal } from "@/components/modules/auth/auth-modal" -export default async function HomePage() { - const parts = getBookStructure() +export default function HomePage() { + const [sectionsCount, setSectionsCount] = useState(64) + const [isAuthOpen, setIsAuthOpen] = useState(false) + const { isLoggedIn, user } = useStore() + + useEffect(() => { + const sections = getAllSections() + setSectionsCount(sections.length) + }, []) + + // 计算每篇的章节数 + const partsWithCount = bookData.map((part) => ({ + ...part, + chaptersCount: part.chapters.length, + sectionsCount: part.chapters.reduce((acc, c) => acc + c.sections.length, 0), + })) return ( -
- {/* 背景渐变效果 */} -
- - {/* 装饰性光晕 */} -
- - - - - - {/* 隐藏派对功能 */} - {/* */} -