一、项目概述
本项目基于Uniapp+FastAdmin+ThinkPHP技术栈,开发了一套功能完善的二手交易系统。系统采用前后端分离架构,支持H5、小程序、APP等多端适配,涵盖商品发布、在线询价、实时聊天、支付交易、社交互动等核心功能,为二手交易市场提供一站式解决方案。
二、技术架构设计
2.1 后端技术栈
FastAdmin框架
FastAdmin是一款基于ThinkPHP和Bootstrap的极速后台开发框架,具备以下核心特性:
- 完善的权限管理系统,支持无限级父子级权限继承
- 一键生成CRUD功能,自动生成控制器、模型、视图、JS、语言包等
- 丰富的插件扩展功能,支持在线安装、卸载、升级插件
- 基于AdminLTE和Bootstrap二次开发,具有自适应手机、平板、PC的特性
- 支持多种第三方应用模块整合,如CMS、博客、知识付费问答等
ThinkPHP 6.x框架
- 采用PHP7强类型(严格模式),支持更多PSR规范
- 原生多应用支持,支持独立入口访问和域名绑定
- ORM组件独立,提供完善的数据库操作功能
- 改进的中间件机制,支持事件驱动编程
- 容器功能增强,支持依赖注入和服务管理
2.2 前端技术栈
UniApp跨端框架
- 基于Vue.js开发,一套代码多端编译运行
- 支持编译为微信小程序、支付宝小程序、H5、Android/iOS APP
- 集成uView、Vant Weapp等UI组件库,加速页面开发
- 支持自定义组件和原生插件扩展
2.3 系统架构图
┌─────────────────┐ ┌─────────────────┐
│ 前端应用层 │ │ 后端服务层 │
├─────────────────┤ ├─────────────────┤
│ H5端 │ │ API接口层 │
│ 小程序端 │ │ (FastAdmin) │
│ APP端 │ ├─────────────────┤
└─────────────────┘ │ 业务逻辑层 │
│ │ 数据模型层 │
└─────────────┤ 缓存层(Redis) │
└─────────────────┘
│
┌─────────────────┐
│ 数据存储层 │
│ MySQL 8.0 │
└─────────────────┘
三、核心功能模块
3.1 用户系统模块
用户注册与登录
- 支持手机号、微信、支付宝一键登录
- 实名认证功能,增强交易信任度
- 个人资料管理,包括头像、昵称、简介等
- 收货地址管理,支持多地址设置
会员体系
- 多级会员等级体系,根据消费金额或积分自动升级
- 不同等级享受不同折扣和特权
- 积分系统,购物返积分,积分可兑换商品或优惠券
- 信用评分体系,基于交易行为和评价积累信用分
3.2 商品管理系统
商品分类管理
- 支持无限级分类结构,涵盖电子电器、家具桌椅、母婴用品等热门品类
- 分类可设置多语言名称和描述
- 支持分类图片、图标、排序等属性
商品发布管理
- 支持多图上传和视频展示,全面呈现商品细节
- 商品详情支持富文本编辑器,支持图文混排
- 支持多规格商品(颜色、尺寸等)
- 商品价格支持一口价或面议模式
- 支持新旧程度、品牌、型号等属性设置
库存管理
- 实时库存同步机制,防止超卖
- 库存预警提醒功能,库存不足时自动提醒
- 支持库存扣减策略配置
3.3 交易系统模块
订单管理系统
- 订单状态机管理,支持待支付、待发货、待收货、已完成、已取消等状态
- 订单状态变更记录操作日志
- 买家订单管理,查看待付款、待发货、待收货、待评价等订单
- 卖家订单管理,查看待发货、已发货、已完成、退款/售后等订单
支付集成
- 支持微信支付、支付宝支付等主流支付方式
- 支持担保交易模式,买家付款后资金由平台托管
- 支付回调验证机制,保障资金安全
- 支持多种支付场景,如扫码支付、H5支付、APP支付
物流配送
- 运费模板管理,支持按件数、按重量、按体积计费
- 支持区域运费设置,不同地区设置不同运费
- 物流跟踪功能,集成主流物流公司API
- 支持物流轨迹查询,自动更新物流状态
3.4 社交互动模块
在线聊天功能
- 内置即时通讯模块,支持文本、图片、语音消息
- 聊天记录云端保存,支持历史记录查看
- 支持发送商品链接,方便买卖双方沟通
- 聊天与商品页面深度打通,提升沟通效率
社交板块
- 支持发布帖子,分享二手交易经历和生活点滴
- 加入圈子功能,按兴趣加入不同话题圈
- 关注好友功能,建立社交关系网络
- 互动消息通知,接收关注、评论、点赞等通知
3.5 营销推广模块
优惠券系统
- 支持优惠券发放、领取、使用全流程管理
- 优惠券类型:满减券、折扣券、免邮券
- 支持优惠券使用条件配置,如使用门槛、有效期等
- 优惠券领取记录和使用记录管理
营销活动
- 拼团活动,支持多人成团,团长优惠
- 秒杀活动,限时抢购,库存控制
- 砍价活动,好友助力砍价
- 满减活动,满额减钱,多档位设置
分销代理
- 支持多级分销体系,发展下线获取佣金
- 分销佣金自动结算,支持多种结算方式
- 分销员管理后台,查看业绩和佣金明细
3.6 数据统计与分析
数据看板
- 实时展示销售数据、订单数据、用户数据
- 支持多维度数据统计,如日活用户、新增用户、订单量等
- 数据图表可视化展示,支持折线图、柱状图、饼图等
- 核心指标监控,如GMV、成交率、客单价等
用户行为分析
- 记录用户浏览、收藏、加购等行为
- 基于用户行为进行商品推荐,提高转化率
- 用户画像分析,分析用户偏好和消费习惯
- 智能搜索与推荐,根据搜索历史和浏览记录推荐相关商品
四、数据库设计
4.1 核心表结构
用户表(users)
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '用户名',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`mobile` varchar(20) DEFAULT NULL COMMENT '手机号',
`password` varchar(100) NOT NULL COMMENT '密码',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像',
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
`level_id` int(11) DEFAULT '0' COMMENT '会员等级',
`points` int(11) DEFAULT '0' COMMENT '积分',
`credit_score` int(11) DEFAULT '100' COMMENT '信用分',
`status` tinyint(1) DEFAULT '1' COMMENT '状态',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_username` (`username`),
KEY `idx_email` (`email`),
KEY `idx_mobile` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
商品表(products)
CREATE TABLE `products` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL COMMENT '商品名称',
`category_id` int(11) NOT NULL COMMENT '分类ID',
`brand_id` int(11) DEFAULT NULL COMMENT '品牌ID',
`price` decimal(10,2) NOT NULL COMMENT '价格',
`market_price` decimal(10,2) DEFAULT NULL COMMENT '市场价',
`stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存',
`sales` int(11) DEFAULT '0' COMMENT '销量',
`images` text COMMENT '商品图片',
`video` varchar(255) DEFAULT NULL COMMENT '商品视频',
`description` text COMMENT '商品描述',
`status` tinyint(1) DEFAULT '1' COMMENT '状态',
`is_recommend` tinyint(1) DEFAULT '0' COMMENT '是否推荐',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_category_id` (`category_id`),
KEY `idx_brand_id` (`brand_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
订单表(orders)
CREATE TABLE `orders` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`order_sn` varchar(32) NOT NULL COMMENT '订单编号',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`total_amount` decimal(10,2) NOT NULL COMMENT '订单总额',
`pay_amount` decimal(10,2) NOT NULL COMMENT '实付金额',
`pay_type` tinyint(1) DEFAULT NULL COMMENT '支付方式',
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '订单状态',
`consignee` varchar(50) NOT NULL COMMENT '收货人',
`mobile` varchar(20) NOT NULL COMMENT '手机号',
`address` varchar(255) NOT NULL COMMENT '收货地址',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_order_sn` (`order_sn`),
KEY `idx_user_id` (`user_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';
聊天记录表(chat_records)
CREATE TABLE `chat_records` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`from_user_id` bigint(20) NOT NULL COMMENT '发送者ID',
`to_user_id` bigint(20) NOT NULL COMMENT '接收者ID',
`product_id` bigint(20) DEFAULT NULL COMMENT '商品ID',
`message_type` tinyint(1) DEFAULT '1' COMMENT '消息类型',
`content` text COMMENT '消息内容',
`is_read` tinyint(1) DEFAULT '0' COMMENT '是否已读',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_from_user_id` (`from_user_id`),
KEY `idx_to_user_id` (`to_user_id`),
KEY `idx_product_id` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='聊天记录表';
4.2 索引优化策略
- 为高频查询字段添加索引,如用户ID、订单状态、商品分类等
- 使用复合索引优化多条件查询
- 定期分析慢查询日志,优化SQL性能
- 使用Redis缓存热点数据,减轻数据库压力
五、性能优化方案
5.1 缓存策略
Redis缓存应用
- 商品详情页缓存,有效期30分钟
- 首页数据缓存,有效期5分钟
- 用户信息缓存,有效期24小时
- 购物车数据缓存,有效期7天
缓存更新机制
- 采用Cache Aside Pattern模式
- 数据更新时,先更新数据库,再删除缓存
- 缓存穿透:使用布隆过滤器或缓存空值
- 缓存击穿:使用互斥锁或设置热点数据永不过期
5.2 数据库优化
读写分离
- 主从复制架构,主库负责写操作,从库负责读操作
- 使用MySQL Proxy或中间件实现读写分离
- 支持多从库负载均衡
分库分表
- 用户表按用户ID分表,每100万用户一张表
- 订单表按时间分表,每月一张表
- 使用ShardingSphere或MyCat实现分库分表
5.3 高并发处理
消息队列
- 使用RabbitMQ或Redis队列处理异步任务
- 订单创建、支付回调、库存扣减等操作异步化
- 支持失败重试和死信队列
限流降级
- 使用Redis实现接口限流
- 熔断降级机制,保护核心服务
- 服务降级,非核心功能可降级处理
六、安全防护措施
6.1 数据安全
SQL注入防护
- 使用ThinkPHP的ORM框架,自动参数绑定
- 对用户输入进行严格过滤和转义
- 使用预处理语句执行SQL查询
XSS攻击防护
- 对用户输入进行HTML转义
- 使用Content Security Policy(CSP)策略
- 富文本内容使用白名单过滤
6.2 业务安全
订单防重
- 使用Redis分布式锁保证订单唯一性
- 订单号采用时间戳+随机数+用户ID生成
- 支付回调幂等性处理
库存防超卖
- 使用Redis原子操作扣减库存
- 数据库乐观锁控制库存并发
- 预扣库存机制,支付成功后再实际扣减
6.3 支付安全
支付回调验证
- 验证签名,防止伪造回调
- 验证订单金额,防止金额篡改
- 验证订单状态,防止重复回调
七、部署方案
7.1 环境要求
服务器配置
- 操作系统:CentOS 7.6+
- Web服务器:Nginx 1.18+
- PHP版本:PHP 7.4+
- 数据库:MySQL 8.0+
- 缓存:Redis 5.0+
扩展要求
- PHP扩展:fileinfo、redis、pdo_mysql、gd、zip
- Nginx配置伪静态
- 开启SSL证书
7.2 部署步骤
1. 环境准备
# 安装宝塔面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
# 安装LNMP环境
# PHP 7.4、MySQL 8.0、Nginx、Redis
2. 创建站点
- 在宝塔面板创建站点
- 设置运行目录为public
- 配置伪静态规则
3. 上传源码
# 上传源码到网站根目录
unzip secondhand.zip
# 设置目录权限
chmod -R 755 runtime
chmod -R 755 public/uploads
4. 数据库配置
- 创建MySQL数据库
- 导入数据库文件
- 修改数据库配置文件
5. 配置伪静态
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
6. 访问安装
- 访问网站首页,自动进入安装页面
- 填写数据库信息和管理员账号
- 完成安装
7.3 多端部署
H5端
- 直接访问网站域名即可
- 支持响应式布局,适配PC和移动端
小程序端
- 使用HBuilderX导入前端项目
- 配置小程序AppID
- 编译发布到微信小程序平台
APP端
- 使用HBuilderX打包为原生应用
- 支持Android和iOS平台
- 配置应用签名和证书
八、二次开发指南
8.1 代码结构
app/
├── common.php # 公共函数
├── config/ # 配置文件
├── controller/ # 控制器
├── model/ # 模型
├── service/ # 服务层
├── validate/ # 验证器
└── view/ # 视图
public/
├── index.php # 入口文件
├── static/ # 静态资源
└── uploads/ # 上传文件
8.2 API接口开发
接口规范
- 采用RESTful API设计风格
- 接口返回统一JSON格式
- 错误码统一管理
接口示例
// 商品列表接口
public function list()
{
$page = input('page', 1);
$size = input('size', 10);
$list = Product::where('status', 1)
->order('id', 'desc')
->paginate($size, false, ['page' => $page]);
return json(['code' => 200, 'data' => $list]);
}
8.3 前端开发
页面开发
<template>
<view class="product-list">
<view v-for="item in list" :key="item.id" class="product-item">
<image :src="item.image" mode="aspectFill"></image>
<view class="info">
<text class="name">{{ item.name }}</text>
<text class="price">¥{{ item.price }}</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: []
}
},
onLoad() {
this.getList()
},
methods: {
async getList() {
const res = await this.$http.get('/api/product/list')
this.list = res.data
}
}
}
</script>
8.4 插件开发
插件目录结构
addons/
└── demo/
├── config.php # 插件配置
├── controller/ # 控制器
├── model/ # 模型
├── service/ # 服务层
└── view/ # 视图
插件配置
return [
'name' => 'demo',
'title' => '示例插件',
'description' => '这是一个示例插件',
'version' => '1.0.0',
'author' => '开发者',
'status' => 1,
'install' => true,
];
九、运维监控
9.1 日志管理
系统日志
- 记录操作日志、错误日志、访问日志
- 日志按天分割,定期清理
- 支持日志查询和分析
业务日志
- 记录关键业务操作,如订单创建、支付回调等
- 日志格式统一,便于排查问题
- 支持日志告警
9.2 性能监控
服务器监控
- 监控CPU、内存、磁盘、网络使用情况
- 设置阈值告警
- 使用Prometheus + Grafana监控
应用监控
- 监控接口响应时间、QPS、错误率
- 使用SkyWalking或Pinpoint进行链路追踪
- 慢查询监控和优化
9.3 数据备份
数据库备份
- 每天定时备份数据库
- 备份文件上传到云存储
- 支持数据恢复演练
文件备份
- 定期备份代码和上传文件
- 使用rsync同步到备份服务器
- 支持增量备份
十、总结与展望
本系统基于Uniapp+FastAdmin+ThinkPHP技术栈,实现了功能完善的二手交易系统。系统具备以下特点:
- 技术先进:采用前后端分离架构,支持多端适配,性能优异
- 功能丰富:涵盖商品管理、订单管理、支付交易、社交互动等核心功能
- 安全可靠:多重安全防护措施,保障系统稳定运行
- 扩展性强:支持插件扩展和二次开发,满足个性化需求
- 部署简单:提供完整的部署文档,降低运维成本
未来,系统将继续优化性能,增加AI推荐、智能客服等智能化功能,为二手交易市场提供更优质的服务。
若内容若侵犯到您的权益,请发送邮件至:platform_service@jienda.com我们将第一时间处理!
所有资源仅限于参考和学习,版权归JienDa作者所有,更多请访问JienDa首页。





