两套小程序、两条用户;余额跟用户走。不要用同一个 store_id 把平台顾客和商家小程序用户混在一起。
yjd_user 各写各的,不会合成一条。yjd_user.mch_id:平台包 = 0,商家独立包 = 总店 ID(请求里的 _zong_mch_id)。yjd_user.branch_id:0 = 还在总店,>0 = 分店 ID。不能用它区分平台用户和总店用户。yjd_user.money。yjd_user_mch_balance 是平台小程序里顾客在某家入驻店的储值,不是商家自己小程序的钱包。平台包和商家包常常共用同一个 yjd_store.id(例如都是 365)。以前只按 store_id 查用户,商家后台会看到平台顾客。现在登录(含不授权头像、正常打开小程序的静默登录)都会把包主写进 mch_id。
flowchart TB PMP["平台小程序\n_zong_mch_id=0"] MMP["商家独立小程序\n_zong_mch_id=总店"] PU["yjd_user\nmch_id=0\nmoney=平台余额"] MU["yjd_user\nmch_id=总店\nmoney=本店余额"] MB["yjd_user_mch_balance\n平台顾客在入驻店的储值"] PMP -->|openid A| PU MMP -->|openid B 不同| MU PU -.->|仅平台包逛入驻店| MB
| 平台小程序 | 商家独立小程序 | |
|---|---|---|
| 出包 | siteinfo.mch_id = 0 | siteinfo.mch_id = 总店 |
| 微信 AppID | 平台 yjd_wechat_app | 商家自己的 yjd_wechat_app.mchid=总店 |
| 用户行 | mch_id = 0 | mch_id = 总店 |
| 会不会重复 | 不会。同一人进两套小程序是两条记录(openid 不同) | |
| 何时建用户 | 授权头像,或静默打开(wx.login → passport/login),都会建号并打 mch_id | |
mch_id=0 批量改成商家 ID。
| 后台 | 看哪些用户 | 条件 |
|---|---|---|
| 平台运营 | 平台小程序用户 | user.mch_id = 0 |
| 连锁总店 | 这个独立小程序的全部用户(含已进分店的人) | user.mch_id = 总店 |
| 连锁分店 | 进了这家分店的人 | branch_id = 分店 且包主=总店 |
| 普通独立小程序店 | 本店包用户 | user.mch_id = 本店 |
| 平台入驻店(没有自己的小程序) | 在本店下过单 / 储值 / 购卡的平台顾客 | 关联表,不按包主 |
例:总店 23778、分店 23818,都在 store_id=365。商家小程序用户 mch_id=23778;进了分店后再写 branch_id=23818。平台小程序用户仍是 mch_id=0。
| 钱包 | 表 / 字段 | 谁在用 | 结账 / 个人中心 |
|---|---|---|---|
| 平台用户余额 | yjd_user.money 且 mch_id=0 |
平台小程序 | 读这张表 |
| 商家自己小程序的余额 | yjd_user.money 且 mch_id=总店 |
商家独立小程序 | 读这张表(不是 mch_balance) |
| 入驻店储值 | yjd_user_mch_balance |
平台小程序顾客在某家入驻店充的钱 | 平台包逛该店时用商家余额支付 |
商家后台「会员余额」:独立小程序列出本店包用户的 yjd_user.money;没有独立小程序的入驻店列出 yjd_user_mch_balance。
_zong_mch_id(商家包由 siteinfo.mch_id 写入)。passport/login 按 store_id + openid + mch_id 找人;找不到再认领同 openid 且 mch_id=0 的旧号(本小程序早期没打标的记录)。mch_id。mch_id=0 的旧号:下次进商家小程序任意接口会自动补上,不必重新授权。_zong_mch_id / mch_id / 分店策略