微信登录的账号和手机号登录的账号合并,该如何设计表?

微信快捷登录的用户想要绑定手机号,这个时候两个账号的各个数据如何合并?

让PHP再次伟大
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 15
zhuzixian520

(楼主方便的,提供下你们的user表结构)

当你提这个问题的时候,我就大概猜到了,你的user表设计的时候,支持注册来源的微信登录的unionID,同时也支持手机号注册。

这个一开始就要设计考虑好,假设用户第一次注册是通过微信来的,那么进入系统时候,应该提示用户绑定手机号,如果是小程序中的微信登录,可以调用获取手机号完成绑定,如果是网页扫码和微信公众号登录,就不能这样直接获取。然后,对于手机号注册的用户,也可以提供绑定微信的功能。尽量在一开始注册的时候,就完成这个绑定关系。这一点,很多大厂都没做好,比如拼多多。

一个用户两者都注册账号,想要合并的话,就要牵扯很多数据的迁移,需要写sql脚本合并账号,在夜深人静的时候,执行合并数据。

2年前 评论
勇敢的心 (楼主) 2年前
zhuzixian520 (作者) 2年前
勇敢的心 (楼主) 2年前
zhuzixian520 (作者) 2年前

依情况吧。
有金钱的把金钱转入到一个账号,另一个账号注销
要么手机号绑定两个账号,手机号登陆那选择一个账号登陆
现在的大多网站都可以一个手机号绑定多个账号的吧,直接改下逻辑[dogo]

2年前 评论

可以用实名用户的身份证作为唯一标识,授权令牌相关信息可以拆分处理,现在授权方式太多了,单独开发会简单点,授权信息、和第三方用户信息单独存储。表之间用实名信息唯一表示关联就好了。

2年前 评论
陈先生

为什么没考虑过拆表呢? user wechat_user wxapp_user mobile_user 无论你是什么渠道,你都要在user表中有一条记录,这样等于是你操作单一的user 就可以了,合并的话 需要询问用户保留哪个,这个不算麻烦,主要是工作量

2年前 评论

提供一个思路,拆开,做两个表:用户表,微信用户表。 用户表一般是姓名、手机号等信息,微信用户表一般是头像、昵称、open_id(小程序和公众号的要区分)、unio_id、用户id(关联用户表用户id)。用户表为了显示方便,可以多两个冗余字段,昵称和头像。 这样做的好处是便于扩展,假如后续需要支付宝登陆、需要微博登陆,只需要新建相应的表就可以。 你提出的问题是两条数据如何关联,那还是用户用户表的id和其他用户信息登陆表进行关联。

2年前 评论
她来听我的演唱会 (作者) 2年前
zhuzixian520 2年前
她来听我的演唱会 (作者) 2年前
feng435263069 2年前

如果MySQL是8.0的话,可以尝试使用JSON类型、虚拟列、虚拟列索引,实现单表多渠道登录或绑定

2年前 评论
mouyong

github.com/mouyong/laravel-oauth/b...

users

字段 类型
id unsigned integer
name varchar

oauths

字段 类型
id unsinged integer
user_id unsigned integer
app_id varchar
nickname vachar
platform integer
... ...
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!