强烈推荐一个开源微电商项目luban-mall

2023-10-30 01:20

本文主要是介绍强烈推荐一个开源微电商项目luban-mall,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

luban-mall 项目脱胎于开源电商项目mall,并在这一开源醒目的基础上由鲁班学院以伯乐老师为代表等进行了项目增强和完善。它是基于SpringBoot+MyBatis的电商系统,包括前台商城系统后台管理系统

前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、代码生成设置等模块。将这一项目吃透,对于Java开发人员来说非常有助于掌握java技术栈中主流的技术框架,既能学习电商项目的架构技术,也能熟悉和掌握电商项目中的业务开发。

1 电商分布式架构图

鲁班电商项目分布式架构图
图 1 鲁班电商项目分布式架构图

2 单体架构

对于个人学习而言,最开始我们选择从单体架构开始。后面项目的业务模块多了和复杂起来之后,为了减少项目的耦合度才开始按照相互独立的业务模块拆分出微服务,走分布式系统架构路线。任何事情都应该从简单开始,本电商项目的起步学习阶段采用的是前后端分离的单体架构技术。

2.1 工程介绍

鲁班电商项目业务架构图
图 2 鲁班电商项目业务架构图

工程名描述
mall-common基础工程
mall-security基础校验
mall-admin商品后台管理系统,包括商品中心、活动管理和订单管理等
mall-core电商系统业务核心系统,主要进行订单处理
mall-search商品搜索
mb-generatormybatis工具类
luban-admin-web管理后台的web项目
luban-front-web电商前端web项目

2.2 技术选型

前后分离

后端技术选型

技术说明官网
Spring Boot容器+MVC框架https://spring.io/projects/spring-boot
Spring Security认证和授权框架https://spring.io/projects/spring-security
MybatisORM框架http://www.mybatis.org/mybatis-3/zh/index.html
MyBatisGenerator数据层代码生成http://www.mybatis.org/generator/index.html
PageHelperMyBatis物理分页插件http://git.oschina.net/free/Mybatis_PageHelper
Swagger-UI文档生成工具https://github.com/swagger-api/swagger-ui
Elasticsearch搜索引擎https://github.com/elastic/elasticsearch
RabbitMq消息队列https://www.rabbitmq.com/
Redis分布式缓存https://redis.io/
MongoDb文档型数据库https://www.mongodb.com/
zookeeper分布式锁https://zookeeper.apache.org/
Docker应用容器引擎https://www.docker.com/
Druid数据库连接池https://github.com/alibaba/druid
OSS对象存储https://github.com/aliyun/aliyun-oss-java-sdk
JWTJWT登录支持https://github.com/jwtk/jjwt
LogStash日志收集https://github.com/logstash/logstash-logback-encoder
Lombok简化对象封装工具https://github.com/rzwitserloot/lombok
Seata全局事务管理框架https://github.com/seata/seata
Portainerdocker容器可视化管理工具https://github.com/portainer/portainer
canal数据同步https://github.com/alibaba/canal

前端技术选型

技术说明官网
Vue前端框架https://vuejs.org/
Vue-router路由框架https://router.vuejs.org/
Vuex全局状态管理框架https://vuex.vuejs.org/
Element前端UI框架https://element.eleme.io/
Axios前端HTTP框架https://github.com/axios/axios
v-charts基于Echarts的图表框架https://v-charts.js.org/

环境依赖

工具版本号下载
JDK1.8https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Mysql5.7https://www.mysql.com/
Redis3.2https://redis.io/download
Elasticsearch6.2.2https://www.elastic.co/downloads
MongoDb3.2https://www.mongodb.com/download-center
RabbitMq3.7.14http://www.rabbitmq.com/download.html
nginx1.10http://nginx.org/en/download.html

3 后端开发环境搭建

扫描本文底部的微信二维码关注笔者的微信公众号码农进阶之路2020,发送消息【luban-mall】可获得luban-mall项目的百度网盘下载地址。

  • 下载 luban-mall工程,包含模块(mall-common,mall-security,mall-admin,mall-core,mall-search,mb-generator

  • IDE导入luban-mall项目

鲁班电商项目后台工程结构图
图 3 鲁班电商项目后台工程结构图

3.1安装Mysql数据库并初始化数据

  • 安装myql,创建数据库,默认mall
    mysql的安装可以参考这篇文章:MySQL 安装

如果需要在Linux服务器上安装Mysql5.7,请参考我的这篇文章:Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug

#使用root账户登录命令行客户端(如Navicat或IDEA中的DataSource)后执行sql脚本创建mall数据库
create database mall;
#设置全局密码验证策略和长度限制,防止创建用户授予密码时报错
set global validate_password_policy=LOW;
set global validate_password_length=8;
#创建新的druid用户及登录密码
create user 'druid'@'%' IDENTIFIED BY 'druid705';
#查询root用户是否具备给其他用户授权的限制
use mysql;
SELECT host,user,Grant_priv,Super_priv FROM user where user='root';
#如果你以上查询结果Grant_priv字段的值为'N',则执行以下sql使root用户可以给其他用户授予操作权限
UPDATE user SET Grant_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
#授予druid用户对mall库下表的增删改查权限和创建和删除表、视图的一系列权限
GRANT CREATE,DROP,ALTER,INSERT,UPDATE,SELECT,DELETE on mall.* to 'druid'@'%' with grant OPTION;
  • 创建好mall数据库和druid用户并使用root账户给其授权后就可以使用druid账户登录连接mysql的mall数据库,在客户端命令控制台中将项目根目录下的document/sql/mall.sql脚本拷贝进去并执行建表和插入数据了

3.2 Redis安装

读者可参考这篇文章安装缓存数据库Redis:Redis 安装 包含了windows系统和Linux系统下Redis的安装,Redis官网建议使用Linux系统下安装最新稳定版本redis,目前的稳定版本为redis-6.0.8。不过为了方便本地开发,我们可以在本地安装windows系统下的redis-3.2版本。上了测试和生产环境最好换成Linux系统下的Redis服务。

3.3 ElasticSearch 安装

读者可参考我的这篇文章大数据分析利器ElasticSearch入门(一)安装ES,不过笔者当时安装的版本是7.3.2版本,Linux和Windows系统下的安装内容都有,而且步骤非常详细,对于安装过程中出现bug进行了解决和规避。

3.4 MongoDB 安装

(1) Windows 系统下安装 MongoDB

读者可参考菜鸟教程的这篇文章在Windows系统下安装 MongoDB 文档数据库:
Windows 平台安装 MongoDB

(2) linux 系统下安装 MongoDB

读者可参考菜鸟教程的这篇文章在Linux系统下安装 MongoDB 文档数据库:
Linux平台安装MongoDB

3.4 RabbitMQ 安装

读者可参考笔者的这篇文章安装 RabbitMQ: 快速入门高级消息中间件RabbitMQ 文中囊括了 Windows 平台和 Linux 平台下消息队列 RabbitMQ 的安装

4 启动后台项目服务

4.1 启动 mall-admin 项目服务

修改mall-admin项目中src/main/resource/application.yml 中的Mysql数据库连接配置信息

spring:datasource:url: jdbc:mysql://localhost:3306/mall?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8username: druidpassword: druid705

修改完成后运行 mall-admin 模块中AdminApplication启动类中的Main 方法启动mall-admin服务,端口号为8091

4.2 启动 mall-core 项目服务

在 mall-core 项目中的启动配置项中的 redis、mongodb 和 rabbitmq 服务器连接参数换成自己安装时配置的参数值

application.yml

spring:datasource:url: jdbc:mysql://localhost:3306/mall?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8username: druidpassword: druid705druid:initial-size: 5 #连接池初始化大小min-idle: 10 #最小空闲连接数max-active: 20 #最大连接数web-stat-filter:exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据stat-view-servlet: #访问监控网页的登录用户名和密码login-username: druidlogin-password: druiddata:mongodb:host: 134.175.187.61uri: mongodb://mongod:<password>@<host>:27017/testredis:host: 134.175.187.61 # Redis服务器地址database: 0 # Redis数据库索引(默认为0)port: 6379 # Redis服务器连接端口password:  # Redis服务器连接密码(默认为空)jedis:pool:max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)max-idle: 8 # 连接池中的最大空闲连接min-idle: 0 # 连接池中的最小空闲连接timeout: 3000ms # 连接超时时间(毫秒)rabbitmq:host: localhostport: 5672virtual-host: /   #mallusername: adminpassword: admin123publisher-confirms: true #如果对异步消息需要回调必须设置为true

注意: 上面的mongdb连接的和需要替换成你自己配置mongodb是创建的mongod用户密码和mongodb服务安装所在的服务器IP地址或着域名

依次次启动redis服务、mongodb服务和rabbitmq服务,然后运行启动类CoreApplication.java中的main方法,启动 CoreApplication 项目,服务端口为8081

4.3 启动 mall-search 服务

启动 elastic-search服务,并修改 mall-search 模块中的应用能启动配置文件application.yml 中关于 mysql 数据库和 elasticsearch 的客户端连接配置信息对应自己安装时的参数值

application.yml

spring:datasource:url: jdbc:mysql://localhost:3306/mall?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8username: druidpassword: druid705druid:initial-size: 5 #连接池初始化大小min-idle: 10 #最小空闲连接数max-active: 20 #最大连接数web-stat-filter:exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据stat-view-servlet: #访问监控网页的登录用户名和密码login-username: druidlogin-password: druiddata:elasticsearch:repositories:enabled: truecluster-nodes: localhost:9200cluster-name: elasticsearchelasticsearch:rest:uris: ["http://localhost:9200"]

然后再运行SearchApplication启动类中的main方法,在笔者的本地开发环境启动过程中报了加载 elasticsearch 节点失败的异常,但并不影响项目正常启动,服务端口为8500。异常信息如下:

2020-11-28 16:30:31.783 ERROR 24136 --- [           main] .d.e.r.s.AbstractElasticsearchRepository : failed to load elasticsearch nodes : org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: 

异常信息显示配置的 elasticsearch 节点不可用,这个问题后面有时间研究设计ES查询业务时再来解决。到时解决了笔者再专门发一篇关于ES的文章。

5 启动后台管理前端项目服务

扫描文章底部微信二维码关注笔者的微信公众号码农进阶之路2020,发送关键词信息【luban–web-admin】即可获得下载鲁班电商项目后台管理项目的前端代码克隆地址

前端项目基于Vue+Element实现。需要依赖 nodejs,所以需要提前下载安装nodejsnodejs 下载地址: nodejs安装包下载地址

使用git将 luban-web-admin项目克隆至本地后使用 VScode 以打开文件夹的方式打开项目,在 TERMINAL 命令行控制台中执行 npm install命令完成项目依赖包的安装,如果按照过程中出现 node-sass 安装失败的问题,请参考这篇文章解决:node-sass 安装失败的各种坑

安装依赖模块成功后,执行 npm run dev 命令在本地启动前端项目服务。
项目启动成功后控制台显示服务运行在 http://localhost:8090

luban-admin-web项目启动成功截图
图 4 uban-admin-web项目启动成功截图

6 电商后台管理项目效果体验

前后端项目启动成功后,在谷歌浏览器中输入 http://localhost:8090
会弹出登录对话框,输入 admin用户名,密码:admin1234,然后点击登录
后台用了spring-security 技术对用户的操作请求进行了认证和鉴权拦截。

电商后台管理系统首页
图 5 电商后台管理系统首页

目前有商品、订单和营销三个大菜单。每个大菜单下都有相应的子菜单模块,读者可以自己点击相应的子菜单按钮,进入相应的操作页面。具体可查看luban-mall/document/reference目录下的dev_flow.md 开发进度文档。

以下是商品菜单下的商品列表页面:

商品列表页面
图 6 商品列表页面

luban-mall 微电商项目的环境搭建和本地服务启动准备内容就讲到这里,文章首发个人的微信公众号“码农的进阶之路2020",欢迎初次阅读笔者文章的读者朋友们加个关注,笔者会不定期推送技术干货文章,与读者粉丝们共同成长。
微信二维码

这篇关于强烈推荐一个开源微电商项目luban-mall的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/304653

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关