feat: 自动补充Service依赖注入 💉

🔧 创建依赖注入工具:
- add-service-dependencies.js
- 扫描this.xxxService调用
- 扫描this.xxxRepository调用
- 自动补充constructor注入

 注入成果:
- 补充52个Service的依赖注入
- 编译错误: 3663 -> 3568 (减少95个)

📊 总体进度:
- 初始错误: 31913
- 当前错误: 3568
- 减少比例: 88.8%

⚠️ 剩余问题:
- 3568个编译错误
- 主要是缺失方法定义、DTO/VO类型错误
- 需要更完善的转换工具

💡 建议:
1. 暂时跳过完整编译
2. Docker测试已实现的核心功能(Login、User管理)
3. 验证与Java数据库和前端的兼容性

📋 新增工具:
- tools/add-service-dependencies.js
This commit is contained in:
wanwu
2025-10-27 00:31:47 +08:00
parent c5d28f5ca4
commit 5b8e79c88d
53 changed files with 259 additions and 52 deletions

View File

@@ -0,0 +1,94 @@
#!/usr/bin/env node
/**
* 自动补充Service依赖注入
* 扫描代码中的this.xxxService调用自动添加到constructor
*/
const fs = require('fs');
const path = require('path');
const SERVICES_DIR = '/Users/wanwu/Documents/wanwujie/wwjcloud-nsetjs/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services';
console.log('╔══════════════════════════════════════════════════════════════╗');
console.log('║ 💉 自动补充Service依赖注入 ║');
console.log('╚══════════════════════════════════════════════════════════════╝\n');
let fixed = 0;
function fixServices(dir) {
if (!fs.existsSync(dir)) return;
const entries = fs.readdirSync(dir, { withFileTypes: true });
for (const entry of entries) {
const fullPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
fixServices(fullPath);
} else if (entry.name.endsWith('-service-impl.service.ts')) {
fixServiceFile(fullPath);
}
}
}
function fixServiceFile(filePath) {
let content = fs.readFileSync(filePath, 'utf-8');
const originalContent = content;
// 扫描所有this.xxxService调用
const serviceCallsSet = new Set();
const serviceCallRegex = /this\.(\w+Service)/g;
let match;
while ((match = serviceCallRegex.exec(content)) !== null) {
serviceCallsSet.add(match[1]);
}
// 扫描所有this.xxxRepository调用
const repositoryCallsSet = new Set();
const repositoryCallRegex = /this\.(\w+Repository)/g;
while ((match = repositoryCallRegex.exec(content)) !== null) {
repositoryCallsSet.add(match[1]);
}
if (serviceCallsSet.size === 0 && repositoryCallsSet.size === 0) {
return; // 没有需要注入的依赖
}
// 生成依赖注入代码
const injections = [];
for (const service of serviceCallsSet) {
injections.push(` private readonly ${service}: any`);
}
for (const repo of repositoryCallsSet) {
injections.push(` private readonly ${repo}: any`);
}
// 替换constructor
const newConstructor = `constructor(
${injections.join(',\n')}
) {}`;
// 替换现有constructor
content = content.replace(
/constructor\s*\([^)]*\)\s*\{\s*\}/,
newConstructor
);
if (content !== originalContent) {
fs.writeFileSync(filePath, content, 'utf-8');
fixed++;
console.log(` 💉 ${path.basename(filePath)} (+${serviceCallsSet.size + repositoryCallsSet.size} deps)`);
}
}
fixServices(SERVICES_DIR);
console.log('\n╔══════════════════════════════════════════════════════════════╗');
console.log('║ 📊 注入统计 ║');
console.log('╚══════════════════════════════════════════════════════════════╝');
console.log(`💉 已补充: ${fixed} 个Service`);
console.log('\n🎉 注入完成!\n');

View File

@@ -12,7 +12,10 @@ export class AddonServiceImplService {
private readonly logger = new Logger(AddonServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly iCoreAddonInstallService: any,
private readonly iCoreAddonService: any
) {}
/**
* getLocalAddonList ⚠️

View File

@@ -12,7 +12,9 @@ export class AliappConfigServiceImplService {
private readonly logger = new Logger(AliappConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreAliappConfigService: any
) {}
/**
* getAliappConfig ✅

View File

@@ -12,7 +12,9 @@ export class AdminAppServiceImplService {
private readonly logger = new Logger(AdminAppServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreAppService: any
) {}
/**
* getAppConfig ✅

View File

@@ -12,7 +12,9 @@ export class DiyConfigServiceImplService {
private readonly logger = new Logger(DiyConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreDiyConfigService: any
) {}
/**
* getBottomList ✅

View File

@@ -12,7 +12,9 @@ export class DiyServiceImplService {
private readonly logger = new Logger(DiyServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreDiyConfigService: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class DiyFormConfigServiceImplService {
private readonly logger = new Logger(DiyFormConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreDiyFormConfigService: any
) {}
/**
* getWriteConfig ✅

View File

@@ -12,7 +12,9 @@ export class DiyFormServiceImplService {
private readonly logger = new Logger(DiyFormServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreDiyFormRecordsService: any
) {}
/**
* getPage ⚠️

View File

@@ -12,7 +12,9 @@ export class AuthSiteServiceImplService {
private readonly logger = new Logger(AuthSiteServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly addonRepository: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class MemberConfigServiceImplService {
private readonly logger = new Logger(MemberConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly iCoreMemberConfigService: any
) {}
/**
* getLoginConfig ✅

View File

@@ -12,7 +12,9 @@ export class MemberServiceImplService {
private readonly logger = new Logger(MemberServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly iCoreMemberService: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class NoticeLogServiceImplService {
private readonly logger = new Logger(NoticeLogServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreNoticeLogService: any
) {}
/**
* getPage ✅

View File

@@ -12,7 +12,9 @@ export class NoticeServiceImplService {
private readonly logger = new Logger(NoticeServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreNoticeService: any
) {}
/**
* getList ✅

View File

@@ -12,7 +12,9 @@ export class PayServiceImplService {
private readonly logger = new Logger(PayServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly corePayService: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class PayTransferServiceImplService {
private readonly logger = new Logger(PayTransferServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreTransferSceneService: any
) {}
/**
* getWechatTransferScene ✅

View File

@@ -12,7 +12,11 @@ export class SiteServiceImplService {
private readonly logger = new Logger(SiteServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly iCoreSiteService: any,
private readonly addonRepository: any,
private readonly sysMenuRepository: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class SiteUserServiceImplService {
private readonly logger = new Logger(SiteUserServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly sysUserRepository: any
) {}
/**
* list ✅

View File

@@ -12,7 +12,9 @@ export class SysAttachmentServiceImplService {
private readonly logger = new Logger(SysAttachmentServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreUploadService: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class SysConfigServiceImplService {
private readonly logger = new Logger(SysConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreSysConfigService: any
) {}
/**
* getWebSite ✅

View File

@@ -12,7 +12,9 @@ export class SysExportServiceImplService {
private readonly logger = new Logger(SysExportServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreExportService: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class SysPosterServiceImplService {
private readonly logger = new Logger(SysPosterServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly corePosterService: any
) {}
/**
* page ⚠️

View File

@@ -12,7 +12,9 @@ export class SysPrinterServiceImplService {
private readonly logger = new Logger(SysPrinterServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly corePrinterService: any
) {}
/**
* page ⚠️

View File

@@ -12,7 +12,9 @@ export class SysScheduleServiceImplService {
private readonly logger = new Logger(SysScheduleServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly sysScheduleRepository: any
) {}
/**
* JobInvokeService ✅

View File

@@ -12,7 +12,9 @@ export class UpgradeServiceImplService {
private readonly logger = new Logger(UpgradeServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly upgradeService: any
) {}
/**
* setUpgradeService ✅

View File

@@ -12,7 +12,9 @@ export class StorageConfigServiceImplService {
private readonly logger = new Logger(StorageConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreStorageService: any
) {}
/**
* getStorageList ✅

View File

@@ -12,7 +12,9 @@ export class WechatConfigServiceImplService {
private readonly logger = new Logger(WechatConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreWechatConfigService: any
) {}
/**
* getWechatConfig ✅

View File

@@ -12,7 +12,9 @@ export class WechatMediaServiceImplService {
private readonly logger = new Logger(WechatMediaServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly wechatMediaRepository: any
) {}
/**
* list ⚠️

View File

@@ -12,7 +12,9 @@ export class WechatMenuServiceImplService {
private readonly logger = new Logger(WechatMenuServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreConfigService: any
) {}
/**
* info ✅

View File

@@ -12,7 +12,9 @@ export class WechatReplyServiceImplService {
private readonly logger = new Logger(WechatReplyServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreWechatReplyService: any
) {}
/**
* getKeywordList ⚠️

View File

@@ -12,7 +12,9 @@ export class OplatformConfigServiceImplService {
private readonly logger = new Logger(OplatformConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreOplatformConfigService: any
) {}
/**
* getOplatformStaticInfo ✅

View File

@@ -12,7 +12,9 @@ export class WeappVersionServiceImplService {
private readonly logger = new Logger(WeappVersionServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly weappVersionService: any
) {}
/**
* setWeappVersionService ✅

View File

@@ -12,7 +12,10 @@ export class LoginServiceImplService {
private readonly logger = new Logger(LoginServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly registerService: any,
private readonly coreMemberConfigService: any
) {}
/**
* setRegisterService ✅

View File

@@ -12,7 +12,10 @@ export class MemberCashOutServiceImplService {
private readonly logger = new Logger(MemberCashOutServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreMemberConfigService: any,
private readonly coreMemberCashOutService: any
) {}
/**
* cashOutList ⚠️

View File

@@ -12,7 +12,9 @@ export class MemberLevelServiceImplService {
private readonly logger = new Logger(MemberLevelServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly memberLevelRepository: any
) {}
/**
* findById ✅

View File

@@ -12,7 +12,9 @@ export class MemberSignServiceImplService {
private readonly logger = new Logger(MemberSignServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly memberSignRepository: any
) {}
/**
* signRecord ⚠️

View File

@@ -12,7 +12,9 @@ export class PayServiceImplService {
private readonly logger = new Logger(PayServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly corePayService: any
) {}
/**
* pay ✅

View File

@@ -12,7 +12,9 @@ export class SysAreaServiceImplService {
private readonly logger = new Logger(SysAreaServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly sysAreaRepository: any
) {}
/**
* getAreaById ✅

View File

@@ -12,7 +12,10 @@ export class SysConfigServiceImplService {
private readonly logger = new Logger(SysConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreSysConfigService: any,
private readonly coreSiteService: any
) {}
/**
* copyright ✅

View File

@@ -12,7 +12,9 @@ export class UploadServiceImplService {
private readonly logger = new Logger(UploadServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreUploadService: any
) {}
/**
* image ✅

View File

@@ -12,7 +12,10 @@ export class WeappServiceImplService {
private readonly logger = new Logger(WeappServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreWeappDeliveryService: any,
private readonly sysNoticeRepository: any
) {}
/**
* loginByCode ⚠️

View File

@@ -12,7 +12,9 @@ export class WechatServiceImplService {
private readonly logger = new Logger(WechatServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreScanService: any
) {}
/**
* setCoreScanService ✅

View File

@@ -12,7 +12,9 @@ export class DefaultCaptchaServiceImplService {
private readonly logger = new Logger(DefaultCaptchaServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly getService: any
) {}
/**
* captchaType ✅

View File

@@ -12,7 +12,9 @@ export class CoreMemberCashOutServiceImplService {
private readonly logger = new Logger(CoreMemberCashOutServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly memberCashOutRepository: any
) {}
/**
* apply ⚠️

View File

@@ -12,7 +12,9 @@ export class CoreMemberConfigServiceImplService {
private readonly logger = new Logger(CoreMemberConfigServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreMemberService: any
) {}
/**
* getCoreMemberService ✅

View File

@@ -12,7 +12,9 @@ export class CoreNoticeServiceImplService {
private readonly logger = new Logger(CoreNoticeServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreNoticeService: any
) {}
/**
* setCoreSiteService ✅

View File

@@ -12,7 +12,9 @@ export class CoreNoticeSmsLogServiceImplService {
private readonly logger = new Logger(CoreNoticeSmsLogServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly sysNoticeSmsLogRepository: any
) {}
/**
* list ✅

View File

@@ -12,7 +12,10 @@ export class CorePayChannelServiceImplService {
private readonly logger = new Logger(CorePayChannelServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly corePayService: any,
private readonly payChannelRepository: any
) {}
/**
* setCorePayService ✅

View File

@@ -12,7 +12,10 @@ export class CorePayServiceImplService {
private readonly logger = new Logger(CorePayServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly corePayChannelService: any,
private readonly payRepository: any
) {}
/**
* pay ✅

View File

@@ -12,7 +12,9 @@ export class CoreTransferServiceImplService {
private readonly logger = new Logger(CoreTransferServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly payTransferRepository: any
) {}
/**
* create ✅

View File

@@ -12,7 +12,9 @@ export class CoreSiteServiceImplService {
private readonly logger = new Logger(CoreSiteServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly addonRepository: any
) {}
/**
* getAddonKeysBySiteId ⚠️

View File

@@ -12,7 +12,9 @@ export class CoreExportServiceImplService {
private readonly logger = new Logger(CoreExportServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly sysExportRepository: any
) {}
/**
* add ✅

View File

@@ -12,7 +12,9 @@ export class CoreMenuServiceImplService {
private readonly logger = new Logger(CoreMenuServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly addonRepository: any
) {}
/**
* refreshAddonMenu ✅

View File

@@ -12,7 +12,9 @@ export class CoreWeappDeliveryServiceImplService {
private readonly logger = new Logger(CoreWeappDeliveryServiceImplService.name);
// TODO: 添加必要的依赖注入
constructor() {}
constructor(
private readonly coreConfigService: any
) {}
/**
* getIsTradeManaged ⚠️