Browse Source

Gitbook Auto Published

Willin Wang 8 years ago
parent
commit
799d5a9e64
6 changed files with 102 additions and 0 deletions
  1. 2 0
      SUMMARY.md
  2. BIN
      _static/project/flow.png
  3. BIN
      _static/project/sys.png
  4. BIN
      _static/project/user.graffle
  5. 48 0
      project/user/db.md
  6. 52 0
      project/user/module.md

+ 2 - 0
SUMMARY.md

@@ -23,6 +23,8 @@
   - Tool
     - [守护进程PM2](project/tool/pm2.md)
   - [开发指南](project/develop.md)
+    - [功能模块设计](project/user/module.md)
+    - [数据库设计](project/user/db.md)
 - [运维](operation/README.md)
   - [SHELL](operation/shell.md)
   - [CI工作流](operation/workflow.md)

BIN
_static/project/flow.png


BIN
_static/project/sys.png


BIN
_static/project/user.graffle


+ 48 - 0
project/user/db.md

@@ -0,0 +1,48 @@
+# 数据库表结构设计
+
+## 用户基本信息表
+
+示例:
+
+```sql
+CREATE TABLE `user` (
+  `uid` int(11) unsigned NOT NULL COMMENT '用户ID',
+  `username` char(16) NOT NULL DEFAULT '' COMMENT '用户名',
+  `password` char(32) NOT NULL DEFAULT '' COMMENT '密码',
+  `salt` char(8) NOT NULL DEFAULT '' COMMENT '加盐加密',
+  `mobile` char(16) NOT NULL DEFAULT '' COMMENT '手机号',
+  `createdat` int(10) unsigned NOT NULL COMMENT '注册时间',
+  `updatedat` int(10) unsigned NOT NULL COMMENT '更新时间',
+  PRIMARY KEY (`uid`),
+  UNIQUE KEY `username` (`username`),
+  UNIQUE KEY `mobile` (`mobile`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+```
+
+说明:
+
+1. `uid` 主键没有设置自增id,可以随机分配,但需要在不同数据库上分号段注册,以及需要判断是否已注册
+2. `password` 密码不能直接`MD5`或`SHA1`加密存储,需要加盐加密
+3. `createdat`表示注册时间,`updatedat`表示密码修改、手机绑定等更新时间
+4. 用户名和手机号均为唯一字段
+5. 养成加注释的习惯
+
+## 用户附加信息表
+
+示例:
+
+```sql
+CREATE TABLE `usermeta` (
+  `uid` int(11) unsigned NOT NULL COMMENT '用户ID',
+  `truename` char(16) NOT NULL DEFAULT '' COMMENT '真实姓名',
+  `gender` enum('male','famale') NOT NULL DEFAULT 'male' COMMENT '性别',
+  `verified` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '实名认证',
+  PRIMARY KEY (`uid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+```
+
+将非基本信息,如开发者资料、用户详细资料、认证、等级等存入用户附加信息表(也可建多个附加信息表,如用户认证表、用户配置表等)。
+
+## 其他表
+
+部分信息不需要存入数据库,如日志,可以存在log文件中;登录信息,可以用Redis等缓存存储。综合考虑性能、成本及服务器配置决定。

+ 52 - 0
project/user/module.md

@@ -0,0 +1,52 @@
+# 功能模块设计
+
+实现 `注册、登录、注销、密码找回` 的需求。
+
+用户可以通过手机号进行登录和密码找回。
+
+## 系统结构图
+
+示例:
+
+![Image](/_static/project/sys.png)
+
+## 功能模块
+
+### 注册
+
+流程图,示例:
+
+![Image](/_static/project/flow.png)
+
+涉及参数:
+
+* 用户名
+* 密码
+* 手机号
+* 短信验证码
+
+约束条件:
+
+* 短信验证码发送频率限制 90s
+* 注册频率限制每30分钟只能注册 1次
+
+(示例,根据实际需求和业务进行约束)
+
+### 登录
+
+涉及参数:
+
+* 用户名或手机号
+* 密码
+
+约束条件:
+
+* 30分钟内 连续出错 3次 限制登录
+
+### 找回密码
+
+涉及参数:
+
+* 手机号
+* 短信验证码
+* 新密码