商品售卖网站技术文档
1. 项目概述
本项目是一个多功能商品售卖平台,支持管理员后台、供货商后台和用户前端,具备完整的商品管理、订单处理、库存管理、多语言支持等功能。
2. 技术栈选择
2.1 前端技术
- 框架:Vue 3 + Vite
- 状态管理:Pinia
- 路由:Vue Router
- UI 库:Element Plus
- 样式:SCSS
- 国际化:i18n
- HTTP 客户端:Axios
2.2 后端技术
- 语言:Go 1.20+
- Web 框架:Gin
- 数据库:SQLite(默认)/ MySQL / PostgreSQL
- 缓存:Redis
- 认证:JWT
- ORM:GORM
- 邮件服务:SMTP
3. 系统架构
3.1 架构图
4. 功能模块设计
4.1 核心模块
4.1.1 用户管理
- 用户注册:支持邮箱注册,需验证邮箱,可通过邀请码注册获得额外购买资格
- 用户登录:支持邮箱密码登录,可记住密码,登录失败次数限制
- 忘记密码:通过邮箱验证码重置密码
- 邮箱验证:注册和修改邮箱时需验证,确保邮箱有效性
- 个人中心:展示用户基本信息、购买资格、订单历史、收藏夹等
- 收货地址管理:支持添加、编辑、删除收货地址,设置默认地址
- 密码修改:定期提醒用户修改密码,支持密码强度检测
- 邀请系统:生成个人邀请码,邀请新用户注册可获得购买资格奖励
4.1.2 商品管理
- 商品分类管理:支持多级分类,可设置分类图标、排序,支持分类购买限制
- 品牌管理:支持品牌创建、编辑、删除,可设置品牌Logo、描述、排序
- 商品信息管理:支持商品名称、描述、价格、库存、图片等基本信息管理
- 自定义字段:支持为商品添加自定义字段,如颜色、尺寸、材质等属性
- 商品价格设置:支持设置基础价格、促销价格、会员价格等
- 购买资格设置:设置商品是否需要购买资格才能购买
- 购买限制设置:
- 商品级限制:最低/最高购买数量、重量、金额
- 分类级限制:最低/最高购买数量、重量、金额
- 商品多分类归属:支持一个商品属于多个分类
- 商品品牌关联:支持为商品关联品牌
- 库存管理:实时库存监控,库存预警,支持供货商独立管理库存
4.1.3 订单管理
- 购物车功能:支持添加/删除商品,调整数量,查看总价,保存购物车状态
- 订单创建与支付:支持多种支付方式,订单创建后自动扣除购买资格
- 订单状态跟踪:订单状态实时更新,包括待支付、待确认、待发货、已发货、已完成、已退款等
- 订单导出:支持导出订单为Excel、CSV等格式
- 订单确认与发货:供货商可确认订单,上传发货照片、快递单照片和报关清单
- 物流信息管理:支持添加快递单号,实时跟踪物流状态
- 订单退款:
- 未发货订单可申请退款
- 已发货订单不允许退款
- 退款时扣除管理员设置的通道费率
- 退款状态跟踪与管理
4.1.4 供货商管理
- 供货商注册与授权:管理员添加和授权供货商,设置供货商权限
- 商品授权管理:管理员授权特定分类或商品给供货商管理
- 库存管理:供货商可独立管理授权商品的库存数量,实时更新
- 订单处理:供货商可查看分配给自己的订单,确认订单状态
- 发货管理:供货商可上传发货照片、快递单照片和报关清单,添加快递单号
- 销售统计:供货商可查看自己的销售数据和库存状态
4.1.5 管理员功能
- 仪表盘统计:显示用户数、商品数、订单数、营收等统计数据
- 系统设置:
- SMTP 配置:配置邮件发送服务器,用于验证码、订单通知等
- 支付通道配置:配置多种支付方式,如支付宝、微信支付等
- 运费设置:设置首重、续重费用,支持不同地区运费设置
- 服务费设置:设置服务费费率,支持按订单金额比例计算
- 邀请奖励设置:设置邀请X人赠送X个购买资格
- 抽奖系统:创建和管理抽奖活动,设置奖品和规则
- 工单管理:查看、分配、处理用户提交的工单
4.1.6 资讯模块
- 资讯发布:管理员可创建、编辑、删除资讯文章
- 资讯置顶:支持设置资讯为置顶状态,置顶资讯优先显示
- 资讯排序:支持自定义排序,置顶资讯按排序字段显示
- 资讯封面:支持设置资讯封面图片
- 资讯摘要:支持设置资讯摘要信息
- 发布控制:支持设置资讯为草稿或已发布状态
- 用户端浏览:用户可浏览已发布的资讯列表和详情
4.1.7 多语言支持
- 语言切换:支持中文、日语、英语三种语言切换
- 语言配置:管理员可配置各语言的翻译内容
- 语言偏好:保存用户语言偏好,下次访问自动使用
4.2 特色功能
4.2.1 购买资格系统
- 商品购买资格设置:设置商品是否需要购买资格,需要多少资格
- 邀请赠送资格:邀请新用户注册可获得购买资格奖励
- 抽奖获得资格:通过参与抽奖活动获得购买资格
- 资格管理:用户可查看自己的购买资格数量和使用记录
4.2.2 抽奖系统
- 自定义抽奖物品:支持设置实物奖品、虚拟奖品和购买资格
- 购买权重抽奖:根据用户购买金额计算权重,权重越高中奖概率越大
- 随机抽奖:完全随机抽取中奖用户
- 周期抽奖:支持设置每日、每周、每月等周期抽奖
- 报名有效期设置:设置用户报名一次,可参与多期抽奖的有效期
- 抽奖结果公示:自动公示抽奖结果,保证公平透明
4.2.3 工单系统
- 用户提交工单:用户可提交问题、建议、投诉等工单
- 工单分类:支持多种工单类型,如订单问题、账户问题、商品问题等
- 管理员处理工单:管理员可分配、处理、回复工单
- 工单状态跟踪:实时更新工单状态,如待处理、处理中、已解决、已关闭等
- 工单历史:用户可查看自己的工单历史和处理记录
5. 数据库设计
5.0 数据库配置
系统支持三种数据库,通过环境变量 DB_DRIVER 配置:
| DB_DRIVER 值 |
数据库 |
说明 |
sqlite |
SQLite |
默认,无需额外安装,文件存储在 DB_FILEPATH 指定路径 |
mysql |
MySQL |
需配置 DB_HOST、DB_PORT、DB_USER、DB_PASSWORD、DB_NAME |
postgres |
PostgreSQL |
需配置 DB_HOST、DB_PORT、DB_USER、DB_PASSWORD、DB_NAME、DB_SSLMODE |
环境变量配置示例:
5.1 用户表 (users)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
用户ID |
username |
VARCHAR(50) |
UNIQUE NOT NULL |
用户名 |
email |
VARCHAR(100) |
UNIQUE NOT NULL |
邮箱 |
password_hash |
VARCHAR(255) |
NOT NULL |
密码哈希 |
role |
VARCHAR(20) |
NOT NULL |
角色(user/supplier/admin) |
purchase_credits |
INTEGER |
DEFAULT 0 |
购买资格数量 |
invite_code |
VARCHAR(20) |
UNIQUE |
邀请码 |
referred_by |
INTEGER |
REFERENCES users(id) |
推荐人ID |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.2 商品分类表 (categories)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
分类ID |
name |
VARCHAR(100) |
NOT NULL |
分类名称 |
description |
TEXT |
|
分类描述 |
parent_id |
INTEGER |
REFERENCES categories(id) |
父分类ID |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.3 品牌表 (brands)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
品牌ID |
name |
VARCHAR(255) |
UNIQUE NOT NULL |
品牌名称 |
description |
TEXT |
|
品牌描述 |
logo |
VARCHAR(500) |
|
品牌Logo URL |
sort_order |
INTEGER |
DEFAULT 0 |
排序 |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.4 商品表 (products)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
商品ID |
name |
VARCHAR(255) |
NOT NULL |
商品名称 |
description |
TEXT |
|
商品描述 |
price |
DECIMAL(10,2) |
NOT NULL |
商品价格 |
min_purchase |
INTEGER |
DEFAULT 1 |
最低购买数量 |
max_purchase |
INTEGER |
|
最大购买数量 |
min_weight |
DECIMAL(10,2) |
|
最低购买重量 |
max_weight |
DECIMAL(10,2) |
|
最大购买重量 |
require_credit |
BOOLEAN |
DEFAULT FALSE |
是否需要购买资格 |
credit_cost |
INTEGER |
DEFAULT 0 |
购买所需资格数量 |
credit_reward |
INTEGER |
DEFAULT 0 |
购买后赠送的资格数量 |
images |
TEXT |
|
商品图片(JSON数组) |
is_active |
BOOLEAN |
DEFAULT TRUE |
是否上架 |
brand_id |
INTEGER |
REFERENCES brands(id) |
品牌ID |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.5 商品自定义字段表 (product_custom_fields)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
字段ID |
product_id |
INTEGER |
REFERENCES products(id) |
商品ID |
field_name |
VARCHAR(100) |
NOT NULL |
字段名称 |
field_value |
TEXT |
|
字段值 |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
5.6 库存表 (inventory)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
库存ID |
product_id |
INTEGER |
REFERENCES products(id) |
商品ID |
supplier_id |
INTEGER |
REFERENCES users(id) |
供货商ID |
quantity |
INTEGER |
DEFAULT 0 |
库存数量 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.7 购物车表 (carts)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
购物车ID |
user_id |
INTEGER |
REFERENCES users(id) |
用户ID |
product_id |
INTEGER |
REFERENCES products(id) |
商品ID |
quantity |
INTEGER |
NOT NULL |
数量 |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.8 订单表 (orders)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
订单ID |
user_id |
INTEGER |
REFERENCES users(id) |
用户ID |
supplier_id |
INTEGER |
REFERENCES users(id) |
供货商ID |
subtotal |
DECIMAL(10,2) |
NOT NULL |
商品小计 |
shipping_fee |
DECIMAL(10,2) |
DEFAULT 0 |
运费 |
service_fee |
DECIMAL(10,2) |
DEFAULT 0 |
服务费 |
tax |
DECIMAL(10,2) |
DEFAULT 0 |
税费 |
total_amount |
DECIMAL(10,2) |
NOT NULL |
订单总金额 |
refund_amount |
DECIMAL(10,2) |
|
退款金额 |
refund_status |
VARCHAR(20) |
|
退款状态 |
refund_reason |
TEXT |
|
退款原因 |
status |
VARCHAR(20) |
NOT NULL |
订单状态 |
shipping_address_id |
INTEGER |
REFERENCES addresses(id) |
收货地址ID |
tracking_number |
VARCHAR(100) |
|
快递单号 |
shipping_photo |
TEXT |
|
发货照片 |
express_photo |
TEXT |
|
快递单照片 |
customs_photo |
TEXT |
|
报关清单照片 |
payment_method |
VARCHAR(50) |
|
支付方式 |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.9 订单商品表 (order_items)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
订单项ID |
order_id |
INTEGER |
REFERENCES orders(id) |
订单ID |
product_id |
INTEGER |
REFERENCES products(id) |
商品ID |
quantity |
INTEGER |
NOT NULL |
数量 |
price |
DECIMAL(10,2) |
NOT NULL |
单价 |
5.10 收货地址表 (addresses)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
地址ID |
user_id |
INTEGER |
REFERENCES users(id) |
用户ID |
name |
VARCHAR(50) |
NOT NULL |
收件人姓名 |
phone |
VARCHAR(20) |
NOT NULL |
联系电话 |
address |
TEXT |
NOT NULL |
详细地址 |
is_default |
BOOLEAN |
DEFAULT FALSE |
是否默认地址 |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.11 抽奖表 (lotteries)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
抽奖ID |
name |
VARCHAR(100) |
NOT NULL |
抽奖名称 |
description |
TEXT |
|
抽奖描述 |
start_time |
TIMESTAMP |
NOT NULL |
开始时间 |
end_time |
TIMESTAMP |
NOT NULL |
结束时间 |
cycle |
VARCHAR(20) |
|
周期类型 |
daily_quota |
INTEGER |
|
每日限额 |
total_quota |
INTEGER |
|
总限额 |
registration_validity |
INTEGER |
|
报名有效期(天) |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.12 抽奖奖品表 (lottery_prizes)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
奖品ID |
lottery_id |
INTEGER |
REFERENCES lotteries(id) |
抽奖ID |
name |
VARCHAR(100) |
NOT NULL |
奖品名称 |
type |
VARCHAR(20) |
NOT NULL |
奖品类型 |
quantity |
INTEGER |
NOT NULL |
奖品数量 |
weight |
INTEGER |
DEFAULT 1 |
权重 |
credit_reward |
INTEGER |
|
赠送资格数量 |
5.13 抽奖参与表 (lottery_participants)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
参与ID |
lottery_id |
INTEGER |
REFERENCES lotteries(id) |
抽奖ID |
user_id |
INTEGER |
REFERENCES users(id) |
用户ID |
purchase_weight |
INTEGER |
DEFAULT 0 |
购买权重 |
registered_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
报名时间 |
5.14 工单表 (tickets)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
工单ID |
user_id |
INTEGER |
REFERENCES users(id) |
用户ID |
title |
VARCHAR(200) |
NOT NULL |
工单标题 |
content |
TEXT |
NOT NULL |
工单内容 |
status |
VARCHAR(20) |
NOT NULL |
工单状态 |
assigned_to |
INTEGER |
REFERENCES users(id) |
处理人ID |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.15 系统设置表 (system_settings)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
设置ID |
key |
VARCHAR(100) |
UNIQUE NOT NULL |
设置键 |
value |
TEXT |
|
设置值 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
5.16 供应商授权表 (supplier_authorizations)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
授权ID |
supplier_id |
INTEGER |
NOT NULL |
供货商ID |
type |
VARCHAR(20) |
NOT NULL |
授权类型(category/product) |
ref_id |
INTEGER |
NOT NULL |
关联ID |
5.17 资讯表 (articles)
| 字段名 |
数据类型 |
约束 |
描述 |
id |
SERIAL |
PRIMARY KEY |
资讯ID |
title |
VARCHAR(255) |
NOT NULL |
标题 |
content |
TEXT |
NOT NULL |
内容 |
summary |
VARCHAR(500) |
|
摘要 |
cover_image |
VARCHAR(500) |
|
封面图URL |
is_pinned |
BOOLEAN |
DEFAULT FALSE |
是否置顶 |
is_published |
BOOLEAN |
DEFAULT TRUE |
是否发布 |
sort_order |
INTEGER |
DEFAULT 0 |
排序 |
author_id |
INTEGER |
REFERENCES users(id) |
作者ID |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
更新时间 |
6. API 接口设计
6.1 用户相关接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/auth/register |
POST |
认证 |
用户注册 |
/api/auth/login |
POST |
认证 |
用户登录 |
/api/auth/forgot-password |
POST |
认证 |
忘记密码 |
/api/auth/reset-password |
POST |
认证 |
重置密码 |
/api/auth/verify-email |
GET |
认证 |
邮箱验证 |
/api/users/profile |
GET |
用户 |
获取个人资料 |
/api/users/profile |
PUT |
用户 |
更新个人资料 |
/api/users/password |
PUT |
用户 |
修改密码 |
/api/users/addresses |
GET |
用户 |
获取收货地址列表 |
/api/users/addresses |
POST |
用户 |
添加收货地址 |
/api/users/addresses/:id |
PUT |
用户 |
更新收货地址 |
/api/users/addresses/:id |
DELETE |
用户 |
删除收货地址 |
/api/users/addresses/:id/default |
PUT |
用户 |
设置默认地址 |
6.2 商品相关接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/products |
GET |
商品 |
获取商品列表 |
/api/products/:id |
GET |
商品 |
获取商品详情 |
/api/admin/products |
GET |
商品 |
获取商品列表(管理员) |
/api/admin/products |
POST |
商品 |
创建商品 |
/api/admin/products/:id |
PUT |
商品 |
更新商品 |
/api/admin/products/:id |
DELETE |
商品 |
删除商品 |
/api/admin/products/:id/custom-fields |
POST |
商品 |
添加自定义字段 |
/api/categories |
GET |
分类 |
获取分类列表 |
/api/admin/categories |
POST |
分类 |
创建分类 |
/api/admin/categories/:id |
PUT |
分类 |
更新分类 |
/api/admin/categories/:id |
DELETE |
分类 |
删除分类 |
/api/brands |
GET |
品牌 |
获取品牌列表 |
/api/admin/brands |
GET |
品牌 |
获取品牌列表(管理员) |
/api/admin/brands |
POST |
品牌 |
创建品牌 |
/api/admin/brands/:id |
PUT |
品牌 |
更新品牌 |
/api/admin/brands/:id |
DELETE |
品牌 |
删除品牌 |
6.3 购物车与订单接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/cart |
GET |
购物车 |
获取购物车内容 |
/api/cart |
POST |
购物车 |
添加商品到购物车 |
/api/cart/:id |
PUT |
购物车 |
更新购物车商品数量 |
/api/cart/:id |
DELETE |
购物车 |
删除购物车商品 |
/api/orders |
GET |
订单 |
获取用户订单列表 |
/api/orders/:id |
GET |
订单 |
获取订单详情 |
/api/orders |
POST |
订单 |
创建订单 |
/api/supplier/orders |
GET |
订单 |
获取供货商订单列表 |
/api/supplier/orders/:id/confirm |
PUT |
订单 |
确认订单 |
/api/supplier/orders/:id/ship |
PUT |
订单 |
确认发货 |
/api/admin/orders |
GET |
订单 |
获取所有订单 |
/api/admin/orders/export |
GET |
订单 |
导出订单表格 |
6.4 库存管理接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/supplier/inventory |
GET |
库存 |
获取供货商库存列表 |
/api/supplier/inventory/:id |
PUT |
库存 |
更新库存数量 |
/api/admin/inventory |
GET |
库存 |
获取所有库存 |
6.5 供货商管理接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/admin/suppliers |
GET |
供货商 |
获取供货商列表 |
/api/admin/suppliers |
POST |
供货商 |
添加供货商 |
/api/admin/suppliers/:id |
PUT |
供货商 |
更新供货商信息 |
/api/admin/suppliers/:id |
DELETE |
供货商 |
删除供货商 |
/api/admin/suppliers/:id/authorize |
POST |
供货商 |
授权商品/分类 |
6.6 抽奖系统接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/lotteries |
GET |
抽奖 |
获取抽奖列表 |
/api/lotteries/:id |
GET |
抽奖 |
获取抽奖详情 |
/api/lotteries/:id/register |
POST |
抽奖 |
报名抽奖 |
/api/admin/lotteries |
POST |
抽奖 |
创建抽奖 |
/api/admin/lotteries/:id |
PUT |
抽奖 |
更新抽奖 |
/api/admin/lotteries/:id |
DELETE |
抽奖 |
删除抽奖 |
/api/admin/lotteries/:id/prizes |
POST |
抽奖 |
添加奖品 |
/api/admin/lotteries/:id/draw |
POST |
抽奖 |
执行抽奖 |
6.7 工单系统接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/tickets |
GET |
工单 |
获取用户工单列表 |
/api/tickets |
POST |
工单 |
提交工单 |
/api/tickets/:id |
GET |
工单 |
获取工单详情 |
/api/admin/tickets |
GET |
工单 |
获取所有工单 |
/api/admin/tickets/:id |
PUT |
工单 |
更新工单状态 |
/api/admin/tickets/:id/assign |
PUT |
工单 |
分配工单 |
6.8 系统设置接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/settings/public |
GET |
设置 |
获取公共设置(费用费率等) |
/api/admin/stats |
GET |
统计 |
获取仪表盘统计数据 |
/api/admin/settings |
GET |
设置 |
获取系统设置 |
/api/admin/settings |
PUT |
设置 |
更新系统设置 |
/api/admin/settings/smtp |
PUT |
设置 |
更新SMTP设置 |
/api/admin/settings/payment |
PUT |
设置 |
更新支付通道设置 |
6.9 资讯模块接口
| API 路径 |
方法 |
模块 |
功能描述 |
/api/articles |
GET |
资讯 |
获取已发布资讯列表 |
/api/articles/:id |
GET |
资讯 |
获取资讯详情 |
/api/admin/articles |
GET |
资讯 |
获取所有资讯(含草稿) |
/api/admin/articles |
POST |
资讯 |
创建资讯 |
/api/admin/articles/:id |
PUT |
资讯 |
更新资讯 |
/api/admin/articles/:id |
DELETE |
资讯 |
删除资讯 |
/api/admin/articles/:id/pin |
PUT |
资讯 |
切换置顶状态 |
7. 前端设计
7.1 设计风格
方案一:现代化科技感(推荐)
- 风格特点:采用简洁、现代的设计风格,类似于科技企业网站
- 配色方案:以蓝色为主色调,搭配白色和浅灰色,营造专业、科技的氛围
- 字体:使用无衬线字体,如 Roboto、Inter 等
- 布局:响应式设计,适配不同设备屏幕
- 动画效果:适度的过渡动画,提升用户体验
- 特色:简洁明了的界面,突出商品信息,操作流程顺畅
方案二:简约商务风
- 风格特点:简约、专业的商务风格,注重信息的清晰展示
- 配色方案:以灰色为主色调,搭配深蓝和白色,营造稳重、专业的氛围
- 字体:使用无衬线字体,如 Helvetica、Arial 等
- 布局:网格布局,信息层次分明
- 动画效果:轻微的过渡效果,保持界面稳定感
- 特色:信息密度高,适合商务用户,操作流程清晰
方案三:时尚活力风
- 风格特点:时尚、活力的设计风格,吸引年轻用户群体
- 配色方案:以橙色和白色为主色调,搭配浅蓝和浅灰,营造活力、时尚的氛围
- 字体:使用现代无衬线字体,如 Poppins、Montserrat 等
- 布局:卡片式布局,视觉层次丰富
- 动画效果:活泼的微动画,增强用户互动
- 特色:视觉冲击力强,适合时尚商品,用户体验愉悦
方案四:豆包飞书风(暗色毛玻璃)
- 风格特点:暗色主题、毛玻璃效果、大字排版,类似豆包/飞书演示风格
- 配色方案:以深蓝紫渐变为主色调(#1a1a2e → #16213e → #0f3460),搭配半透明白色毛玻璃卡片,强调色为亮紫/亮蓝
- 字体:使用现代无衬线字体,如 Inter、SF Pro Display 等,标题大号加粗
- 布局:全屏渐变背景 + 毛玻璃卡片悬浮布局,Hero区域大字标题居中
- 动画效果:渐变背景微动、卡片悬浮阴影变化、淡入淡出过渡
- 特色:
- 深色渐变背景营造沉浸感
- 毛玻璃(backdrop-filter: blur)卡片效果
- 大字标题 + 简洁描述的Hero布局
- 圆角卡片 + 微光边框
- 适合高端产品展示,科技感与品质感并存
7.2 页面结构
7.2.1 用户前端
- 首页:商品展示、分类导航、抽奖活动
- 商品列表页:筛选、排序、分页
- 商品详情页:商品信息、自定义字段、购买选项
- 购物车页:商品列表、数量调整、结算
- 订单确认页:收货地址选择、支付方式选择
- 个人中心:订单管理、收货地址、账户设置、购买资格
- 抽奖页面:抽奖活动列表、报名入口
- 工单页面:工单提交、工单列表
- 资讯页面:资讯列表、资讯详情
7.2.2 管理员后台
- 仪表盘:系统概览、统计数据(用户数、商品数、订单数、营收)
- 用户管理:用户列表、权限管理
- 商品管理:商品列表、分类管理、品牌管理、库存管理
- 订单管理:订单列表、订单详情、导出功能、退款管理
- 供货商管理:供货商列表、授权管理
- 抽奖管理:抽奖活动创建、奖品管理、抽奖执行
- 工单管理:工单列表、工单处理
- 系统设置:SMTP设置、支付通道设置、运费设置、服务费设置、税费设置、通道费率设置
- 资讯管理:资讯发布、编辑、删除、置顶
7.2.3 供货商后台
- 仪表盘:订单统计、库存概览
- 订单管理:订单列表、订单确认、发货管理
- 库存管理:库存列表、库存更新
- 商品管理:授权商品列表
7.3 多语言支持
- 使用 Vue i18n 实现多语言切换
- 支持中文、日语、英语三种语言
- 语言文件采用 JSON 格式存储
- 实现语言切换功能,保存用户语言偏好
8. 安全考虑
8.1 前端安全
- 使用 HTTPS 协议
- 实现 CSRF 保护
- 输入验证和 sanitization
- 密码强度检查
- 防止 XSS 攻击
8.2 后端安全
- 密码哈希存储
- JWT 认证机制
- 权限控制
- 防止 SQL 注入
- 速率限制
- 日志记录
8.3 数据安全
9. 部署方案
9.1 开发环境
- 前端:Vite 开发服务器
- 后端:Go 本地开发服务器
- 数据库:PostgreSQL 本地实例
- 缓存:Redis 本地实例
9.2 生产环境
- 前端:Nginx 静态文件服务
- 后端:Go 应用服务器
- 数据库:PostgreSQL 数据库集群
- 缓存:Redis 集群
- 负载均衡:Nginx 或云服务负载均衡
- 容器化:Docker + Kubernetes
10. 项目结构
10.1 前端项目结构
10.2 后端项目结构
11. 开发计划
11.1 阶段一:基础架构搭建
- 前端项目初始化
- 后端项目初始化
- 数据库设计与迁移
- 基础 API 实现
11.2 阶段二:核心功能实现
- 用户认证系统
- 商品管理系统
- 购物车与订单系统
- 库存管理系统
11.3 阶段三:特色功能实现
11.4 阶段四:后台管理
11.5 阶段五:测试与部署
12. 技术挑战与解决方案
12.1 多语言支持
- 挑战:确保所有界面元素和数据都能正确翻译
- 解决方案:使用 Vue i18n 管理翻译文件,实现语言切换功能
12.2 购买资格系统
- 挑战:实现复杂的购买资格逻辑
- 解决方案:设计专门的资格管理模块,记录和验证用户购买资格
12.3 抽奖系统
- 挑战:实现公平、透明的抽奖机制
- 解决方案:使用随机数生成器,结合购买权重计算中奖概率
12.4 订单处理流程
- 挑战:协调用户、供货商和管理员的订单处理流程
- 解决方案:设计清晰的订单状态流转,实现自动化通知
12.5 性能优化
- 挑战:确保系统在高并发情况下的性能
- 解决方案:使用 Redis 缓存热点数据,优化数据库查询
13. 总结
本技术文档详细描述了商品售卖网站的设计与实现方案,包括系统架构、功能模块、数据库设计、API 接口、前端设计等方面。通过采用现代化的技术栈和合理的架构设计,系统能够满足用户的各种需求,提供良好的用户体验。
项目将按照开发计划分阶段实施,确保系统的质量和稳定性。同时,系统设计考虑了未来的扩展性,为后续功能的添加和优化预留了空间。