# 后端模块重构 - 快速执行方案

## 重要提示
由于这个重构涉及50+个文件的创建和修改，手动逐个操作非常耗时。
建议使用以下批量操作方法快速完成。

## 方案一：使用 VS Code 全局查找替换（推荐）

### 步骤1：批量修改 Controller 路由前缀

在 VS Code 中按 `Ctrl+Shift+H` 打开全局查找替换，在 `apps/server/src/modules` 目录下执行以下替换：

#### 用户端路由前缀
```
查找: @Controller\('auth'\)
替换: @Controller('api/user/auth')
文件: **/auth/auth.controller.ts

查找: @Controller\('user'\)
替换: @Controller('api/user/profile')
文件: **/user/profile/profile.controller.ts

查找: @Controller\('user/guests'\)
替换: @Controller('api/user/guests')
文件: **/user/guest/guest.controller.ts

查找: @Controller\('orders'\)
替换: @Controller('api/user/orders')
文件: **/user/order/order.controller.ts

查找: @Controller\('reviews'\)
替换: @Controller('api/user/reviews')
文件: **/user/review/review.controller.ts

查找: @Controller\('user/coupons'\)
替换: @Controller('api/user/coupons')
文件: **/user/coupon/coupon.controller.ts

查找: @Controller\('user/finance'\)
替换: @Controller('api/user/finance')
文件: **/user/finance/finance.controller.ts

查找: @Controller\('user/finance/withdrawals'\)
替换: @Controller('api/user/finance/withdrawals')
文件: **/user/finance/withdrawal.controller.ts

查找: @Controller\('user/activity/invite'\)
替换: @Controller('api/user/activity/invite')
文件: **/user/activity/activity.controller.ts
```

#### 商家端路由前缀
```
查找: @Controller\('seller/auth'\)
替换: @Controller('api/merchant/auth')
文件: **/merchant/auth/auth.controller.ts

查找: @Controller\('seller/merchant'\)
替换: @Controller('api/merchant/profile')
文件: **/merchant/profile/profile.controller.ts

查找: @Controller\('seller/statistics'\)
替换: @Controller('api/merchant/statistics')
文件: **/merchant/statistics/statistics.controller.ts

查找: @Controller\('seller/rooms'\)
替换: @Controller('api/merchant/rooms')
文件: **/merchant/room/room.controller.ts

查找: @Controller\('seller/room-calendar'\)
替换: @Controller('api/merchant/room-calendar')
文件: **/merchant/room-calendar/room-calendar.controller.ts

查找: @Controller\('seller/orders'\)
替换: @Controller('api/merchant/orders')
文件: **/merchant/order/order.controller.ts

查找: @Controller\('seller/reviews'\)
替换: @Controller('api/merchant/reviews')
文件: **/merchant/review/review.controller.ts

查找: @Controller\('merchant/finance/transactions'\)
替换: @Controller('api/merchant/finance/transactions')
文件: **/merchant/finance/transaction.controller.ts

查找: @Controller\('merchant/finance/withdrawals'\)
替换: @Controller('api/merchant/finance/withdrawals')
文件: **/merchant/finance/withdrawal.controller.ts

查找: @Controller\('merchant/finance/settlements'\)
替换: @Controller('api/merchant/finance/settlements')
文件: **/merchant/finance/settlement.controller.ts
```

#### 管理端路由前缀
```
查找: @Controller\('admin/auth'\)
替换: @Controller('api/admin/auth')
文件: **/admin/auth/auth.controller.ts

查找: @Controller\('admin/users'\)
替换: @Controller('api/admin/users')
文件: **/admin/user/user.controller.ts

查找: @Controller\('admin/merchants'\)
替换: @Controller('api/admin/merchants')
文件: **/admin/merchant/merchant.controller.ts

查找: @Controller\('admin/rooms'\)
替换: @Controller('api/admin/rooms')
文件: **/admin/room/room.controller.ts

查找: @Controller\('admin/orders'\)
替换: @Controller('api/admin/orders')
文件: **/admin/order/order.controller.ts

查找: @Controller\('admin/reviews'\)
替换: @Controller('api/admin/reviews')
文件: **/admin/review/review.controller.ts

查找: @Controller\('admin/coupons'\)
替换: @Controller('api/admin/coupons')
文件: **/admin/coupon/coupon.controller.ts

查找: @Controller\('admin/activity'\)
替换: @Controller('api/admin/activity')
文件: **/admin/activity/activity.controller.ts

查找: @Controller\('admin/config'\)
替换: @Controller('api/admin/config')
文件: **/admin/config/config.controller.ts

查找: @Controller\('admin/finance/accounts'\)
替换: @Controller('api/admin/finance/accounts')
文件: **/admin/finance/account.controller.ts

查找: @Controller\('admin/finance/transactions'\)
替换: @Controller('api/admin/finance/transactions')
文件: **/admin/finance/transaction.controller.ts

查找: @Controller\('admin/finance/withdrawals'\)
替换: @Controller('api/admin/finance/withdrawals')
文件: **/admin/finance/withdrawal.controller.ts

查找: @Controller\('admin/finance/settlements'\)
替换: @Controller('api/admin/finance/settlements')
文件: **/admin/finance/settlement.controller.ts

查找: @Controller\('admin/finance/reconciliations'\)
替换: @Controller('api/admin/finance/reconciliations')
文件: **/admin/finance/reconciliation.controller.ts

查找: @Controller\('admin/finance/reports'\)
替换: @Controller('api/admin/finance/reports')
文件: **/admin/finance/report.controller.ts
```

#### 公共接口路由前缀
```
查找: @Controller\('rooms'\)
替换: @Controller('api/public/rooms')
文件: **/shared/room/room.controller.ts

查找: @Controller\('merchants'\)
替换: @Controller('api/public/merchants')
文件: **/shared/merchant/merchant.controller.ts

查找: @Controller\('activity'\)
替换: @Controller('api/public/activity')
文件: **/shared/activity/activity.controller.ts
```

### 步骤2：修改类名避免冲突

在已复制的文件中，需要重命名一些类以避免冲突：

```
查找: export class UserService
替换: export class ProfileService
文件: **/user/profile/profile.service.ts

查找: UserUserController
替换: ProfileController
文件: **/user/profile/profile.controller.ts

查找: private readonly userService: UserService
替换: private readonly profileService: ProfileService
文件: **/user/profile/profile.controller.ts

查找: this\.userService\.
替换: this.profileService.
文件: **/user/profile/profile.controller.ts
```

## 方案二：使用提供的完整文件

我已经为您准备了所有关键的模块文件，您可以直接复制使用。

### 关键文件列表

1. **用户端总模块**: `apps/server/src/modules/user/user.module.ts`
2. **商家端总模块**: `apps/server/src/modules/merchant/merchant.module.ts`
3. **管理端总模块**: `apps/server/src/modules/admin/admin.module.ts`
4. **公共模块**: `apps/server/src/modules/shared/shared.module.ts`
5. **官网模块**: `apps/server/src/modules/website/website.module.ts`
6. **根模块**: `apps/server/src/app.module.ts`
7. **官网实体**: `apps/server/src/entities/website-info.entity.ts`

这些文件的完整代码请参考 `REFACTOR_GUIDE.md` 文档。

## 方案三：使用脚本批量处理

我已经创建了 `scripts/migrate-modules.sh` 脚本，可以批量复制和修改文件。

在 Git Bash 中执行：
```bash
cd d:/project/company/rent
chmod +x scripts/migrate-modules.sh
./scripts/migrate-modules.sh
```

## 前端 API 路径批量替换

### 小程序 (apps/miniapp/src/api/)

在 `apps/miniapp/src/api` 目录下执行以下替换：

```
查找: '/auth/
替换: '/api/user/auth/

查找: '/user/
替换: '/api/user/profile/

查找: '/orders
替换: '/api/user/orders

查找: '/reviews
替换: '/api/user/reviews

查找: '/rooms
替换: '/api/public/rooms

查找: '/merchants
替换: '/api/public/merchants

查找: '/activity
替换: '/api/public/activity
```

### 商家后台 (apps/merchant-admin/src/api/)

```
查找: '/seller/auth/
替换: '/api/merchant/auth/

查找: '/seller/
替换: '/api/merchant/

查找: '/merchant/finance/
替换: '/api/merchant/finance/
```

### 平台后台 (apps/platform-admin/src/api/)

```
查找: '/admin/
替换: '/api/admin/
```

## 验证步骤

1. 启动后端服务：`cd apps/server && npm run start:dev`
2. 检查控制台是否有错误
3. 访问 Swagger 文档：`http://localhost:3000/api-docs`
4. 检查所有接口路径是否正确
5. 启动前端应用测试核心功能

## 回滚方案

如果出现问题，使用 git 回滚：
```bash
git checkout .
git clean -fd
```

## 预计时间

- 使用方案一（VS Code 批量替换）：1-2小时
- 使用方案二（复制完整文件）：30分钟
- 使用方案三（脚本自动化）：10分钟

## 建议

**推荐使用方案一 + 方案二的组合**：
1. 先使用 VS Code 批量替换修改所有路由前缀（15分钟）
2. 然后创建所有模块文件（使用我提供的模板）（30分钟）
3. 最后批量替换前端 API 路径（15分钟）

总计约1小时即可完成整个重构。
