Mall4cloud微服務商城系統(tǒng)
本商城是基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的微服務B2B2C電商商城系統(tǒng),采用主流的互聯(lián)網技術架構、全新的UI設計、支持集群部署、服務注冊和發(fā)現(xiàn)以及擁有完整的訂單流程等,代碼完全開源,沒有任何二次封裝,是一個非常適合二次開發(fā)的電商平臺系統(tǒng)。
本商城致力于為中大型企業(yè)打造一個功能完整、易于維護的微服務B2B2C電商商城系統(tǒng),采用主流微服務技術實現(xiàn)。后臺管理系統(tǒng)包含平臺管理,店鋪管理、商品管理、訂單管理、規(guī)格管理、權限管理、資源管理等模塊。
文檔
這代碼有沒有文檔呀? 當然有啦,你已經下載了,在doc這個文件夾上,實在不知道,我就給鏈接出來咯:
gitee:https://gitee.com/gz-yami/mall4cloud/tree/master/doc
本項目是一個極度遵守阿里巴巴代碼規(guī)約的項目,以下是代碼規(guī)約掃描結果
具體目錄結構和代碼規(guī)范,可以查看 https://gitee.com/gz-yami/mall4cloud/tree/master/doc/%E4%BB%A3%E7%A0%81%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84
授權
除開源版本外,本商城還提供商業(yè)版本的商城,欲知詳情,請訪問官網。
商城使用 AGPLv3 開源,請遵守 AGPLv3 的相關條款,或者聯(lián)系作者獲取商業(yè)授權(https://www.mall4j.com)
項目鏈接
https://gitee.com/gz-yami/mall4cloud
目錄結構規(guī)范
我們也有自己的目錄結構
- VO(View Object):顯示層對象,通常是 Web 向模板渲染引擎層傳輸?shù)膶ο蟆?/li>
- DTO(Data Transfer Object):數(shù)據(jù)傳輸對象,前端像后臺進行傳輸?shù)膶ο?,類似于param。
- BO(Business Object):業(yè)務對象,內部業(yè)務對象,只在內部傳遞,不對外進行傳遞。
- Model:模型層,此對象與數(shù)據(jù)庫表結構一一對應,通過 Mapper 層向上傳輸數(shù)據(jù)源對象。
- Controller:主要是對外部訪問控制進行轉發(fā),各類基本參數(shù)校驗,或者不復用的業(yè)務簡單處理等。為了簡單起見,一些與事務無關的代碼也在這里編寫。
- FeignClient:由于微服務之間存在互相調用,這里是內部請求的接口。
- Controller:主要是對內部訪問控制進行轉發(fā),各類基本參數(shù)校驗,或者不復用的業(yè)務簡單處理等。為了簡單起見,一些與事務無關的代碼也在這里編寫。
- Service 層:相對具體的業(yè)務邏輯服務層。
- Manager 層:通用業(yè)務處理層,它有如下特征:
- 1) 對第三方平臺封裝的層,預處理返回結果及轉化異常信息,適配上層接口。
- 2) 對 Service 層通用能力的下沉,如緩存方案、中間件通用處理。
- 3) 與 DAO 層交互,對多個 DAO 的組合復用。
- Mapper持久層:數(shù)據(jù)訪問層,與底層 MySQL進行數(shù)據(jù)交互。
- Task層:由于每個服務之間會存在定時任務,比如定時確認收貨,定時將活動失效等情況,這里面的Task實際上連接的是
xxl-job(具體可以查看 https://github.com/xuxueli/xxl-job )進行任務調度。 - Listener:監(jiān)聽
RocketMQ進行處理,有時候會監(jiān)聽easyexcel相關數(shù)據(jù)。
關于FeignClient,由于微服務之間存在互相調用,Feign 是http協(xié)議,理論上是為了解耦,而實際上提供方接口進行修改,調用方卻沒有進行修改的時候,會造成異常,所以我們抽取出來。還有就是對內暴露的接口,是很多地方都公用的,所以我們還將接口抽取了出了一個模塊,方便引用??梢钥吹?code>mall4cloud-api這個模塊下是所有對內feign接口的信息。
目錄結構
mall4cloud ├─mall4cloud-api -- 內網接口 │ ├─mall4cloud-api-auth -- 授權對內接口 │ ├─mall4cloud-api-biz -- biz對內接口 │ ├─mall4cloud-api-leaf -- 美團分布式id生成接口 │ ├─mall4cloud-api-multishop -- 店鋪對內接口 │ ├─mall4cloud-api-order -- 訂單對內接口 │ ├─mall4cloud-api-platform -- 平臺對內接口 │ ├─mall4cloud-api-product -- 商品對內接口 │ ├─mall4cloud-api-rbac -- 用戶角色權限對內接口 │ ├─mall4cloud-api-search -- 搜索對內接口 │ └─mall4cloud-api-user -- 用戶對內接口 ├─mall4cloud-auth -- 授權校驗模塊 ├─mall4cloud-biz -- mall4cloud 業(yè)務代碼。如圖片上傳/短信等 ├─mall4cloud-common -- 一些公共的方法 │ ├─mall4cloud-common-cache -- 緩存相關公共代碼 │ ├─mall4cloud-common-core -- 公共模塊核心(公共中的公共代碼) │ ├─mall4cloud-common-database -- 數(shù)據(jù)庫連接相關公共代碼 │ ├─mall4cloud-common-order -- 訂單相關公共代碼 │ ├─mall4cloud-common-product -- 商品相關公共代碼 │ ├─mall4cloud-common-rocketmq -- rocketmq相關公共代碼 │ └─mall4cloud-common-security -- 安全相關公共代碼 ├─mall4cloud-gateway -- 網關 ├─mall4cloud-leaf -- 基于美團leaf的生成id服務 ├─mall4cloud-multishop -- 商家端 ├─mall4cloud-order -- 訂單服務 ├─mall4cloud-payment -- 支付服務 ├─mall4cloud-platform -- 平臺端 ├─mall4cloud-product -- 商品服務 ├─mall4cloud-rbac -- 用戶角色權限模塊 ├─mall4cloud-search -- 搜索模塊 └─mall4cloud-user -- 用戶服務
技術選型
| 技術 | 版本 | 說明 |
|---|---|---|
| Spring Boot | 2.4 | MVC核心框架 |
| Feign | 3.0 | 服務調用 |
| Nacos | 2.0 | 服務注冊與發(fā)現(xiàn) |
| Seata | 1.4 | 分布式事務 |
| Mybatis | 2.1 | 持久層框架 |
| hutool | 5.5 | JAVA工具集 |
| pagehelper | 1.3 | Mybatis分頁插件 |
| Redis | 2.4 | 分布式緩存 |
| RocketMQ | 2.2 | 消息隊列 |
| canal | 1.1 | 數(shù)據(jù)庫同步 |
| Spring Cloud Gateway | 3.0 | 網關 |
| Spring Cloud LoadBalancer | 3.0 | 負載均衡 |
| ElasticSearch | 7.9 | 數(shù)據(jù)搜索 |
| minio | 8.0 | 文件上傳 |
| Knife4j | 3.0 | MVC框架集成Swagger生成Api文檔 |
| Element UI | 2.13 | UI框架 |
| vue、uni-app | vue2.6 | JS框架 |
系統(tǒng)架構圖
商城部署后 API 地址
| 服務 | 地址 |
|---|---|
| mall4cloud-gatway 網關服務 | http://127.0.0.1:9000 |
| mall4cloud-auth 授權校驗服務 | http://127.0.0.1:9101 |
| mall4cloud-biz 業(yè)務代碼服務(如圖片上傳/短信等) | http://127.0.0.1:9000 |
| mall4cloud-leaf 基于美團leaf的生成id服務 | http://127.0.0.1:9100 |
| mall4cloud-multishop 商家服務 | http://127.0.0.1:9103 |
| mall4cloud-order 訂單服務 | http://127.0.0.1:9106 |
| mall4cloud-payment 支付服務 | http://127.0.0.1:9113 |
| mall4cloud-product 商品服務 | http://127.0.0.1:9112 |
| mall4cloud-rbac 用戶角色服務 | http://127.0.0.1:9102 |
| mall4cloud-search 搜索服務 | http://127.0.0.1:9108 |
| mall4cloud-user 用戶服務 | http://127.0.0.1:9105 |
部署教程
部署教程請參考該文件夾下的/基本開發(fā)文檔/mall4cloud開發(fā)環(huán)境搭建.md以及/開發(fā)環(huán)境搭建目錄下的中間件安裝。
代碼運行相關截圖
1.后臺截圖
-
平臺端
-
商家端
