1. 项目背景与核心价值
三七作为传统中药材中的明星品种,其道地性直接影响药效和市场价格。我去年在文山实地考察时发现,当地种植户普遍面临两个痛点:一是中间商压价导致利润微薄,二是消费者难以辨别真伪。这个基于SpringBoot的三七原产地销售平台,就是要用技术手段打通从田间到终端的直连通道。
平台最核心的价值在于构建了三级认证体系:种植户资质认证、采收过程区块链存证、药检报告在线验证。我们通过GIS地图标注种植地块,消费者扫码就能查看这株三七从播种到发货的全生命周期数据。这种透明化供应链的设计,比简单做个电商网站复杂得多,但正是差异化的关键。
2. 技术架构设计要点
2.1 微服务划分策略
采用领域驱动设计(DDD)划分出四个核心服务:
- 种植户服务:处理农户入驻、地块管理、采收记录
- 溯源服务:负责区块链存证与验证(采用Hyperledger Fabric私有链)
- 交易服务:订单、支付、物流集成
- 质检服务:对接第三方药检机构API
这种划分的考虑是:当旺季日订单量突破3000单时,交易服务的自动扩容不会影响溯源服务的区块生成速度。实测下来,用SpringCloud Alibaba的Sentinel做熔断,比Hystrix的线程池隔离更适合这种突发流量场景。
2.2 混合存储方案
数据存储上玩了个"组合拳":
- 商品详情用MongoDB存富文本+图片数组
- 交易数据走MySQL分库(按用户ID取模)
- 溯源信息同时写MySQL和IPFS
- 搜索用Elasticsearch做多字段聚合
特别说下IPFS的选择:刚开始用阿里云OSS存图片和检测报告,直到有用户投诉报告被篡改。后来改成报告PDF哈希值上链,原文件传IPFS,既保证不可篡改又节省链上空间。这个教训值几十万维权费。
3. 关键业务实现细节
3.1 区块链溯源模块
核心是定制化的智能合约,主要处理三种操作:
- 种植事件:记录播种时间、地块坐标、施肥记录
- 采收事件:包含采收时的现场照片哈希、重量水分数据
- 质检事件:关联第三方检测报告的IPFS CID
合约用Solidity编写,部署在自建的Fabric网络上。这里有个骚操作:把每个批次的三七都生成NFT,消费者扫码就能看到这个NFT对应的所有生长记录。虽然技术上没什么难度,但营销效果出奇地好。
3.2 动态定价算法
价格不是固定的,而是由基础价+浮动因子构成:
code复制最终价格 = 基准价 × 品质系数 × 新鲜度系数 × 供需系数
- 品质系数:根据皂苷含量检测结果计算
- 新鲜度系数:按采收时间指数衰减
- 供需系数:用时间序列预测未来两周价格走势
算法用Java实现,每天凌晨跑Spark任务重新计算所有SKU的价格。为了让农户理解这个机制,我们做了个价格模拟器小程序,输入参数就能看到预估收益。
4. 踩坑实录与性能优化
4.1 图片加载的坑
最初用Base64把田间照片直接存数据库,结果列表页加载速度超过8秒。优化分三步走:
- 改用缩略图+原图分离存储
- 为OSS配置图片处理模板
- 前端实现懒加载+渐进式加载
最绝的是第四步:发现用户更关注检测报告而非田间照片后,直接把照片从首屏移除,加载时间降到1.2秒。有时候业务视角比技术优化更有效。
4.2 区块链性能问题
刚开始每个操作都实时上链,TPS不到15。后来改成:
- 非关键操作先存MySQL,夜间批量上链
- 关键操作采用异步上链+前端假确认
- 调整Fabric的区块大小为500KB,超时设为2s
配合Kafka做消息队列,最终把用户感知延迟控制在300ms内。这里有个经验:不要为了用区块链而用区块链,90%的数据其实没必要上链。
5. 安全防护方案
5.1 防伪验证体系
消费者最怕买到假货,我们做了三重验证:
- 网站验证:输入追溯码查全链路信息
- 小程序扫码:调用华为AR引擎展示3D生长过程
- 线下验证:给药店配备专用NFC读卡器
最狠的是开放了API给第三方药房,他们用自己的系统也能调用我们的验真服务。这个开放策略带来了30%的B端客户。
5.2 风控系统设计
针对刷单和恶意压价开发了实时风控模块:
- 用Flink处理用户行为事件流
- 规则引擎包含32条核心规则(如同IP多账号、异常比价行为)
- 机器学习模型识别套利模式
有个经典案例:某中间商用200个账号批量下单再退货,试图套取种植户信息。风控系统在第三天就自动封停了这些账号,并触发法律流程。这套系统后来单独申请了专利。
6. 运营数据分析
在后台埋了点有意思的数据看板:
- 农户端:显示地块产量排名、客户评价分布
- 消费者端:展示三七功效认知度热力图
- 供应链看板:物流时效与损耗率分析
最受欢迎的是"种植能手排行榜",上榜农户的销量平均提升47%。数据分析带来的一个意外发现:70%的复购用户会固定购买某个农户的产品,于是我们增加了"专属农户"订阅功能。