1. 项目概述:基于ThinkPHP的药品商城系统开发实践
在医药电商快速发展的今天,一个稳定可靠的药品商城系统对药店经营者而言至关重要。我最近用ThinkPHP框架完整开发了一套药店管理系统,包含前台购药商城和后台管理模块,支持药品分类展示、在线下单、处方审核等核心功能。这套系统特别适合中小型药店快速搭建自己的线上销售渠道,实测在1Panel面板上部署运行非常顺畅。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计思路
2.1 技术选型考量
选择ThinkPHP6.x作为开发框架主要基于三点考虑:
- 完善的文档和活跃的社区,遇到问题容易找到解决方案
- 内置的ORM和验证机制非常适合电商系统的开发
- 性能优化到位,能承受药品商城典型的高并发查询场景
数据库采用MySQL5.7+,配合Redis做缓存,这种组合在药品数据频繁读取的场景下表现优异。前端使用Layui+JQuery组合,确保管理员后台的操作体验流畅。
2.2 核心功能模块设计
系统采用标准的MVC架构,主要包含以下模块:
- 药品管理:分类、详情、库存、价格等
- 会员系统:注册、登录、购药记录
- 订单系统:创建、支付、配送跟踪
- 处方管理:上传、审核、关联购买
- 营销模块:优惠券、限时折扣等
3. 关键功能实现细节
3.1 药品分类与展示
药品分类采用三级结构(大类->小类->具体药品),使用ThinkPHP的关联模型实现:
php复制// 药品模型关联定义
class Medicine extends Model
{
public function category()
{
return $this->belongsTo(Category::class);
}
}
前端展示特别注意了药品信息的合规性,所有药品都完整显示批准文号、生产厂家、用法用量等关键信息。
3.2 处方药购买流程
处方药购买是系统的核心难点,我们实现了完整的流程:
- 用户上传处方照片
- 药师后台审核(状态变更通知)
- 审核通过后允许加入购物车
- 结算时二次确认处方信息
php复制// 处方审核状态变更逻辑
public function auditPrescription($id, $status)
{
$prescription = Prescription::find($id);
$prescription->status = $status;
$prescription->audit_time = time();
$prescription->save();
// 发送审核结果通知
Message::send($prescription->user_id,
"您的处方审核".($status==1?"通过":"不通过"));
}
4. 后台管理系统开发
4.1 药品库存管理
库存管理实现了实时预警机制,关键代码:
php复制public function checkInventory($medicine_id, $quantity)
{
$stock = Stock::where('medicine_id', $medicine_id)->find();
if($stock->quantity < $quantity) {
// 触发库存预警
Warning::create([
'type' => 'stock',
'content' => "药品ID:{$medicine_id}库存不足"
]);
return false;
}
return true;
}
4.2 订单处理流程
订单状态机设计:
- 待支付(15分钟未支付自动取消)
- 已支付待发货
- 已发货
- 已完成
- 已取消
每个状态变更都记录操作日志,确保药品销售的可追溯性。
5. 系统部署实践
5.1 1Panel环境部署
在1Panel面板上部署的要点:
- 创建PHP7.4+运行环境
- 配置MySQL数据库
- 设置Redis缓存
- 配置定时任务(处理订单超时等)
- 开启OPcache提升性能
部署后需要进行以下优化:
- 调整PHP-FPM进程数
- 配置MySQL连接池
- 设置合理的Redis缓存过期时间
5.2 安全防护措施
药品系统特别需要注意的安全配置:
- 全站HTTPS加密
- 敏感数据(如处方图片)加密存储
- 严格的权限控制(RBAC模型)
- 操作日志完整记录
- 定期数据库备份
6. 开发中的经验总结
6.1 性能优化技巧
- 药品列表页使用Redis缓存查询结果
- 热门药品数据预加载
- 图片使用WebP格式减小体积
- 数据库查询避免N+1问题
- 合理使用ThinkPHP的延迟关联
6.2 常见问题解决方案
- 处方图片上传失败
- 检查php.ini中的upload_max_filesize
- 确保存储目录有写入权限
- 订单状态不同步
- 检查队列服务是否正常运行
- 验证状态变更的事务完整性
- 库存数据不一致
- 使用数据库事务保证操作原子性
- 关键操作添加锁机制
7. 系统扩展方向
这套系统后续可以考虑:
- 对接医保支付接口
- 增加智能问诊模块
- 开发药品配送跟踪功能
- 接入电子处方共享平台
- 实现多药店连锁管理
实际开发中发现,药品管理系统的核心难点不在于技术实现,而在于业务流程的合规性和数据的安全性。特别是在处方药销售环节,必须严格按照法规要求设计审核流程,所有操作都要留痕可追溯。
