目錄
到Github獲取源碼請點擊此處
一. 數據庫還原
- 新建Mysql數據庫, 你可以使用自己熟悉的Mysql圖形界面操作工具快速建庫.
- 在新創建的ashop數據庫中執行腳本文件
ashop.sql
. 該腳本存放在創建數據庫的sql腳本
目錄下.
- 成功導入后, 數據庫將擁有11張表
二. Mybatis逆向生成工具的使用
- 接下來我們通過Mybatis逆向生成工具根據數據庫表生成對應的pojo類和與Mybatis有關的文件.
- 首先在IDE中導入
Mybatis逆向生成工具/MybatisGenerator
項目, 修改generatorConfig.xml
文件中連接數據庫的信息.
- 設置好后運行
GeneratorSqlmap
- 運行結束后我們會在
mapper
與pojo
包下獲得逆向生成的與數據庫有關的數據. - 我們先保留着這些文件, 在下面項目環境搭建的過程中將會拷貝這些文件. 有了逆向生成工具就不用手動生成這些數據了.
三. 搭建項目環境
- 項目的Maven結構如下:
- 在idea中先創建
ashop
Maven項目, 然后依次按層級創建好各個模塊. 最后的結果如下圖:
- 創建好Maven項目后需要為各個子模塊添加依賴, 具體的依賴放在
項目中各個模塊的pom依賴
目錄下. - 接下來在
ashop-rpc-service-impl
模塊的src/main/resource
目錄下添加配置文件, 所有配置文件均放在resource(配置文件)
目錄下.
- 接下來, 把之前用逆向生成工具生成的
pojo
類放到pojo
模塊中(在java目錄下創建com.ashop.pojo包
), 並把逆向工程生成的mapper
包下的mapper文件放到mapper模塊中, 注意.java
和.xml
文件是要分開放的,.java
放在源碼位置,.xml
放在resource
資源目錄下 - 我項目做到這里的時候遇到了錯誤, Mapper文件報錯, 原因是編譯打包后mapper接口文件和.xml文件不在同一個包內. 原因是我在resources目錄下建包的時候建錯了...
- 至此為止項目的框架搭建完成.
四. 在linux虛擬機上部署zookeeper, 搭建Dubbo服務.
- 先新建一台linux虛擬機, 然后使用類似Xshell等工具將jdk和zookeeper的安裝包上傳到虛擬機中.
linux虛擬機安裝JDK
- 下面是JDK的安裝過程:
- 首先你需要把linux版本的JDK上傳到虛擬機上.
- 創建java安裝目錄:
mkdir /usr/local/jdk
- 解壓JDK壓縮包:
tar zxvf 跟上JDK壓縮包名
- 拷貝解壓后的JDK到安裝目錄中:
cp -rf 解壓JDK文件名 /usr/local/jdk/
- 配置環境變量: 打開編輯器
vi /etc/profile
, 追加以下內容
- 退出編輯器, 輸入指令讓環境變量生效:
source /etc/profile
- 最后輸入
java
或javac
等指令檢查是否配置成功.
安裝zookeeper
- 首先把zookeeper的壓縮包上傳到linux虛擬機上
- 創建存放zookeeper的目錄:
mkdir /usr/local/zookeeper
- 解壓上傳到虛擬機的zookeeper壓縮包:
tar zxvf 壓縮包名
- (演示拷貝)拷貝解壓文件到安裝目錄:
cp -rf 解壓文件名 /usr/local/zookeeper/zk1
- 進入
zk1
目錄, 在當前目錄下創建data目錄:mkdir data
- 進入
data
目錄, 並創建myid文件, 並在文件中輸入1(作為第一個zookeeper的唯一標識):vi myid
, 輸入1后保存退出
- 回到zk1目錄, 進入conf目錄, 拷貝默認配置文件:
cp zoo_sample.cfg zoo.cfg
. - 修改新的配置文件, 主要修改三個地方: 1. dataDir 2. client 3. 集群信息
- 配置完后繼續拷貝2份zookeeper到
/usr/local/zookeeper
目錄中, 我們要搭建集群, 三份zookeeper分別命名為zk1, zk2, zk3
- 注意zk2和zk3同樣對配置文件要進行配置.
- 其中zk2的端口號配置為2182, zk3的端口號配置為2183, 除此之外配置文件最下面的集群部署三個配置文件都保持一致.
- 接着, 關閉防火牆:
service iptables stop
- 啟動3個zookeeper服務:
./zk1/bin/zkServer.sh start
, 還要啟動zk2和zk3... - 查看某個zookeeper的狀態:
./zk1/bin/zkServer.sh status
- 連接zookeeper集群查看信息:
./zk1/bin/zkCli.sh
- 查看某個節點的信息:
ls /路徑
- 查看某個節點保存的具體內容:
get /路徑
- 提示: 你可以設置防火牆開放2181, 2182, 2183三個端口, 這樣就不需要每次去手動關閉防火牆了.
五. 搭建ashop-manager-web項目
ashop-manager-web
模塊的作用相當於普通BS項目中的后台. 只不過ashop-manager-web
通過調用遠程方法完成對數據庫的操作. 這就是SOA架構中面向服務的思想.- 首先在ashop項目下創建模塊ashop-manager-web, 打包模式選擇war包
- 給后端管理系統添加依賴, 首先需要依賴
service
模塊, 然后導入相關的依賴, 依賴樣本在后台管理系統的配置文件
目錄中. - 在模塊的
src/main/resource
目錄下, 完成spring配置文件的配置. - 首先需要給出
applicationContext-service.xml
配置文件. - 然后是
applicationContext-dubbo.xml
配置文件 - 最后創建
springmvc.xml
配置文件 - 拷貝提供的靜態資源到
ashop-manager-web
模塊中. (拷貝到webapp中)
- 接下來在后端管理系統的java目錄下創建
com.ashop.manager.controller
包, 並創建PageController
類, 在類中編寫代碼完成頁面跳轉以及管理后台首頁的加載.
- 然后對
ashop
總項目進行install, 你可能會在install時遇到一些小錯誤, 靜下心根據錯誤提示修改即可. - install完后到
ashop-manager-web
項目中, 使用tomcat7插件進行發布. (Maven命令-Tomcat7:run)
- 啟動完畢后我們到瀏覽器的地址欄中輸入
http://localhost:8080
, 即可進入商城的后台管理頁面
- 到此為止, 環境搭建暫時告一段落. 下面補充數據庫表的介紹
六. 數據庫表分析
- 內容分類表:tb_content_category
列名 | 類型 | 含義 |
---|---|---|
id | bigint(20) | 內容分類 |
parent_id | bigint(20) | 父類目 ID=0 時,代表的是一級的類目 |
name | varchar(50) | 分類名稱 |
status | int(1) | 狀態:可選值:1(正常),2(刪除) |
sort_order | int(4) | 排列序號,表示同級類目的展現次序,如數值相等 則按名稱次序排列。取值范圍:大於零的整數 |
is_parent | tinyint(1) | 該類目是否為父類目,1 為 true,0 為 false |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 內容表: 內容表:tb_content
列名 | 類型 | 含義 |
---|---|---|
id | bigint(20) | 主鍵 |
category_id | bigint(20) | 內容分類 ID |
title | varchar(200) | 內容標題 |
sub_title | varchar(100) | 子標題 |
title_desc | varchar(500) | 標題描述 |
url | varchar(500) | 鏈接 |
pic | varchar(300) | 圖片絕對路徑 |
pic2 | varchar(300) | 圖片 2 |
content | text | 內容 |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 1.3 商品表:tb_item
列名 | 類型 | 含義 |
---|---|---|
id | bigint(20) | 商品 id,同時也是商品編號 |
title | varchar(100) | 商品標題 |
sell_point | varchar(500) | 商品賣點 |
price | bigint(20) | 商品價格,單位為:分 |
num | int(10) | 庫存數量 |
barcode | varchar(30) | 商品條形碼 |
image | varchar(500) | 商品圖片,以逗號分隔的多個圖片的 url 地址字符 串 |
cid | bigint(10) | 所屬類目,葉子類目 |
status | tinyint(4) | 商品狀態,1-正常,2-下架,3-刪除 |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 1.4 商品分類表:tb_item_cat
列名 | 類型 | 含義 |
---|---|---|
id | bigint(20) | 商品分類 ID |
parent_id | bigint(20) | 父類目 ID=0 時,代表的是一級的類目 |
name | varchar(50) | 類目名稱 |
status | int(1) | 狀態。可選值:1(正常),2(刪除) |
sort_order | int(4) | 排列序號,表示同級類目的展現次序,如數值相等 則按名稱次序排列。取值范圍:大於零的整數 |
is_parent | tinyint(1) | 該類目是否為父類目,1 為 true,0 為 false |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 商品描述表:tb_item_desc
列名 | 類型 | 含義 |
---|---|---|
item_id | bigint(20) | 商品 ID |
item_desc | text | 商品描述 |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 商品規格參數模板表:tb_item_param
列名 | 類型 | 含義 |
---|---|---|
id | bigint(20) 主鍵 | |
item_cat_id | bigint(20) | 商品分類 ID |
param_data | text | 規格參數模板信息 |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 商品規格參數信息表:tb_item_param_item
列名 | 類型 | 含義 |
---|---|---|
id | bigint(20) | 主鍵 |
item_id | bigint(20) | 商品 ID |
param_data | text | 規格參數信息 |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 訂單表:tb_order
列名 | 類型 | 含義 |
---|---|---|
order_id | varchar(50) | 訂單 id |
payment | varchar(50) | 實付金額。精確到 2 位小數;單位:元。如:200.07, 表示:200 元 7 分 |
payment_type | int(2) | 支付類型,1、在線支付,2、貨到付款 |
post_fee | varchar(50) | 郵費。精確到2 位小數;單位:元。如:200.07,表示:200 元 7 分 |
status | int(10) | 狀態:1、未付款,2、已付款,3、未發貨,4、已 發貨,5、交易成功,6、交易關閉 |
create_time | datetime | 訂單創建時間 |
update_time | datetime | 訂單更新時間 |
payment_time | datetime | 付款時間 |
consign_time | datetime | 發貨時間 |
end_time | datetime | 交易完成時間 |
close_time | datetime | 交易關閉時間 |
shipping_name | varchar(20) | 物流名稱 |
shipping_code | varchar(20) | 物流單號 |
user_id | bigint(20) | 用戶 id |
buyer_message | varchar(100) | 買家留言 |
buyer_nick | varchar(50) | 買家昵稱 |
buyer_rate | int(2) | 買家是否已經評價 |
- tb_order_item
列名 | 類型 | 含義 |
---|---|---|
id | varchar(20) | 主鍵 |
item_id | varchar(50) | 商品 id |
order_id | varchar(50) | 訂單 id |
num | int(10) | 商品購買數量 |
title | varchar(200) | 商品標題 |
price | bigint(50) | 商品單價 |
total_fee | bigint(50) | 商品總金額 |
pic_path | varchar(200) | 商品圖片地址 |
- 物流表:tb_order_shipping
列名 | 類型 | 含義 |
---|---|---|
order_id | varchar(50) | 訂單 ID |
receiver_name | varchar(20) | 收貨人全名 |
receiver_phone | varchar(20) | 固定電話 |
receiver_mobile | varchar(30) | 移動電話 |
receiver_state | varchar(10) | 省份 |
receiver_city | varchar(10) | 城市 |
receiver_district | varchar(20) | 區/縣 |
receiver_address | varchar(200) | 收貨地址,如:xx 路 xx 號 |
receiver_zip | varchar(6) | 郵政編碼,如:310001 |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |
- 用戶表:tb_user
列名 | 類型 | 含義 |
---|---|---|
id | bigint(20) | 用戶表主鍵 |
username | varchar(50) | 用戶名 |
password | varchar(32) | 密碼,加密存儲 |
phone | varchar(20) | 注冊手機號 |
varchar(50) | 注冊郵箱 | |
created | datetime | 創建時間 |
updated | datetime | 更新時間 |