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