最近在做一个资金系统,需求条件是这样的
1,手机号相同
2,银行卡号相同,支付宝相同
3,注册IP相同
的用户需要标识出来,相同的用户数量,想的的原因。
展示用户列表的时候需要如下图所示。
我的想法是原本的用户表不动,将所有的用户数据同步到新的ES用户表,然后进行全部用户对比一遍对比完后在将相同的用户存到关联用户表。后期用户进行更新了手机号或者 银行卡号或 支付宝账号 都需对更新的用户进行对比 进行实时更新相同人数与关联关系
例如
因为后台展示用户列表的时候要展示相同用户列表 如图, A用户关联了F用户(手机号相同),F用户关联了E用户(设备号相同),C用户关联了D用户(银行卡相同)、
,C用户关联了A用户(支付宝相同) 那么相同用户的数量就是 A,C,D,E,F 5个相同用户。
用户列表中 AEDCF 的相同用户列表都一样的数据。
我的表设计就是想两个表,一个用户表,一个关联用户表
用户表
字段:用户ID ,用户相同人数。
相同用户关联表
字段:用户ID,关联用户ID,相同原因。
查询相同用户列表的时候进行迭代查,例如查A用户的相同列表的时候 查用户ID or 关联用户ID = A的。查询结果是 A,F C,A 。然后再把F,C在按照这种逻辑在继续往下查。就可以把关联的用户都查出来。
这个方案的话可以实现需求功能,但是这样设计的话到时候会查很深,很费资源目前我没有其他的设计方案。求各位大佬提供一下高见