# lala-cloud
**Repository Path**: jerry_up_lala/lala-cloud
## Basic Information
- **Project Name**: lala-cloud
- **Description**: springcloud架构的服务端,基于lala-framework提供各种常见的后端功能样例。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://lala-cloud-web.pages.dev
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-07-11
- **Last Updated**: 2024-08-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
jerry-up · lala · lala-cloud
springcloud架构的服务端,基于lala-framework提供各种常见的后端功能样例
## 1. 项目简介
汇聚后端开发中常用的技术,功能,场景,提供使用样例。
| 项目 | 仓库地址 | 说明 |
| ------------------------------------------------------ | ------------------------ | ------------------------ |
| framework | [](https://gitee.com/jerry_up_lala/lala-framework) [](https://github.com/jerry-up-lala/lala-framework)| 基础框架 |
| lala-cloud-web | [](https://gitee.com/jerry_up_lala/lala-cloud-web) [](https://github.com/jerry-up-lala/lala-cloud-web) | 配套前端 |
## 2. 目录说明
```sh
lala-cloud
└──apidoc #接口文档
└──assets #附件
| └──cloud #服务端代码
| └──api #公共模块
│ | └──服务名-api #
│ | └──src
│ | └──main
│ | └──java
│ | └──com.jerry.up.lala.cloud.api.服务名
| ├─gateway #网关
│ | └──src
│ | └──main
│ | └──java
│ | | └──com.jerry.up.lala.cloud.gateway
│ | | ├─component #组件
│ | | ├─config #配置
│ | | ├─ctrl #控制层
│ | | ├─entity #实体
│ | | ├─error #错误码
│ | | ├─handler #处理
│ | | ├─mapper #mapper
│ | | ├─properties #配置
│ | | ├─vo #视图对象
│ | | └──GatewayApp #服务启动类
│ | └──resources
│ | ├─mapper #mybatis mapper xml文件
│ | ├─banner.txt #欢迎页
│ | └──bootstrap.yml #配置文件
| └──server #微服务
| └──服务名-server
│ └──src
│ └──main
│ └──java
│ | └──com.jerry.up.lala.cloud.server.服务名
│ | ├─api #对内服务
│ | ├─bo #业务对象
│ | ├─constant #常量
│ | ├─ctrl #控制层
│ | ├─dto #数据对象
│ | ├─entity #实体
│ | ├─error #错误码
│ | ├─listener #监听器
│ | ├─mapper #mapper
│ | ├─properties #配置
│ | ├─service #service层
│ | ├─vo #视图对象
│ | └──GatewayApp #服务启动类
│ └──resources
│ ├─mapper #mybatis mapper xml文件
│ ├─banner.txt #欢迎页
│ └──bootstrap.yml #配置文件
|
├──deploy #部署脚本
│ ├─jar #jar方式部署
│ ├─compile.sh #编译脚本
│ └──deploy_api.sh #部署脚本
├──nacos #nacos配置文件
└──sql #sql脚本
```
## 3. 服务列表
> 未做服务领域拆分,实际项目中根据业务进行拆分
| 服务名称 | 默认端口 | 说明 | 网关路由 | 异常码 |
| ----------- | --------- | -------- | -------- | -------- |
| gateway | 8080 | 网关 | - | `11****` |
| system-server | 8081 | 系统服务 | /system | `12****` |
| core-server | 8082 | 核心服务 | /core | `13****` |
## 4. 功能列表
| 功能 | 说明 |
| ---------- | ------------------------------------------------------------ |
| 工作台 | 请求日志统计,个人信息,个人通知,快捷入口 |
| crud样例 | 提供MySQL数据库增删改查样例,包含`原生模式`,`组件模式`,`脚手架模式`等三种风格样例 |
| http样例 | 提供发送Http请求样例 |
| 线程池样例 | 提供线程池参数配置样例 |
| Redis | 提供Redis数据库增删改查以及编辑有效期样例,支持`String`,`List`,`Set`,`ZSet`,`Hash`等五种数据类型 |
| 消息队列 | 提供RocketMQ消息队列生产消费样例 |
| 系统管理 | 提供集团管理,菜单管理,用户管理,角色管理,通知管理等后台系统配置基本功能 |
| 开发工具 | 提供服务管理,路由管理,请求日志,字典管理,代码生成等研发常用工具 |
| 个人中心 | 提供个人信息维护,个人通知管理功能 |
## 5. 初始化环境
### 5.1. 安装中间件
> 可通过[lala-cloud-tool](https://gitee.com/jerry_up_lala/lala-cloud-tool)基于docker或者参照[中间件安装](https://jerry-up-blog.pages.dev/tool/middleware/)初始化环境,亦可自行安装如下版本中间件。
| 名称 | 版本 |
| ------------------------------------------- | ------------------------------------------------------------ |
| [MySQL](https://www.mysql.com/) | [5.7.36](https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-36.html) |
| [Redis](https://redis.io) | [6.2.13](https://github.com/redis/redis/releases/tag/6.2.13) |
| [Nacos](https://nacos.io/zh-cn/) | [2.2.0](https://github.com/alibaba/nacos/releases/tag/2.2.0) |
| [Seata](https://seata.io/zh-cn/) | [1.6.1](https://github.com/seata/seata/releases/tag/v1.6.1) | 7091,8091 | |
| [Sentinel](https://sentinelguard.io/zh-cn/) | [1.8.6](https://sentinelguard.io/zh-cn/blog/sentinel-1-8-6-release.html) | 8080 | sentinel/sentinel |
| [RocketMQ](https://rocketmq.apache.org/zh/) | [5.0.0](https://github.com/apache/rocketmq/releases/tag/rocketmq-all-5.0.0) |
### 5.2. 初始化数据库
> 执行 `./sql/v1.0.0.sql` ,会自动创建数据库并初始化表结构以及数据。
```sh
# 替换如下命令 对应的 ip,端口,用户名,密码。
mysql -h127.0.0.1 -P3306 -uroot -p123456 < ./sql/v1.0.0.sql
```

### 5.3. 初始化Nacos配置
> `./nacos`文件夹下,以`Group`为文件夹,`Data ID`为文件名。
1. 在`./nacos/LALA_ClOUD_GROUP`文件夹下新增`env.***.yaml`配置文件,根据实际的环境进行参数配置。
> 样例配置文件参考`./nacos/LALA_ClOUD_GROUP/env.192.168.35.61.yaml`。
| 配置项 | 说明 |
| ------ | ---- |
|env.mail.host|邮件发信主机|
|env.mail.port|邮件发信端口|
|env.mail.from|邮件发信人邮箱|
|env.mail.user|邮件发信人账号|
|env.mail.pass|邮件发信人密码|
|env.mail.subjectPrefix|邮件发信主题|
|env.error.catchPrint|捕获异常打印|
|env.error.servicePrint|业务异常打印|
|env.error.runTimePrint|运行时异常打印|
|env.error.mailOpen|异常是否邮件提醒|
|env.error.mailLevel|异常邮件提醒级别|
|env.error.mailReceivers|异常邮件收件人|
|env.log.mq|请求日志是否发送至消息队列|
|env.log.print|请求日志是否打印|
|env.mysql.host|MySQL地址|
|env.mysql.username|MySQL用户名|
|env.mysql.password|MySQL密码|
|env.redis.host|Redis地址|
|env.redis.password|Redis密码|
|env.sentinel.host|Sentinel地址|
|env.rocketmq.nameServer|RocketMQ地址|
|env.druid.username|Druid用户名|
|env.druid.password|Druid密码|
|env.token.activityTimeout|最低活跃频率,单位/秒|
|env.token.jwtSecretKey|jwt秘钥|
|env.token.redisHost|Sa-Token独立使用的Redis地址|
|env.token.redisPort|Sa-Token独立使用的Redis端口|
|env.token.redisPassword|Sa-Token独立使用的Redis密码|
|env.token.redisDatabase|Sa-Token独立使用的Redis数据库索引|
|env.access|接口是否校验访问权限|
|env.upload.max|上传Excel最大条数|
|env.upload.partition|上传Excel批量处理分区大小|
2. 将`./nacos/LALA_CLOUD_GROUP`文件夹进行压缩,导入至Nacos。

## 6. 本地开发
### 6.1. 前置准备
#### 6.1.1. JDK
项目需要JDK8

#### 6.1.2. Maven
> 使用Maven进行依赖管理,默认使用阿里云效提供的[免费制品仓库](https://jerry-up-blog.pages.dev/tool/env/repository.html#_2-1-maven%E4%BB%93%E5%BA%93)。
- 方式一,替换`pom.xml`中地址为自己使用的Maven地址,并推送framework基础依赖包至Maven仓库。
- 方式二,修改`settings.xml`为如下配置(只有拉取代码权限,无推送权限)。
```xml
/Applications/code-tool/maven/repository
rdc-releases
65edb330dfac75d8a9644531
xh10uWIOTOHV
rdc-snapshots
65edb330dfac75d8a9644531
xh10uWIOTOHV
mirror
central,jcenter,!rdc-releases,!rdc-snapshots
mirror
https://maven.aliyun.com/nexus/content/groups/public
rdc
rdc-releases::default::https://packages.aliyun.com/maven/repository/2365883-release-DDVVbg/
rdc-snapshots::default::https://packages.aliyun.com/maven/repository/2365883-snapshot-3GEFXp/
rdc
```
### 6.2. 项目导入
```sh
git clone https://gitee.com/jerry_up_lala/lala-cloud.git
```

### 6.3. 启动
#### 6.3.1. 设置环境变量
```sh
# 环境变量样例
DATA_PATH=/Users/jerry/root/root/data/lala-cloud;NACOS_CONFIG_HOST=192.168.35.61:8848;NACOS_CONFIG_GROUP=LALA_CLOUD_GROUP;NACOS_CONFIG_ENV=env.192.168.35.61.yaml
```
| 变量名 | 说明 | 样例值 | 默认值 |
| ------------------ | ------------ | -------------------------------- | --------------- |
| DATA_PATH | 数据存放路径 | /Users/jerry/root/root/data/lala-cloud | /data |
| NACOS_CONFIG_HOST | 配置中心地址 | 192.168.35.61:8848 | 127.0.0.1:8848 |
| NACOS_CONFIG_GROUP | 配置中心分组 | LALA_CLOUD_GROUP | LALA_CLOUD_GROUP |
| NACOS_CONFIG_ENV | 配置环境 | env.192.168.35.61.yaml | env.local.yaml |
#### 6.3.2. idea启动应用

#### 6.3.3. 验证接口
> 系统管理员默认用户名为`admin`, 密码为`lala`。
```sh
curl --location --request POST 'http://localhost:8080/system/open/sys/login' \
--header 'Content-Type: application/json' \
--data-raw '{
"loginName": "admin",
"passWord": "lala"
}'
```

#### 6.3.4. 接口文档
[【1】在线文档](https://jerry-up-lala-cloud.apifox.cn)
[【2】离线文档](./apidoc/lala-cloud.html)
## 7. 部署
### 7.1. 上传api模块
> api模块有改动时,运行`deploy/deploy_api.sh`,上传最新的api模块至Maven仓库。

### 7.2. 部署服务
> 进入 `deploy/jar`目录,进行如下操作。会在配置的部署文件夹路径生成jar包,启动脚本,停止脚本。
1. 修改`jar.properties`配置文件。
| 变量名 | 说明 | 默认值 |
| ------------------- | --------------------------------- | ------------------------------------------------: |
| DEPLOY_DIR | 部署文件夹,jar包以及运行脚本路径 | /Users/jerry/Desktop/jerry_up_lala/lala-cloud/jar |
| NACOS_CONFIG_HOST | 配置中心地址 | 127.0.0.1:8848 |
| NACOS_CONFIG_GROUP | 配置中心分组 | LALA_CLOUD_GROUP |
| NACOS_CONFIG_ENV | 配置环境 | env.local.yaml |
| GATEWAY_POM_VERSION | 网关pom文件版本 | 1.0.0 |
| SYSTEM_POM_VERSION | 系统服务pom文件版本 | 1.0.0 |
| CORE_POM_VERSION | 核心服务pom文件版本 | 1.0.0 |
2. 根据不同的操作系统运行`jar_mac.sh`或者`jar_linux.sh`,会编译服务并将编译后的文件以及部署脚本放至部署文件夹。
```shell
sh jar_mac.sh $服务名称
# 网关
sh jar_mac.sh gateway
# 系统服务
sh jar_mac.sh system
# 核心服务
sh jar_mac.sh core
```

3. 切换至部署文件夹下对应服务,运行`sh start.sh`。
