# 快速开始

::: info 快速上手 wwjcloud 框架

本指南将帮助您快速搭建一个 wwjcloud 项目，并运行第一个 API 接口。

:::

## 环境要求

### 📋 系统要求

- **Node.js** >= 16.0.0
- **MySQL** >= 5.7 或 8.0
- **Redis** >= 6.0 (可选，用于缓存)
- **Git** >= 2.0

### 🔧 开发工具

- **VS Code** (推荐)
- **Postman** 或 **Apifox** (API 测试)
- **MySQL Workbench** (数据库管理)

## 项目初始化

### 1. 克隆项目

```bash
# 克隆项目到本地
git clone <your-repository-url>
cd wwjcloud-nestjs
```

### 2. 安装依赖

```bash
# 安装项目依赖
npm install
```

### 3. 环境配置

复制环境配置文件：

```bash
# 复制环境配置文件
cp .env.example .env
```

编辑 `.env` 文件，配置数据库连接：

```env
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=your_password
DB_DATABASE=wwjcloud

# JWT 配置
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRES_IN=7d

# 应用配置
PORT=3000
NODE_ENV=development
```

### 4. 启动项目

```bash
# 开发模式启动
npm run start:dev
```

项目启动后，访问以下地址：

- **API 文档**：http://localhost:3000/api-docs
- **健康检查**：http://localhost:3000/health

## 第一个 API

### 1. 创建实体

在 `src/common/member/entities/Member.ts` 中：

```typescript
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
import { BaseEntity } from '../../../core/base/BaseEntity';

@Entity('member')
export class Member extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: 'username', type: 'varchar', length: 50 })
  username: string;

  @Column({ name: 'email', type: 'varchar', length: 100 })
  email: string;

  @Column({ name: 'status', type: 'tinyint', default: 1 })
  status: number;
}
```

### 2. 创建服务

在 `src/common/member/services/core/CoreMemberService.ts` 中：

```typescript
import { Injectable } from '@nestjs/common';
import { BaseService } from '../../../../core/base/BaseService';
import { Member } from '../entities/Member';

@Injectable()
export class CoreMemberService extends BaseService<Member> {
  constructor() {
    super(Member);
  }

  // 自定义业务方法
  async getActiveMembers() {
    return this.repository.find({
      where: { status: 1, is_del: 0 }
    });
  }
}
```

### 3. 创建控制器

在 `src/common/member/controllers/api/MemberController.ts` 中：

```typescript
import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { CoreMemberService } from '../../services/core/CoreMemberService';
import { Member } from '../../entities/Member';

@Controller('api/member')
export class MemberController {
  constructor(private readonly memberService: CoreMemberService) {}

  @Get()
  async getMembers() {
    const members = await this.memberService.findAll();
    return {
      code: 200,
      message: '获取成功',
      data: members
    };
  }

  @Post()
  async createMember(@Body() memberData: Partial<Member>) {
    const member = await this.memberService.create(memberData);
    return {
      code: 200,
      message: '创建成功',
      data: member
    };
  }
}
```

## 下一步

::: tip 深入学习

1. **阅读框架介绍**：了解框架的设计理念
2. **查看基础概念**：理解核心概念
3. **参考 API 文档**：了解可用的 API
4. **查看开发规范**：遵循开发规范

:::

::: warning 注意事项

- 确保所有依赖都正确安装
- 检查环境配置是否正确
- 遵循开发规范进行开发
- 定期备份数据库

::: 