外卖O2O融合平台开发实践:商品上架、分类管理与搜索功能实现

简介: 本文介绍外卖O2O平台商品模块的轻量化开发实践:基于SpringBoot构建,MySQL存基础数据、Redis缓存分类与热门商品、Elasticsearch实现地域+状态过滤的全文搜索;支持门店隔离、两级分类管理、多SKU上架及异步索引同步,兼顾易用性、一致性与可扩展性。

外卖O2O融合平台开发实践:商品上架、分类管理与搜索功能实现

一、业务场景与开发难点

外卖O2O平台和传统电商最大差异在于商品归属于线下门店,商品上下架、库存、价格都和门店强绑定,同时用户搜索带有地域约束,只能检索当前配送范围内的商家商品。
在中小同城平台开发中,常见问题:分类层级混乱、多门店商品同步更新慢、搜索只能精确匹配、热门关键词查询拖垮数据库。因此整套模块需要兼顾商家后台易用性、数据一致性、检索性能,优先轻量化方案,支持后续平滑扩容。
同城外卖6.png

二、模块整体架构设计

采用SpringBoot + MySQL + Redis + Elasticsearch的组合方案。
MySQL存储门店、分类、商品基础数据、SKU规格、价格、库存;
Redis缓存分类树、门店热销商品列表、高频搜索结果,减轻数据库压力;
ES负责商品全文检索,支持商品名称、标签、简介模糊检索,同时叠加门店地理位置、营业状态、商品上下架状态过滤;
前端使用UniApp开发用户小程序、商家后台,商家在后台完成分类维护、商品新增、规格配置、图片上传,变更后触发消息,同步更新缓存和检索索引。

三、商品分类管理模块实现

分类支持两级结构:一级大类(主食、饮品、小吃)、二级子类(米饭、奶茶、炸串),分类绑定门店,支持排序、启用/停用。分类删除时增加校验,存在关联商品的分类不允许直接删除,避免数据孤立。

@Service
public class CategoryService {
    @Resource
    private CategoryMapper categoryMapper;
    @Resource
    private GoodsMapper goodsMapper;
    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    // 删除分类
    public void removeCategory(Long categoryId) {
        LambdaQueryWrapper<Goods> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Goods::getCategoryId, categoryId);
        Long count = goodsMapper.selectCount(wrapper);
        if(count > 0){
            throw new RuntimeException("该分类下存在商品,无法删除");
        }
        categoryMapper.deleteById(categoryId);
        // 删除后清理分类缓存
        redisTemplate.delete("goods:category:tree");
    }
}

分类树预加载到Redis,用户端打开商家页面优先读取缓存,只有分类发生新增、修改、删除操作时主动失效缓存,减少频繁查库。
同城外卖1.jpeg

四、商品上架与SKU规格模块开发

商品上架信息包含基础信息、多规格SKU、图片、标签、售卖状态、库存、售价、原价。同一个商品可以配置多个SKU,例如奶茶分为大杯、中杯,不同规格独立维护库存和价格。
上架核心校验规则:商品必须归属有效分类、价格大于0、库存不能为负数;商家提交保存成功后,异步更新ES检索索引,保证搜索库数据同步。
为防止大流量下索引频繁刷新,采用异步消息队列做索引更新,同步失败单独记录重试日志,避免阻塞商家提交操作。

五、商品搜索功能实现逻辑

搜索分为两个阶段:关键词检索 + 业务过滤排序。
检索阶段:ES根据关键词分词匹配商品名称、标签;
过滤阶段:过滤不在配送范围、门店打烊、商品停售的商品;
排序策略:默认按距离优先+销量权重,支持按价格升序、好评优先切换。

@Service
public class GoodsSearchService {
    @Resource
    private ElasticsearchRestTemplate elasticsearchRestTemplate;
    public Page<GoodsDoc> searchGoods(String keyword, Long shopId, int pageNum, int pageSize){
        NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        if(StringUtils.isNotBlank(keyword)){
            boolQuery.must(QueryBuilders.matchQuery("goodsName", keyword));
        }
        boolQuery.filter(QueryBuilders.termQuery("shopId", shopId));
        boolQuery.filter(QueryBuilders.termQuery("saleStatus", 1));
        builder.withQuery(boolQuery);
        builder.withPageable(PageRequest.of(pageNum-1, pageSize));
        SearchHits<GoodsDoc> hits = elasticsearchRestTemplate.search(builder.build(), GoodsDoc.class);
        return convertPage(hits, pageNum, pageSize);
    }
}

中小平台初期订单量不大时,也可以先用MySQL全文索引做兜底方案,减少ES运维成本,业务增长后再切换。

六、缓存策略与数据一致性处理

热点数据缓存清单:门店分类树、门店商品列表、热门搜索词。
缓存更新策略:商品新增、修改、下架后,主动删除对应门店商品缓存;ES索引采用异步更新,允许短暂数据不一致,最终保证搜索结果和主库对齐。
同时增加兜底定时任务,凌晨低峰期全量同步一次商品索引,修复消息丢失导致的索引脏数据。

七、权限与商家隔离机制

不同商家只能管理自己的分类和商品,接口层增加商家ID校验,防止越权操作。商家后台提供批量上下架、批量调价功能,适合门店活动快速改价。所有商品变更记录操作日志,记录操作人、变更内容、变更时间,方便对账和问题追溯。
同城外卖3.png

八、总结

外卖O2O平台商品模块,核心是解决门店隔离、分类维护、SKU规格管理以及地域化商品搜索。通过MySQL承载基础商品数据,Redis缓存分类和热门商品减轻数据库压力,ES实现关键词全文检索,异步机制保障索引同步。这套方案适配中小同城O2O平台,商家端操作简单,同时具备良好的扩展能力;在业务规模较小时,可简化检索组件降低运维成本,随着商家数量和订单上涨,再逐步优化检索排序、分词、推荐权重等能力,支撑平台持续迭代。

相关文章
|
12天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
5156 40
|
13天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
4663 53
|
7天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
1784 4
|
13天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
2218 7
|
5天前
|
人工智能 安全 API
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(dsh)是DeepSeek AI于2026年开源的轻量级Agent运行框架,基于Cordis内核,践行“一切皆插件”理念。支持Web/桌面双端,开箱即用;内置多模型接入、丰富插件生态(超3.5万),适配编程、办公、创作等场景。(239字)
1152 0
|
8天前
|
云安全 人工智能 安全
|
1天前
|
云安全 人工智能 安全
|
7天前
|
人工智能 并行计算 调度
本地 AI 一键部署工具 LocModel:Windows 端集成画图、视频生成、Agent 的开源模型运行方案
LocModel 是专为 Windows 设计的一站式本地 AI 工具,支持零配置启动、自动硬件检测、GGUF 模型一键加载、文生图/视频生成及 Agent 自动化任务。适配 8G 显存,内置显存分片调度,轻松实现 AI 漫剧批量创作与离线大模型调用。(239 字)

热门文章

最新文章