你好,我是知码客,专注小程序 / APP 开发,用代码改变生活。最近半年,找我聊「多门店小程序」的廊坊老板明显多了起来:广阳区做连锁烘焙的、安次区开社区药店的、燕郊做健身工作室的,还有在固安、永清铺了七八家网点的汽修养护店。大家的痛点出奇一致——门店一多,管理就散,线上流量也接不住。
多门店小程序,到底解决什么问题
先说清楚概念。多门店小程序不是把单店小程序复制几份,而是一套后台、一个品牌、多套门店数据。用户打开小程序,系统自动按 LBS 定位到最近的门店,商品、库存、价格、营业时间、店员、优惠券全部跟着门店走。
对廊坊这种「主城区 + 县域」的城市结构来说,这一点特别实用。广阳、安次的用户和固安、香河的客户,消费习惯、配送半径都不一样,如果所有门店共用一套价格和库存,线上卖出去的单子线下履约就容易出问题。
核心能力清单
- 门店切换与自动定位:用户手动选店或授权定位,就近推荐
- 门店级商品与库存:总仓统一维护,门店可单独上下架、改价
- 门店级订单与核销:订单自动路由到对应门店,店员用手机端核销
- 门店级数据看板:总部看全局,店长只看自己那一摊
- 员工与权限体系:总部管理员、区域经理、店长、店员分级
技术实现:数据模型是地基
很多项目后期改不动,问题都出在一开始没把「门店」当成一等公民。我的做法是:所有业务表都带 store_id,权限校验在接口层统一拦截,而不是散落在各个页面里判断。
// 门店上下文中间件(云开发 / Node 均可)
module.exports = async function storeContext(ctx, next) {
const { storeId } = ctx.request.header;
const user = ctx.state.user;
// 校验用户是否有该门店的访问权限
const allowed = await db.collection('store_staff')
.where({ openid: user.openid, store_id: storeId, status: 1 })
.count();
if (!allowed.total) {
ctx.throw(403, '无权访问该门店');
}
ctx.state.storeId = storeId;
await next();
};
商品表建议拆成「商品主表 + 门店商品表」:主表管名称、图片、详情,门店表管价格、库存、是否上架。这样总部上新一次,各门店按需配置,不用重复录入。
定位与门店排序
小程序端拿到经纬度后,别急着调第三方地图做逆地理编码,先用数据库里的门店坐标算距离排序,再按「营业中 > 距离近 > 评分高」做加权。廊坊城区不大,门店密度高的品牌,用户往往两公里内就有两三家可选,排序策略直接影响转化。
// 简化的距离排序(单位:公里)
function distance(lat1, lng1, lat2, lng2) {
const R = 6371;
const dLat = (lat2 - lat1) * Math.PI / 180;
const dLng = (lng2 - lng1) * Math.PI / 180;
const a = Math.sin(dLat / 2) ** 2 +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
Math.sin(dLng / 2) ** 2;
return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
}
廊坊本地项目的几个真实坑
上个月帮一位在廊坊做社区连锁的客户做重构,踩过的坑值得说说:
- 核销端不能只做小程序。 店员忙起来根本顾不上开小程序,后来补了一个扫码即核销的 H5 页面,挂在门店二维码上,效率立刻不一样。
- 优惠券要区分「全品牌通用」和「单店专用」。 一开始没区分,固安店的券被广阳店的顾客领走,门店之间差点闹矛盾。
- 库存别做实时强一致。 多门店共享库存时,高并发下超卖很常见。用「预扣 + 定时对账」比锁库存更稳。
- 数据看板要照顾店长的手机屏幕。 总部报表动辄十几个维度,店长只关心今天来了多少单、核销多少、还剩多少库存。
多门店小程序的价值,不在于功能多,而在于让每一家店都能独立运转,又让总部看得见全局。
自己开发还是找人做
经常有廊坊的老板问我,多门店小程序能不能自己用模板搭。我的回答是:单店可以,多门店不太建议。门店权限、订单路由、库存对账这几块,模板几乎都做不细,后期改起来比重做还贵。如果预算有限,可以先做「总部 + 3 家核心门店」跑通流程,再逐步铺开——这也是我在廊坊做小程序开发时最常给客户的建议:先跑通最小闭环,再谈规模。
如果你也在廊坊,手里有几家门店,正琢磨着把线上线下的生意串起来,欢迎找知码客聊聊。做小程序、做 APP,我习惯先把业务逻辑捋清楚再动手写代码,毕竟代码是给人用的,不是给需求文档用的。
评论 (0)
还没有评论,快来抢沙发吧~