erp-java/DEVELOPMENT.md

202 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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进行全链路追踪