今天我們開始講解會員系統(tǒng)開發(fā)窒盐。
需求分析
- 用戶使用手機號 + 短信驗證碼實現(xiàn)快速登陸。如用戶不存在扯旷,自在創(chuàng)建帳戶
- 實名認證
- 修改用戶資料,包括:頭像索抓、昵稱钧忽、性別
- 獲取用戶資料,包括:頭像逼肯、昵稱耸黑、姓名、性別篮幢、實名認證狀態(tài)大刊、手機號
數(shù)據(jù)庫設(shè)計
dm_user 用戶表
字段 | 類型 | 空 | 默認值 | 額外 | 描述 |
---|---|---|---|---|---|
user_id | INT(11) UNSIGNED | 否 | 0 | AUTO_INCREMENT | ID |
user_mobile | VARCHAR(11) | 否 | UNIQUE KEY | 手機號 | |
user_token | VARCHAR(32) | 否 | UNIQUE KEY | 身份令牌 | |
user_nickname | VARCHAR(50) | 否 | 昵稱 | ||
user_avatar | VARCHAR(255) | 否 | 頭像 | ||
user_gender | TINYINT(1) UNSIGNED | 否 | 0 | 性別:0 未知, 1 男, 2 女 | |
user_status | TINYINT(1) UNSIGNED | 否 | 0 | KEY | 狀態(tài):0 未激活, 1 已激活 |
user_addtime | INT(11) UNSIGNED | 否 | 0 | KEY | 注冊時間 |
user_uptime | INT(11) UNSIGNED | 否 | 0 | KEY | 更新時間 |
user_lasttime | INT(11) UNSIGNED | 否 | 0 | KEY | 最后登陸時間 |
DROP TABLE IF EXISTS `dm_user`;
CREATE TABLE `dm_user` (
`user_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_mobile` VARCHAR(11) NULL DEFAULT '' COMMENT '手機號',
`user_token` VARCHAR(32) NULL DEFAULT '' COMMENT '身份令牌',
`user_nickname` VARCHAR(50) NULL DEFAULT '' COMMENT '昵稱',
`user_avatar` VARCHAR(255) NULL DEFAULT '' COMMENT '頭像',
`user_gender` TINYINT(1) UNSIGNED NULL DEFAULT 0 COMMENT '性別:0 未知, 1 男三椿, 2 女',
`user_status` TINYINT(1) UNSIGNED NULL DEFAULT 0 COMMENT '狀態(tài):0 未激活, 1 已激活',
`user_addtime` INT(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '注冊時間',
`user_uptime` INT(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新時間',
`user_lasttime` INT(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最后登陸時間',
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_mobile` (`user_mobile`),
UNIQUE KEY `user_token` (`user_token`),
KEY `user_status` (`user_status`),
KEY `user_addtime` (`user_addtime`),
KEY `user_uptime` (`user_uptime`),
KEY `user_lasttime` (`user_lasttime`)
) ENGINE=InnoDB AUTO_INCREMENT=1 COMMENT='用戶表';
dm_user_authentication 實名認證表
字段 | 類型 | 空 | 默認值 | 額外 | 描述 |
---|---|---|---|---|---|
authentication_id | INT(11) UNSIGNED | 否 | 0 | AUTO_INCREMENT | ID |
user_id | INT(11) UNSIGNED | 否 | 0 | KEY | 用戶ID |
authentication_number | VARCHAR(18) | 否 | UNIQUE KEY | 身份證號 | |
authentication_realname | VARCHAR(50) | 否 | 真實姓名 | ||
authentication_status | TINYINT(1) UNSIGNED | 否 | 0 | KEY | 狀態(tài):0 待審核, 1 未通過, 2 已認證 |
authentication_addtime | INT(11) UNSIGNED | 否 | 0 | KEY | 申請時間 |
authentication_uptime | INT(11) UNSIGNED | 否 | 0 | KEY | 審核時間 |
DROP TABLE IF EXISTS `dm_user_authentication`;
CREATE TABLE `dm_user_authentication` (
`authentication_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '用戶ID',
`authentication_number` VARCHAR(50) NULL DEFAULT '' COMMENT '身份證號',
`authentication_realname` VARCHAR(50) NULL DEFAULT '' COMMENT '真實姓名',
`authentication_status` TINYINT(1) UNSIGNED NULL DEFAULT 0 COMMENT '狀態(tài):0 待審核, 1 未通過, 2 已認證',
`authentication_addtime` INT(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '申請時間',
`authentication_uptime` INT(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '審核時間',
PRIMARY KEY (`authentication_id`),
UNIQUE KEY `user_id` (`user_id`),
UNIQUE KEY `authentication_number` (`authentication_number`),
KEY `authentication_status` (`authentication_status`),
KEY `authentication_addtime` (`authentication_addtime`),
KEY `authentication_uptime` (`authentication_uptime`)
) ENGINE=InnoDB AUTO_INCREMENT=1 COMMENT='實名認證表';
功能分解
- 發(fā)送短信驗證碼
- 用戶登錄/注冊
- 修改用戶信息(修改昵稱缺菌,性別葫辐,上傳頭像)
- 獲取用戶信息
- 提交實名認證
接下來的章節(jié),我將逐一講解每一個功能的具體實現(xiàn)