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