用户体系的搭建
用户体系的建立是任何产品或项目开始的基石,所有的功能都必须在此基础上进行,所以用户体系的搭建显得尤为重要。
为什么这么说,因为最近在做的产品,就是由于前期用户体系没有规划好,导致后面的可扩展性十分有限,满足不了业务的发展。
现在的项目大约从17年2月开始,到现在也有一年半的时间了。由于前期时间紧、开发资源有限,无论是产品的定位还是技术的框架,都缺乏足够的规划时间,所有的内容都是仓促开始。
此次的产品主要涉及到四种角色:厂商、网点、师傅和用户。看似简单的几种角色,不曾想埋下了无数的坑。
项目一开始,由于产品并没有在这个问题上做过多的分析,开发采用简单粗暴的方式:厂商注册采用邮箱(参考的微信),网点、师傅和用户都是用的手机号。看似没有问题,而这也是埋下问题的关键点。
现在回过头来看,可以清楚的发现问题所在:
1、如何进行唯一性的标识?
2、为什么没有用户名?
3、同一个手机号如何注册网点、师傅和用户三种角色?
四种角色的用户体系和登录系统都是同一套逻辑和同一张表,而且网点、师傅都是用手机号作为用户名,直接导致了注册为网点的用户再次注册为师傅时的数据混乱和无法注册。
说实话,刚开始设计产品的时候并没有考虑过几种角色交叉的可能,直到实际的需求产品,才发现前期数据库结构的限制,无法满足。
在实际使用过程中我们遇到了如下问题:
1、厂商、网点、师傅、用户,都没有用户名的存在,厂商只能用邮箱登录,网点、师傅和用户只能用手机号登录;
2、注册成师傅的手机号,不能再次注册为网点,而实际业务场景需要师傅可以升级为网点;
3、同一手机号,在四种角色中的密码都相同,在任何一个系统中修改了密码,会直接影响其他系统;
为了填坑,我们做了如下几个应急措施,只能勉强应付当前的需求:
1、厂商、网点,在注册时,都加上用户名的必填字段,即新注册的网点,并不用手机号作为用户名,一定程度上避免和师傅的用户名的重复;
2、注册为网点的账户,默认将该手机号开通为师傅,用手机号能直接登录师傅系统,一定程度上规避注册的网点无法成为师傅的尴尬;
3、注册为师傅的手机号,能够升级(注册)为网点,这也是为了规避师傅和网点账户的注册问题。
通过种种填坑经历,慢慢发现在项目开始之初规划用户体系的重要性,若重新开始这个项目,我会按照以下的两种思路进行考虑。
第一种思路,由系统生成默认的用户名,这个用户名用户能不能修改都可以,但是要判断唯一性,结合我们产品的实际情况,可以按照角色+时间戳的方式来命名,具体如下:
厂商:BRAND2017081620390008
网点:BRANCH2017081620390008
师傅:MASTER2017081620390008
用户:WEB2017081620390008
如此,任何角色进来后都有自己的唯一标识且不可修改(若提供修改功能也只允许修改一次),将能够一定程度上避免账户的混淆问题。同时,各个角色间的登录注册体系需要分开,即在厂商系统注册的用户,不能够在网点系统进行登录。
第二种思路,注册时自己输入用户名,并且为必填选项,让用户在注册时就确定唯一标识用户名。
总结:在时间允许的前提下,尽量考虑周全,如果有可能,参与到开发的数据库设计,从开发和产品双重角度对产品进行规划。