Files
rent/QUICK_REFACTOR.md
T
2026-05-14 19:12:26 +08:00

301 lines
8.5 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.
# 后端模块重构 - 快速执行方案
## 重要提示
由于这个重构涉及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小时即可完成整个重构。