编辑 | blame | 历史 | 原始文档

1.关于项目

  1. 该项目使用开源项目进行二开,仓库地址:https://github.com/lilishop?tab=repositories
  2. 使用的版本是:4.4,对应的sql在:https://gitee.com/beijing_hongye_huicheng/docker/tags,下载对应版本,里面有sql

如有不懂,最好参考官方文档lilishop官方文档

2.本地环境搭建---Docker

es安装(windows):


## ik分词器安装: 1. **ik分词器版本必须和es版本保持一致** 2. 下载地址:http://cdn-us-west-release.infinilabs.com/analysis-ik/stable/ 3. 下载后将下载好的zip包拷贝到es容器中:
  1. 进入es容器:docker exec -it elasticsearch /bin/bash

  2. 安装ik分词器
    bin/elasticsearch-plugin install file:///usr/local/ik.zip

  3. 重启es容器,即安装完成

rocketmq安装(windows)

1. docker run -d --name rocketmq-name-server -p 9876:9876  apache/rocketmq:4.8.0 sh mqnamesrv

# 注意需要建一个目录,存放mq配置文件。建好目录后,在该目录下cmd执行:
2. echo "brokerIP1=127.0.0.1" > broker.conf

# -v 参数的windows文件地址改成第二步的路径地址
3. docker run -d --name rmqbroker -p 10912:10912 -p 10911:10911 -p 10909:10909 -p 8080:8080 -p 8081:8081 -e "NAMESRV_ADDR=127.0.0.1:9876" -v C:\rocketmq-config\broker.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf apache/rocketmq:4.8.0 sh mqbroker -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf

mysql8安装

docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8

redis安装

docker run --name redis -p 6379:6379 -d redis:latest

2.本地运行

SQL

SQL文件位于项目根目录的sql目录,创建数据库:lilishop,导入该sql文件

image-20250509152356149

项目结构说明

image-20250509145018934

和正常的maven多模块项目唯一的不同之处就是:业务模块都可以单独运行,一个模块就是一个服务。

抛开这一点,就把它当作普通的maven多模块项目即可。(猜测是开发时作者考虑到后续微服务版本所以做了这样的拆分)

配置文件说明

每个独立的业务模块都有一个独有的配置文件,就很像微服务。

当你本地运行时却发现改模块内部的配置文件没有起效,这是因为SpringBoot加载配置文件优先级的问题。

开源作者在项目根目录下有个叫config的文件夹,里面有一个配置文件。改了模块内部不起作用就是因为config目录下的配置文件覆盖了模块内的配置文件(注意,不是文件覆盖,而是相同配置的地方会覆盖)。

SpringBoot的配置文件加载优先级:(高-----> 低)

  1. 运行时通过 -Dspring.config.location 进行指定(在部署时经常使用)
  2. jar包 当前目录/项目根目录 的config目录下
  3. jar包内部打包好的配置文件

所以在本地开发时,修改config目录下的配置文件,或者也可以删掉这个config目录

新项目先install再运行

首先对maven父项目进行:clean、install

image-20250509150455878

因为maven多模块项目会存在A模块引用B模块,B模块是你的代码包,并不存在于maven中央仓库。

install的目的就是把每个模块都安装到本地maven仓库,这样才能正常运行。

业务模块

image-20250509150838234

idea会在这里列出哪些类加了启动类注解:@SpringBootApplication

列举出来的就是对应maven业务模块,除了AdminApplication可以不用运行,CommonApplication必须运行,其它的可根据具体调试开发哪个模块来决定是否运行,防止内存占用过高,而且每个模块在前端就对应一个前端项目,所以可以单独运行某个模块的。

  • admin模块,springboot的服务监控,可以不要
  • buyer-api模块:买家(用户)的所有api
  • common-api模块:基础api服务,所以是必须要运行的模块
  • im-api模块:im指的是即时通讯,这个是提供及时聊天的api服务
  • manager-api模块:电商平台的api服务
  • store-api模块:商家api服务
  • consumer模块:rocketmq消费者服务
  • framework模块:可以理解为系统基础模块,每个模块的实体类、mapper、service都写这里面。还有有一些配置、通用类、工具类。其它模块都会引用framework模块

系统账号

平台端:admin 123456

商家端:13011111111 111111