## 会员小程序需求文档 ### 业务场景概述 该项目主要围绕会员场景,用于进出某个封闭赛车场。整个产品链路上只有三类用户,个人会员、车队会员、超级管理员: - 普通用户可以付费成为【个人会员】,以及展示出入场所的二维码。【个人会员】存在有效期,临近有效期时需要续费才能延续会员权益。 - 个人会员可以付费加入车队成为【车队会员】,加入车队的费用是一次性的,期限为永久。但是如果要更换车队,需要再付一次费用。 - 超级管理员在后管端对会员信息进行修改与审核。 前端分为【小程序端】和【后台管理端】 2 个部分,二者共用一个后端。 #### 小程序端 ##### 加入会员页面 会员信息填写页面。该页面主要分为三个部分: - 个人基本信息由用户输入 - 付款 ![image](https://hackmd.io/_uploads/ryA84H8ZC.png) ##### 会员页面 在该页面展示基本信息,会员个人信息页面(仅显示、不可编辑) - 姓名 - 手机号 - 身份证 - 有效期 - 所属车队 - 角色 除以上信息外,在该页面可以加入/更换车队(更换时需额外付费),也可以续费。 在该页面可出示【临时二维码】(1分钟后过期),给保安扫码验证。(保安可以是任何人,无特殊权限) ![image](https://hackmd.io/_uploads/SkClGVLZC.png) ##### 管理员页面 ~~管理员页面实际上也是会员页面,区别在于展示的信息更少,仅显示名字、手机号和角色,点击“扫码”按钮可以开启扫码。扫码即向后端请求会员信息,能够返回会员信息则代表通过,若无返回信息则显示“二维码无效”页面。~~ ##### 【活动】功能 --- #### 后管端 使用 Rails 实现,对样式无要求,表单表格能保持左右居中即可。 由于后管端不对外开放,~~因此不需要对用户进行登录鉴权。能够防止普通黑客攻击即可。~~ 因此进行简单的密码登录即可,不需要提供图形化的注册、修改密码界面。 - 会员独立页面,以列表的形式显示会员信息,包含姓名、手机号、身份证、有效期、所属车队、职务角色,提供搜索框进行模糊搜索。支持增删改查。 - 车队独立页面,以列表的形式显示车队信息,包含车队名称、负责人姓名,负责人联系电话,不需要提供搜索框。支持增删改查。 - ~~管理员独立页面,以列表的形式显示管理员的信息,包含姓名、手机号、身份证、有效期、管理权限,不需要提供搜索框。支持增删改查。~~ 付款列表,仅展示。 所有列表全量显示,不需要分页 --- ### 业务字段 ``` name:string* // 姓名 wechatID:string // 微信号 phone:string* // 手机号 idNumber:string* // 身份证 effectiveTime:时间戳 // 会员有效截至日期 club:string* // 所属车队 role:number* // 角色 // 付款列表,只会存成功的订单 payList:object[{ name, phone, time:时间戳, wechatID, orderID: string }] clubList:string[] // 车队列表 ```