Просмотр исходного кода

增加用户管理需求说明文档

李爱光 6 лет назад
Родитель
Сommit
f5d590aa0f

BIN
需求/绘管家/用户中心/image/createWechatUser.png


BIN
需求/绘管家/用户中心/image/userER.png


+ 61 - 0
需求/绘管家/用户中心/用户管理需求说明.md

@@ -0,0 +1,61 @@
+# 用户管理需求说明 [原型地址](https://org.modao.cc/app/e6901721256b50fa80884755fcf42250e875e733)
+
+注意,本文档所说用户为C端用户,即小区的住户,扫码出入停车场的车主,扫码充电的电动车车主或通过其他方式关注**绘服务**的人员。
+
+目前**绘服务**只有一个微信服务号客户端,但是未来会有微信小程序,支付宝生活号,支付宝小程序,手机App,因此需要有用户的客户端信息。
+
+## 微信端用户
+
+微信端用户来源分为以下两种途径:
+
+* 扫码关注:通过扫描微信固定二维码扫码关注绘服务,二维码包括小区推广二维码,智能停车场场内缴费码,充电桩充电口动态二维码,充电桩主机二维码
+
+* 页面访问:在微信公众号访问绘服务分享出去的网页,如通知公告,新闻资讯,通过微信的用户授权拿到的用户信息。
+
+* 线上关注:用户通过微信的公众号搜索关注。
+
+创建用户的基础信息均通过拿到的openId向微信获取用户信息(如昵称,头像,所在地),由于绘服务已经绑定了微信的开放平台,因此微信端的用户`唯一标识`可以通过unionId区分或通过应用类型+openId组合区分,因为微信的不同端(小程序,公众号,Ouath2.0授权登录)的openId可能是相同的。微信端创建用户的流程如下图所示。
+
+![微信用户创建流程](image/createWechatUser.png)
+
+三种方式不同之处有以下两点:
+
+* 扫码或线上关注的用户,微信会自动将关注消息推送到我们的后台,推送的数据中带有openId,因此无需获取openId,而页面访问是需要主动向微信方获取openId的。
+
+* 扫秒平台生成的二维码(非公众号关注二维码,公众号关注二维码流程和线上关注一致)关注的用户,微信会带有一个EventKey字段,标识二维码的场景值,需要根据该场景值确定用户的来源。该场景值也决定了该如何处理扫码事件(如充电桩二维码推送充电入口,小区二维码推送小区欢迎页面等)。
+
+## 用户实体关系
+
+平台用户的实体关系如下图所示。
+
+![用户实体关系图](image/userER.png)
+
+各个实体说明如下:
+
+* 用户:主表,存储用户的账号信息,如手机号,密码(第三方授权登录时无密码),用户来源,创建时间,更新时间等;
+
+* 用户个人资料:用户维护的个人资料,如昵称,头像,性别,邮箱,生日等网络社交资料,该资料未必真实。一个用户对应一份个人资料。
+
+* 用户实名信息:用户实名认证信息,中国大陆用户通过身份证认证,存储如身份证正反面照片,身份证号码,性别,生日,姓名等信息。一个用户对应一条实名信息。**该表作为预留设计,目前绘服务端并未启用强制的实名认证**。
+
+* 用户人脸:用户真实人脸照片,用于人脸门禁通行或其他方面。目的在于一个用户只需添加一次人脸,即可在多个小区申请刷脸通行。一个用户对应一条用户人脸记录。
+
+* 人脸变更记录:用户在不同小区可能会上传不同的人脸,或随着年龄变化无法通行后再次更新,该人脸变更记录为人脸的历史版本,方便做数据分析,一个用户人脸对应多条变更记录。
+
+* 用户家庭成员:目前用于住户帮助录入家庭成员的人脸(如小孩,老人不方便自助录入的),一个用户拥有多名家庭成员。
+
+* 用户第三方授权信息:该表用于区分第三方授权对应的用户是否已经被创建,存储用户已授权的第三方的唯一标识信息,如微信平台的unionId,支付宝的userId。一个用户有多条第三方授权信息(如支付宝,微信等)。
+
+* 第三方授权详细信息:该表存储通过第三方授权注册的用户的详细信息,如头像,昵称,openId,所在地,性别等等,方便有必要时可以查看最初的授权信息。
+
+* 用户活跃应用:记录平台用户在平台各个C端应用的使用和活跃情况,如公众号,小程序,支付宝生活号,手机App。需要记录的数据包括应用类型,终端设备,设备唯一标识(App端),推送消息的token(App端),首次活跃时间,最近活跃时间,累计使用次数等。方便查看用户在各个应用的活跃度分布情况。
+
+除用户活跃应用数据表目前没有外,其他数据表结构可以参考绘服务的目前已有的数据表。
+
+## 微信对接注意实现
+
+微信推送的信息入口只允许指定一个,因此平台需要给微信提供统一的一个入口处理微信推送的全部事件。
+
+## 微信对接SDK
+
+为简化开发实现,可以考虑使用WxJava开发包,该开发包为开源代码,每两个月发布一次版本。GitHub地址:[https://github.com/wechat-group/WxJava](https://github.com/wechat-group/WxJava)。