# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

This is a Spring Boot multi-module Java backend application called "peipei-backend" that appears to be a social platform/gaming system with WeChat Mini Program integration. The system supports clerk management, customer interactions, orders, gifts, and various social features.

## Project Structure

The project is organized as a Maven multi-module application:

- **play-admin**: Main backend API module containing REST controllers and business logic
- **play-common**: Shared utilities, configurations, and common components
- **play-generator**: Code generation tool for creating CRUD operations from database tables

## Technology Stack

- **Java 11** with Spring Boot 2.5.4
- **MyBatis Plus 3.5.3** with join support for database operations
- **MySQL 8** with Flyway migrations
- **Redis** for caching and session management
- **JWT** for authentication
- **WeChat Mini Program SDK** for WeChat integration
- **Aliyun OSS** for file storage
- **Lombok** for reducing boilerplate code
- **Knife4j/Swagger** for API documentation

## Development Commands

### Building and Running
```bash
# Build the entire project
mvn clean compile

# Package the application
mvn clean package

# Run the main application (play-admin module)
cd play-admin
mvn spring-boot:run

# Or run the packaged jar
java -jar play-admin/target/play-admin-1.0.jar
```

### Database Migrations
```bash
# Run Flyway migrations
mvn flyway:migrate

# Check migration status
mvn flyway:info
```

### Code Generation
```bash
# Generate CRUD code from database tables
cd play-generator
mvn clean compile exec:java
# Or run directly: ./run.sh (Linux/Mac) or run.bat (Windows)
```

## Configuration

The application uses Spring profiles with separate configuration files:
- `application.yml`: Main configuration
- `application-dev.yml`: Development environment
- `application-test.yml`: Test environment  
- `application-prod.yml`: Production environment

Default active profile is `test`. Change via `spring.profiles.active` property.

## Architecture

### Module Structure
- **Controllers**: Located in `modules/{domain}/controller/` - Handle HTTP requests and responses
- **Services**: Located in `modules/{domain}/service/` - Business logic layer
- **Mappers**: Located in `modules/{domain}/mapper/` - Database access layer using MyBatis Plus
- **Entities**: Domain objects representing database tables

### Key Domains
- **clerk**: Clerk/staff management and operations
- **custom**: Customer management and interactions
- **order**: Order processing and management
- **shop**: Product catalog and commerce features
- **system**: System administration and user management
- **weichat**: WeChat Mini Program integration

### Authentication & Security
- JWT-based authentication with Spring Security
- Multi-tenant architecture support
- Role-based access control
- XSS protection and input validation

### Database
- Uses MyBatis Plus for ORM with automatic CRUD generation
- Flyway for database migration management
- Logical deletion support (soft delete)
- Multi-tenant data isolation

## Code Generation Tool

The project includes a powerful code generator (`play-generator`) that can:
- Read MySQL table structures
- Generate Entity, Mapper, Service, Controller classes
- Create MyBatis XML mapping files
- Support batch generation for multiple tables

Configure database connection in `play-generator/src/main/resources/config.properties` and specify table names to generate complete CRUD operations.

## Deployment

The project includes a deployment script (`deploy.sh`) that:
- Builds and packages the application
- Deploys to remote server via SCP
- Restarts the application service

Server runs on port 7002 with context path `/api`.