laravel電商學習系列-01 用戶模塊

1.前言

本項目中秀存,用戶新增是通過用戶自己注冊得來的,因此本章節(jié)將注冊/登錄放到用戶模塊來講。
本模塊功能包括:

  • 注冊/登錄
  • 收貨地址

課程傳送門

2. 功能分析

拿到需求杨蛋,首先是看產(chǎn)品原型兜材,了解清楚需求理澎,想好了,再去做表設計曙寡,最后才動手寫代碼糠爬。

2.1 注冊/登錄

2.1.1 需求分析

根據(jù)課程中的介紹及效果頁面,我們可以了解到举庶,該功能的需求歸納為以下幾點:

  • 用戶注冊需提供:用戶名执隧、郵箱、密碼户侥、確認密碼镀琉;
  • 注冊時,需驗證郵箱蕊唐;
  • 注冊完成后屋摔,郵箱和密碼將作為登錄的賬號和密碼使用;

附功能效果圖如下:


注冊-效果圖
登錄-效果圖
忘記密碼-效果圖

2.1.2 表設計

在表設計之前要先想好功能的實現(xiàn)邏輯替梨。

  • 實現(xiàn)邏輯
    課程中采用的是laravel自帶的用戶認證功能實現(xiàn)注冊登錄驗證和自帶的verified中間件 實現(xiàn)郵件驗證的功能钓试。其中,驗證郵箱的實現(xiàn)邏輯是副瀑,用一個字段保存用戶是否已經(jīng)通過驗證弓熏,通過中間件攔截請求跳轉(zhuǎn)到驗證頁面。
  • 表設計
    我們在思考程序該實現(xiàn)時糠睡,通常把表結(jié)構(gòu)也想了個大概挽鞠,用哪些字段,這些字段有什么用處铜幽,把這些搞清楚之后滞谢,表設計就很簡單了。
    在用戶表中除抛,需要保存郵箱狮杨、密碼用作登錄校驗;需要一個字段標識該用戶郵箱是否通過驗證到忽;郵箱作為用戶驗證的唯一標識橄教,設置為唯一鍵。
    另外喘漏,還有其他一些看起來不重要但實際很需要的字段护蝶,例如注冊時間,我們在做表設計時盡量要考慮長遠一點翩迈,有一些字段我們在前期需求中沒有用到持灰,但很可能以后運營會需要用到,比如用戶的注冊時間负饲,等項目運營起來有一定用戶量以后堤魁,需要做運營分析喂链,想要知道一段時間內(nèi)用戶的增長情況,在這種情況下妥泉,你可以懟PM沒有事先說明椭微,但鍋還是你背。
    具體的表結(jié)構(gòu)如下:
CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增id
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 用戶名
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 郵件
  `email_verified_at` timestamp NULL DEFAULT NULL, # 郵件驗證時間
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 密碼盲链,用于用戶身份驗證
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, # 登錄成功后系統(tǒng)分配給用戶的token蝇率,用于免密登錄(記住密碼)
  `created_at` timestamp NULL DEFAULT NULL, # 創(chuàng)建時間,用戶的注冊時間
  `updated_at` timestamp NULL DEFAULT NULL, # 更新時間
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

2.1.3 代碼借鑒

注冊登錄用的laravel自帶的auth刽沾,操作簡單本慕,可以了解一下其內(nèi)部實現(xiàn)方式laravel Auth原理淺析

2.2 收貨地址

2.2.1 需求分析

收貨地址是屬于用戶的一種屬性悠轩,在購買商品選擇收貨地址時會用到间狂。具體需求歸納如下:

  • 為了保證商品的順利送達,收件人的信息應盡可能詳盡火架,包括收件人姓名鉴象、聯(lián)系方式和詳細地址;
  • 考慮到用戶習慣何鸡,常用的收件地址變動少纺弊,將收獲地址按上次使用時間排序(X寶是設置了默認收獲地址);
收貨地址-效果圖

2.2.2 表設計

  • 實現(xiàn)邏輯
    收獲地址的功能很簡單骡男,就是增刪改查淆游。顯示的時候按照最近使用時間排個序就好了。
  • 表設計
    根據(jù)前面的需求分析隔盛,可知犹菱,用戶收獲地址這張表也很簡單,只需要保存收件人信息吮炕,關聯(lián)用戶id就好了腊脱。在表設計方面,收獲地址中的省-市-區(qū)龙亲,方便配合前端做三級聯(lián)動陕凹,當然你也可以合并成一個字段保存,省市區(qū)中間用一個字符隔開鳄炉,用的時候再分割杜耙;用了一個last_used_at字段保存該地址的最近使用時間;另外拂盯,用戶ID這里是做了聯(lián)級刪除的外鍵關聯(lián)的佑女。
    具體表結(jié)構(gòu)如下:
CREATE TABLE `user_addresses` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
  `user_id` int(10) unsigned NOT NULL, # 所屬用戶id
  `province` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 收貨地址-省
  `city` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 收貨地址-市
  `district` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 收貨地址-區(qū)
  `address` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 收獲地址-具體地址
  `zip` int(10) unsigned NOT NULL, # 郵編
  `contact_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 聯(lián)系人姓名
  `contact_phone` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 聯(lián)系人電話
  `last_used_at` datetime DEFAULT NULL, # 最后一次使用時間
  `created_at` timestamp NULL DEFAULT NULL, # 創(chuàng)建時間
  `updated_at` timestamp NULL DEFAULT NULL, # 更新時間
  PRIMARY KEY (`id`),
  KEY `user_addresses_user_id_foreign` (`user_id`),
  CONSTRAINT `user_addresses_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

2.2.3 代碼借鑒

這一節(jié)的需求和實現(xiàn)都比較簡單,但是有一些比較好的編碼習慣可以學習,例如:

  • 用授權(quán)策略來做權(quán)限控制团驱;
  • 新建專門的 Request 類做校驗簸呈;

下一節(jié):02 商品模塊-基礎

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市店茶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劫恒,老刑警劉巖贩幻,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異两嘴,居然都是意外死亡丛楚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門憔辫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趣些,“玉大人,你說我怎么就攤上這事贰您』灯剑” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵锦亦,是天一觀的道長舶替。 經(jīng)常有香客問我,道長杠园,這世上最難降的妖魔是什么顾瞪? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮抛蚁,結(jié)果婚禮上陈醒,老公的妹妹穿的比我還像新娘。我一直安慰自己瞧甩,他們只是感情好钉跷,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亲配,像睡著了一般尘应。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吼虎,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天犬钢,我揣著相機與錄音,去河邊找鬼思灰。 笑死玷犹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的洒疚。 我是一名探鬼主播歹颓,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼坯屿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巍扛?” 一聲冷哼從身側(cè)響起领跛,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撤奸,沒想到半個月后吠昭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胧瓜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年矢棚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片府喳。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒲肋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钝满,到底是詐尸還是另有隱情兜粘,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布舱沧,位于F島的核電站妹沙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏熟吏。R本人自食惡果不足惜距糖,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牵寺。 院中可真熱鬧悍引,春花似錦、人聲如沸帽氓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黎休。三九已至浓领,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間势腮,已是汗流浹背联贩。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捎拯,地道東北人泪幌。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親祸泪。 傳聞我的和親對象是個殘疾皇子吗浩,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容