healthapp
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

27 KiB

保健品商城 - 总体设计方案

关联项目:健康AI问询助手 开发顺序:在健康AI问询助手项目完成后开发


一、项目概述

1.1 项目背景

本项目是"健康AI问询助手"的关联项目,为用户提供保健品购买服务。通过AI问诊系统的体质分析和健康建议,智能推荐适合用户的保健品,实现"健康咨询 → 产品推荐 → 购买转化"的完整闭环。

1.2 核心价值

  • 精准推荐:基于用户体质和健康状况,提供个性化产品推荐
  • 信任背书:AI健康助手的专业分析增强用户购买信心
  • 便捷体验:从健康咨询到产品购买的无缝衔接
  • 用户粘性:健康管理与产品消费的双向绑定

1.3 目标用户

用户群体 特点 需求
中老年人 50-70岁,注重养生 心脑血管、骨关节、助眠、血糖调节
亚健康白领 25-45岁,工作压力大 补气、抗疲劳、护眼、免疫力
养生爱好者 各年龄段,关注中医体质 体质调养、食疗产品

二、技术架构

2.1 技术栈

层次 技术选型 说明
Web前端 Vue 3 + TypeScript + Vite 与健康AI项目保持一致
APP端 React Native + TypeScript 与健康AI项目保持一致
后端服务 Go + Gin + GORM 与健康AI项目保持一致
数据库 SQLite / PostgreSQL 支持切换,与健康AI共享用户表
支付对接 微信支付 / 支付宝 预留接口
对象存储 阿里云OSS / 本地存储 产品图片存储

2.2 系统架构图

┌─────────────────────────────────────────────────────────────────┐
│                         用户端                                   │
├─────────────────────┬───────────────────────────────────────────┤
│    健康AI Web/APP   │              商城 Web/APP                  │
│   (体质分析/AI问诊)  │    (产品浏览/购物车/订单/支付)              │
└─────────┬───────────┴────────────────┬──────────────────────────┘
          │                            │
          │         API Gateway        │
          │                            │
┌─────────▼────────────────────────────▼──────────────────────────┐
│                        后端服务层                                │
├─────────────────────┬───────────────────────────────────────────┤
│   健康AI服务         │              商城服务                      │
│  - 用户认证          │            - 产品管理                      │
│  - 体质辨识          │            - 购物车                        │
│  - AI对话           │            - 订单管理                       │
│  - 健康档案          │            - 支付对接                      │
│  - 产品推荐接口      │            - 物流查询                      │
└─────────┬───────────┴────────────────┬──────────────────────────┘
          │                            │
┌─────────▼────────────────────────────▼──────────────────────────┐
│                        数据层                                    │
├─────────────────────┬───────────────────────────────────────────┤
│   共享数据           │              商城独立数据                  │
│  - 用户表            │            - 产品详情表                    │
│  - 产品基础表        │            - SKU表                        │
│  - 体质-产品关联     │            - 购物车表                      │
│                     │            - 订单表                        │
│                     │            - 支付记录表                    │
└─────────────────────┴───────────────────────────────────────────┘

2.3 与健康AI项目的双向对接

对接方式 方向 说明
用户体系共享 双向 使用同一套用户认证(JWT Token互认)
产品数据同步 双向 健康AI存储基础产品信息,商城扩展详细信息
产品推荐跳转 健康AI → 商城 AI推荐的产品链接直接跳转到商城产品页
AI咨询跳转 商城 → 健康AI 商城产品页/首页提供AI咨询入口,跳转到健康AI
体质信息获取 商城 ← 健康AI 商城调用健康AI接口获取用户体质,优化推荐排序
购买记录同步 商城 → 健康AI 用户购买保健品后,同步到健康AI用于AI问诊参考

三、功能模块

3.1 功能架构

保健品商城
├── 首页模块
│   ├── Banner轮播
│   ├── AI健康咨询入口(悬浮按钮)
│   ├── 体质推荐卡片(对接健康AI)
│   ├── 分类导航
│   ├── 热销推荐
│   └── 新品上架
│
├── 产品模块
│   ├── 产品列表(分类筛选、排序)
│   ├── 产品详情
│   │   ├── 图文规格评价
│   │   ├── "咨询适合我吗"按钮 → 跳转AI问诊
│   │   └── 相关体质说明
│   ├── 产品搜索
│   └── 收藏功能
│
├── AI咨询模块(跳转健康AI)
│   ├── 智能健康咨询入口
│   ├── 体质测试入口
│   ├── 历史咨询记录
│   └── 携带产品信息跳转
│
├── 购物车模块
│   ├── 添加/删除商品
│   ├── 修改数量
│   ├── 选择结算
│   └── 失效商品处理
│
├── 订单模块
│   ├── 确认订单
│   ├── 地址管理
│   ├── 订单列表
│   ├── 订单详情
│   ├── 取消订单
│   └── 申请退款
│
├── 支付模块
│   ├── 微信支付
│   ├── 支付宝支付
│   └── 支付结果回调
│
├── 用户模块
│   ├── 登录/注册(共享健康AI)
│   ├── 我的体质报告(跳转健康AI)
│   ├── 收货地址管理
│   ├── 我的订单
│   ├── 我的收藏
│   └── 浏览历史
│
└── 其他模块
    ├── 物流查询
    └── 优惠券(扩展)

3.2 核心功能说明

3.2.1 体质推荐功能

从健康AI获取用户体质信息,在商城首页和产品列表页优先展示适合用户体质的产品。

用户打开商城
    │
    ▼
调用健康AI接口获取用户体质
    │
    ▼
根据体质查询关联产品
    │
    ▼
在"为您推荐"模块展示

3.2.2 智能搜索

支持按症状关键词搜索产品,如"失眠"、"关节痛"、"血压高"等。

3.2.3 AI健康咨询功能(核心)

商城内置多个AI咨询入口,用户点击后跳转到健康AI项目进行咨询。

入口位置:

位置 入口形式 跳转目标 携带参数
首页右下角 悬浮按钮"AI咨询" 健康AI对话页
首页体质卡片 "测测我的体质" 健康AI体质测试页
产品详情页 "这款适合我吗?" 健康AI对话页 产品ID、产品名称
我的页面 "查看体质报告" 健康AI体质结果页
购物车页面 "不知道选哪个?问问AI" 健康AI对话页 购物车产品列表

跳转流程:

商城产品详情页
    │
    │ 用户点击"这款适合我吗?"
    ▼
检查用户登录状态
    │
    ├─[未登录]─▶ 跳转登录页 → 登录后继续
    │
    └─[已登录]─▶ 构建跳转URL
                    │
                    ▼
            跳转健康AI对话页
            URL: health-ai://chat?product_id=123&product_name=xxx
                    │
                    ▼
            健康AI自动发起对话
            "我想咨询一下【产品名称】是否适合我"
                    │
                    ▼
            AI根据用户体质和产品信息回答
                    │
                    ▼
            用户可继续咨询或返回商城购买

跳转协议设计:

# Web端跳转(同域或配置跨域)
https://health-ai.example.com/chat?source=mall&product_id=123

# APP端跳转(Deep Link)
health-ai://chat?source=mall&product_id=123&product_name=xxx

# 小程序跳转(如扩展)
/pages/chat/index?source=mall&product_id=123

健康AI接收参数后处理:

  1. 识别来源为商城(source=mall)
  2. 根据product_id获取产品信息
  3. 自动生成用户问题:"我想了解【产品名称】是否适合我的体质"
  4. AI结合用户体质数据回答

3.2.4 购买记录同步

用户在商城购买保健品后,订单信息同步到健康AI,用于:

  • AI问诊时参考用户已购买的保健品
  • 避免重复推荐已购买产品
  • 分析用户保健品使用效果

四、数据模型设计

4.1 ER图

erDiagram
    User ||--o{ Order : places
    User ||--o{ CartItem : has
    User ||--o{ Address : has
    User ||--o{ Favorite : has
    Product ||--o{ ProductSku : has
    Product ||--o{ CartItem : in
    Product ||--o{ OrderItem : in
    Product ||--o{ Favorite : contains
    Order ||--|{ OrderItem : contains
    Order ||--o| Payment : has
    ProductSku ||--o{ CartItem : selected
    ProductSku ||--o{ OrderItem : ordered

    User {
        int id PK
        string phone
        string nickname
        string avatar
    }

    Product {
        int id PK
        string name
        string category
        string sub_category
        text description
        text detail_html
        string main_image
        json images
        decimal original_price
        decimal sale_price
        int sales_count
        int stock
        boolean is_on_sale
        int sort_order
    }

    ProductSku {
        int id PK
        int product_id FK
        string sku_name
        string sku_image
        decimal price
        int stock
        json attributes
    }

    CartItem {
        int id PK
        int user_id FK
        int product_id FK
        int sku_id FK
        int quantity
        boolean selected
    }

    Address {
        int id PK
        int user_id FK
        string receiver_name
        string phone
        string province
        string city
        string district
        string detail
        boolean is_default
    }

    Order {
        int id PK
        string order_no
        int user_id FK
        int address_id FK
        decimal total_amount
        decimal pay_amount
        decimal freight_amount
        string status
        string pay_type
        datetime pay_time
        string logistics_no
        text remark
        datetime created_at
    }

    OrderItem {
        int id PK
        int order_id FK
        int product_id FK
        int sku_id FK
        string product_name
        string sku_name
        string image
        decimal price
        int quantity
    }

    Payment {
        int id PK
        string payment_no
        int order_id FK
        string pay_type
        decimal amount
        string status
        string trade_no
        datetime paid_at
    }

    Favorite {
        int id PK
        int user_id FK
        int product_id FK
        datetime created_at
    }

4.2 核心表说明

产品表(Product)

字段 类型 说明
id int 产品ID(与健康AI同步)
name string 产品名称
category string 一级分类
sub_category string 二级分类
description text 简短描述
detail_html text 详情页富文本
main_image string 主图URL
images json 图片列表
original_price decimal 原价
sale_price decimal 售价
sales_count int 销量
stock int 库存
is_on_sale boolean 是否上架

订单表(Order)

字段 类型 说明
order_no string 订单编号(唯一)
status string 状态:pending/paid/shipped/completed/cancelled/refunding
pay_type string 支付方式:wechat/alipay
logistics_no string 物流单号

4.3 订单状态机

待支付(pending)
    │
    ├──[支付成功]──▶ 待发货(paid)
    │                  │
    │                  ├──[商家发货]──▶ 待收货(shipped)
    │                  │                  │
    │                  │                  └──[确认收货]──▶ 已完成(completed)
    │                  │
    │                  └──[申请退款]──▶ 退款中(refunding)
    │
    └──[取消/超时]──▶ 已取消(cancelled)

五、API 接口设计

5.1 产品接口

GET    /api/products                    # 产品列表(支持分类、排序、分页)
GET    /api/products/:id                # 产品详情
GET    /api/products/search?q=xxx       # 搜索产品
GET    /api/products/recommend          # 体质推荐(调用健康AI)
GET    /api/categories                  # 分类列表

5.2 购物车接口

GET    /api/cart                        # 获取购物车
POST   /api/cart                        # 添加到购物车
PUT    /api/cart/:id                    # 更新数量
DELETE /api/cart/:id                    # 删除商品
PUT    /api/cart/select-all             # 全选/取消全选

5.3 订单接口

POST   /api/orders                      # 创建订单
GET    /api/orders                      # 订单列表
GET    /api/orders/:id                  # 订单详情
PUT    /api/orders/:id/cancel           # 取消订单
PUT    /api/orders/:id/confirm          # 确认收货
POST   /api/orders/:id/refund           # 申请退款

5.4 支付接口

POST   /api/pay/wechat                  # 微信支付
POST   /api/pay/alipay                  # 支付宝支付
POST   /api/pay/callback/wechat         # 微信回调
POST   /api/pay/callback/alipay         # 支付宝回调
GET    /api/pay/status/:order_no        # 查询支付状态

5.5 地址接口

GET    /api/addresses                   # 地址列表
POST   /api/addresses                   # 添加地址
PUT    /api/addresses/:id               # 修改地址
DELETE /api/addresses/:id               # 删除地址
PUT    /api/addresses/:id/default       # 设为默认

5.6 收藏接口

GET    /api/favorites                   # 收藏列表
POST   /api/favorites                   # 添加收藏
DELETE /api/favorites/:product_id       # 取消收藏

六、项目目录结构

healthMall/
├── web/                              # Web前端
│   ├── src/
│   │   ├── api/                      # 接口定义
│   │   ├── assets/                   # 静态资源
│   │   ├── components/               # 公共组件
│   │   │   ├── ProductCard.vue       # 产品卡片
│   │   │   ├── CartItem.vue          # 购物车项
│   │   │   └── AddressCard.vue       # 地址卡片
│   │   ├── views/
│   │   │   ├── Home.vue              # 首页
│   │   │   ├── Category.vue          # 分类页
│   │   │   ├── ProductList.vue       # 产品列表
│   │   │   ├── ProductDetail.vue     # 产品详情
│   │   │   ├── Cart.vue              # 购物车
│   │   │   ├── Checkout.vue          # 结算页
│   │   │   ├── OrderList.vue         # 订单列表
│   │   │   ├── OrderDetail.vue       # 订单详情
│   │   │   └── Address.vue           # 地址管理
│   │   ├── store/                    # 状态管理
│   │   ├── router/                   # 路由配置
│   │   └── utils/                    # 工具函数
│   └── package.json
│
├── app/                              # React Native APP
│   ├── src/
│   │   ├── api/
│   │   ├── components/
│   │   ├── screens/
│   │   ├── navigation/
│   │   ├── store/
│   │   └── utils/
│   └── package.json
│
├── server/                           # 后端服务
│   ├── cmd/
│   │   └── main.go
│   ├── internal/
│   │   ├── api/
│   │   │   ├── handler/
│   │   │   │   ├── product.go
│   │   │   │   ├── cart.go
│   │   │   │   ├── order.go
│   │   │   │   ├── payment.go
│   │   │   │   └── address.go
│   │   │   ├── middleware/
│   │   │   └── router.go
│   │   ├── model/
│   │   │   ├── product.go
│   │   │   ├── cart.go
│   │   │   ├── order.go
│   │   │   ├── payment.go
│   │   │   └── address.go
│   │   ├── repository/
│   │   ├── service/
│   │   │   ├── product.go
│   │   │   ├── cart.go
│   │   │   ├── order.go
│   │   │   └── payment.go
│   │   ├── database/
│   │   └── config/
│   ├── pkg/
│   │   ├── payment/                  # 支付SDK封装
│   │   │   ├── wechat.go
│   │   │   └── alipay.go
│   │   └── logistics/                # 物流查询
│   └── go.mod
│
├── config.yaml                       # 配置文件
└── README.md

七、UI 设计规范

7.1 设计原则

  • 与健康AI项目保持视觉一致性
  • 面向中老年用户,字体和按钮适当放大
  • 购买流程清晰简洁,减少操作步骤

7.2 页面规划

页面 主要功能 AI咨询入口
首页 Banner、分类入口、体质推荐卡片、热销榜 右下角悬浮按钮、体质卡片"测测体质"
分类页 左侧分类菜单、右侧产品列表 顶部"不知道选什么?问AI"
产品详情 轮播图、价格、规格选择、加入购物车 "这款适合我吗?咨询AI"
购物车 商品列表、全选、价格汇总、去结算 "不确定?咨询AI帮你选"
结算页 收货地址、商品清单、支付方式、提交订单 -
订单列表 Tab分类(全部/待付款/待发货/待收货/已完成) -
订单详情 物流信息、订单状态、商品信息、操作按钮 "使用问题?咨询AI"
我的 体质报告入口、订单、收藏、地址 "查看我的体质报告"

7.3 配色方案

用途 颜色 说明
主色调 #52C41A 绿色,与健康主题一致
价格色 #FF4D4F 红色,突出价格
辅助色 #1890FF 蓝色,链接和按钮
背景色 #F5F5F5 浅灰,页面背景
文字色 #333333 深灰,主要文字

八、开发计划

8.1 阶段划分

阶段 内容 预计周期
第一阶段 产品展示、购物车 -
第二阶段 订单流程、地址管理 -
第三阶段 支付对接 -
第四阶段 APP开发 -
第五阶段 物流、优惠券等扩展 -

8.2 开发任务清单

后端开发:

  1. 项目初始化(共用健康AI的基础架构)
  2. 产品模块(详情、SKU、库存)
  3. 购物车模块
  4. 地址管理模块
  5. 订单模块(创建、状态流转)
  6. 支付模块(微信/支付宝)
  7. 健康AI对接(用户认证、体质推荐、订单同步)

Web前端开发:

  1. 项目初始化
  2. 首页(Banner、分类、推荐、AI咨询入口)
  3. 产品列表和详情页(含AI咨询入口)
  4. 购物车页面(含AI咨询入口)
  5. 结算和订单页面
  6. 地址管理页面
  7. 我的页面(体质报告入口)
  8. 健康AI跳转工具封装

APP开发:

  1. 项目初始化
  2. 导航和Tab配置
  3. 各功能页面
  4. Deep Link跳转健康AI配置

九、与健康AI的集成方案

9.1 用户认证集成

// 商城服务验证Token时,调用健康AI的JWT验证
func ValidateToken(token string) (*UserClaims, error) {
    // 使用相同的JWT密钥验证
    // 或调用健康AI的 /api/auth/validate 接口
}

9.2 体质推荐集成

// 商城首页获取用户体质推荐产品
func GetConstitutionRecommend(userID uint) ([]Product, error) {
    // 1. 调用健康AI接口获取用户体质
    // GET http://health-ai-server/api/constitution/result
    
    // 2. 根据体质查询推荐产品
    // SELECT * FROM products p 
    // JOIN constitution_products cp ON p.id = cp.product_id
    // WHERE cp.constitution_type = ?
}

9.3 AI咨询跳转集成(商城 → 健康AI)

Web端跳转工具:

// utils/healthAI.ts
const HEALTH_AI_BASE_URL = import.meta.env.VITE_HEALTH_AI_URL || 'http://localhost:5173'

interface JumpParams {
  page: 'chat' | 'constitution' | 'result'  // 对话页/体质测试/体质结果
  productId?: number
  productName?: string
  source?: string
}

// 跳转到健康AI
export function jumpToHealthAI(params: JumpParams) {
  const query = new URLSearchParams()
  query.set('source', 'mall')
  
  if (params.productId) {
    query.set('product_id', String(params.productId))
  }
  if (params.productName) {
    query.set('product_name', params.productName)
  }

  const url = `${HEALTH_AI_BASE_URL}/${params.page}?${query.toString()}`
  
  // 同域:直接跳转
  // 跨域:新窗口打开
  window.location.href = url
}

// 在产品详情页使用
// jumpToHealthAI({ page: 'chat', productId: 123, productName: '氨糖软骨素' })

APP端跳转(React Native):

// utils/healthAI.ts
import { Linking, Platform } from 'react-native'

const HEALTH_AI_SCHEME = 'healthai://'
const HEALTH_AI_WEB_URL = 'https://health-ai.example.com'

export async function jumpToHealthAI(params: {
  page: 'chat' | 'constitution' | 'result'
  productId?: number
  productName?: string
}) {
  const query = `source=mall&product_id=${params.productId || ''}&product_name=${encodeURIComponent(params.productName || '')}`
  
  // 尝试Deep Link
  const deepLink = `${HEALTH_AI_SCHEME}${params.page}?${query}`
  
  const canOpen = await Linking.canOpenURL(deepLink)
  
  if (canOpen) {
    // 健康AI APP已安装,使用Deep Link
    await Linking.openURL(deepLink)
  } else {
    // 健康AI APP未安装,跳转Web版
    await Linking.openURL(`${HEALTH_AI_WEB_URL}/${params.page}?${query}`)
  }
}

健康AI接收跳转参数处理:

// 健康AI项目 - chat页面
// views/Chat.vue 或 screens/Chat.tsx

import { useRoute } from 'vue-router'  // Vue
// import { useRoute } from '@react-navigation/native'  // RN

const route = useRoute()

onMounted(() => {
  const { source, product_id, product_name } = route.query
  
  if (source === 'mall' && product_id) {
    // 从商城跳转而来,自动发起产品咨询
    const autoMessage = `我想了解【${product_name}】这款产品是否适合我的体质?`
    sendMessage(autoMessage)
  }
})

9.4 双向跳转入口汇总

方向 场景 入口 跳转目标
商城→健康AI 首页悬浮按钮 "AI咨询" 健康AI对话页
商城→健康AI 首页体质卡片 "测测我的体质" 健康AI体质测试页
商城→健康AI 产品详情页 "这款适合我吗?" 健康AI对话页(带产品参数)
商城→健康AI 购物车页 "不确定选哪个?" 健康AI对话页
商城→健康AI 我的页面 "查看体质报告" 健康AI体质结果页
健康AI→商城 AI回答推荐 产品链接 商城产品详情页
健康AI→商城 体质结果页 "选购调养产品" 商城体质推荐列表

9.5 订单数据同步

用户在商城购买后,同步订单到健康AI用于AI问诊参考:

// 商城后端 - 订单完成后同步
func SyncOrderToHealthAI(order *Order) error {
    payload := map[string]interface{}{
        "user_id":    order.UserID,
        "order_no":   order.OrderNo,
        "products":   extractProductInfo(order.Items),
        "created_at": order.CreatedAt,
    }
    
    // 调用健康AI接口同步
    _, err := http.Post(
        config.HealthAI.BaseURL + "/api/sync/purchase",
        "application/json",
        bytes.NewBuffer(jsonEncode(payload)),
    )
    return err
}
// 健康AI后端 - 接收购买记录
// POST /api/sync/purchase
func HandlePurchaseSync(c *gin.Context) {
    var req struct {
        UserID    uint   `json:"user_id"`
        OrderNo   string `json:"order_no"`
        Products  []struct {
            ID   uint   `json:"id"`
            Name string `json:"name"`
        } `json:"products"`
    }
    c.BindJSON(&req)
    
    // 存储到用户健康档案,AI问诊时可参考
    // "用户最近购买了:氨糖软骨素、深海鱼油..."
}

十、安全与合规

10.1 支付安全

  • 支付回调验签
  • 订单金额校验
  • 防止重复支付

10.2 数据安全

  • 用户隐私数据加密存储
  • HTTPS传输
  • SQL注入防护

10.3 合规要求

  • 保健品销售资质展示
  • 产品不得宣传治疗功效
  • 退换货政策明示

附录:配置文件示例

# config.yaml
server:
  port: 8081
  mode: debug

database:
  driver: sqlite
  dsn: "./data/mall.db"

# 健康AI服务配置
health_ai:
  # 后端API地址(用于数据同步)
  api_url: "http://localhost:8080"
  # Web前端地址(用于页面跳转)
  web_url: "http://localhost:5173"
  # APP Deep Link Scheme
  app_scheme: "healthai://"
  # 同步API密钥
  sync_api_key: "your-sync-key"
  
# 支付配置(正式环境从环境变量读取)
payment:
  wechat:
    app_id: ""
    mch_id: ""
    api_key: ""
    notify_url: "https://yourdomain.com/api/pay/callback/wechat"
  alipay:
    app_id: ""
    private_key: ""
    public_key: ""
    notify_url: "https://yourdomain.com/api/pay/callback/alipay"

# 文件存储
storage:
  type: local  # local / oss
  local:
    path: "./uploads"
  oss:
    endpoint: ""
    access_key: ""
    secret_key: ""
    bucket: ""

文档版本: v1.0 创建日期: 2026-02-01 关联项目: 健康AI问询助手