tp電商項目1

1、電商項目

通常來講咱們實現某一個產品要麼是徹底新的開發(0-1的過程),咱們此次是使用TP框架進行新的開發(0-1的過程),總體有一個歸納。(可是須要注意的是,畢竟才8天左右的時間,有部分的功能可能就不是很完整)。在開發以前,咱們須要使用必定的電商的產品來進行基本概念的理清。那麼咱們使用一下一個開源的產品(ECShop)。php

 

ECShop簡介

什麼是ECShopcss

答:是一個b2c(企業對用戶)的開源商品(最早是爲摩托羅拉商品作的),以前是上海商派公司開發的(高春輝:高老)。如今這個產品已經被shopNC收購。這個產品目前基本再也不作版本更新。(小的維護)(雪藏),須要注意的是該產品目前兼容性有點小問題(不能在高版本的PHP上面運行。)html

 

 

集成開發環境:PHPstudymysql

 

 

 

 

幾個概念?jquery

b2c:企業對客戶(地方性的電商網站)laravel

c2c:客戶對客戶 淘寶(我的對我的)git

b2b:企業對企業 天貓(商家、租金、保證金)、京東(自營、第三方入駐)程序員

o2o::線上(商鋪)和線下(倉庫爲主) 京東、惟品會、蘇寧、國美github

........web

 

安裝和使用

1. 創建虛擬主機,配置host文件

 

 

 

  1. 下載和解壓(虛擬主機目錄)

 

 

 

3. 瀏覽器訪問安裝(域名+install

 

 

 

4. 安裝過程當中數據庫配置和管理員帳號配置

 

 

 

5. 前臺效果

 

 

通用的使用步驟

須要注意的是,該產品存在一個通用的使用步驟,掌握該步驟以後,不管是用該產品作什麼類型的電商都是能夠快速的上手。(手機、電腦、農產品、書本.....

 

通用使用步驟簡介

一、 創建一個商品類型

  1. 什麼是商品類型?
  2. 答:商品類型指的就是這個商品是出售什麼類型的產品,例如買手機、就叫作手機商城....

 

二、 爲商品類型指定屬性

  1. 什麼是屬性?
  2. 答:指的就是商品的特徵(共同特徵和特殊特徵)
  3. 對於不一樣的商品類型,不一樣產品之間是存在不一樣點的,例如手機產地、容量、制式..... 例如農產品甜度、綠色.....
  4. 注意:當咱們創建某個商品類型以後,須要爲該商品類型指定相應的屬性(根據一類事物進行高度的抽取,例如手機商城:a. 品牌 b.產地 c.制式 d.容量....

 

三、 創建分類

  1. 爲何要創建分類?
  2. 答:主要是爲了更好的管理商品。(例如:Apple手機 5G欄目)
  3. 特色:通常來講咱們作的分類都是無限極的分類,可是須要注意的是,通常來講無限極作到四級左右就能夠了,不要作的過深。(SEO url目錄結構最好不要超過是3級)不少公司考慮到無限極分類其實不會真的是無限極分類,可使用配置文件進行配置。

 

四、 添加商品

  1. 添加出售的商品的時候,不一樣的商品類型下,屬性是不同的,咱們須要根據不一樣的商品類型,而單獨生成對應的屬性填寫框。

 

實操商品管理

  1. 創建商品類型

 

 

 

2. 爲商品類型添加屬性

 

 

 

3. 產地屬性內容填寫

 

 

須要注意的是,屬性是能夠分類的,通常爲惟一和單選屬性。同時屬性在填寫的時候,也是可使用不一樣的方式進行屬性值的填寫,通常爲手工填寫和列表選擇。

 

 

4. 甜度屬性內容填寫

 

 

 

5.是否綠色屬性內容填寫

 

 

 

  1. 商品分類信息填寫

 

 

 

  1. 在指定欄目下,添加商品;選擇商品類型,爲對應的商品添加屬性

 

 

屬性填寫

 

 

 

8. 前臺商品展現效果

 

 

 

 

 

總結:

  1. 商品類型,一個網站是賣啥,就是啥商品類型,名稱能夠本身定義
  2. 咱們須要爲商品類型添加對應的屬性,到時候會在商品添加的時候,根據用戶選擇的商品類型而生成對應的屬性填寫框。屬性是能夠分類的,通常來講是能夠分類惟一(在購買頁的底部進行顯示,用戶是不能夠選擇的,只能看)和單選屬性(在購買頁的右側進行展現,通常是能夠選擇的)。同時屬性的屬性值的填寫也是能夠進行分類處理,通常來講是能夠分爲手工填寫(input框)和列表選擇(select框)
  3. 通常來講咱們會在後臺創建分類(主要是爲了更好的管理商品)
  4. 添加商品(1. 選擇分類 2. 選擇商品類型,生成對應的屬性填寫框,不一樣的商品類型的屬性填寫框是不同的)

 

問題:引入商品類型有啥好處?

答:主要是爲了後期的商城的擴充方便。(一個ECShop能夠實現不一樣的商城)1. 電腦 2. 蜂蜜 3. 海鮮....

 

二次開發-郵箱登陸

對於二次開發,有一個大體的認識,知道如何去作二次開發(體現是一個野的路子)沿着別人的邏輯去找(體現程序員的思惟)

 

功能需求:

 

 

 

1. 關閉註冊時候沒必要要的項目(後臺去大體查看)

 

 

後臺關閉用戶註冊時候的沒必要要的信息

 

 

 

2. 用戶進行註冊

 

 

 

3. 在註冊完成後,但願可使用郵箱進行登陸

 

 

 

 

  1. 查看登陸表單的提交actionuser.php,查看user.php裏面對登陸的處理

 

咱們須要查找$user在哪裏進行實例化,在當前文件搜索沒有發現,則只可能在當前文件的頂部開始在某個引入的文件裏面進行實例化操做。

 

 

 

 

  1. user.php文件的頂部引入的init.php文件裏面進行搜索,發生$userinit_users()函數進行返回的

 

 

經過在init.php文件進行搜索,沒有發現init_users()函數,那麼只能從頂部開始在某個文件進行引入的

 

 

 

 

  1. lib_common.php文件發現init_users()函數引入

 

 

經過函數裏面類文件的引入,咱們定義到$user對象的類文件在以下位置,可是在當前文件沒有login方法,則在該類的父類裏面確定存在login方法,那麼查看該類的父類,而後進行處理

 

 

父類文件'includes/modules/integrates/integrate.php'

 

 

 

注意:在lib_common.php文件裏面存在大量的公共函數,例如is_email()函數

 

 


如何追蹤代碼的執行的邏輯?二次開發不要改別人代碼,只能加。

 

2、環境搭建

開發環境:

 

代碼管理:SVN本地(公司如今使用的是SVN內部的代碼管理、git開源產品的管理 githublaravel ---composer進行管理)(國內oschina上面有一個叫碼雲的產品,中國版的GitHub

 

數據庫管理工具:少使用命令行、通常使用圖形化的界面(phpmyadmin web版的管理工具不少、 navicat for mysql 很不錯的 sql小海豚 front)儘可能作到每一個工具都有使用過,可是必定要有擅長的工具。

 

PHP集成環境:PHPstudywamp  xamp 如今公司使用比較多的是 vagrant 進行環境搭建,能夠保證開發環境嚴格的一種,引入一個叫作boxes的概念)PHP版本是5.4版本(PHP7瞭解: 1. PHP7裏面參數是可使用基本數據類型進行約束 function getUserById(int $id) :array{}

 

開發工具:phpstormwebstorm)稱得上IDElaravel  netbeanszendstdio 、文本編輯器:sublime Text3版本(開發)、atomGitHub開源產品)、vscode(微軟)

 

SVN管理代碼

  1. 創建一個虛擬主機(local.tp.com

 

 

若是使用SVN進行管理,必須是空目錄

 

 

 

  1. 代碼初始化(通常來講是經理完成)

檢出地址:http://192.168.84.28:8080/svn/local.tp.com/

用戶名:php25

密碼:php25

 

 

 

  1. 下載一個thinkPHP3.2.2版本作開發(初始化提交到SVN倉庫)

 

 

 

  1. 瀏覽器進行訪問(生成基礎性模塊Home模塊)

 

 

去除沒必要要的目錄

 

 

 

  1. 配置項目的靜態資源目錄和文件上傳目錄

 

 

 

  1. 創建本次開發的數據庫

 

 

 

 

 

  1. 配置項目數據庫信息(參考TP提供的convertion慣例配置文件)

 

 

 

後臺首頁搭建

通常後臺的首頁都是一個品字形的框架集(頭部、左側、右側)

模板:如今不少使用 h-ui admin框架 layUi

 

 

  1. Admin模塊創建一個IndexController控制器文件,增長四個方法

 

 

 

  1. 複製對應的靜態資源到項目目錄和創建對應的視圖文件

 

 

視圖文件

 

 

 

  1. 替換靜態資源目錄對應的cssjs以及img對應的路徑

 

 

 

4. 效果,雖然說如今框架集不建議使用(w3c不建議使用,可是在後臺仍是繼續使用)

 

 

 

 

 

3、後臺的用戶管理

如今咱們先實現後臺的用戶的管理,而後進行登陸操做。須要注意,後面咱們會學習rbac作用戶的權限管理,到時候會有角色的概念。(大體:1. 有權限(控制器下的一個方法) 2. 創建角色(爲角色分配權限) 3. 創建後臺的用戶(爲用戶分配角色))。先把用戶的模塊先完成,在實現rbac模塊。

 

表設計sh_user

完成一個後臺的用戶管理,要先進行表的設計。

 

id 主鍵 smallint unsigned auto_increment primary key comment '主鍵ID'

username varchar(30) not null comment '用戶名'

password char(32) not null comment '密碼'

salt varchar(30) not null comment ''

email varchar(30) not null comment '用戶郵箱'

add_time int unsigned comment '時間戳信息,下去查一個時間戳的2038問題'

login_ip int unsgined comment '對於點分式的IP字段,通常咱們在保存的時候都是先把IP轉換爲對應的整數進行保存,ip2long  long2ip 好處:1. 查詢快 2. 節省空間'

login_time int unsgined comment '登陸時間戳'

mark_up text comment '備註信息'

role_id tinyint not null default 0 comment '0表明尚未分配角色'

 

表結構

 

 

初始化操做

 

 

INSERT INTO `sh_user` VALUES ('1', 'caoyang', '26e1cd35f63895eee179cd5cb37af999', '597ee404d9ef3', 'gogery@163.com', '0', '0', '0', '備註信息', '1');

 

 

後臺用戶初始化

注意:通常來講後臺用戶表設計完成後,都會初始化一條超級管理員的帳號(天生要存在,而且該用戶也不能被刪除,也不能被修改)

insert into sh_user values('..............');

 

整數數據範圍

答:mediumint(無符號:0-1千六百萬)通常咱們使用的比較多的是mediumint

int(無符號:0-42億)

 

對於用戶名或者是商品名稱這類字段是否須要家裏索引?

答:具體的業務具體看。

  1. 若是咱們的業務須要作模糊的匹配(yangiPhone

> select * from TableName where username like "%yang%";(全表掃描)

 

  1. 若是咱們的業務是作精準匹配偏多(曹陽),索引就有意義(若是用戶名或者是商品名稱必需要惟一,適合創建惟一索引)

 

密碼強度的處理

答:須要注意,因爲單純的md5容易被暴力破解(字典),通常咱們都使用雙重md5處理(而後也能夠叫作加鹽)。規則:md5( md5('用戶提交的密碼') + (隨機字符串 uniqid()) );

 

用戶的curd操做(增刪改查)

完成一個用戶的curd模塊須要使用以下幾個文件:

  1. 控制器文件(curd):UserController.class.php(命名規則:通常來講是去除表前綴以後使用大駝峯的方式進行命名 UserController(類後綴) .class.php sh_goods_infoGoodsInfoController.class.php

 

  1. 模型文件(驗證)若是是模型文件命名,必須和去除表前綴的名稱一致 UserModel.class.phpsh_user

 

  1. 三個視圖文件(add.html lst.html edt.html)(注意a.TP裏面的視圖文件的後綴.html  b. 通常來講咱們TP裏面可使用標籤語法,也可使用原生PHP代碼 不少開源產品基本都是使用的原生PHP代碼 )

 

用戶增長

  1. Admin模塊增長一個UserController.class.php控制器文件,增長一個add方法

 

 

 

  1. 增長一個add.html視圖文件

 

 

效果

 

 

  1. Admin模塊增長一個UserModel.class.php模型文件,主要負責數據的校驗,以及數據的附加處理(例如,密碼的加密操做,到時候會使用模型裏面的鉤子函數進行處理)

 

 

 

 

 

用戶展現

  1. Admin模塊的UserController控制器文件增長一個lst方法(不要使用list關鍵字),獲取全部數據

 

 

 

  1. 增長一個lst.html視圖文件

 

 

效果

 

 

用戶編輯

1.Admin模塊的UserController控制器文件增長一個edt方法,完成編輯操做

更新入庫 save返回值是受影響的行數,有可能爲0

因此須要這樣判斷if( $userModel->save() !== false ){}

 

 

 

 

2.增長一個edt.html視圖頁面

 

 

效果

 

 

 

3.Admin模塊增長一個UserModel.class.php模型文件,主要負責數據的校驗,以及數據的附加處理(用戶編輯的時候能夠密碼留空)

 

 

更新鉤子函數

 

 

 

用戶刪除

1.Admin模塊的UserController控制器文件增長一個del方法

 

 

 

 

 

 

 

 

4、插件-validate

簡介

jquery的做者之一進行開發維護的。

 

 

 

下載和使用

1. 先將插件文件複製到靜態資源的目錄

 

 

 

  1. 在用戶添加的add.html視圖頁面進行先引入

 

 

 

3. add.html頁面爲要驗證的表單定義一個id和驗證提示的樣式信息,而後使用js代碼調用

 

 

代碼調用

 

 

 

  1. 效果

 

相關文章
相關標籤/搜索