202 lines
4.8 KiB
Markdown
202 lines
4.8 KiB
Markdown
# ERP Java 后端开发指南
|
||
|
||
## 环境准备
|
||
|
||
### 1. 开发环境要求
|
||
- JDK 17+
|
||
- Maven 3.8+
|
||
- Docker 20.10+
|
||
- IDE: IntelliJ IDEA / VS Code
|
||
|
||
### 2. 启动基础设施
|
||
```bash
|
||
# 进入项目根目录
|
||
cd /root/.openclaw/workspace/erp-java-backend
|
||
|
||
# 启动所有基础设施服务
|
||
docker-compose up -d
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
|
||
# 访问服务
|
||
# Nacos控制台: http://localhost:8848/nacos (账号:nacos 密码:nacos)
|
||
# RocketMQ控制台: http://localhost:8080
|
||
# SkyWalking UI: http://localhost:8081
|
||
# MinIO控制台: http://localhost:9001 (账号:minioadmin 密码:minioadmin123)
|
||
```
|
||
|
||
### 3. 初始化数据库
|
||
```bash
|
||
# 数据库已通过docker-compose自动初始化
|
||
# 数据库连接信息:
|
||
# - 主机: localhost:3307
|
||
# - 数据库: erp_java
|
||
# - 用户名: erp_user
|
||
# - 密码: erp123456
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
### 模块说明
|
||
```
|
||
erp-java-backend/
|
||
├── common/ # 公共模块
|
||
│ ├── common-core/ # 核心工具类、常量、异常
|
||
│ ├── common-web/ # Web相关(响应封装、异常处理)
|
||
│ ├── common-mybatis/ # MyBatis配置
|
||
│ └── common-redis/ # Redis配置
|
||
├── services/ # 业务服务
|
||
│ ├── api-gateway/ # API网关(待实现)
|
||
│ ├── user-service/ # 用户服务(已创建)
|
||
│ ├── product-service/ # 商品服务(待实现)
|
||
│ ├── order-service/ # 订单服务(待实现)
|
||
│ ├── inventory-service/ # 库存服务(待实现)
|
||
│ ├── finance-service/ # 财务服务(待实现)
|
||
│ ├── admin-service/ # 总控服务(待实现)
|
||
│ ├── file-service/ # 文件服务(待实现)
|
||
│ └── notification-service/ # 通知服务(待实现)
|
||
└── infrastructure/ # 基础设施配置
|
||
```
|
||
|
||
## 开发流程
|
||
|
||
### 1. 创建新服务
|
||
```bash
|
||
# 1. 在services目录下创建新服务目录
|
||
mkdir -p services/new-service/src/main/java/com/erp/newservice
|
||
|
||
# 2. 复制user-service的pom.xml并修改artifactId
|
||
# 3. 创建Spring Boot主类
|
||
# 4. 配置application.yml
|
||
# 5. 在父pom.xml中添加模块
|
||
```
|
||
|
||
### 2. 代码规范
|
||
- 使用Lombok减少样板代码
|
||
- 使用MapStruct进行对象转换
|
||
- 使用MyBatis Plus进行数据访问
|
||
- 遵循RESTful API设计规范
|
||
- 使用Swagger/OpenAPI生成API文档
|
||
|
||
### 3. 数据库开发
|
||
```java
|
||
// 实体类示例
|
||
@Data
|
||
@TableName("table_name")
|
||
public class Entity {
|
||
@TableId(type = IdType.AUTO)
|
||
private Long id;
|
||
|
||
@TableField(fill = FieldFill.INSERT)
|
||
private LocalDateTime createdAt;
|
||
}
|
||
|
||
// Repository接口
|
||
@Mapper
|
||
public interface EntityRepository extends BaseMapper<Entity> {
|
||
// 自定义查询方法
|
||
}
|
||
|
||
// Service实现
|
||
@Service
|
||
public class EntityServiceImpl extends ServiceImpl<EntityRepository, Entity> {
|
||
// 业务逻辑
|
||
}
|
||
```
|
||
|
||
## 启动服务
|
||
|
||
### 1. 编译项目
|
||
```bash
|
||
# 在项目根目录执行
|
||
mvn clean compile
|
||
```
|
||
|
||
### 2. 启动用户服务
|
||
```bash
|
||
# 进入用户服务目录
|
||
cd services/user-service
|
||
|
||
# 启动服务
|
||
mvn spring-boot:run
|
||
|
||
# 或者直接运行主类
|
||
java -jar target/user-service-1.0.0-SNAPSHOT.jar
|
||
```
|
||
|
||
### 3. 验证服务
|
||
```bash
|
||
# 健康检查
|
||
curl http://localhost:8082/user/api/users/health
|
||
|
||
# 获取用户列表
|
||
curl http://localhost:8082/user/api/users
|
||
|
||
# 创建用户
|
||
curl -X POST http://localhost:8082/user/api/users \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"username":"test","email":"test@example.com","passwordHash":"password123"}'
|
||
```
|
||
|
||
## 部署说明
|
||
|
||
### 1. 构建Docker镜像
|
||
```bash
|
||
# 构建所有服务
|
||
mvn clean package -DskipTests
|
||
docker build -t erp-user-service:latest services/user-service/
|
||
```
|
||
|
||
### 2. 生产环境部署
|
||
```yaml
|
||
# Kubernetes部署示例
|
||
apiVersion: apps/v1
|
||
kind: Deployment
|
||
metadata:
|
||
name: user-service
|
||
spec:
|
||
replicas: 3
|
||
selector:
|
||
matchLabels:
|
||
app: user-service
|
||
template:
|
||
metadata:
|
||
labels:
|
||
app: user-service
|
||
spec:
|
||
containers:
|
||
- name: user-service
|
||
image: erp-user-service:latest
|
||
ports:
|
||
- containerPort: 8082
|
||
```
|
||
|
||
## 监控与调试
|
||
|
||
### 1. 日志查看
|
||
```bash
|
||
# 查看服务日志
|
||
tail -f logs/user-service.log
|
||
|
||
# 查看Docker容器日志
|
||
docker-compose logs -f user-service
|
||
```
|
||
|
||
### 2. 性能监控
|
||
- SkyWalking: http://localhost:8081 (链路追踪)
|
||
- Prometheus: http://localhost:9090 (指标监控)
|
||
- Grafana: http://localhost:3000 (数据可视化)
|
||
|
||
### 3. 调试工具
|
||
- Arthas: Java诊断工具
|
||
- JConsole: JVM监控
|
||
- VisualVM: 性能分析
|
||
|
||
## 注意事项
|
||
|
||
1. **服务发现**: 所有服务需要注册到Nacos
|
||
2. **配置管理**: 使用Nacos Config管理配置
|
||
3. **分布式事务**: 使用Seata处理跨服务事务
|
||
4. **消息队列**: 使用RocketMQ进行异步通信
|
||
5. **链路追踪**: 集成SkyWalking进行全链路追踪 |