# Cube 快速启动版
### 版本: 2.6.4
### 版本特性
- [changelog.md](http://125.71.201.11:10086/project-1/doc-161/)
### 在线文档
- [魔方相关文档](http://125.71.201.11:10086)
## 单体
### Java端项目启动
1. 下载项目
```shell
git clone http://125.71.201.11:9004/cube/cube-quick-start.git -b 2.6.4
```
2. 项目结构说明
```
├─cube-quick-start(父POM: 项目依赖、modules组织)
│ ├─system-quick-start (系统管理模块: 系统管理、权限等功能) -- 单体启动项目
│ ├─VERSION.md 与前端版本对应关系
│ ├─{?} 业务模块
```
3. 初始化数据库
```shell
git clone http://125.71.201.11:9004/cube/cube-db.git -b 2.6.3
```
- 建库建表:
- cube-db/cube-mysql.sql
- cube-db/cube-dm8.sql
4. 配置并启动项目
- system-quick-start/src/main/resources/application-dev.yml 中配置 **数据库** 和 **redis**
- 业务API排除鉴权:**system-quick-start/src/main/resources/application-dev.yml** 中配置 **cube.sa-token.exclude-urls**
- system-quick-start/src/main/java/com/tievd/cube/starter/CubeSystemStarter.java 启动项目
### 前端项目启动
1. 下载项目
```shell
git clone http://125.71.201.11:9004/cube/cube-web.git -b 2.5.1
```
2. 执行命令 yarn install
3. 配置服务接口地址: src/config/index.js -> window._CONFIG['domianURL'] = 'http://127.0.0.1:8080/cube'
4. 运行yarn serve,访问 http://127.0.0.1:3000
5. 默认账号 admin 123456
### 如何升级魔方
1. 在VERSION.md对应版本号
2. Java通过Maven私服分发,修改顶级pom中 **cube-dependencies** 的版本号
3. 前端通过NPM私服分发,修改package.json中的@tievd前缀下的包的版本号,web代码则是通过切换分支覆盖文件
### 如何快速开发
1. 在cube-quick-start目录下新建业务的 module
2. 在新建的业务module中引入魔方框架提供的API库
```xml
com.tievd.cube.base
system-local-api
com.tievd.cube
cube-system-service
```
3. 将业务module作为依赖引入到 **system-quick-start**
4. 阅读[代码生成器文档](http://125.71.201.11:9004/cube/cube-codegen-engine)
5. 设计Java实体类(数据库/UI组件绑定/字段分组) -> 在线开发 -> 代码生成 -> 拷贝到项目中
6. 将vue代码拷贝到前端项目 src/views/modules 目录中
7. 将新增代码重新编译运行,在系统管理 -> 菜单管理 中添加业务菜单并绑定到前端组件路径
8. 通过系统管理 ->角色管理 -> 授权 给用户菜单权限
### 开发技巧
1. 如何在代码中获取当前登录用户
```
// 当前登陆用户的信息
LoginUser sysUser = SystemContextUtil.currentLoginUser();
```
2. 如何开启字典渲染
> 为了节省不必要的消耗,现在字典翻译需要在Controller的函数或类上注解才能渲染。
```
// 单个函数渲染
@DictMethod
// 整个类的函数都需要渲染
@DictApi
```
3. API文档生成
> 现在默认使用SpringDoc作为默认的文档规范,标准为OpenAPI 3,底层使用到了swagger。
- [springdoc文档](https://springdoc.org/)
- [knife4j文档](https://doc.xiaominfo.com/knife4j/documentation/)
- [smart-doc文档](https://smart-doc-group.github.io/#/zh-cn/?id=smart-doc)
### cube-system可选组件
[cube-system-modules](http://125.71.201.11:9004/cube/cube-system-modules)
## 微服务
### 微服务可选组件
- [微服务组件](http://125.71.201.11:9004/cube/cube-starter)
### 魔方基础服务切换到微服务
1. system-quick-start 添加依赖
```xml
com.tievd.cube.starter
starter-cloud
com.tievd.cube.base
system-cloud-api
```
2. 修改配置Nacos注册中心和配置中心
- 删除system-quick-start/src/main/resources下的application-{dev/prod}.yml配置文件,只保留application.yml,并加入以下配置
```yaml
server:
port: 8090
spring:
application:
name: cube-system
cube:
version: @cube.version@
```
- system-quick-start/src/main/resources/bootstrap.yml 取消注释,修改Nacos配置
3. 启动其他模块(网关,监控)
- [微服务生态](http://125.71.201.11:9004/cube/cube-cloud-modules)
### 业务模块切换到微服务模式
> 和魔方基础服务一样,只需要新增一个启动类即可
1. 添加依赖
```xml
com.tievd.cube.starter
starter-cloud
```
2. 新增一个启动类 DemoApplication.java 并注解 @CubeCloudApp
```java
@CubeCloudApp
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
3. 魔方提供 system-cloud-api 来调用一些底层API
4. 添加相同配置文件:配置Nacos注册中心和配置中心等
5. Demo代码示例
- [单体示例](http://125.71.201.11:9004/cube/cube-quick-start/src/branch/single-demo)
- [微服务示例](http://125.71.201.11:9004/cube/cube-quick-start/src/branch/cloud-demo)