diff --git a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/controller-generator.js b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/controller-generator.js index c12026a6..4c4460dd 100644 --- a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/controller-generator.js +++ b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/controller-generator.js @@ -330,15 +330,33 @@ ${methods} return; // 跳过基础类型、集合类型等 } - // ✅ 修正:DTO文件导出的类名带Dto后缀(由DTO Generator生成) - // Java类名:AddonDevelopAddParam - // DTO导出类名:AddonDevelopAddParamDto - const typeName = this.namingUtils.generateDtoName(cleanDto); - - // ✅ 使用CDR查询DTO路径 + // ✅ V3: 根据CDR中的category决定类名格式 + let typeName; let importPath = null; - if (this.cdr && javaController.nestjsFilePath) { - importPath = this.cdr.inferImportPath(cleanDto, javaController.nestjsFilePath); + + // 查询CDR获取类型信息 + if (this.cdr) { + const typeInfo = this.cdr.getTypeLocation(cleanDto); + + if (typeInfo) { + // 根据category决定类名 + if (typeInfo.category === 'entity') { + // Entity: 使用原始类名(无Dto后缀) + typeName = this.namingUtils.toPascalCase(cleanDto); + } else { + // DTO/VO/Param: 使用带Dto后缀的类名 + typeName = this.namingUtils.generateDtoName(cleanDto); + } + + // 使用CDR查询路径 + importPath = this.cdr.inferImportPath(cleanDto, javaController.nestjsFilePath); + } else { + // CDR中找不到,默认作为DTO处理 + typeName = this.namingUtils.generateDtoName(cleanDto); + } + } else { + // 无CDR,默认作为DTO处理 + typeName = this.namingUtils.generateDtoName(cleanDto); } // 兜底:硬编码路径 diff --git a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/dto-generator.js b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/dto-generator.js index 3a98e2cb..ec6cc67e 100644 --- a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/dto-generator.js +++ b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/dto-generator.js @@ -37,13 +37,32 @@ class DtoGenerator { console.log(`✅ 生成DTO: ${subPath}/${fileName}`); + // ✅ V3: 注册到CDR + const relativePath = subPath ? `dtos/${subPath}/${fileName}` : `dtos/${fileName}`; + if (this.cdr) { + // 推断category: vo/param/dto + let category = 'dto'; // 默认 + if (javaDto.className.toLowerCase().includes('vo')) { + category = 'vo'; + } else if (javaDto.className.toLowerCase().includes('param')) { + category = 'param'; + } + + this.cdr.setTypeLocation(javaDto.className, { + relativePath, + absolutePath: filePath, + category, + module: javaDto.module || 'common' + }); + } + // ✅ V2: 返回完整信息供CDR记录 return { fileName, content, subPath, dtoName, - relativePath: subPath ? `dtos/${subPath}/${fileName}` : `dtos/${fileName}`, + relativePath, absolutePath: filePath }; } diff --git a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/service-generator.js b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/service-generator.js index 4089fd7a..cbc2c3a5 100644 --- a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/service-generator.js +++ b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/service-generator.js @@ -407,7 +407,7 @@ ${methods} }); } - // ✅ V2: 添加DTO导入(使用CDR查询路径) + // ✅ V3: 添加DTO导入(根据category决定类名格式) if (javaService.dtos && javaService.dtos.length > 0) { javaService.dtos.forEach(dto => { // ✅ 使用TypeFilter统一处理类型清理与过滤 @@ -416,16 +416,34 @@ ${methods} return; // 跳过基础类型、集合类型等 } - // ✅ 修正:DTO文件导出的类名带Dto后缀(由DTO Generator生成) - // Java类名:PageParam → DTO导出类名:PageParamDto - const typeName = this.namingUtils.generateDtoName(cleanDto); - - // ✅ V2: 使用CDR查询DTO路径(如果可用) + // ✅ V3: 根据CDR中的category决定类名格式 + let typeName; let importPath = null; + const currentPath = javaService.nestjsFilePath || javaService.filePath || 'services/admin'; + + // 查询CDR获取类型信息 if (this.cdr) { - // ⚠️ 关键:使用生成的NestJS文件路径,而不是Java源文件路径 - const currentPath = javaService.nestjsFilePath || javaService.filePath || 'services/admin'; - importPath = this.cdr.inferImportPath(cleanDto, currentPath); + const typeInfo = this.cdr.getTypeLocation(cleanDto); + + if (typeInfo) { + // 根据category决定类名 + if (typeInfo.category === 'entity') { + // Entity: 使用原始类名(无Dto后缀) + typeName = this.namingUtils.toPascalCase(cleanDto); + } else { + // DTO/VO/Param: 使用带Dto后缀的类名 + typeName = this.namingUtils.generateDtoName(cleanDto); + } + + // 使用CDR查询路径 + importPath = this.cdr.inferImportPath(cleanDto, currentPath); + } else { + // CDR中找不到,默认作为DTO处理 + typeName = this.namingUtils.generateDtoName(cleanDto); + } + } else { + // 无CDR,默认作为DTO处理 + typeName = this.namingUtils.generateDtoName(cleanDto); } // ⚠️ 兜底:如果CDR未找到,使用旧的硬编码路径 @@ -575,7 +593,7 @@ ${body} /** * 生成方法参数 * - * ✅ 从Java方法中提取真实参数列表 + * ✅ V5: 根据CDR的category决定类名格式 */ generateMethodParameters(method) { // 如果没有参数列表,返回空 @@ -586,17 +604,33 @@ ${body} // 提取每个参数,转换类型 const params = method.parameters.map(param => { const paramName = param.name || 'arg'; - let paramType = this.convertJavaTypeToTypeScript(param.type || 'any'); + const javaType = param.type || 'any'; + let paramType = this.convertJavaTypeToTypeScript(javaType); - // 如果是业务类型(首字母大写),检查是否需要添加Dto后缀 - if (paramType && paramType[0] === paramType[0].toUpperCase()) { - // 已经有Dto/Vo/Param后缀的不重复添加 - if (!paramType.endsWith('Dto') && !paramType.endsWith('Vo') && !paramType.endsWith('Param')) { - // 如果Java类型包含Param/Vo,说明是DTO类型,添加Dto后缀 - if (param.type && (param.type.includes('Param') || param.type.includes('Vo') || param.type.includes('Dto'))) { - // 保持原类型名 + // ✅ 如果是业务类型(首字母大写),查询CDR决定是否加Dto后缀 + if (paramType && paramType[0] === paramType[0].toUpperCase() && paramType !== 'Record') { + // 提取简单类名(去掉包名) + const simpleType = javaType.split('.').pop(); + + // 查询CDR + if (this.cdr) { + const typeInfo = this.cdr.getTypeLocation(simpleType); + + if (typeInfo) { + // 根据category决定类名 + if (typeInfo.category === 'entity') { + // Entity: 使用原始类名(无Dto后缀) + paramType = this.namingUtils.toPascalCase(simpleType); + } else { + // DTO/VO/Param: 使用带Dto后缀的类名 + paramType = this.namingUtils.generateDtoName(simpleType); + } } else { - // 其他业务类型暂不添加后缀 + // CDR中找不到,根据命名规则推断 + if (simpleType.endsWith('Param') || simpleType.endsWith('Vo') || simpleType.endsWith('Dto')) { + // 已经有后缀,添加Dto后缀 + paramType = this.namingUtils.generateDtoName(simpleType); + } } } } @@ -670,34 +704,64 @@ ${body} /** * 生成方法体 * - * ✅ 新逻辑:使用ServiceMethodConverter转换Java方法体 + * ✅ V4: 质量优先策略 - 如果转换质量差,使用TODO占位符 */ generateMethodBody(method, javaService) { - // 如果Java方法有方法体,使用转换器转换 + // ✅ 策略:业务逻辑复杂时,暂时使用TODO占位符,而不是生成错误代码 + // 原因:Service Method Converter的质量还不够好,会生成大量编译错误 + + const returnType = this.generateReturnType(method); + const methodName = method.methodName || method.name || 'unknown'; + + // 如果Java方法有方法体且不太复杂,尝试转换 if (method.methodBody && method.methodBody.trim() !== '') { - // 准备上下文信息 - const context = { - dependencies: javaService.dependencies || [], - className: javaService.className - }; + const bodyLength = method.methodBody.trim().length; + const lineCount = method.methodBody.trim().split('\n').length; - // 使用转换器转换Java方法体 - return this.methodConverter.convertMethodBody(method.methodBody, context); + // ✅ 质量阈值:只转换简单方法(<5行且<200字符) + // 复杂方法用TODO占位符,等Service Method Converter完善后再转换 + if (lineCount <= 5 && bodyLength <= 200) { + // 准备上下文信息 + const context = { + dependencies: javaService.dependencies || [], + className: javaService.className + }; + + // 尝试转换Java方法体 + try { + const converted = this.methodConverter.convertMethodBody(method.methodBody, context); + + // ✅ 质量检查:如果转换后包含明显错误,使用TODO占位符 + const hasErrors = + converted.includes('undefined') || + converted.includes('getStr(') || + converted.includes('getInt(') || + converted.includes('getLong(') || + converted.includes('.get(') || + converted.includes('JSONObject') || + converted.includes('QueryWrapper') || + /\w+\(\s*$/.test(converted); // 括号不匹配 + + if (!hasErrors) { + return converted; + } + } catch (error) { + console.warn(`⚠️ 方法体转换失败: ${methodName}, 使用TODO占位符`); + } + } } - // 如果没有Java方法体,返回TODO占位符(按返回类型) - const returnType = this.generateReturnType(method); - + // ✅ 使用TODO占位符(根据返回类型生成合理的默认返回值) if (returnType === 'any[]') { - return ` // TODO: 实现业务逻辑\n return [];`; + return ` // TODO: 实现${methodName}业务逻辑\n return [];`; } else if (returnType === 'number') { - return ` // TODO: 实现业务逻辑\n return 0;`; + return ` // TODO: 实现${methodName}业务逻辑\n return 0;`; } else if (returnType === 'void') { - return ` // TODO: 实现业务逻辑\n return;`; + return ` // TODO: 实现${methodName}业务逻辑`; } else if (returnType.includes('PageResult') || returnType.includes('{ items')) { - return ` // TODO: 实现业务逻辑\n return { items: [], total: 0 };`; + return ` // TODO: 实现${methodName}业务逻辑\n return { items: [], total: 0 };`; } else { - return ` // TODO: 实现业务逻辑\n return null;`; + return ` // TODO: 实现${methodName}业务逻辑\n return null;`; } } diff --git a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/scanners/java-scanner.js b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/scanners/java-scanner.js index 2dad124f..e494d762 100644 --- a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/scanners/java-scanner.js +++ b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/scanners/java-scanner.js @@ -319,10 +319,16 @@ class JavaScanner { extractDtosFromFile(content) { const dtos = new Set(); + // ✅ 先移除注释,避免从注释中提取类型 + // 移除单行注释 + let cleanContent = content.replace(/\/\/.*$/gm, ''); + // 移除多行注释(包括JavaDoc) + cleanContent = cleanContent.replace(/\/\*[\s\S]*?\*\//g, ''); + // 1. 从方法参数提取(@RequestBody, @PathVariable, @RequestParam) const paramRegex = /@(?:RequestBody|PathVariable|RequestParam)\s*(?:\([^)]*\))?\s*([\w<>,\s\[\]]+)\s+\w+/g; let match; - while ((match = paramRegex.exec(content)) !== null) { + while ((match = paramRegex.exec(cleanContent)) !== null) { const typeName = match[1].trim(); // ✅ 使用TypeFilter统一处理 @@ -334,7 +340,7 @@ class JavaScanner { // 2. 从方法返回值提取(Result) const returnRegex = /Result<([^>]+)>/g; - while ((match = returnRegex.exec(content)) !== null) { + while ((match = returnRegex.exec(cleanContent)) !== null) { const typeName = match[1]; // ✅ 使用TypeFilter统一处理 @@ -344,7 +350,7 @@ class JavaScanner { } } - // 3. 从import语句提取DTO/VO/Param + // 3. 从import语句提取DTO/VO/Param(注意:import语句在原始content中) const importRegex = /import\s+[\w.]+\.(\w+(?:Dto|Vo|Param|Request|Response));/g; while ((match = importRegex.exec(content)) !== null) { const typeName = match[1]; diff --git a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/utils/type-filter.js b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/utils/type-filter.js index 30d9bcbe..1564adc7 100644 --- a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/utils/type-filter.js +++ b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/utils/type-filter.js @@ -18,14 +18,22 @@ class TypeFilter { 'int', 'long', 'boolean', 'double', 'float', 'byte', 'short', 'char', // Java集合类型 'List', 'ArrayList', 'LinkedList', 'Map', 'HashMap', 'TreeMap', 'Set', 'HashSet', 'TreeSet', + 'Collection', 'Queue', 'Deque', 'Stack', 'Vector', // Java内置类 - 'Object', 'Class', 'Void', 'void', + 'Object', 'Class', 'Void', 'void', 'Throwable', 'Exception', 'RuntimeException', // Java JSON类型(不是DTO) 'JSONObject', 'JSONArray', // Java Servlet API(不是DTO) 'HttpServletRequest', 'HttpServletResponse', 'MultipartFile', - // 其他 - 'Record', 'Optional' + 'HttpRequest', 'HttpResponse', 'ServletRequest', 'ServletResponse', + // Java Spring类型(不是DTO) + 'ResponseEntity', 'RequestEntity', 'HttpEntity', 'HttpHeaders', 'HttpStatus', + 'MultiValueMap', 'WebRequest', 'NativeWebRequest', + // Java并发/异步类型 + 'Future', 'CompletableFuture', 'Callable', 'Runnable', + // 其他Java特有类型 + 'Record', 'Optional', 'Id', 'BigDecimal', 'BigInteger', 'Date', 'LocalDate', 'LocalDateTime', + 'Timestamp', 'UUID', 'URI', 'URL', 'File', 'Path', 'InputStream', 'OutputStream' ]; // 跳过包含特殊字符的类型(如 "Integer, String") @@ -86,14 +94,20 @@ class TypeFilter { // 2. 清理数组符号 cleaned = cleaned.replace(/\[\]$/g, '').trim(); - // 3. 检查是否应该跳过 + // 3. ✅ 强制移除任何残留的泛型符号(括号不匹配的情况) + if (cleaned.includes('<') || cleaned.includes('>')) { + // 提取<之前的部分作为类型名 + cleaned = cleaned.split('<')[0].trim(); + } + + // 4. 检查是否应该跳过 if (this.shouldSkipType(cleaned)) { return null; } - // 4. 最后检查:确保没有泛型符号、没有数组符号 + // 5. 最后检查:确保没有泛型符号、没有数组符号 if (cleaned.includes('<') || cleaned.includes('[')) { - console.warn(`⚠️ TypeFilter发现未清理的类型: ${cleaned}`); + // 这种情况理论上不应该出现了 return null; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon-log.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon-log.controller.ts index a409fca2..138d0889 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon-log.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon-log.controller.ts @@ -3,8 +3,8 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { AddonLogServiceImplService } from '../../../services/admin/addon/impl/addon-log-service-impl.service'; import { AddonLogParamDto } from '../../../dtos/admin/addon/param/addon-log-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { AddonLogListVoDto } from '../../../dtos/admin/addon/vo/addon-log-list-vo.dto'; -import { AddonLogDetailVoDto } from '../dtos/addon-log-detail-vo.dto'; import { AddonLogInfoVoDto } from '../../../dtos/admin/addon/vo/addon-log-info-vo.dto'; import { AddonLogSearchParamDto } from '../../../dtos/admin/addon/param/addon-log-search-param.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon.controller.ts index 49e7b036..7e9a8d77 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/addon.controller.ts @@ -5,11 +5,12 @@ import { AddonServiceImplService } from '../../../services/admin/addon/impl/addo import { AddonParamDto } from '../../../dtos/admin/addon/param/addon-param.dto'; import { AddonDownloadParamDto } from '../../../dtos/admin/addon/param/addon-download-param.dto'; import { LocalAddonListVoDto } from '../../../dtos/admin/addon/vo/local-addon-list-vo.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { AddonListVoDto } from '../../../dtos/admin/addon/vo/addon-list-vo.dto'; import { AddonInfoVoDto } from '../../../dtos/admin/addon/vo/addon-info-vo.dto'; import { AddonSearchParamDto } from '../../../dtos/admin/addon/param/addon-search-param.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; -import { InstallAddonListVoDto } from '../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../entities/install-addon-list-vo.entity'; @Controller('adminapi') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/app.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/app.controller.ts index 6b0ca1fa..d38cb47c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/app.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/app.controller.ts @@ -9,7 +9,7 @@ import { AddonSearchParamDto } from '../../../dtos/admin/addon/param/addon-searc import { AddonLogInfoVoDto } from '../../../dtos/admin/addon/vo/addon-log-info-vo.dto'; import { AddonLogListVoDto } from '../../../dtos/admin/addon/vo/addon-log-list-vo.dto'; import { IndexAddonListParamDto } from '../../../dtos/admin/addon/vo/index-addon-list-param.dto'; -import { InstallAddonListVoDto } from '../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../entities/install-addon-list-vo.entity'; @Controller('adminapi') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/backup.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/backup.controller.ts index 51f5c2ae..ef3c91ef 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/backup.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/backup.controller.ts @@ -5,6 +5,7 @@ import { SysBackupRecordsServiceImplService } from '../../../services/admin/sys/ import { SysBackupRecordsDelParamDto } from '../../../dtos/admin/sys/param/sys-backup-records-del-param.dto'; import { SysBackupRecordsUpdateParamDto } from '../../../dtos/admin/sys/param/sys-backup-records-update-param.dto'; import { BackupRestoreParamDto } from '../../../dtos/admin/sys/param/backup-restore-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { SysBackupRecordsListVoDto } from '../../../dtos/admin/sys/vo/sys-backup-records-list-vo.dto'; import { SysUpgradeRecordsListVoDto } from '../dtos/sys-upgrade-records-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/upgrade.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/upgrade.controller.ts index f8297e92..0da072bf 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/upgrade.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/addon/upgrade.controller.ts @@ -4,13 +4,14 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { UpgradeServiceImplService } from '../../../services/admin/upgrade/impl/upgrade-service-impl.service'; import { SysUpgradeRecordsServiceImplService } from '../../../services/admin/sys/impl/sys-upgrade-records-service-impl.service'; import { UpgradeParamDto } from '../dtos/upgrade-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { SiteSearchParamDto } from '../../../dtos/admin/site/param/site-search-param.dto'; import { SiteListVoDto } from '../../../dtos/admin/site/vo/site-list-vo.dto'; import { SysUpgradeRecordsDelParamDto } from '../dtos/sys-upgrade-records-del-param.dto'; import { SysUpgradeRecordsSearchParamDto } from '../dtos/sys-upgrade-records-search-param.dto'; import { SysUpgradeRecordsListVoDto } from '../dtos/sys-upgrade-records-list-vo.dto'; -import { InstallAddonListVoDto } from '../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../entities/install-addon-list-vo.entity'; @Controller('adminapi/upgrade') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/app.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/app.controller.ts index 2d5c03f8..29bf968b 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/app.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/app.controller.ts @@ -7,6 +7,7 @@ import { SetAppParamDto } from '../../../dtos/core/channel/param/set-app-param.d import { AppVersionAddParamDto } from '../../../dtos/admin/channel/param/app-version-add-param.dto'; import { GenerateSignCertParamDto } from '../../../dtos/core/channel/param/generate-sign-cert-param.dto'; import { AppConfigVoDto } from '../../../dtos/core/channel/vo/app-config-vo.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { AppVersionListVoDto } from '../../../dtos/admin/niucloud/vo/app-version-list-vo.dto'; import { AppVersionInfoVoDto } from '../../../dtos/admin/channel/vo/app-version-info-vo.dto'; import { AppCompileLogVoDto } from '../../../dtos/core/channel/vo/app-compile-log-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/pc.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/pc.controller.ts index a4afeac3..f255c0f9 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/pc.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/channel/pc.controller.ts @@ -3,7 +3,6 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { CorePcServiceImplService } from '../../../services/core/channel/impl/core-pc-service-impl.service'; import { SetPcParamDto } from '../../../dtos/core/channel/param/set-pc-param.dto'; -import { H5ConfigVoDto } from '../../../dtos/core/channel/vo/h5-config-vo.dto'; import { PcConfigVoDto } from '../../../dtos/core/channel/vo/pc-config-vo.dto'; @Controller('adminapi/channel/pc') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/dict/dict.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/dict/dict.controller.ts index c4b60f4b..7cfa2829 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/dict/dict.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/dict/dict.controller.ts @@ -4,6 +4,7 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { DictServiceImplService } from '../../../services/admin/dict/impl/dict-service-impl.service'; import { DictParamDto } from '../../../dtos/admin/dict/param/dict-param.dto'; import { DictDataParamDto } from '../../../dtos/admin/dict/param/dict-data-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { DictListVoDto } from '../../../dtos/admin/dict/vo/dict-list-vo.dto'; import { DictInfoVoDto } from '../../../dtos/admin/dict/vo/dict-info-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-form.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-form.controller.ts index 67ba7de9..bb1a6ce5 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-form.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-form.controller.ts @@ -11,6 +11,7 @@ import { DiyFormCopyParamDto } from '../../../dtos/admin/diy_form/param/diy-form import { DiyFormStatusParamDto } from '../../../dtos/admin/diy_form/param/diy-form-status-param.dto'; import { DiyFormWriteConfigParamDto } from '../../../dtos/core/diy_form/param/diy-form-write-config-param.dto'; import { DiyFormSubmitConfigParamDto } from '../../../dtos/core/diy_form/param/diy-form-submit-config-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { DiyFormListVoDto } from '../../../dtos/admin/diy_form/vo/diy-form-list-vo.dto'; import { DiyFormInfoVoDto } from '../../../dtos/api/diy/vo/diy-form-info-vo.dto'; import { DiyFormInitVoDto } from '../../../dtos/admin/diy_form/vo/diy-form-init-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-route.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-route.controller.ts index 3dcae166..cefa2352 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-route.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy-route.controller.ts @@ -8,7 +8,7 @@ import { DiyRouteSearchParamDto } from '../../../dtos/admin/diy/param/diy-route- import { DiyRouteInfoVoDto } from '../../../dtos/admin/diy/vo/diy-route-info-vo.dto'; import { DiyRouteListVoDto } from '../../../dtos/admin/diy/vo/diy-route-list-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; -import { InstallAddonListVoDto } from '../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../entities/install-addon-list-vo.entity'; @Controller('adminapi/diy/route') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy.controller.ts index 304f3215..782364a4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/diy/diy.controller.ts @@ -5,14 +5,14 @@ import { DiyServiceImplService } from '../../../services/admin/diy/impl/diy-serv import { CoreAddonServiceImplService } from '../../../services/core/addon/impl/core-addon-service-impl.service'; import { DiyPageParamDto } from '../../../dtos/admin/diy/param/diy-page-param.dto'; import { StartUpPageConfigParamDto } from '../../../dtos/core/diy/param/start-up-page-config-param.dto'; -import { IdDto } from '../dtos/id.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { DiyPageListVoDto } from '../../../dtos/admin/diy/vo/diy-page-list-vo.dto'; import { DiyPageInfoVoDto } from '../../../dtos/admin/diy/vo/diy-page-info-vo.dto'; import { DiyPageInitParamDto } from '../../../dtos/admin/diy/param/diy-page-init-param.dto'; import { DiyPageSearchParamDto } from '../../../dtos/admin/diy/param/diy-page-search-param.dto'; import { TemplateParamDto } from '../../../dtos/admin/diy/param/template-param.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; -import { InstallAddonListVoDto } from '../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../entities/install-addon-list-vo.entity'; @Controller('adminapi/diy') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/generator/generate.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/generator/generate.controller.ts index 42ef8a59..e91453e4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/generator/generate.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/generator/generate.controller.ts @@ -5,6 +5,7 @@ import { GenerateServiceImplService } from '../../../services/admin/generator/im import { GenerateParamDto } from '../../../dtos/admin/generator/param/generate-param.dto'; import { GenerateEditParamDto } from '../../../dtos/admin/generator/param/generate-edit-param.dto'; import { GenerateCodeParamDto } from '../../../dtos/admin/generator/param/generate-code-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { GenerateListVoDto } from '../../../dtos/admin/generator/vo/generate-list-vo.dto'; import { GenerateDetailVoDto } from '../../../dtos/admin/generator/vo/generate-detail-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/home/site.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/home/site.controller.ts index ff014086..3f03d17a 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/home/site.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/home/site.controller.ts @@ -4,6 +4,7 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { AuthSiteServiceImplService } from '../../../services/admin/home/impl/auth-site-service-impl.service'; import { SiteParamDto } from '../../../dtos/admin/site/param/site-param.dto'; import { HomeSiteAddParamDto } from '../../../dtos/admin/home/param/home-site-add-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SiteListVoDto } from '../../../dtos/admin/site/vo/site-list-vo.dto'; import { SiteInfoVoDto } from '../../../dtos/core/site/vo/site-info-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-account.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-account.controller.ts index 8de44196..80246c64 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-account.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-account.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { MemberAccountServiceImplService } from '../../../services/admin/member/impl/member-account-service-impl.service'; import { AdjustAccountParamDto } from '../../../dtos/admin/member/param/adjust-account-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { MemberAccountLogListVoDto } from '../../../dtos/admin/member/vo/member-account-log-list-vo.dto'; import { SumCommissionVoDto } from '../../../dtos/admin/member/vo/sum-commission-vo.dto'; import { SumPointVoDto } from '../../../dtos/admin/member/vo/sum-point-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-cash-out.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-cash-out.controller.ts index 807f2071..3cb1ff14 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-cash-out.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-cash-out.controller.ts @@ -5,6 +5,7 @@ import { MemberCashOutServiceImplService } from '../../../services/admin/member/ import { MemberCashOutAuditParamDto } from '../../../dtos/admin/member/param/member-cash-out-audit-param.dto'; import { MemberCashOutRemarkParamDto } from '../../../dtos/admin/member/param/member-cash-out-remark-param.dto'; import { CashOutTransferParamDto } from '../../../dtos/admin/member/param/cash-out-transfer-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { MemberCashOutListVoDto } from '../../../dtos/api/member/vo/member-cash-out-list-vo.dto'; import { MemberCashOutInfoVoDto } from '../../../dtos/api/member/vo/member-cash-out-info-vo.dto'; import { CashOutStatVoDto } from '../../../dtos/admin/member/vo/cash-out-stat-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-label.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-label.controller.ts index 3a9b5ab8..f05e51e3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-label.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-label.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { MemberLabelServiceImplService } from '../../../services/admin/member/impl/member-label-service-impl.service'; import { MemberLabelEditParamDto } from '../../../dtos/admin/member/param/member-label-edit-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { MemberLabelListVoDto } from '../../../dtos/admin/member/vo/member-label-list-vo.dto'; import { MemberLabelInfoVoDto } from '../../../dtos/admin/member/vo/member-label-info-vo.dto'; import { MemberLabelParamDto } from '../../../dtos/admin/member/param/member-label-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-level.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-level.controller.ts index fd7ec4dc..fad388fa 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-level.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-level.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { MemberLevelServiceImplService } from '../../../services/admin/member/impl/member-level-service-impl.service'; import { MemberLevelParamDto } from '../../../dtos/api/member/param/member-level-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { MemberLevelListVoDto } from '../../../dtos/admin/member/vo/member-level-list-vo.dto'; import { MemberLevelInfoVoDto } from '../../../dtos/api/member/vo/member-level-info-vo.dto'; import { MemberLevelSearchParamDto } from '../../../dtos/admin/member/param/member-level-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-sign.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-sign.controller.ts index c221a4eb..0d0ec045 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-sign.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member-sign.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { MemberSignServiceImplService } from '../../../services/admin/member/impl/member-sign-service-impl.service'; import { SignConfigParamDto } from '../../../dtos/admin/member/param/sign-config-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { MemberSignListVoDto } from '../../../dtos/admin/member/vo/member-sign-list-vo.dto'; import { SignConfigVoDto } from '../../../dtos/admin/member/vo/sign-config-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member.controller.ts index 369cee9b..0a9780e2 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/member/member.controller.ts @@ -6,6 +6,7 @@ import { MemberAddParamDto } from '../../../dtos/admin/member/param/member-add-p import { MemberParamDto } from '../../../dtos/admin/member/param/member-param.dto'; import { MemberModifyParamDto } from '../../../dtos/api/member/param/member-modify-param.dto'; import { BatchModifyParamDto } from '../../../dtos/admin/member/param/batch-modify-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { MemberListVoDto } from '../../../dtos/admin/member/vo/member-list-vo.dto'; import { MemberInfoVoDto } from '../../../dtos/api/member/vo/member-info-vo.dto'; import { MemberAllListVoDto } from '../../../dtos/admin/member/vo/member-all-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-log.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-log.controller.ts index 3fe8fd77..1507860f 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-log.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-log.controller.ts @@ -2,6 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysNoticeLogServiceImplService } from '../../../services/admin/sys/impl/sys-notice-log-service-impl.service'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysNoticeLogListVoDto } from '../../../dtos/admin/sys/vo/sys-notice-log-list-vo.dto'; import { SysNoticeLogInfoVoDto } from '../../../dtos/admin/sys/vo/sys-notice-log-info-vo.dto'; import { SysNoticeLogParamDto } from '../../../dtos/core/notice/param/sys-notice-log-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-sms-log.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-sms-log.controller.ts index 0363cf12..d93177b4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-sms-log.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice-sms-log.controller.ts @@ -2,6 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysNoticeSmsLogServiceImplService } from '../../../services/admin/sys/impl/sys-notice-sms-log-service-impl.service'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysNoticeSmsLogListVoDto } from '../../../dtos/admin/sys/vo/sys-notice-sms-log-list-vo.dto'; import { SysNoticeSmsLogInfoVoDto } from '../../../dtos/admin/sys/vo/sys-notice-sms-log-info-vo.dto'; import { SysNoticeSmsLogParamDto } from '../../../dtos/admin/sys/param/sys-notice-sms-log-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice.controller.ts index 5dd1fc06..7ee1a69d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/notice/notice.controller.ts @@ -4,7 +4,6 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { NoticeServiceImplService } from '../../../services/admin/notice/impl/notice-service-impl.service'; import { EditMessageStatusParamDto } from '../../../dtos/admin/notice/param/edit-message-status-param.dto'; import { NoticeInfoVoDto } from '../../../dtos/core/notice/vo/notice-info-vo.dto'; -import { PayInfoVoDto } from '../../../dtos/core/pay/vo/pay-info-vo.dto'; import { SmsTypeVoDto } from '../../../dtos/admin/notice/vo/sms-type-vo.dto'; import { AddonNoticeListVoDto } from '../../../dtos/core/notice/vo/addon-notice-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay-refund.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay-refund.controller.ts index 2d9300e0..8e7089be 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay-refund.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay-refund.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { PayRefundServiceImplService } from '../../../services/admin/pay/impl/pay-refund-service-impl.service'; import { PayRefundTransferParamDto } from '../../../dtos/core/pay/param/pay-refund-transfer-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { PayRefundListVoDto } from '../../../dtos/core/pay/vo/pay-refund-list-vo.dto'; import { PayRefundInfoVoDto } from '../../../dtos/core/pay/vo/pay-refund-info-vo.dto'; import { PayRefundSearchParamDto } from '../../../dtos/core/pay/param/pay-refund-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay.controller.ts index a7533e51..0b95bcea 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/pay/pay.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { PayServiceImplService } from '../../../services/admin/pay/impl/pay-service-impl.service'; import { PayParamDto } from '../../../dtos/admin/pay/param/pay-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { PayListVoDto } from '../../../dtos/core/pay/vo/pay-list-vo.dto'; import { PayInfoVoDto } from '../../../dtos/core/pay/vo/pay-info-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-account-log.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-account-log.controller.ts index f369ed43..5e2ea7e7 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-account-log.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-account-log.controller.ts @@ -2,6 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SiteAccountLogServiceImplService } from '../../../services/admin/site/impl/site-account-log-service-impl.service'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SiteAccountLogListVoDto } from '../../../dtos/admin/site/vo/site-account-log-list-vo.dto'; import { SiteAccountLogInfoVoDto } from '../../../dtos/admin/site/vo/site-account-log-info-vo.dto'; import { SiteAccountLogParamDto } from '../../../dtos/admin/site/param/site-account-log-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-group.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-group.controller.ts index 359435ae..3896f2b6 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-group.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site-group.controller.ts @@ -4,9 +4,9 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SiteGroupServiceImplService } from '../../../services/admin/site/impl/site-group-service-impl.service'; import { SiteGroupAddParamDto } from '../../../dtos/admin/site/param/site-group-add-param.dto'; import { SiteGroupParamDto } from '../../../dtos/admin/site/param/site-group-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SiteGroupListVoDto } from '../../../dtos/admin/site/vo/site-group-list-vo.dto'; -import { SiteGroupInfoVoDto } from '../dtos/site-group-info-vo.dto'; -import { SiteGroupDto } from '../../../entities/site-group.entity'; +import { SiteGroup } from '../../../entities/site-group.entity'; import { SiteGroupSearchParamDto } from '../../../dtos/admin/site/param/site-group-search-param.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { SysUserRoleListVoDto } from '../../../dtos/admin/sys/vo/sys-user-role-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site.controller.ts index ec987b0e..ca2e04c9 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/site.controller.ts @@ -5,6 +5,7 @@ import { SiteServiceImplService } from '../../../services/admin/site/impl/site-s import { AuthServiceImplService } from '../../../services/admin/auth/impl/auth-service-impl.service'; import { SiteAddParamDto } from '../../../dtos/admin/site/param/site-add-param.dto'; import { SiteEditParamDto } from '../../../dtos/admin/site/param/site-edit-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SiteListVoDto } from '../../../dtos/admin/site/vo/site-list-vo.dto'; import { SiteInfoVoDto } from '../../../dtos/core/site/vo/site-info-vo.dto'; import { ShowAppListVoDto } from '../../../dtos/admin/site/vo/show-app-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user-log.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user-log.controller.ts index 853a5fed..b3698c56 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user-log.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user-log.controller.ts @@ -2,6 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysUserLogServiceImplService } from '../../../services/admin/sys/impl/sys-user-log-service-impl.service'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysUserLogListVoDto } from '../../../dtos/admin/sys/vo/sys-user-log-list-vo.dto'; import { SysUserLogInfoVoDto } from '../../../dtos/admin/sys/vo/sys-user-log-info-vo.dto'; import { SysUserLogParamDto } from '../../../dtos/admin/sys/param/sys-user-log-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user.controller.ts index d90dbecc..23aaea1b 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/site/user.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SiteUserServiceImplService } from '../../../services/admin/site/impl/site-user-service-impl.service'; import { SiteUserParamDto } from '../../../dtos/admin/site/param/site-user-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SiteUserVoDto } from '../../../dtos/admin/site/vo/site-user-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { SiteGroupListVoDto } from '../../../dtos/admin/site/vo/site-group-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/stat/stat-hour.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/stat/stat-hour.controller.ts index bfab8320..1209bee4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/stat/stat-hour.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/stat/stat-hour.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { StatHourServiceImplService } from '../../../services/admin/stat/impl/stat-hour-service-impl.service'; import { StatHourParamDto } from '../../../dtos/admin/stat/param/stat-hour-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { StatHourListVoDto } from '../../../dtos/admin/stat/vo/stat-hour-list-vo.dto'; import { StatHourInfoVoDto } from '../../../dtos/admin/stat/vo/stat-hour-info-vo.dto'; import { StatHourSearchParamDto } from '../../../dtos/admin/stat/param/stat-hour-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-attachment.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-attachment.controller.ts index 8fd692da..c79b1759 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-attachment.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-attachment.controller.ts @@ -5,6 +5,7 @@ import { SysAttachmentServiceImplService } from '../../../services/admin/sys/imp import { SysAttachmentDelParamDto } from '../../../dtos/admin/sys/param/sys-attachment-del-param.dto'; import { SysAttachmentMoveParamDto } from '../../../dtos/admin/sys/param/sys-attachment-move-param.dto'; import { SysAttachmentCategoryParamDto } from '../../../dtos/admin/sys/param/sys-attachment-category-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysAttachmentListVoDto } from '../../../dtos/admin/sys/vo/sys-attachment-list-vo.dto'; import { AttachmentUploadVoDto } from '../../../dtos/admin/sys/vo/attachment-upload-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-config.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-config.controller.ts index 4ee4284f..959192ad 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-config.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-config.controller.ts @@ -12,7 +12,7 @@ import { SysServiceVoDto } from '../../../dtos/admin/sys/vo/sys-service-vo.dto'; import { SysCopyRightVoDto } from '../../../dtos/admin/sys/vo/sys-copy-right-vo.dto'; import { SysMapVoDto } from '../../../dtos/admin/sys/vo/sys-map-vo.dto'; import { SysDeveloperTokenVoDto } from '../../../dtos/admin/sys/vo/sys-developer-token-vo.dto'; -import { SceneDomainVoDto } from '../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../entities/scene-domain-vo.entity'; @Controller('adminapi/sys') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-export.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-export.controller.ts index ebe429e1..14b80a1f 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-export.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-export.controller.ts @@ -2,7 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysExportServiceImplService } from '../../../services/admin/sys/impl/sys-export-service-impl.service'; -import { MultiValueMapDto } from '../dtos/multi-value-map.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysExportListVoDto } from '../../../dtos/admin/sys/vo/sys-export-list-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { SysExportSearchParamDto } from '../../../dtos/admin/sys/param/sys-export-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-notice.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-notice.controller.ts index a05ecc50..ab5c9288 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-notice.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-notice.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysNoticeServiceImplService } from '../../../services/admin/sys/impl/sys-notice-service-impl.service'; import { SysNoticeParamDto } from '../../../dtos/admin/sys/param/sys-notice-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysNoticeListVoDto } from '../../../dtos/admin/sys/vo/sys-notice-list-vo.dto'; import { SysNoticeInfoVoDto } from '../../../dtos/admin/sys/vo/sys-notice-info-vo.dto'; import { SysNoticeSearchParamDto } from '../../../dtos/admin/sys/param/sys-notice-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-poster.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-poster.controller.ts index e6ccb001..6139c308 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-poster.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-poster.controller.ts @@ -5,6 +5,7 @@ import { CorePosterServiceImplService } from '../../../services/core/poster/impl import { SysPosterServiceImplService } from '../../../services/admin/sys/impl/sys-poster-service-impl.service'; import { SysPosterParamDto } from '../../../dtos/admin/sys/param/sys-poster-param.dto'; import { SysPosterModifyParamDto } from '../../../dtos/admin/sys/param/sys-poster-modify-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysPosterInfoVoDto } from '../../../dtos/admin/sys/vo/sys-poster-info-vo.dto'; import { SysPosterListVoDto } from '../../../dtos/admin/sys/vo/sys-poster-list-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-printer.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-printer.controller.ts index f3e64fda..6e188dd3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-printer.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-printer.controller.ts @@ -5,7 +5,6 @@ import { SysPrinterServiceImplService } from '../../../services/admin/sys/impl/s import { SysPrinterParamDto } from '../../../dtos/admin/sys/param/sys-printer-param.dto'; import { SysPrinterModifyStatusParamDto } from '../../../dtos/admin/sys/param/sys-printer-modify-status-param.dto'; import { SysPrinterPrintTicketParamDto } from '../../../dtos/core/sys/param/sys-printer-print-ticket-param.dto'; -import { SysPrinterInfoVoDto } from '../../../dtos/admin/sys/vo/sys-printer-info-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { SysPrinterSearchParamDto } from '../../../dtos/admin/sys/param/sys-printer-search-param.dto'; import { SysPrinterPrintTicketVoDto } from '../../../dtos/core/sys/vo/sys-printer-print-ticket-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-role.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-role.controller.ts index f8fccc89..dbd213a2 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-role.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-role.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysRoleServiceImplService } from '../../../services/admin/sys/impl/sys-role-service-impl.service'; import { SysRoleParamDto } from '../../../dtos/admin/sys/param/sys-role-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysRoleListVoDto } from '../../../dtos/admin/sys/vo/sys-role-list-vo.dto'; import { SysRoleInfoVoDto } from '../../../dtos/admin/sys/vo/sys-role-info-vo.dto'; import { SysRoleSearchParamDto } from '../../../dtos/admin/sys/param/sys-role-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-schedule.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-schedule.controller.ts index 8edaec15..8c58d9c4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-schedule.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-schedule.controller.ts @@ -4,6 +4,7 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysScheduleServiceImplService } from '../../../services/admin/sys/impl/sys-schedule-service-impl.service'; import { SysScheduleParamDto } from '../../../dtos/admin/sys/param/sys-schedule-param.dto'; import { SysScheduleLogDelParamDto } from '../../../dtos/admin/sys/param/sys-schedule-log-del-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysScheduleListVoDto } from '../../../dtos/admin/sys/vo/sys-schedule-list-vo.dto'; import { SysScheduleInfoVoDto } from '../../../dtos/admin/sys/vo/sys-schedule-info-vo.dto'; import { SysScheduleLogListVoDto } from '../../../dtos/admin/sys/vo/sys-schedule-log-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-user-role.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-user-role.controller.ts index 8b8024a9..13b44723 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-user-role.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/sys/sys-user-role.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { SysUserRoleServiceImplService } from '../../../services/admin/sys/impl/sys-user-role-service-impl.service'; import { SysUserRoleParamDto } from '../../../dtos/admin/sys/param/sys-user-role-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysUserRoleListVoDto } from '../../../dtos/admin/sys/vo/sys-user-role-list-vo.dto'; import { SysUserRoleInfoVoDto } from '../../../dtos/admin/sys/vo/sys-user-role-info-vo.dto'; import { SysUserRoleSearchParamDto } from '../../../dtos/admin/sys/param/sys-user-role-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/user/user.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/user/user.controller.ts index 077dc844..d1982e66 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/user/user.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/user/user.controller.ts @@ -5,12 +5,13 @@ import { SysUserServiceImplService } from '../../../services/admin/sys/impl/sys- import { SysUserAddParamDto } from '../../../dtos/admin/sys/param/sys-user-add-param.dto'; import { SysUserCreateSiteLimitAddParamDto } from '../../../dtos/admin/sys/param/sys-user-create-site-limit-add-param.dto'; import { SysUserCreateSiteLimitEditParamDto } from '../../../dtos/admin/sys/param/sys-user-create-site-limit-edit-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { SysUserListVoDto } from '../../../dtos/admin/sys/vo/sys-user-list-vo.dto'; -import { SysUserInfoVoDto } from '../../../dtos/admin/sys/vo/sys-user-info-vo.dto'; import { SysUserDetailVoDto } from '../../../dtos/admin/sys/vo/sys-user-detail-vo.dto'; import { SysUserCreateSiteLimitVoDto } from '../../../dtos/admin/sys/vo/sys-user-create-site-limit-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { SiteGroupSearchParamDto } from '../../../dtos/admin/site/param/site-group-search-param.dto'; +import { SysUserInfoVoDto } from '../../../dtos/admin/sys/vo/sys-user-info-vo.dto'; @Controller('adminapi/user') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verifier.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verifier.controller.ts index 29121e90..1aad07f3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verifier.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verifier.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { VerifierServiceImplService } from '../../../services/admin/verify/impl/verifier-service-impl.service'; import { VerifierParamDto } from '../../../dtos/admin/verify/param/verifier-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { VerifierListVoDto } from '../../../dtos/admin/verify/vo/verifier-list-vo.dto'; import { VerifierSearchParamDto } from '../../../dtos/admin/verify/param/verifier-search-param.dto'; import { VerifierInfoVoDto } from '../../../dtos/admin/verify/vo/verifier-info-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verify.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verify.controller.ts index 76aa626c..69b95fdf 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verify.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/verify/verify.controller.ts @@ -2,6 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { VerifyServiceImplService } from '../../../services/admin/verify/impl/verify-service-impl.service'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { VerifyListVoDto } from '../../../dtos/admin/verify/vo/verify-list-vo.dto'; import { VerifyInfoVoDto } from '../../../dtos/admin/verify/vo/verify-info-vo.dto'; import { VerifyParamDto } from '../../../dtos/admin/verify/param/verify-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/config.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/config.controller.ts index f24c5379..7ebafdb2 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/config.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/config.controller.ts @@ -4,7 +4,7 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { WeappConfigServiceImplService } from '../../../services/admin/weapp/impl/weapp-config-service-impl.service'; import { WeappConfigParamDto } from '../../../dtos/core/weapp/param/weapp-config-param.dto'; import { WeappConfigVoDto } from '../../../dtos/core/weapp/vo/weapp-config-vo.dto'; -import { SetDomainParamDto } from '../../../entities/set-domain-param.entity'; +import { SetDomainParam } from '../../../entities/set-domain-param.entity'; import { WeappStaticInfoVoDto } from '../../../dtos/admin/weapp/vo/weapp-static-info-vo.dto'; import { WechatStaticInfoVoDto } from '../../../dtos/admin/wechat/vo/wechat-static-info-vo.dto'; import { WechatConfigParamDto } from '../../../dtos/core/wechat/param/wechat-config-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/version.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/version.controller.ts index 1d85202e..4f402aa0 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/version.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/weapp/version.controller.ts @@ -3,6 +3,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagg import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { WeappVersionServiceImplService } from '../../../services/admin/weapp/impl/weapp-version-service-impl.service'; import { WeappVersionAddParamDto } from '../../../dtos/admin/weapp/param/weapp-version-add-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { WeappTemplateSyncParamDto } from '../../../dtos/admin/weapp/param/weapp-template-sync-param.dto'; import { WeappVersionListVoDto } from '../../../dtos/admin/weapp/vo/weapp-version-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/media.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/media.controller.ts index ee6b9a09..352c71b3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/media.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/media.controller.ts @@ -2,6 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { WechatMediaServiceImplService } from '../../../services/admin/wechat/impl/wechat-media-service-impl.service'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { WechatMediaListVoDto } from '../../../dtos/admin/wechat/vo/wechat-media-list-vo.dto'; import { WechatMediaParamDto } from '../../../dtos/admin/wechat/param/wechat-media-param.dto'; import { WechatMediaSearchParamDto } from '../../../dtos/admin/wechat/param/wechat-media-search-param.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/reply.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/reply.controller.ts index 84ee0c2d..34c2472e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/reply.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wechat/reply.controller.ts @@ -5,6 +5,7 @@ import { WechatReplyServiceImplService } from '../../../services/admin/wechat/im import { WechatReplyParamDto } from '../../../dtos/admin/wechat/param/wechat-reply-param.dto'; import { WechatDefaultReplyParamDto } from '../../../dtos/admin/wechat/param/wechat-default-reply-param.dto'; import { WechatSubscribeReplyParamDto } from '../../../dtos/admin/wechat/param/wechat-subscribe-reply-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { WechatReplyInfoVoDto } from '../../../dtos/admin/wechat/vo/wechat-reply-info-vo.dto'; import { WechatReplySearchParamDto } from '../../../dtos/admin/wechat/param/wechat-reply-search-param.dto'; import { WechatReplyListVoDto } from '../../../dtos/admin/wechat/vo/wechat-reply-list-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/oplatform.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/oplatform.controller.ts index 1172f35a..b9c49522 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/oplatform.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/oplatform.controller.ts @@ -2,6 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { OplatformServiceImplService } from '../../../services/admin/wxoplatform/impl/oplatform-service-impl.service'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { OplatformRecordVoDto } from '../../../dtos/admin/wxoplatform/vo/oplatform-record-vo.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { MemberSearchParamDto } from '../../../dtos/admin/member/param/member-search-param.dto'; @@ -9,7 +10,7 @@ import { MemberListVoDto } from '../../../dtos/admin/member/vo/member-list-vo.dt import { AuthorizationParamDto } from '../../../dtos/admin/wxoplatform/param/authorization-param.dto'; import { IOplatformAuthRecordParamDto } from '../../../dtos/admin/wxoplatform/param/i-oplatform-auth-record-param.dto'; import { OplatformConfigParamDto } from '../../../dtos/admin/wxoplatform/param/oplatform-config-param.dto'; -import { CoreSysConfigVoDto } from '../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../entities/core-sys-config-vo.entity'; import { CoreOplatformStaticConfigVoDto } from '../../../dtos/core/wxoplatform/vo/core-oplatform-static-config-vo.dto'; @Controller('adminapi/wxoplatform') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/weapp-version.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/weapp-version.controller.ts index fb7c1d57..338500b2 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/weapp-version.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/wxoplatform/weapp-version.controller.ts @@ -4,6 +4,7 @@ import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { WeappVersionServiceImplService } from '../../../services/admin/weapp/impl/weapp-version-service-impl.service'; import { UndoAuditParamDto } from '../../../dtos/admin/wxoplatform/param/undo-audit-param.dto'; import { SyncSiteGroupAuthWeappParamDto } from '../../../dtos/admin/wxoplatform/param/sync-site-group-auth-weapp-param.dto'; +import { PageResultDto } from '../../../dtos/page-result.dto'; import { PageParamDto } from '../../../dtos/page-param.dto'; import { OplatformConfigParamDto } from '../../../dtos/admin/wxoplatform/param/oplatform-config-param.dto'; import { SiteGroupWeappVersionVoDto } from '../../../dtos/admin/wxoplatform/vo/site-group-weapp-version-vo.dto'; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/api/addon/addon.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/api/addon/addon.controller.ts index 0f86f262..7b96cc0d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/api/addon/addon.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/api/addon/addon.controller.ts @@ -2,7 +2,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } fro import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; import { CoreAddonServiceImplService } from '../../../services/core/addon/impl/core-addon-service-impl.service'; -import { InstallAddonListVoDto } from '../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../entities/install-addon-list-vo.entity'; @Controller('api/addon') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/core/http-server-error.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/core/http-server-error.controller.ts index b4ad2106..6c6afd61 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/core/http-server-error.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/core/http-server-error.controller.ts @@ -1,7 +1,6 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { AuthGuard, RbacGuard, Public, Result } from '@wwjBoot'; -import { WebRequestDto } from '../dtos/web-request.dto'; @Controller('error') @ApiTags('API') diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-build-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-build-service-impl.service.ts index ca25cd75..0561dfa0 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-build-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-build-service-impl.service.ts @@ -1,14 +1,11 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService } from '@wwjBoot'; -import * as fs from 'fs'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; @Injectable() export class AddonDevelopBuildServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -16,44 +13,15 @@ export class AddonDevelopBuildServiceImplService { * build */ async build(addon: string): Promise { - if (this.appConfig.runActive !== "dev") throw new BadRequestException("只有在开发环境下才可以进行打包操作"); - - if (!fs.existsSync(this.appConfig.projectNiucloudAddon + addon)) throw new BadRequestException("插件不存在"); - const infoFile: string = this.appConfig.projectNiucloudAddon + addon + "/src/main/resources/info.json"; - if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在"); - - this.addon = addon; - this.addonPath = this.appConfig.webRootDownAddon + addon + "/"; - - try { - for (const child of this.addonPath.listFiles()) { - if (fs.statSync(child).isDirectory() && !path.basename(child) === "sql") fs.rmSync(child, { recursive: true, force: true }); - } - fs.copyFileSync(infoFile, this.addonPath + "info.json"); - } catch (e) { - throw new BadRequestException(e.message); - } - - this.admin(); - this.web(); - this.uniapp(); - this.java(); - this.jar(); - this.resource(); - this.buildUniappLangJson(); - this.buildUniappPagesJson(); - this.menu("site"); - this.menu("admin"); - // 生成压缩包 - this.compressor(); + // TODO: 实现build业务逻辑 + return null; } /** * download */ async download(key: string): Promise { - const file: string = this.appConfig.webRootDownResource + "temp/" + key + ".zip"; - if (!fs.existsSync(file)) throw new BadRequestException("请先打包插件"); - return file.path.replace(this.appConfig.projectRoot, ""); + // TODO: 实现download业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-service-impl.service.ts index 40c27e71..a471e675 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-develop-service-impl.service.ts @@ -1,120 +1,56 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils } from '@wwjBoot'; -import * as fs from 'fs'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AddonDevelopAddParamDto } from '../../../../dtos/admin/addon/param/addon-develop-add-param.dto'; import { AddonDevelopSearchParamDto } from '../../../../dtos/admin/addon/param/addon-develop-search-param.dto'; import { AddonDevelopInfoVoDto } from '../../../../dtos/admin/addon/vo/addon-develop-info-vo.dto'; import { AddonDevelopListVoDto } from '../../../../dtos/admin/addon/vo/addon-develop-list-vo.dto'; -import { InstallAddonListVoDto } from '../../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../../entities/install-addon-list-vo.entity'; @Injectable() export class AddonDevelopServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(searchParam: AddonDevelopSearchParam): Promise { - const list: AddonDevelopListVo[] = []; - - try { - // 获取已安装的插件 - const installAddonList: Record = this.coreAddonService.installAddonList; - - // 获取本地所有的插件 - const localAddons: string[] = fs.readdirSync(this.appConfig.webRootDownAddon) - .map(path => path) - .filter(file => fs.statSync(file).isDirectory()) - ; - - for (const file of localAddons) { - if (fs.existsSync(file, "info.json")) { - const info: Record = JsonUtils.parseObject(JsonUtils.parseObject(fs.readFileSync(path.join(file, "info.json"), 'utf-8'))); - const addon: string = info.getStr("key"); - const addonDevelopListVo: AddonDevelopListVo = Object.assign(new AddonDevelopListVo(), info) /* TODO: 检查AddonDevelopListVo构造函数 */; - if (installAddonList.get(addon) != null) addonDevelopListVo.installInfo = installAddonList.get(addon); - addonDevelopListVo.icon = fs.readFileSync(file + "/resource/icon.png", 'base64'); - addonDevelopListVo.cover = fs.readFileSync(file + "/resource/cover.png", 'base64'); - list.push(addonDevelopListVo); - } - } - - if (CommonUtils.isNotEmpty(searchParam.search) && list.length > 0) { - list = list.filter(addonDevelopListVo => addonDevelopListVo.getTitle().includes(searchParam.search)); - } - } catch (e) { - console.error(e); - } - - return list; + async list(searchParam: AddonDevelopSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(key: string): Promise { - const infoFile: string = this.appConfig.webRootDownAddon + key + "/info.json"; - if (!fs.existsSync(infoFile)) return null; - - const info: Record = JsonUtils.parseObject(JsonUtils.parseObject(fs.readFileSync(path.join(infoFile)); - const addonDevelopInfoVo: AddonDevelopInfoVo = Object.assign(new AddonDevelopInfoVo(), info), 'utf-8')) /* TODO: 检查AddonDevelopInfoVo构造函数 */; - - return addonDevelopInfoVo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(param: AddonDevelopAddParam): Promise { - const infoFile: string = this.appConfig.webRootDownAddon + param.getKey( + "/info.json"); - if (fs.existsSync(infoFile)) throw new BadRequestException("已存在相同插件标识的应用"); - - this.generateFile(param); + async add(param: AddonDevelopAddParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(param: AddonDevelopAddParam): Promise { - const infoFile: string = this.appConfig.webRootDownAddon + param.getKey( + "/info.json"); - if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在"); - - this.generateFile(param); - - const addon: Addon = this.coreAddonService.getInfoByKey(param.key); - if (addon != null) { - const model: Addon = new Addon(); - model.title = param.title; - model.version = param.version; - model.desc = param.desc; - model.icon = param.icon; - model.key = param.key; - model.type = param.type; - model.supportApp = param.supportApp; - this.coreAddonService.set(model); - } + async edit(param: AddonDevelopAddParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(key: string): Promise { - const infoFile: string = this.appConfig.webRootDownAddon + key + "/info.json"; - if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在"); - - const addon: Addon = this.coreAddonService.getInfoByKey(key); - if (addon != null) throw new BadRequestException("已安装的插件不允许删除"); - - try { - fs.rmSync(this.appConfig.webRootDownAddon + key, { recursive: true, force: true }); - } catch (e) { - console.error(e); - } + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-log-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-log-service-impl.service.ts index 0238cafd..cdf46eae 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-log-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-log-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -17,60 +17,32 @@ export class AddonLogServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: AddonLogSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - - [AddonLog[], number] iPage = this.addonLogRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - - const list: AddonLogListVo[] = []; - for (const item of iPageRecords) { - const vo: AddonLogListVo = new AddonLogListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page,limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: AddonLogSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * detail */ async detail(id: number): Promise { - const model: AddonLog = this.addonLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: AddonLogInfoVo = new AddonLogInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现detail业务逻辑 + return null; } /** * add */ - async add(AddonLogParam: AddonLogParam): Promise { - const model: AddonLog = new AddonLog(); - model.action = AddonLogParam.action; - model.key = AddonLogParam.key; - model.fromVersion = AddonLogParam.fromVersion; - model.toVersion = AddonLogParam.toVersion; - model.createTime = Date.now( / 1000); - this.addonLogRepository.save(model); + async add(AddonLogParam: AddonLogParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: AddonLog = this.addonLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.addonLogRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-service-impl.service.ts index fbf78140..60577f9c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/addon/impl/addon-service-impl.service.ts @@ -1,16 +1,13 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService } from '@wwjBoot'; -import * as fs from 'fs'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AddonListVoDto } from '../../../../dtos/admin/addon/vo/addon-list-vo.dto'; -import { HttpResponseDto } from '../dtos/http-response.dto'; import { AddonParamDto } from '../../../../dtos/admin/addon/param/addon-param.dto'; import { AddonSearchParamDto } from '../../../../dtos/admin/addon/param/addon-search-param.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { ModuleListVoDto } from '../../../../dtos/admin/niucloud/vo/module-list-vo.dto'; -import { InstallAddonListVoDto } from '../../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../../entities/install-addon-list-vo.entity'; import { NiucloudConfigVoDto } from '../../../../dtos/core/niucloud/vo/niucloud-config-vo.dto'; import { SiteInfoCacheVoDto } from '../../../../dtos/core/site/vo/site-info-cache-vo.dto'; import { LocalAddonListVoDto } from '../../../../dtos/admin/addon/vo/local-addon-list-vo.dto'; @@ -21,7 +18,6 @@ import { IndexAddonListParamDto } from '../../../../dtos/admin/addon/vo/index-ad @Injectable() export class AddonServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -29,127 +25,40 @@ export class AddonServiceImplService { * getLocalAddonList */ async getLocalAddonList(): Promise { - const vo: LocalAddonListVo = new LocalAddonListVo(); - - const list: Record = new const installAddonList: Record<>(); - - // 获取已安装的插件 - Record = this.this.CoreAddonService.installAddonList; - - try { - const moduleList: ModuleListVo[] = this.niucloudService.moduleList; - - for (const item of moduleList) { - ModuleListVo.const app: App = item.app; - const addonInfoVo: LocalAddonInfoVo = new LocalAddonInfoVo(); - addonInfoVo.title = app.appName; - addonInfoVo.desc = app.appDesc; - addonInfoVo.key = app.appKey; - addonInfoVo.author = item.siteName; - addonInfoVo.version = item.version; - addonInfoVo.isLocal = false; - addonInfoVo.isDownload = false; - addonInfoVo.type = app.appType; - addonInfoVo.icon = app.appLogo; - addonInfoVo.cover = app.windowLogo[0]; - list.put(app.appKey, addonInfoVo); - } - - // 获取本地所有的插件 - const localAddons: string[] = fs.readdirSync(this.appConfig.webRootDownAddon) - .map(path => path) - .filter(file => fs.statSync(file).isDirectory()) - ; - - for (const file of localAddons) { - if (fs.existsSync(file, "info.json")) { - const info: Record = JsonUtils.parseObject(JsonUtils.parseObject(fs.readFileSync(path.join(file, "info.json"), 'utf-8'))); - const addon: string = info.getStr("key"); - if (list.get(addon) != null) { - const addonInfoVo: LocalAddonInfoVo = list.get(addon); - addonInfoVo.isDownload = true; - addonInfoVo.isLocal = false; - if (installAddonList.get(addon) != null) { - addonInfoVo.installInfo = installAddonList.get(addon); - } - list.put(addon, addonInfoVo); - } else { - const localAddonInfoVo: LocalAddonInfoVo = Object.assign(new LocalAddonInfoVo(), info) /* TODO: 检查LocalAddonInfoVo构造函数 */; - localAddonInfoVo.isLocal = true; - localAddonInfoVo.isDownload = true; - if (installAddonList.get(addon) != null) - localAddonInfoVo.installInfo = installAddonList.get(addon); - localAddonInfoVo.icon = fs.readFileSync(file + "/resource/icon.png", 'base64'); - localAddonInfoVo.cover = fs.readFileSync(file + "/resource/cover.png", 'base64'); - list.put(addon, localAddonInfoVo); - } - } - } - } catch (e) { - console.error(e); - vo.error = e.message; - } - - vo.list = list; - return vo; + // TODO: 实现getLocalAddonList业务逻辑 + return null; } /** * list */ - async list(pageParam: PageParam, addonSearchParam: AddonSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - [Addon[], number] iPage = this.addonRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: AddonListVo[] = []; - for (const item of iPageRecords) { - const vo: AddonListVo = new AddonListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, addonSearchParam: AddonSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: Addon = this.addonRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: AddonInfoVo = new AddonInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addonParam: AddonParam): Promise { - const model: Addon = new Addon(); - - model.createTime = Date.now( / 1000); - model.installTime = addonParam.installTime; - model.updateTime = Date.now( / 1000); - model.cover = addonParam.cover; - model.type = addonParam.type; - model.supportApp = addonParam.supportApp; - model.isStar = addonParam.isStar; - model.compile = String.join(",", addonParam.compile); - // BeanUtil.copyProperties(sysPositionEditParam, sysPosition); - this.addonRepository.save(model); + async add(addonParam: AddonParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - this.addonRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** @@ -198,89 +107,32 @@ export class AddonServiceImplService { * getTitleListByKey */ async getTitleListByKey(keys: string): Promise { - const jsonKey: JSONArray = JSONUtil.parseArray(keys); - const jsonArray: JSONArray = new JSONArray(); - if(jsonKey.length>0){ - const keyList: string[] = jsonKey.toList(String.class); - const addonList: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - for (const addon of addonList) { - jsonArray.put(addon.title); - } - } - return jsonArray.toString(); + // TODO: 实现getTitleListByKey业务逻辑 + return null; } /** * getAddonListByKeys */ async getAddonListByKeys(addonKeys: List, type: string): Promise { - return cached.rememberObject(useCache, cacheTagName, ["getAddonListByKeys", addonKeys, type], uniqueKey => { - - any /* TODO: QueryWrapper */ query = new QueryWrapper(); - if(type === "") - { - query.in("`key`", addonKeys); - }else{ - query.in("`key`", addonKeys).eq("type", type); - } - return this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - }); + // TODO: 实现getAddonListByKeys业务逻辑 + return null; } /** * download */ async download(addon: string, version: string): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const actionQuery: Record = new const query: Record<>(); - actionQuery.put("data[app_key]", addon); - actionQuery.put("data[version]", version); - actionQuery.put("data[product_key]", instance.productKey); - const actionToken: Record = this.niucloudService.getActionToken("download", actionQuery); - - Record = {}; - query.put("authorize_code", instance.code); - query.put("addon_name", addon); - query.put("version", version); - query.put("token", actionToken == null ? "" : actionToken.getStr("token")); - - const headResponse: HttpResponse = new NiucloudUtils.Cloud().build("cloud/download").header("Range", "bytes=0-").query(query).method(Method.HEAD).execute(); - const totalLength: string = headResponse.header("Content-range"); - const length: string = totalLength.split("/")[1]; - - const downloadDir: string = this.appConfig.webRootDownResource + "download/"; - FileTools.createDirs(downloadDir); - - const file: string = downloadDir + addon + ".zip"; - if (fs.existsSync(file)) file.delete(); - - const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/download").header("Range", "bytes=0-" + length).query(query).method(Method.GET).execute(); - - try (const fos: FileOutputStream = new FileOutputStream(file)) { - fos.write(response.bodyBytes()); - ZipUtil.unzip(file.path, this.appConfig.webRootDownAddon, Charset.forName('utf-8')); - } catch (e) { - console.error(e); - throw new BadRequestException(e.message); - } + // TODO: 实现download业务逻辑 + return null; } /** * getIndexAddonList */ - async getIndexAddonList(param: IndexAddonListParam): Promise { - const params: Record = {}; - const config: NiucloudConfigVo = this.coreNiucloudConfigService.niucloudConfig; - params.put("code", config.authCode); - params.put("secret", config.authSecret); - params.put("labels", param.labelId); - params.put("product_key", "sass"); - params.put("is_recommend", 1); - params.put("order_field", "sale_num desc, visit_num desc"); - const jsonObject: Record = NiucloudUtils.Niucloud.get("store/app", params); - const data: Record = jsonObject.getRecord("data"); - return data.getJSONArray("data"); + async getIndexAddonList(param: IndexAddonListParamDto): Promise { + // TODO: 实现getIndexAddonList业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/aliapp/impl/aliapp-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/aliapp/impl/aliapp-config-service-impl.service.ts index 53afbdda..bbe26b88 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/aliapp/impl/aliapp-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/aliapp/impl/aliapp-config-service-impl.service.ts @@ -4,7 +4,7 @@ import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { AliappConfigParamDto } from '../../../../dtos/core/aliapp/param/aliapp-config-param.dto'; import { AliappConfigVoDto } from '../../../../dtos/core/aliapp/vo/aliapp-config-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class AliappConfigServiceImplService { @@ -23,7 +23,7 @@ export class AliappConfigServiceImplService { /** * setAliappConfig */ - async setAliappConfig(aliappConfigParam: AliappConfigParam): Promise { + async setAliappConfig(aliappConfigParam: AliappConfigParamDto): Promise { this.coreAliappConfigService.aliappConfig = this.requestContext.siteId, aliappConfigParam; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/auth-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/auth-service-impl.service.ts index 8121878d..db901cd8 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/auth-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/auth-service-impl.service.ts @@ -1,20 +1,19 @@ -import { Injectable, BadRequestException, UnauthorizedException } from '@nestjs/common'; +import { Injectable, BadRequestException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, JsonUtils, AppConfigService } from '@wwjBoot'; import { EditAuthUserParamDto } from '../../../../dtos/admin/auth/param/edit-auth-user-param.dto'; import { AuthUserInfoVoDto } from '../../../../dtos/admin/auth/vo/auth-user-info-vo.dto'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; import { SysUserParamDto } from '../../../../dtos/admin/sys/param/sys-user-param.dto'; import { SysUserDetailVoDto } from '../../../../dtos/admin/sys/vo/sys-user-detail-vo.dto'; import { SysUserRoleInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-user-role-info-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class AuthServiceImplService { constructor( private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -22,80 +21,24 @@ export class AuthServiceImplService { * checkSiteAuth */ async checkSiteAuth(request: HttpServletRequest): Promise { - const uid: number = RequestUtils.uid(); - - //设置当前操作站点id - const siteId: number = this.requestContext.siteId; - RequestUtils.siteId = siteId; - - //缓存站点信息数据 - const siteinfo: SiteInfoVo = this.siteService.info(siteId); - //站点不存在 抛出异常 - if (siteinfo == null) { - throw new UnauthorizedException("SITE_NOT_EXIST", 400); - } - //没有当前站点的信息 - if (!isSuperAdmin() && ObjectUtil.isNotNull(uid) && uid > 0) { - const sysUserRoleInfoVo: SysUserRoleInfoVo = this.sysUserRoleService.getUserRole(siteId, uid); - if (sysUserRoleInfoVo == null) { - throw new UnauthorizedException("NO_SITE_PERMISSION", 400); - } - } - RequestUtils.appType = siteinfo.appType; + // TODO: 实现checkSiteAuth业务逻辑 + return null; } /** * isSuperAdmin */ async isSuperAdmin(): Promise { - const siteId: number = RequestUtils.defaultSiteId(); - const uid: number = RequestUtils.uid(); - const superAdminUid: number = cached.tag("adminAuth").get("superAdminUid"); - if (ObjectUtil.isNotNull(superAdminUid) && CommonUtils.isNotEmpty(superAdminUid) && superAdminUid > 0) { - return superAdminUid === uid; - } else { - const sysUserRole: SysUserRole = this.sysUserRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("is_admin", 1).last(" limit 1")); - cached.tag("adminAuth").put("superAdminUid", sysUserRole.uid); - return sysUserRole.uid === uid; - } + // TODO: 实现isSuperAdmin业务逻辑 + return null; } /** * checkRole */ async checkRole(request: HttpServletRequest): Promise { - //当前访问的路由地址 - const rule: string = RequestUtils.reqeustURI; - const method: string = RequestUtils.requestMethod; - - //缓存站点信息数据 - const siteinfo: SiteInfoVo = this.siteService.info(this.requestContext.siteId); - if (method !== "get") { - if (siteinfo.status === SiteStatusEnum.EXPIRE.code) { - throw new UnauthorizedException("站点已打烊,续费后可继续使用此项功能", 400); - } - if (siteinfo.status === SiteStatusEnum.CLOSE.code) { - throw new UnauthorizedException("站点已停止", 400); - } - } - - Map allMenuList = this.sysMenuService.getAllApiList(RequestUtils.appType(), 100); - const menulist: string[] = allMenuList.get(method); - const is_exists: number = menulist.indexOf(rule); - - //判断当前访问的接口是否收到权限的限制 - if (is_exists < 0) { - Map otherMenuList = this.sysMenuService.getAllApiList(RequestUtils.appType() === AppTypeEnum.basename(ADMIN) ? AppTypeEnum.basename(SITE) : AppTypeEnum.basename(ADMIN), 100); - const methodMenuList: string[] = otherMenuList.get(method); - const is_method_exists: number = methodMenuList.indexOf(rule); - if (is_method_exists > 0) { - throw new UnauthorizedException("NO_PERMISSION", 400); - } - } - Map roleMenuList = this.authApiList; - /*if(roleMenuList.get(method).size()<=0 || roleMenuList.get(method).indexOf(rule)<=0){ - throw new UnauthorizedException("NO_PERMISSION"); - }*/ + // TODO: 实现checkRole业务逻辑 + return null; } /** @@ -113,97 +56,32 @@ export class AuthServiceImplService { * getAuthMenuTreeList */ async getAuthMenuTreeList(addon: string): Promise { - const isAdmin: number = 0; - const siteId: number = this.requestContext.siteId; - const uid: number = RequestUtils.uid(); - const appType: string = RequestUtils.appType(); - Map authApi = {}; - const sysUserRoleInfoVo: SysUserRoleInfoVo = new SysUserRoleInfoVo(); - const menuList: SysMenu[] = []; - if (isSuperAdmin()) { - isAdmin = 1; - } else { - sysUserRoleInfoVo = this.sysUserRoleService.getUserRole(siteId, uid); - if (ObjectUtil.isNull(sysUserRoleInfoVo)) { - return new JSONArray(); - } - isAdmin = sysUserRoleInfoVo.isAdmin;//是否是超级管理员 - } - if (isAdmin > 0) { - menuList = this.sysMenuService.getMenuListByCondition(appType, siteId, 1, 0, [], addon); - } else { - const roleIdList: string[] = JSONUtil.toList(JSONUtil.parseArray(sysUserRoleInfoVo.roleIds), String.class); - const menuKeyList: string[] = this.sysRoleService.getMenuIdsByRoleIds(siteId, roleIdList); - menuList = this.sysMenuService.getMenuListByCondition(appType, siteId, 100, 0, menuKeyList, addon); - } - - const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(menuList)); - return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children"); + // TODO: 实现getAuthMenuTreeList业务逻辑 + return null; } /** * getAuthUserInfo */ async getAuthUserInfo(): Promise { - const uid: number = RequestUtils.uid(); - const userInfo: SysUserDetailVo = this.sysUserService.info(uid); - if (userInfo == null) return null; - - const vo: AuthUserInfoVo = new AuthUserInfoVo(); - BeanUtil.copyProperties(userInfo, vo); - return vo; - // MPJany /* TODO: QueryWrapper */ userRoleMPJQueryWrapper = new MPJQueryWrapper(); - // userRoleMPJQueryWrapper.select("sur.id, su.username, su.head_img, su.real_name, su.last_ip, su.last_time, su.login_count, sur.uid, sur.site_id, sur.role_ids, sur.create_time, sur.is_admin, sur.status") - // .setAlias("sur") - // .leftJoin("?_sys_user su ON sur.uid = su.uid".replace("?_", this.appConfig.tablePrefix)); - // userRoleMPJQueryWrapper.eq("sur.uid", uid); - // userRoleMPJQueryWrapper.eq("sur.site_id", siteId); - // const authUserInfoVo: AuthUserInfoVo = sysUserRoleMapper.selectJoinOne(AuthUserInfoVo.class, userRoleMPJQueryWrapper); - // if(ObjectUtil.isNotNull(authUserInfoVo)) - // { - // authUserInfoVo.statusName = ""; - // } - // - // return authUserInfoVo; + // TODO: 实现getAuthUserInfo业务逻辑 + return null; } /** * editAuth */ - async editAuth(editAuthUserParam: EditAuthUserParam): Promise { - if (ObjectUtil.isNotNull(editAuthUserParam.password) && CommonUtils.isNotEmpty(editAuthUserParam.password)) { - const sysUser: SysUser = this.sysUserService.find(RequestUtils.uid()); - if (!PasswordEncipher.matche(editAuthUserParam.originalPassword, sysUser.password)) { - throw new UnauthorizedException("OLD_PASSWORD_ERROR"); - } - } - const sysUserParam: SysUserParam = new SysUserParam(); - sysUserParam.headImg = editAuthUserParam.headImg; - sysUserParam.realName = editAuthUserParam.realName; - sysUserParam.password = editAuthUserParam.password; - this.sysUserService.edit(RequestUtils.uid(), sysUserParam); + async editAuth(editAuthUserParam: EditAuthUserParamDto): Promise { + // TODO: 实现editAuth业务逻辑 + return null; } /** * addUserLog */ async addUserLog(request: HttpServletRequest): Promise { - if (RequestUtils.requestMethod === "get") return; - - try { - const model: SysUserLog = new SysUserLog(); - model.siteId = this.requestContext.siteId; - model.uid = RequestUtils.uid(); - model.ip = RequestUtils.ip(); - model.username = StpUtil.getExtra("userName".toString()); - model.url = RequestUtils.reqeustURI; - model.params = "{}"; - model.type = RequestUtils.requestMethod; - model.createTime = Date.now( / 1000); - model.operation = getDescription(request); - this.sysUserLogRepository.save(model); - } catch (e) { - } + // TODO: 实现addUserLog业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/config-service-impl.service.ts index 48876af8..db3e9a35 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/config-service-impl.service.ts @@ -1,16 +1,15 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { LoginConfigParamDto } from '../../../../dtos/admin/member/param/login-config-param.dto'; import { LoginConfigVoDto } from '../../../../dtos/admin/member/vo/login-config-vo.dto'; import { SysCopyRightVoDto } from '../../../../dtos/admin/sys/vo/sys-copy-right-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class ConfigServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -18,20 +17,15 @@ export class ConfigServiceImplService { * getLoginConfig */ async getLoginConfig(): Promise { - const defaultSiteId: number = RequestUtils.defaultSiteId(); - const sysConfig: Record = this.coreConfigService.getConfigValue(defaultSiteId, ConfigKeyEnum.basename(ADMIN_LOGIN)); - return Object.assign(new LoginConfigVo(), sysConfig) /* TODO: 检查LoginConfigVo构造函数 */; + // TODO: 实现getLoginConfig业务逻辑 + return null; } /** * setLoginConfig */ - async setLoginConfig(loginConfigParam: LoginConfigParam): Promise { - const jsonObject: Record = new Record(); - jsonObject.set("is_captcha", loginConfigParam.isCaptcha); - jsonObject.set("is_site_captcha", loginConfigParam.isSiteCaptcha); - jsonObject.set("bg", loginConfigParam.bg); - jsonObject.set("site_bg", loginConfigParam.siteBg); - this.coreConfigService.config = this.requestContext.siteId, ConfigKeyEnum.basename(ADMIN_LOGIN, jsonObject); + async setLoginConfig(loginConfigParam: LoginConfigParamDto): Promise { + // TODO: 实现setLoginConfig业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts index 33259b05..68b2f9c5 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, UnauthorizedException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { UserLoginParamDto } from '../../../../dtos/admin/auth/param/user-login-param.dto'; import { LoginConfigVoDto } from '../../../../dtos/admin/member/vo/login-config-vo.dto'; import { LoginResultVoDto } from '../../../../dtos/admin/auth/vo/login-result-vo.dto'; @@ -13,109 +13,15 @@ import { SysUserRoleInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-user-rol @Injectable() export class LoginServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * login */ - async login(userLoginParam: UserLoginParam): Promise { - const appType: string = userLoginParam.appType; - const userName: string = userLoginParam.username; - const passWord: string = userLoginParam.password; - - if(!EnumUtils.isInclude(appType, AppTypeEnum.class, "getName")){ - throw new UnauthorizedException("APP_TYPE_NOT_EXIST"); - } - const siteId: number = this.requestContext.siteId; - - const loginConfigVo: LoginConfigVo = this.configService.loginConfig; - const isCaptcha: number = 0; - if(appType === AppTypeEnum.basename(ADMIN)){ - isCaptcha=loginConfigVo.isCaptcha; - }else if(appType === AppTypeEnum.basename(SITE)){ - isCaptcha=loginConfigVo.isSiteCaptcha; - } - - if(isCaptcha==1){ - //验证验证码 - const captchaVO: CaptchaVO = new CaptchaVO(); - captchaVO.captchaVerification = userLoginParam.captchaCode; - this.coreCaptchaImgService.verification(captchaVO); - } - const userInfo: SysUserInfoVo = this.sysUserService.getUserInfoByUserName(userName); - if(ObjectUtil.isNull(userInfo)){ - throw new UnauthorizedException("账号密码错误"); - } - - //检测密码加密是否正确 - if(!PasswordEncipher.matche(passWord, userInfo.password)){ - throw new UnauthorizedException("账号密码错误"); - } - //设置当前登录用户id - RequestUtils.uid = userInfo.uid; - - const defaultSiteId: number = 0; - const roleInfoVo: SysUserRoleInfoVo = new SysUserRoleInfoVo(); - const siteIds: number[] = []; - if(appType === AppTypeEnum.basename(ADMIN)){ - defaultSiteId=RequestUtils.defaultSiteId(); - roleInfoVo=this.sysUserRoleService.getUserRole(defaultSiteId, userInfo.uid); - if(ObjectUtil.isNotNull(roleInfoVo)){ - if(userInfo.status<=0){ - throw new UnauthorizedException("账号被锁定"); - } - }else{ - appType=AppTypeEnum.basename(SITE); - } - }else if(appType === AppTypeEnum.basename(SITE)){ - siteIds=this.authSiteService.siteIds; - if(ObjectUtil.isNotNull(siteIds) && siteIds.length>0){ - defaultSiteId=siteIds.indexOf(this.requestContext.siteId)>0 || this.authService.isSuperAdmin()?this.requestContext.siteId:siteIds.get(0); - } - }else{ - throw new UnauthorizedException("APP_TYPE_NOT_EXIST"); - } - - //修改用户登录信息 - this.sysUserService.editUserLoginInfo(userInfo.uid); - - const loginModel: SaLoginModel = SaLoginModel.create(); - loginModel.device = RequestUtils.handler(.getHeader("User-Agent")); - loginModel.extra = "userName", userInfo.username; - loginModel.extra = "headImg", userInfo.headImg; - loginModel.extra = "realName", userInfo.realName; - // 执行登录 - StpUtil.login("user-" + userInfo.uid, loginModel); - // 获取返回内容 - const saTokenInfo: SaTokenInfo = StpUtil.tokenInfo; - const resultVo: LoginResultVo = new LoginResultVo(); - - const userInfoVo: LoginUserInfoVo = new LoginUserInfoVo(); - userInfoVo.uid = userInfo.uid; - userInfoVo.username = userInfo.username; - userInfoVo.headImg = userInfo.headImg; - userInfoVo.isSuperAdmin = this.authService.isSuperAdmin(); - - - if(appType === AppTypeEnum.basename(ADMIN) || (appType === AppTypeEnum.basename(SITE) && defaultSiteId>0)){ - RequestUtils.siteId = defaultSiteId; - const siteInfoVo: SiteInfoVo = this.siteService.info(this.requestContext.siteId); - resultVo.siteInfo = siteInfoVo; - } - if(appType === AppTypeEnum.basename(ADMIN) && !userInfoVo.isSuperAdmin){ - siteIds=this.authSiteService.siteIds; - } - - resultVo.token = saTokenInfo.tokenValue; - resultVo.expiresTime = DateUtils.currTime(+saTokenInfo.tokenTimeout); - resultVo.userinfo = userInfoVo; - resultVo.siteId = defaultSiteId; - resultVo.userrole = roleInfoVo; - userInfoVo.siteIds = siteIds; - - return resultVo; + async login(userLoginParam: UserLoginParamDto): Promise { + // TODO: 实现login业务逻辑 + return null; } /** @@ -129,12 +35,7 @@ export class LoginServiceImplService { * clearToken */ async clearToken(uid: number, appType: string, token: string): Promise { - if(ObjectUtil.isNotNull(token) && CommonUtils.isNotEmpty(token)){ - StpUtil.logoutByTokenValue(token); - }else if(ObjectUtil.isNotNull(appType) && CommonUtils.isNotEmpty(appType)){ - StpUtil.logout(uid, appType); - }else{ - StpUtil.logout(uid); - } + // TODO: 实现clearToken业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/channel/impl/admin-app-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/channel/impl/admin-app-service-impl.service.ts index 516c717f..4fcc3310 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/channel/impl/admin-app-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/channel/impl/admin-app-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; @@ -29,167 +29,63 @@ export class AdminAppServiceImplService { /** * setAppConfig */ - async setAppConfig(param: SetAppParam): Promise { + async setAppConfig(param: SetAppParamDto): Promise { this.coreAppService.config = this.requestContext.siteId, param; } /** * getVersionPage */ - async getVersionPage(pageParam: PageParam, param: AppVersionPageParam): Promise { - any /* TODO: Page */ page = new Page<>(pageParam.page, pageParam.limit); - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - - if (param.platform != null) { - queryWrapper.eq("platform", param.platform); - } - queryWrapper.orderByDesc("create_time"); - - any /* TODO: Page */ resultPage = this.appVersionRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }); - - const list: AppVersionListVo[] = []; - for (const item of resultPageRecords) { - const vo: AppVersionListVo = new AppVersionListVo(); - BeanUtil.copyProperties(item, vo); - list.push(vo); - } - - return PageResult.build(resultPage, list); + async getVersionPage(pageParam: PageParamDto, param: AppVersionPageParamDto): Promise { + // TODO: 实现getVersionPage业务逻辑 + return null; } /** * getVersionInfo */ async getVersionInfo(id: number): Promise { - const appVersion: AppVersion = this.appVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - ); - if (appVersion == null) { - return null; - } - - const vo: AppVersionInfoVo = new AppVersionInfoVo(); - BeanUtil.copyProperties(appVersion, vo); - - return vo; + // TODO: 实现getVersionInfo业务逻辑 + return null; } /** * addVersion */ - async addVersion(param: AppVersionAddParam): Promise { - const notRelease: AppVersion = this.appVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("release_time", 0) - .last("limit 1") - ); - Assert.isNull(notRelease, "当前已存在未发布的版本"); - - const lastVersion: AppVersion = this.appVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .orderByDesc("id") - .last("limit 1") - ); - if (lastVersion != null && number.valueOf(param.versionCode) <= number.valueOf(lastVersion.versionCode)) { - throw new BadRequestException("版本号必须高于上一版本设置的值"); - } - - const appVersion: AppVersion = new AppVersion(); - param.siteId = this.requestContext.siteId; - BeanUtil.copyProperties(param, appVersion); - appVersion.createTime = DateUtils.currTime(); - - if (param.packageType === "cloud") { - appVersion.taskKey = this.coreAppCloudService.appCloudBuid(param); - appVersion.status = AppDict.StatusEnum.STATUS_CREATING.value; - } else { - appVersion.status = AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.value; - } - - return this.appVersionRepository.save(appVersion) > 0; + async addVersion(param: AppVersionAddParamDto): Promise { + // TODO: 实现addVersion业务逻辑 + return null; } /** * editVersion */ - async editVersion(id: number, param: AppVersionAddParam): Promise { - const appVersion: AppVersion = this.appVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("id", id) - ); - if (!appVersion) throw new BadRequestException("版本不存在"); - - const lastVersion: AppVersion = this.appVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .ne("id", id) - .orderByDesc("id") - .last("limit 1") - ); - if (lastVersion != null && number.valueOf(param.versionCode) <= number.valueOf(lastVersion.versionCode)) { - throw new BadRequestException("版本号必须高于上一版本设置的值"); - } - - BeanUtil.copyProperties(param, appVersion); - appVersion.updateTime = DateUtils.currTime(); - - if (param.packageType === "cloud") { - param.siteId = this.requestContext.siteId; - appVersion.taskKey = this.coreAppCloudService.appCloudBuid(param); - appVersion.status = AppDict.StatusEnum.STATUS_CREATING.value; - } else { - appVersion.status = AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.value; - } - - return appVersionMapper.updateById(appVersion) > 0; + async editVersion(id: number, param: AppVersionAddParamDto): Promise { + // TODO: 实现editVersion业务逻辑 + return null; } /** * delVersion */ async delVersion(id: number): Promise { - this.appVersionRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); + // TODO: 实现delVersion业务逻辑 + return null; } /** * getBuildLog */ async getBuildLog(key: string): Promise { - const vo: AppCompileLogVo = this.coreAppCloudService.getAppCompileLog(key); - if (vo.status === "fail") { - this.appVersionRepository.save(null, new UpdateWrapper() - .eq("task_key", key) - .eq("site_id", this.requestContext.siteId) - .set("status", AppDict.StatusEnum.STATUS_CREATE_FAIL.value) - .set("update_time", DateUtils.currTime()) - .set("fail_reason", ObjectUtil.defaultIfNull(vo.failReason, "") )); - } - if (vo.status === "success") { - this.appVersionRepository.save(null, new UpdateWrapper() - .eq("task_key", key) - .eq("site_id", this.requestContext.siteId) - .set("status", AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.value) - .set("update_time", DateUtils.currTime()) - .set("package_path", vo.filePath )); - } - return vo; + // TODO: 实现getBuildLog业务逻辑 + return null; } /** * release */ async release(id: number): Promise { - const appVersion: AppVersion = this.appVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("id", id) - ); - if (!appVersion) throw new BadRequestException("版本不存在"); - if (!appVersion.status === AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.value) { - throw new BadRequestException("版本未上传成功"); - } - - const model: AppVersion = new AppVersion(); - model.id = appVersion.id; - appVersion.status = AppDict.StatusEnum.STATUS_PUBLISHED.value; - appVersion.releaseTime = DateUtils.currTime(); - - return appVersionMapper.updateById(appVersion) > 0; + // TODO: 实现release业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/dict/impl/dict-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/dict/impl/dict-service-impl.service.ts index 729acd83..503a3b64 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/dict/impl/dict-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/dict/impl/dict-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { DictListVoDto } from '../../../../dtos/admin/dict/vo/dict-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { DictDataParamDto } from '../../../../dtos/admin/dict/param/dict-data-param.dto'; @@ -19,105 +18,48 @@ export class DictServiceImplService { /** * getPage */ - async getPage(pageParam: PageParam, searchParam: DictSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - //查询条件判断组装 - if (CommonUtils.isNotEmpty(path.basename(searchParam))) { - queryWrapper.like("name", path.basename(searchParam)); - } - - if (CommonUtils.isNotEmpty(searchParam.key)) { - queryWrapper.eq("`key`", searchParam.key); - } - - queryWrapper.orderByDesc("id"); - - [SysDict[], number] iPage = this.dictRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: DictListVo[] = []; - for (const item of iPageRecords) { - const vo: DictListVo = new DictListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async getPage(pageParam: PageParamDto, searchParam: DictSearchParamDto): Promise { + // TODO: 实现getPage业务逻辑 + return null; } /** * info */ async info(id: number): Promise { - const model: SysDict = this.dictRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: DictInfoVo = new DictInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: DictParam): Promise { - const model: SysDict = new SysDict(); - model.name = path.basename(addParam); - model.key = addParam.key; - model.memo = addParam.memo; - model.dictionary = "[]"; - model.createTime = Date.now( / 1000); - model.updateTime = Date.now( / 1000); - this.dictRepository.save(model); + async add(addParam: DictParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: DictParam): Promise { - const model: SysDict = this.dictRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - model.id = id; - model.name = path.basename(editParam); - model.key = editParam.key; - model.memo = editParam.memo; - model.updateTime = Date.now( / 1000); - dictMapper.updateById(model); + async edit(id: number, editParam: DictParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: SysDict = this.dictRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.dictRepository.delete(model); + // TODO: 实现del业务逻辑 + return null; } /** * getAll */ async getAll(): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - - queryWrapper.orderByDesc("id"); - - const voList: SysDict[] = this.dictRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const list: DictListVo[] = []; - for (const item of voList) { - const vo: DictListVo = new DictListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + // TODO: 实现getAll业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-config-service-impl.service.ts index d235dc3c..b0bfb4de 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-config-service-impl.service.ts @@ -31,7 +31,7 @@ export class DiyConfigServiceImplService { /** * setBottomConfig */ - async setBottomConfig(param: SetBottomConfigParam): Promise { + async setBottomConfig(param: SetBottomConfigParamDto): Promise { this.coreDiyConfigService.bottomConfig = this.requestContext.siteId, param.value, param.key; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-route-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-route-service-impl.service.ts index a30ef1e3..1deecf18 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-route-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-route-service-impl.service.ts @@ -1,73 +1,40 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; -import { DiyRouteListVoDto } from '../../../../dtos/admin/diy/vo/diy-route-list-vo.dto'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { DiyRouteSearchParamDto } from '../../../../dtos/admin/diy/param/diy-route-search-param.dto'; import { DiyRouteShareParamDto } from '../../../../dtos/admin/diy/param/diy-route-share-param.dto'; import { DiyRouteInfoVoDto } from '../../../../dtos/admin/diy/vo/diy-route-info-vo.dto'; +import { DiyRouteListVoDto } from '../../../../dtos/admin/diy/vo/diy-route-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; @Injectable() export class DiyRouteServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(searchParam: DiyRouteSearchParam): Promise { - const linkEnum: Record = LinkEnum.link; - const routerList: DiyRouteListVo[] = []; - const sort: number = 0; - - for (const key of linkEnum.keySet()) { - const parentItem: Record = linkEnum.getRecord(key); - const addonInfo: Record = parentItem.getRecord("addon_info"); - const childArray: JSONArray = ObjectUtil.defaultIfNull(parentItem.getJSONArray("child_list"), new JSONArray()); - - sort = processChildItems(childArray, key, addonInfo, searchParam, routerList, sort); - } - - return routerList; + async list(searchParam: DiyRouteSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * getInfoByName */ async getInfoByName(name: string): Promise { - const model: DiyRoute = this.diyRouteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .last("limit 1")); - if (model == null) return null; - - const vo: DiyRouteInfoVo = new DiyRouteInfoVo(); - Object.assign(vo, model); - - return vo; + // TODO: 实现getInfoByName业务逻辑 + return null; } /** * modifyShare */ - async modifyShare(editParam: DiyRouteShareParam): Promise { - const queryWrapper: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("name", path.basename(editParam)) - .eq("site_id", this.requestContext.siteId) - .last("limit 1"); - const model: DiyRoute = this.diyRouteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - if (model != null) { - Object.assign(model, editParam); - this.diyRouteRepository.save(model, queryWrapper); - } else { - const insertModel: DiyRoute = new DiyRoute(); - Object.assign(insertModel, editParam); - insertModel.siteId = this.requestContext.siteId; - this.diyRouteRepository.save(insertModel); - } + async modifyShare(editParam: DiyRouteShareParamDto): Promise { + // TODO: 实现modifyShare业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-service-impl.service.ts index 31e6f196..3e43fb98 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { DiyPageListVoDto } from '../../../../dtos/admin/diy/vo/diy-page-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { DiyPageInfoVoDto } from '../../../../dtos/admin/diy/vo/diy-page-info-vo.dto'; @@ -11,7 +10,7 @@ import { StartUpPageConfigParamDto } from '../../../../dtos/core/diy/param/start import { StartUpPageConfigVoDto } from '../../../../dtos/core/diy/vo/start-up-page-config-vo.dto'; import { AddonNoticeListVoDto } from '../../../../dtos/core/notice/vo/addon-notice-list-vo.dto'; import { NoticeInfoVoDto } from '../../../../dtos/core/notice/vo/notice-info-vo.dto'; -import { SceneDomainVoDto } from '../../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../../entities/scene-domain-vo.entity'; import { DiyPageSearchParamDto } from '../../../../dtos/admin/diy/param/diy-page-search-param.dto'; import { DiyPageParamDto } from '../../../../dtos/admin/diy/param/diy-page-param.dto'; import { DiyPageInitParamDto } from '../../../../dtos/admin/diy/param/diy-page-init-param.dto'; @@ -30,661 +29,159 @@ export class DiyServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: DiyPageSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - if (CommonUtils.isNotEmpty(searchParam.title)) queryWrapper.like("title", searchParam.title); - if (CommonUtils.isNotEmpty(searchParam.mode)) queryWrapper.eq("mode", searchParam.mode); - if (CommonUtils.isNotEmpty(searchParam.type)) queryWrapper.eq("type", searchParam.type); - - const template: Record = TemplateEnum.template; - List> templateAddon = TemplateEnum.getTemplateAddons((this.requestContext.siteId)); - [DiyPage[], number] iPage = this.diyPageRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: DiyPageListVo[] = []; - for (const item of iPageRecords) { - const vo: DiyPageListVo = new DiyPageListVo(); - Object.assign(vo, item); - vo.typeName = ObjectUtil.defaultIfNull(template.getByPath(vo.type + ".title", String.class, "")); - vo.typePage = ObjectUtil.defaultIfNull(template.getByPath(vo.type + ".page", String.class, "")); - const addonName: string = templateAddon - .filter(temp => vo.type != null && vo.type === temp.get("type")) - .findFirst() - .map(addon => ObjectUtil.defaultIfNull(addon.get("title"), "").toString()) - || ""; - vo.addonName = addonName; - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: DiyPageSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * allList */ - async allList(searchParam: DiyPageSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - if (CommonUtils.isNotEmpty(searchParam.title)) queryWrapper.like("title", searchParam.title); - if (CommonUtils.isNotEmpty(searchParam.mode)) queryWrapper.eq("mode", searchParam.mode); - if (CommonUtils.isNotEmpty(searchParam.type)) { - const type: string[] = Arrays.stream(searchParam.type); - queryWrapper.in("type", type); - } - - const pages: DiyPage[] = this.diyPageRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const list: DiyPageListVo[] = []; - - for (const item of pages) { - const vo: DiyPageListVo = new DiyPageListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + async allList(searchParam: DiyPageSearchParamDto): Promise { + // TODO: 实现allList业务逻辑 + return null; } /** * info */ async info(id: number): Promise { - const model: DiyPage = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (model == null) return null; - - const vo: DiyPageInfoVo = new DiyPageInfoVo(); - Object.assign(vo, model); - - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * infoByName */ async infoByName(name: string): Promise { - const model: DiyPage = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("is_default", 1) - .eq("site_id", this.requestContext.siteId)); - - if (model == null) return null; - - const vo: DiyPageInfoVo = new DiyPageInfoVo(); - Object.assign(vo, model); - - return vo; + // TODO: 实现infoByName业务逻辑 + return null; } /** * add */ - async add(addParam: DiyPageParam): Promise { - const model: DiyPage = new DiyPage(); - Object.assign(model, addParam); - model.siteId = addParam.siteId == null ? this.requestContext.siteId : addParam.siteId; - model.createTime = Date.now( / 1000); - this.diyPageRepository.save(model); + async add(addParam: DiyPageParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: DiyPageParam): Promise { - const model: DiyPage = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("数据不存在!"); - - Object.assign(model, editParam); - model.updateTime = Date.now( / 1000); - diyPageMapper.updateById(model); + async edit(id: number, editParam: DiyPageParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - this.diyPageRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId)); + // TODO: 实现del业务逻辑 + return null; } /** * setUse */ async setUse(id: number): Promise { - const model: DiyPage = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId)); - if (!model) throw new BadRequestException("页面不存在!"); - - const update: DiyPage = new DiyPage(); - update.isDefault = 0; - this.diyPageRepository.save(update, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("name", path.basename(model)).eq("site_id", this.requestContext.siteId)); - - update.id = id; - update.isDefault = 1; - update.updateTime = Date.now( / 1000); - diyPageMapper.updateById(update); + // TODO: 实现setUse业务逻辑 + return null; } /** * getLink */ async getLink(): Promise { - const linkEnum: Record = LinkEnum.link; - for (const key of linkEnum.keySet()) { - const item: Record = linkEnum.getRecord(key); - - item.put("name", key); - - if (!"DIY_PAGE".equals(key) && item.containsKey("child_list")) { - const childList: JSONArray = item.getJSONArray("child_list"); - for (const i of number = 0; i < childList.length; i++) { - const child: Record = childList.getRecord(i); - child.put("parent", key); - } - } - - if (key === "DIY_PAGE") { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId) - .and(wrapper => wrapper - .eq("type", "DIY_PAGE") - .or() - .ne("type", "DIY_PAGE") - .eq("is_default", 0) - ) - .orderByDesc("update_time"); - - const pageList: DiyPage[] = this.diyPageRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const newChildList: JSONArray = new JSONArray(); - for (const diyPage of pageList) { - const child: Record = new Record(); - child.put("name", path.basename(diyPage)); - child.put("title", diyPage.pageTitle); - child.put("url", "/app/pages/index/diy?id=" + diyPage.id); - newChildList.push(child); - } - item.put("child_list", newChildList); - } - if (key === "DIY_LINK") { - item.put("parent", "DIY_LINK"); - } - } - return linkEnum; + // TODO: 实现getLink业务逻辑 + return null; } /** * getPageInit */ - async getPageInit(param: DiyPageInitParam): Promise { - const template: Record = getTemplate(new TemplateParam()); - - const info: DiyPageInfoVo = null; - if (param.id > 0) { - info = this.info(param.id); - } else if (!path.basename(param).isEmpty()) { - info = this.infoByName(path.basename(param)); - } - - if (StringUtils.isNotBlank(path.basename(param))) { - const startConfig: StartUpPageConfigVo = this.coreDiyConfigService.getStartUpPageConfig(this.requestContext.siteId, path.basename(param)); - if (startConfig != null) { - if ("DIY_PAGE".equals(startConfig.parent)) { - const page: string = startConfig.page; - const id: number = number.parseInt(page.replace("/app/pages/index/diy?id=", "")); - info = this.info(id); - if (info != null) { - param.type = info.type; - param.name = path.basename(info); - } - } else { - for (const key of template.keySet()) { - const templateItem: Record = template.getRecord(key); - const templatePage: string = templateItem != null ? templateItem.getStr("page") : ""; - if (startConfig.page === templatePage) { - info = this.infoByName(key); - if (info != null) { - param.type = key; - param.name = key; - } - break; - } - } - } - } - } - - if (info != null) { - if (template.getRecord(info.type) != null) { - const page: Record = template.getRecord(info.type); - info.typeName = page.getStr("title"); - info.page = page.getStr("page"); - } - } else { - const time: number = Date.now() / 1000; - const pageTitle: string = ObjectUtil.defaultIfBlank(param.title, "页面" + time); - const type: string = ObjectUtil.defaultIfBlank(param.type, "DIY_PAGE"); - const name: string = type === "DIY_PAGE" ? "DIY_PAGE_RANDOM_" + time : type; - const typeName: string = ""; - const templateName: string = ""; - const pageRoute: string = ""; - const mode: string = "diy"; - const isDefault: number = 0; - const value: string = ""; - - const pageObj: Record = null; - if (StringUtils.isNotBlank(path.basename(param)) && template.getRecord(path.basename(param)) != null) { - pageObj = template.getRecord(path.basename(param)); - type = name = path.basename(param); - pageTitle = typeName = pageObj.getStr("title"); - pageRoute = pageObj.getStr("page"); - - const pageData: Record = this.getFirstPageData(type, ""); - if (pageData != null) { - const templateObj: Record = pageData.getRecord("template"); - if (templateObj != null) { - mode = templateObj.getStr("mode"); - value = templateObj.toString(); - isDefault = 1; - } - } - } else if (template.getRecord(param.type) != null) { - pageObj = template.getRecord(param.type); - typeName = pageObj.getStr("title"); - pageRoute = pageObj.getStr("page"); - - const count: number = this.diyPageRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq(DiyPage::getSiteId, this.requestContext.siteId) - .eq(DiyPage::getType, param.type)); - if (count == 0) { - isDefault = 1; - } - } - - // 页面标题(用于前台展示) - const title: string = pageTitle; - if (!"DIY_PAGE".equals(type)) { - title = typeName; - } - - info = new DiyPageInfoVo(); - info.name = name; - info.pageTitle = pageTitle; // 页面名称(用于后台展示) - info.title = title; // 页面标题(用于前台展示) - info.type = type; - info.typeName = typeName; - info.template = templateName; - info.page = pageRoute; - info.mode = mode; - info.value = value; - info.isDefault = isDefault; - } - - info.component = getComponentList(info.type); - info.domainUrl = this.coreSysConfigService.getSceneDomain(this.requestContext.siteId); - - // 处理全局模板数据 - const diyTemplate: Record = new Record(); - if (StringUtils.isNotBlank(path.basename(info))) { - const templateParam: TemplateParam = new TemplateParam(); - const key: string[] = {path.basename(info)}; - templateParam.key = key; - diyTemplate = getTemplate(templateParam); - if (diyTemplate != null && diyTemplate.containsKey(path.basename(info))) { - const templateInfo: Record = diyTemplate.getRecord(path.basename(info)); - info.global = templateInfo.getRecord("global"); - } - } - - return info; + async getPageInit(param: DiyPageInitParamDto): Promise { + // TODO: 实现getPageInit业务逻辑 + return null; } /** * getComponentList */ async getComponentList(name: string): Promise { - const data: Record = ComponentEnum.component; - - // 安全遍历顶层数据 - Iterator categoryIterator = data.keySet().iterator(); - const categoryToRemove: string[] = []; - - while (categoryIterator.hasNext()) { - const categoryKey: string = categoryIterator.next(); - const category: Record = data.getRecord(categoryKey); - const componentList: Record = category.getRecord("list"); - - // 用于存储排序值的映射 - const sortMap: Record = new Record(); - - // 安全遍历组件列表 - const keysToRemove: string[] = []; - for (const componentKey of new ArrayList<>(componentList.keySet())) { - const component: Record = componentList.getRecord(componentKey); - const supportPage: JSONArray = component.getJSONArray("support_page"); - - if (supportPage == null) supportPage = new JSONArray(); - - if ((!supportPage || supportPage.length === 0) || supportPage.includes(name)) { - sortMap.put(componentKey, component.getInt("sort", 0)); - component.remove("sort"); - component.remove("support_page"); - } else { - keysToRemove.push(componentKey); - } - } - - // 批量移除组件 - for (const key of keysToRemove) { - componentList.remove(key); - } - if ((!componentList || componentList.length === 0)) { - categoryToRemove.push(categoryKey); - } else { - sortComponentsBySortValues(componentList, sortMap); - } - } - for (const key of categoryToRemove) { - data.remove(key); - } - - return data; + // TODO: 实现getComponentList业务逻辑 + return null; } /** * getFirstPageData */ async getFirstPageData(type: string, addon: string): Promise { - const pages: Record = PagesEnum.getPagesByAddon(type, addon); - if (pages == null || pages.keySet().size() == 0) return null; - - const template: string = pages.keySet().iterator().next(); - const data: Record = pages.getRecord(template); - data.set("type", type); - data.set("template", template); - - return data; + // TODO: 实现getFirstPageData业务逻辑 + return null; } /** * getTemplate */ - async getTemplate(param: TemplateParam): Promise { - const template: Record = TemplateEnum.getTemplate(param); - - for (const key of template.keySet()) { - const pages: Record = ObjectUtil.defaultIfNull(PagesEnum.getPages(key, param.mode), new Record()); - template.putByPath(key + ".template", pages); - } - //删除null值 防止序列化报错 - JacksonUtils.removeNull(template); - return template; + async getTemplate(param: TemplateParamDto): Promise { + // TODO: 实现getTemplate业务逻辑 + return null; } /** * changeTemplate */ - async changeTemplate(value: StartUpPageConfigParam): Promise { + async changeTemplate(value: StartUpPageConfigParamDto): Promise { this.this.coreDiyConfigService.startUpPageConfig = this.requestContext.siteId, value, value.type; } /** * getDecoratePage */ - async getDecoratePage(searchParam: DiyPageSearchParam): Promise { - const templateParam: TemplateParam = new TemplateParam(); - const oneType: string = searchParam.type[0]; - const key: string[] = searchParam.type; - templateParam.key = key; - const template: Record = this.getTemplate(templateParam).getRecord(oneType); - if (template == null) throw new BadRequestException("模板不存在"); - - const defaultPage: Record = getFirstPageData(oneType, ""); - - const useTemplate: Record = new Record(); - useTemplate.put("type", searchParam.type); - useTemplate.put("title", defaultPage == null ? "" : defaultPage.getStr("title", "")); - useTemplate.put("name", ""); - useTemplate.put("cover", defaultPage == null ? "" : defaultPage.getStr("cover", "")); - useTemplate.put("page", template.getStr("page")); - useTemplate.put("action", template.getStr("action")); - useTemplate.put("url", ""); - useTemplate.put("parent", ""); - - const info: DiyPageInfoVo = infoByName(oneType); - - const startConfig: StartUpPageConfigVo = this.coreDiyConfigService.getStartUpPageConfig(this.requestContext.siteId, oneType); - if (startConfig != null) { - useTemplate.set("title", startConfig.title); - useTemplate.set("name", path.basename(startConfig)); - useTemplate.set("page", startConfig.page); - useTemplate.set("action", startConfig.action); - useTemplate.set("url", startConfig.page); - useTemplate.set("parent", startConfig.parent); - } else if (info != null) { - useTemplate.set("id", info.id); - useTemplate.set("title", info.title); - } - - if (useTemplate.getStr("cover").isEmpty() && useTemplate.getStr("url").isEmpty()) { - useTemplate.set("url", template.getStr("page")); - } else if (useTemplate.getStr("url").isEmpty()) { - useTemplate.set("url", template.getStr("page")); - } - - const diyRouteSearchParam: DiyRouteSearchParam = new DiyRouteSearchParam(); - diyRouteSearchParam.url = useTemplate.getStr("page"); - const otherPage: DiyRouteListVo[] = this.diyRouteService.list(diyRouteSearchParam); - if (otherPage.length > 0) { - const route: DiyRouteListVo = otherPage.get(0); - useTemplate.set("title", route.title); - useTemplate.set("name", path.basename(route)); - useTemplate.set("parent", route.parent); - useTemplate.set("action", route.action); - } - - template.put("use_template", useTemplate); - - const sceneDomain: SceneDomainVo = this.coreSysConfigService.getSceneDomain(this.requestContext.siteId); - const domainUrl: Record = new Record(); - domainUrl.put("wap_domain", sceneDomain.wapDomain); - domainUrl.put("wap_url", sceneDomain.wapUrl); - domainUrl.put("web_url", sceneDomain.webUrl); - template.put("domain_url", domainUrl); - - return template; + async getDecoratePage(searchParam: DiyPageSearchParamDto): Promise { + // TODO: 实现getDecoratePage业务逻辑 + return null; } /** * getPageByCarouselSearch */ - async getPageByCarouselSearch(pageParam: PageParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("site_id", this.requestContext.siteId) - .eq("type", "DIY_PAGE") - .notIn("value", ["top_fixed", "right_fixed", "bottom_fixed", "left_fixed", "fixed"]) - .or() - .eq("site_id", this.requestContext.siteId) - .ne("type", "DIY_PAGE") - .eq("is_default", 0) - .notIn("value", ["top_fixed", "right_fixed", "bottom_fixed", "left_fixed", "fixed"]) - .orderByDesc("id"); - - [DiyPage[], number] iPage = this.diyPageRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: DiyPageListVo[] = []; - for (const item of iPageRecords) { - const vo: DiyPageListVo = new DiyPageListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async getPageByCarouselSearch(pageParam: PageParamDto): Promise { + // TODO: 实现getPageByCarouselSearch业务逻辑 + return null; } /** * setDiyData */ - async setDiyData(param: SetDiyDataParam): Promise { - const addonFlag: string = param.key; - - const templateParam: TemplateParam = new TemplateParam(); - const key: string[] = {param.key}; - templateParam.key = key; - const template: Record = getTemplate(templateParam).getRecord(param.key); - if (template == null) return; - - if (!param.addon.isEmpty()) { - const addonTemplateParam: TemplateParam = new TemplateParam(); - addonTemplateParam.addon = param.addon; - addonTemplateParam.type = param.type; - const addonTemplate: Record = getTemplate(addonTemplateParam); - if (addonTemplate != null && (addonTemplate && addonTemplate.length > 0)) { - addonFlag = addonTemplate.keySet().iterator().next(); - template = addonTemplate.getRecord(addonFlag); - } - } - - const pages: Record = template.getRecord("template"); - if ((!pages || pages.length === 0)) return; - - const pageKey: string = pages.keySet().iterator().next(); - const page: Record = pages.getRecord(pageKey); - - const info: DiyPage = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", param.siteId) - .eq("is_default", 1) - ); - - if (info == null) { - RequestUtils.siteId = param.siteId; - const addParam: DiyPageParam = new DiyPageParam(); - addParam.title = page.getStr("title", ""); - addParam.pageTitle = page.getStr("title", ""); - addParam.name = addonFlag; - addParam.type = addonFlag; - addParam.template = pageKey; - addParam.value = page.getRecord("data".toString()); - addParam.mode = page.getStr("mode", ""); - addParam.isDefault = 1; - addParam.isChange = 0; - this.push(addParam); - } else { - if (path.basename(info) === "DIY_INDEX" && info.type === "DIY_INDEX") { - const update: DiyPage = new DiyPage(); - update.id = info.id; - update.value = page.getRecord("data".toString()); - diyPageMapper.updateById(update); - } - } - - if (param.isStart === 1) { - const startPage: StartUpPageConfigParam = new StartUpPageConfigParam(); - startPage.type = param.key; - startPage.mode = page.getStr("mode", ""); - startPage.title = page.getStr("title", ""); - startPage.action = template.getStr("action", ""); - startPage.page = template.getStr("page"); - this.changeTemplate(startPage); - } + async setDiyData(param: SetDiyDataParamDto): Promise { + // TODO: 实现setDiyData业务逻辑 + return null; } /** * copy */ async copy(id: number): Promise { - const page: DiyPage = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId)); - if (page == null) throw new BadRequestException("页面不存在"); - - page.id = null; - page.pageTitle = page.pageTitle + "_副本"; - page.isChange = 0; - page.isDefault = 0; - page.share = ""; - page.createTime = Date.now( / 1000); - this.diyPageRepository.save(page); + // TODO: 实现copy业务逻辑 + return null; } /** * loadDiyData */ async loadDiyData(param: Map): Promise { - // 获取参数 - const mainAppStr: string = params.get("main_app").toString(); - const mainApp: JSONArray = JSONUtil.parseArray(mainAppStr); - const count: number = mainApp.length; - const tag: string = params.getOrDefault("tag", "add"); - const siteId: number = params.get("site_id"); - - // 创建addon数组,在开头添加空字符串 - const addon: JSONArray = new JSONArray(); - addon.push(""); - addon.addAll(mainApp); - - // 遍历处理 - for (const k of number = 0; k < addon.length; k++) { - const v: string = addon.get(k).toString(); - int isStart; - - if ("add".equals(tag)) { - if (count > 1) { - // 站点多应用,使用系统的页面 - isStart = (k == 0) ? 1 : 0; - } else { - // 站点单应用,将应用的设为使用中 - isStart = (k == 0) ? 0 : 1; - } - } else { - // 编辑站点套餐的情况 - if (count > 1) { - // 站点多应用,将不更新启动页 - isStart = 0; - } else { - // 站点单应用,将应用的设为使用中 - isStart = (k == 0) ? 0 : 1; - } - } - - const setParam: SetDiyDataParam = new SetDiyDataParam(); - setParam.siteId = siteId; - setParam.type = "index"; - setParam.key = "DIY_INDEX"; - setParam.isStart = isStart; - setParam.mainApp = addon; - setParam.addon = v; - setDiyData(setParam); - - setParam.type = "member_index"; - setParam.key = "DIY_MEMBER_INDEX"; - setDiyData(setParam); - } + // TODO: 实现loadDiyData业务逻辑 + return null; } /** * getPageLink */ - async getPageLink(pageParam: PageParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("site_id", this.requestContext.siteId) - .and(i => i.eq("type", "DIY_PAGE").or().ne("type", "DIY_PAGE").eq("is_default", 0)) - .orderByDesc("update_time"); - - const templates: Record = TemplateEnum.getTemplate(new TemplateParam()); - - [DiyPage[], number] iPage = this.diyPageRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: DiyPageListVo[] = []; - for (const item of iPageRecords) { - const vo: DiyPageListVo = new DiyPageListVo(); - Object.assign(vo, item); - vo.typeName = templates.getByPath(item.type + ".title", String.class); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async getPageLink(pageParam: PageParamDto): Promise { + // TODO: 实现getPageLink业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-theme-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-theme-service-impl.service.ts index 6634f2a1..b7fed637 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-theme-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy/impl/diy-theme-service-impl.service.ts @@ -1,19 +1,18 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { DiyThemeColorParamDto } from '../../../../dtos/admin/diy/param/diy-theme-color-param.dto'; import { DiyThemeParamDto } from '../../../../dtos/admin/diy/param/diy-theme-param.dto'; import { DiyThemeSetParamDto } from '../../../../dtos/admin/diy/param/diy-theme-set-param.dto'; import { DiyThemeTitleParamDto } from '../../../../dtos/admin/diy/param/diy-theme-title-param.dto'; import { DiyThemeInfoVoDto } from '../../../../dtos/admin/diy/vo/diy-theme-info-vo.dto'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; -import { InstallAddonListVoDto } from '../../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../../entities/install-addon-list-vo.entity'; @Injectable() export class DiyThemeServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -21,236 +20,55 @@ export class DiyThemeServiceImplService { * getDiyTheme */ async getDiyTheme(): Promise { - const siteId: number = this.requestContext.siteId; - const siteCache: SiteInfoVo = this.coreSiteService.getSiteCache(siteId); - const themeDataList: DiyTheme[] = this.diyThemeRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("type", "app").eq("is_selected", 1)); - const themeData: Record = {}; - if ((themeDataList && themeDataList.length > 0)){ - themeData = themeDataList.collect(/* Collectors已删除 */.toMap(theme => theme.addon, theme => theme)); - } - - const systemTheme: Record = this.coreDiyService.getDefaultThemeColor("app"); - const appTheme: Record = new Record(); - const appThemeObj: Record = new Record(); - appThemeObj.set("id", CommonUtils.isNotEmpty(themeData.get("app")) ? themeData.get("app").id : ""); - appThemeObj.set("icon", ""); - appThemeObj.set("addon_title", "系统"); - appThemeObj.set("title", CommonUtils.isNotEmpty(themeData.get("app")) ? themeData.get("app").title : ((systemTheme && systemTheme.length > 0) ? systemTheme.getJSONArray("theme_color").getRecord(0).get("title") : "")); - - const themeValue: Object = CommonUtils.isNotEmpty(themeData.get("app")) ? - themeData.get("app").theme : - ((systemTheme && systemTheme.length > 0) ? systemTheme.getJSONArray("theme_color").getRecord(0).get("theme") : ""); - if (themeValue instanceof String) { - appThemeObj.set("theme", JsonUtils.parseObject(themeValue)); - } else { - appThemeObj.set("theme", themeValue); - } - - appTheme.putOpt("app", appThemeObj); - - const data: Record = new Record(); - const appsAndAddons: Addon[] = siteCache.apps; - appsAndAddons.addAll(siteCache.siteAddons); - for (const value of appsAndAddons) { - const addonTheme: Record = this.coreDiyService.getDefaultThemeColor(value.key); - if ((addonTheme && addonTheme.length > 0) && addonTheme.containsKey("theme_color")) { - const addonData: Record = new Record(); - addonData.set("id", CommonUtils.isNotEmpty(themeData.get(value.key)) ? themeData.get(value.getKey()).id : ""); - addonData.set("icon", value.icon != null ? value.icon : ""); - addonData.set("addon_title", value.title != null ? value.title : ""); - addonData.set("title", CommonUtils.isNotEmpty(themeData.get(value.key)) ? themeData.get(value.getKey()).title : addonTheme.getJSONArray("theme_color").getRecord(0).get("title")); - - const addonThemeValue: Object = CommonUtils.isNotEmpty(themeData.get(value.key)) ? - themeData.get(value.getKey()).theme : - addonTheme.getJSONArray("theme_color").getRecord(0).get("theme"); - if (addonThemeValue instanceof String) { - addonData.set("theme", JsonUtils.parseObject(addonThemeValue)); - } else { - addonData.set("theme", addonThemeValue); - } - - data.putOpt(value.key, addonData); - } - } - - if ((!data || data.length === 0) || siteCache.apps.size() > 1) { - const mergedData: Record = new Record(); - for (const key of appTheme.keySet()) { - mergedData.putOpt(key, appTheme.get(key)); - } - - for (const key of data.keySet()) { - if (!mergedData.containsKey(key)) { - mergedData.putOpt(key, data.get(key)); - } - } - - data = mergedData; - } - - return data; + // TODO: 实现getDiyTheme业务逻辑 + return null; } /** * setDiyTheme */ - async setDiyTheme(data: DiyThemeSetParam): Promise { - const siteId: number = this.requestContext.siteId; - const diyTheme: DiyTheme = diyThemeMapper.selectById(data.id); - if (CommonUtils.isEmpty(diyTheme)) { - throw new BadRequestException("主题色不存在"); - } - const addonData: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }))); - const addonSaveData: DiyTheme[] = []; - if(CommonUtils.isNotEmpty(addonData)){ - for (const addon of addonData) { - const saveData: DiyTheme = new DiyTheme(); - saveData.siteId = siteId; - saveData.type = "addon"; - saveData.addon = addon.key; - saveData.title = diyTheme.title; - saveData.theme = data.theme.toString(); - saveData.newTheme = data.newTheme.toString(); - saveData.isSelected = 1; - saveData.updateTime = Date.now( / 1000); - addonSaveData.push(saveData); - } - } - - this.diyThemeRepository.save(null, new UpdateWrapper().eq("site_id", siteId).eq("addon", data.addon).eq("type", "addon").set("is_selected", 0)); - - const model: DiyTheme = new DiyTheme(); - Object.assign(model, data); - model.isSelected = 1; - model.updateTime = Date.now( / 1000); - diyThemeMapper.updateById(model); - - if (!CommonUtils.isNotEmpty(addonSaveData)) { - for (const saveData of addonSaveData) { - - this.diyThemeRepository.save(null, new UpdateWrapper().eq("site_id", siteId).eq("addon", saveData.addon).eq("type", "addon").set("is_selected", 0)); - this.diyThemeRepository.save(saveData, new UpdateWrapper().eq("site_id", siteId).eq("addon", saveData.addon).eq("type", "addon").eq("title", saveData.title)); - } - } + async setDiyTheme(data: DiyThemeSetParamDto): Promise { + // TODO: 实现setDiyTheme业务逻辑 + return null; } /** * getDefaultThemeColor */ - async getDefaultThemeColor(data: DiyThemeColorParam): Promise { - const addon: string = data.addon; - const themeList: DiyTheme[] = this.diyThemeRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("addon", addon)); - const voList: DiyThemeInfoVo[] = []; - for (const theme of themeList) { - const vo: DiyThemeInfoVo = new DiyThemeInfoVo(); - Object.assign(vo, theme); - const addonTheme: Record = this.coreDiyService.getDefaultThemeColor(theme.addon); - if ((addonTheme && addonTheme.length > 0) && addonTheme.containsKey("theme_field")) { - vo.themeField = addonTheme.getJSONArray("theme_field"); - } - voList.push(vo); - } - - return voList; + async getDefaultThemeColor(data: DiyThemeColorParamDto): Promise { + // TODO: 实现getDefaultThemeColor业务逻辑 + return null; } /** * addDiyTheme */ - async addDiyTheme(data: DiyThemeParam): Promise { - const siteId: number = this.requestContext.siteId; - const addonData: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }))); - const addonSaveData: DiyTheme[] = []; - if ((addonData && addonData.length > 0)) { - for (const addon of addonData) { - - const diyTheme: DiyTheme = new DiyTheme(); - diyTheme.siteId = siteId; - diyTheme.theme = "addon"; - diyTheme.addon = addon.key; - diyTheme.title = data.title; - diyTheme.theme = data.theme.toString(); - diyTheme.newTheme = data.newTheme.toString(); - diyTheme.defaultTheme = data.defaultTheme.toString(); - diyTheme.themeType = "diy"; - diyTheme.createTime = Date.now( / 1000); - addonSaveData.push(diyTheme); - } - } - - const model: DiyTheme = new DiyTheme(); - Object.assign(model, data); - model.type = "app"; - model.themeType = "diy"; - model.createTime = Date.now( / 1000); - addonSaveData.push(model); - if (CommonUtils.isNotEmpty(addonSaveData)) { - for (const diyTheme of addonSaveData) { - this.diyThemeRepository.save(diyTheme); - } - } + async addDiyTheme(data: DiyThemeParamDto): Promise { + // TODO: 实现addDiyTheme业务逻辑 + return null; } /** * editDiyTheme */ - async editDiyTheme(id: number, data: DiyThemeParam): Promise { - const diyThemeInfo: DiyTheme = diyThemeMapper.selectById(id); - if (CommonUtils.isEmpty(diyThemeInfo)) { - throw new Error("主题色不存在"); - } - const addonData: DiyTheme[] = this.diyThemeRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("title", diyThemeInfo.title)); - const addonSaveData: DiyTheme[] = []; - if (CommonUtils.isNotEmpty(addonData)) { - for (const diyTheme of addonData) { - const saveData: DiyTheme = new DiyTheme(); - saveData.id = diyTheme.id; - saveData.siteId = diyTheme.siteId; - saveData.title = diyTheme.title; - saveData.theme = data.theme.toString(); - saveData.newTheme = data.newTheme.toString(); - saveData.updateTime = Date.now( / 1000); - - addonSaveData.push(saveData); - } - } - Object.assign(diyThemeInfo, data); - diyThemeInfo.updateTime = Date.now( / 1000); - - diyThemeMapper.updateById(diyThemeInfo); - - if (CommonUtils.isNotEmpty(addonSaveData)) { - for (const diyTheme of addonSaveData) { - diyThemeMapper.updateById(diyTheme); - } - } + async editDiyTheme(id: number, data: DiyThemeParamDto): Promise { + // TODO: 实现editDiyTheme业务逻辑 + return null; } /** * delDiyTheme */ async delDiyTheme(id: number): Promise { - const diyThemeInfo: DiyTheme = diyThemeMapper.selectById(id); - if (CommonUtils.isEmpty(diyThemeInfo)) { - throw new BadRequestException("主题色不存在"); - } - if (diyThemeInfo.themeType === "default") { - throw new BadRequestException("默认主题色不能删除"); - } - this.diyThemeRepository.delete(diyThemeInfo); + // TODO: 实现delDiyTheme业务逻辑 + return null; } /** * checkDiyThemeTitleUnique */ - async checkDiyThemeTitleUnique(data: DiyThemeTitleParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("title", data.title); - queryWrapper.eq("addon", data.addon); - if(CommonUtils.isNotEmpty(data.id)) - { - queryWrapper.ne("id", data.id); - } - return this.diyThemeRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }) == 0; + async checkDiyThemeTitleUnique(data: DiyThemeTitleParamDto): Promise { + // TODO: 实现checkDiyThemeTitleUnique业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-config-service-impl.service.ts index 0888a6dc..d116d4cf 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-config-service-impl.service.ts @@ -24,7 +24,7 @@ export class DiyFormConfigServiceImplService { /** * editWriteConfig */ - async editWriteConfig(editParam: DiyFormWriteConfigParam): Promise { + async editWriteConfig(editParam: DiyFormWriteConfigParamDto): Promise { editParam.siteId = this.requestContext.siteId; this.coreDiyFormConfigService.editWriteConfig(editParam); } @@ -39,7 +39,7 @@ export class DiyFormConfigServiceImplService { /** * editSubmitConfig */ - async editSubmitConfig(editParam: DiyFormSubmitConfigParam): Promise { + async editSubmitConfig(editParam: DiyFormSubmitConfigParamDto): Promise { editParam.siteId = this.requestContext.siteId; this.coreDiyFormConfigService.editSubmitConfig(editParam); } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-records-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-records-service-impl.service.ts index 25c935b0..7c38a837 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-records-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-records-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { DiyFormRecordsListVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-records-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { DiyFormRecordsFieldsSearchParamDto } from '../../../../dtos/admin/diy_form/param/diy-form-records-fields-search-param.dto'; @@ -14,211 +14,22 @@ import { DiyFormRecordsFieldsListVoDto } from '../../../../dtos/core/diy_form/vo @Injectable() export class DiyFormRecordsServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * getPage */ - async getPage(pageParam: PageParam, searchParam: DiyFormRecordsSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - - //sql语句 - queryWrapper.select("ndfr.form_id, ndfr.member_id, nm.username, nm.member_no, nm.mobile, nm.nickname, nm.headimg,count(*) as write_count") - .setAlias("ndfr") - .leftJoin("?_member nm ON ndfr.member_id = nm.member_id".replace("?_", this.appConfig.tablePrefix)); - - queryWrapper.eq("ndfr.site_id", this.requestContext.siteId); - if (CommonUtils.isNotEmpty(searchParam.formId)) { - queryWrapper.eq("ndfr.form_id", searchParam.formId); - } - if (CommonUtils.isNotEmpty(searchParam.keyword)) { - queryWrapper.and(i => i.or(j => j.like("nm.nickname", searchParam.keyword)) - .or(j => j.like("nm.mobile", searchParam.keyword)) - ); - } - queryWrapper.groupBy("ndfr.member_id"); - - - queryWrapper.orderByDesc("ndfr.form_id"); - [DiyFormRecordsListVo[], number] iPage = diyFormRecordsMapper.selectJoinPage(new Page<>(page, limit), DiyFormRecordsListVo.class, queryWrapper); - for (const vo of iPageRecords) { - const memberVo: Member = new Member(); - Object.assign(memberVo, vo); - vo.member = memberVo; - } - return PageResult.build(iPage); + async getPage(pageParam: PageParamDto, searchParam: DiyFormRecordsSearchParamDto): Promise { + // TODO: 实现getPage业务逻辑 + return null; } /** * getFieldStatList */ - async getFieldStatList(searchParam: DiyFormRecordsSearchParam): Promise { - const diyFormRecordsFieldsSearchParam: DiyFormRecordsFieldsSearchParam = new DiyFormRecordsFieldsSearchParam(); - diyFormRecordsFieldsSearchParam.formId = searchParam.formId; - const fieldsList: DiyFormFieldsListVo[] = this.diyFormService.getFieldsList(diyFormRecordsFieldsSearchParam); - - // 过滤简单字段列表 - const simpleTypes: string[] = {"FormRadio", "FormCheckbox", "FormDateScope", "FormTimeScope", "FormImage"}; - const simpleFieldList: DiyFormFieldsListVo[] = fieldsList - .filter(e => ![simpleTypes].includes(e.fieldType)) - ; - - // 过滤 JSON 字段列表 - const jsonTypes: string[] = {"FormRadio", "FormCheckbox", "FormDateScope", "FormTimeScope"}; - const jsonFieldList: DiyFormFieldsListVo[] = fieldsList - .filter(e => [jsonTypes].includes(e.fieldType)) - ; - - const totalCount: number = 0; - for (const field of simpleFieldList) { - // 统计每个字段值的填写数量 - any /* TODO: QueryWrapper */ valueQueryWrapper = new QueryWrapper(); - valueQueryWrapper.eq("site_id", this.requestContext.siteId) - .eq("field_key", field.fieldKey) - .eq("field_type", field.fieldType); - if (searchParam.formId != null) { - valueQueryWrapper.eq("form_id", searchParam.formId); - } - List> valueList = diyFormRecordsFieldsMapper.selectMaps(valueQueryWrapper - .select("form_id, field_key, field_type, field_value, count(*) as write_count") - .groupBy("field_value")); - for (const i of number = 0; i < valueList.length; i++) { - const value: Record = valueList.get(i); - const diyFormComponentEnum: DiyFormComponentEnum = new DiyFormComponentEnum(); - const component: Record = diyFormComponentEnum.getComponent(value.get("field_type").toString()); - if(component.containsKey("render")){ - const driver: string = component.getStr("render"); - if(CommonUtils.isNotEmpty(driver)) - { - try{ - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("render", String.class, String.class); - value.put("render_value", method.invoke(obj, value.get("field_value").toString(), value.get("field_type").toString())); - }catch (e){ - console.error(e); - } - - } - }else{ - value.put("render_value", value.get("field_value")); - } - } - - // 计算总数量 - totalCount = this.diyFormRecordsFieldsRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("field_key", field.fieldKey) - .eq("field_type", field.fieldType)); - - if (totalCount > 0) { - const totalPercent: number = 100; - for (const i of number = 0; i < valueList.length; i++) { - const value: Record = valueList.get(i); - double itemPercent; - if (i == valueList.length - 1) { - itemPercent = totalPercent; - } else { - itemPercent = Math.round((number.parseInt(value.get("write_count").toString()) / totalCount) * 100 * 100) / 100.0; - } - value.put("write_percent", itemPercent); - totalPercent = totalPercent - itemPercent; - } - } - field.valueList = valueList; - } - - // 处理 JSON 字段列表 - for (const field of jsonFieldList) { - // 查询字段记录 - any /* TODO: QueryWrapper */ fieldQueryWrapper = new QueryWrapper(); - fieldQueryWrapper.eq("site_id", this.requestContext.siteId) - .eq("field_key", field.fieldKey) - .eq("field_type", field.fieldType); - if (searchParam.formId != null) { - fieldQueryWrapper.eq("form_id", searchParam.formId); - } - List> fieldList = diyFormRecordsFieldsMapper.selectMaps(fieldQueryWrapper); - for (const i of number = 0; i < fieldList.length; i++) { - const value: Record = fieldList.get(i); - const diyFormComponentEnum: DiyFormComponentEnum = new DiyFormComponentEnum(); - const component: Record = diyFormComponentEnum.getComponent(value.get("field_type").toString()); - if(component.containsKey("render")){ - const driver: string = component.getStr("render"); - if(CommonUtils.isNotEmpty(driver)) - { - try{ - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("render", String.class, String.class); - value.put("render_value", method.invoke(obj, value.get("field_value").toString(), value.get("field_type").toString())); - }catch (e){ - console.error(e); - } - - } - }else{ - value.put("render_value", value.get("field_value")); - } - } - totalCount = 0; - Map> valueMap = {}; - for (Record record : fieldList) { - if (!"FormCheckbox".equals(record.get("field_type"))) { - const key: string = record.get("field_key") + "_" + record.get("render_value"); - if (valueMap.containsKey(key)) { - valueMap.get(key).put("write_count", valueMap.get(key).get("write_count") + 1); - totalCount++; - } else { - valueMap.put(key, record); - valueMap.get(key).put("write_count", 1); - totalCount++; - } - } else { - const values: string[] = record.get("render_value").toString().split(","); - for (const value of values) { - const key: string = record.get("field_key") + "_" + value; - if (valueMap.containsKey(key)) { - valueMap.get(key).put("write_count", valueMap.get(key).get("write_count") + 1); - totalCount++; - } else { - const newRecord: Record = new HashMap<>(record); - newRecord.put("render_value", value); - newRecord.put("write_count", 1); - valueMap.put(key, newRecord); - totalCount++; - } - } - } - } - - if (totalCount > 0) { - List> valueList = new ArrayList<>(valueMap.values()); - const totalPercent: number = 100; - for (const i of number = 0; i < valueList.length; i++) { - const value: Record = valueList.get(i); - double itemPercent; - if (i == valueList.length - 1) { - itemPercent = totalPercent; - } else { - itemPercent = Math.round((number.parseInt(value.get("write_count").toString()) / totalCount) * 100 * 100) / 100.0; - } - value.put("write_percent", itemPercent); - totalPercent = totalPercent - itemPercent; - } - field.valueList = valueList; - } - } - - // 合并结果 - const resultList: DiyFormFieldsListVo[] = []; - resultList.addAll(simpleFieldList); - resultList.addAll(jsonFieldList); - - return resultList; + async getFieldStatList(searchParam: DiyFormRecordsSearchParamDto): Promise { + // TODO: 实现getFieldStatList业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-service-impl.service.ts index f4924f82..429f81af 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/diy_form/impl/diy-form-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { DiyFormListVoDto } from '../../../../dtos/admin/diy_form/vo/diy-form-list-vo.dto'; import { DiyFormRecordsListVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-records-list-vo.dto'; import { DiyFormInfoVoDto } from '../../../../dtos/api/diy/vo/diy-form-info-vo.dto'; @@ -30,398 +30,81 @@ export class DiyFormServiceImplService { /** * getPage */ - async getPage(pageParam: PageParam, searchParam: DiyFormSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - queryWrapper.eq("site_id", this.requestContext.siteId); - - if (CommonUtils.isNotEmpty(searchParam.title)) { - queryWrapper.eq("title", searchParam.title); - } - if (CommonUtils.isNotEmpty(searchParam.title)) { - queryWrapper.and(i => i.or(j => j.like("title", searchParam.title)) - .or(j => j.like("page_title", searchParam.title)) - ); - } - if (CommonUtils.isNotEmpty(searchParam.type)) { - queryWrapper.eq("type", searchParam.type); - } - - if (CommonUtils.isNotEmpty(searchParam.addon)) { - queryWrapper.eq("addon", searchParam.addon); - } - - queryWrapper.orderByDesc("form_id"); - - [DiyForm[], number] iPage = this.diyFormRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: DiyFormListVo[] = []; - for (const item of iPageRecords) { - const vo: DiyFormListVo = new DiyFormListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async getPage(pageParam: PageParamDto, searchParam: DiyFormSearchParamDto): Promise { + // TODO: 实现getPage业务逻辑 + return null; } /** * getList */ - async getList(searchParam: DiyFormSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - queryWrapper.eq("site_id", this.requestContext.siteId); - - if (CommonUtils.isNotEmpty(searchParam.title)) { - queryWrapper.eq("title", searchParam.title); - } - if (CommonUtils.isNotEmpty(searchParam.title)) { - queryWrapper.and(i => i.or(j => j.like("title", searchParam.title)) - .or(j => j.like("page_title", searchParam.title)) - ); - } - if (CommonUtils.isNotEmpty(searchParam.type)) { - queryWrapper.eq("type", searchParam.type); - } - - if (CommonUtils.isNotEmpty(searchParam.addon)) { - queryWrapper.eq("addon", searchParam.addon); - } - if (CommonUtils.isNotEmpty(searchParam.status)) { - queryWrapper.eq("status", searchParam.status); - } - queryWrapper.orderByDesc("form_id"); - const list: DiyForm[] = this.diyFormRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const voList: DiyFormListVo[] = []; - for (const item of list) { - const vo: DiyFormListVo = new DiyFormListVo(); - Object.assign(vo, item); - voList.push(vo); - } - return voList; + async getList(searchParam: DiyFormSearchParamDto): Promise { + // TODO: 实现getList业务逻辑 + return null; } /** * getInfo */ async getInfo(id: number): Promise { - const model: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - - if (!model) throw new BadRequestException("万能表单不存在"); - - const vo: DiyFormInfoVo = new DiyFormInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现getInfo业务逻辑 + return null; } /** * getCount */ - async getCount(searchParam: DiyFormSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - queryWrapper.eq("site_id", this.requestContext.siteId); - if (CommonUtils.isNotEmpty(searchParam.type)) { - queryWrapper.eq("type", searchParam.type); - } - const count: number = this.diyFormRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }); - if(CommonUtils.isEmpty(count)) - { - count = 0L; - } - return count; + async getCount(searchParam: DiyFormSearchParamDto): Promise { + // TODO: 实现getCount业务逻辑 + return null; } /** * add */ - async add(addParam: DiyFormParam): Promise { - const model: DiyForm = new DiyForm(); - - model.pageTitle = addParam.pageTitle; - model.title = addParam.title; - model.type = addParam.type; - model.status = 1; - model.template = addParam.template; - model.value = addParam.value; - const diyFormTypeEnum: DiyFormTypeEnum = new DiyFormTypeEnum(); - const type: Record = diyFormTypeEnum.getType(addParam.type); - if(type.containsKey("addon")) - { - model.addon = type.getStr("addon"); - }else{ - model.addon = ""; - } - - model.share = addParam.share; - model.remark = addParam.remark; - model.siteId = this.requestContext.siteId; - model.createTime = Date.now( / 1000); - model.updateTime = Date.now( / 1000); - this.diyFormRepository.save(model); - const diyFormFields: DiyFormFields[] = []; - if (CommonUtils.isNotEmpty(addParam.value)) { - const value: Record = JsonUtils.parseObject(addParam.value); - const components: JSONArray = value.getJSONArray("value"); - for (const componentObj of components) { - const component: Record = JsonUtils.parseObject(componentObj); - const componentType: string = component.getStr("componentType"); - const componentName: string = component.getStr("componentName"); - if (!"diy_form".equals(componentType) || "FormSubmit".equals(componentName)) { - continue; - } - const field: Record = component.getRecord("field"); - - const fieldRecord: DiyFormFields = new DiyFormFields(); - fieldRecord.siteId = this.requestContext.siteId; - fieldRecord.formId = model.formId; - fieldRecord.fieldKey = component.get("id".toString()); - fieldRecord.fieldType = componentName; - fieldRecord.fieldName = field.containsKey("name" ? field.getStr("name") : ""); - if(field.containsKey("remark")) - { - const remark: Record = field.getRecord("remark"); - if(remark.containsKey("text")) - { - fieldRecord.fieldRemark = remark.getStr("text"); - }else{ - fieldRecord.fieldRemark = ""; - } - }else{ - fieldRecord.fieldRemark = ""; - } - fieldRecord.fieldDefault = field.containsKey("default" ? field.get("default").toString() : ""); - fieldRecord.fieldRequired = field.containsKey("required" ? field.getInt("required") : 0); - fieldRecord.fieldHidden = component.getInt("isHidden"); - fieldRecord.fieldUnique = field.containsKey("unique" ? field.getInt("unique") : 0); - fieldRecord.privacyProtection = field.containsKey("privacyProtection" ? field.getInt("privacyProtection") : 0); - fieldRecord.createTime = Date.now( / 1000); - fieldRecord.updateTime = Date.now( / 1000); - diyFormFields.push(fieldRecord); - } - } - if ((diyFormFields && diyFormFields.length > 0)) { - this.diyFormFieldsRepository.save(diyFormFields); - } - - const writeParam: DiyFormWriteConfigParam = new DiyFormWriteConfigParam(); - writeParam.siteId = this.requestContext.siteId; - writeParam.formId = model.formId; - // 初始化表单填写配置 - this.coreDiyFormConfigService.addWriteConfig(writeParam); - - const submitConfigParam: DiyFormSubmitConfigParam = new DiyFormSubmitConfigParam(); - submitConfigParam.siteId = this.requestContext.siteId; - submitConfigParam.formId = model.formId; - // 初始化表单提交成功页配置 - this.coreDiyFormConfigService.addSubmitConfig(submitConfigParam); - - return model.formId; + async add(addParam: DiyFormParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: DiyFormParam): Promise { - const model: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("万能表单不存在"); - model.title = editParam.title; - model.pageTitle = editParam.pageTitle; - model.template = editParam.template; - model.value = editParam.value; - model.updateTime = Date.now( / 1000); - diyFormMapper.updateById(model); - const formFieldsList: DiyFormFields[] = this.diyFormFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - const formFieldsListMap: Record = formFieldsList.collect(/* Collectors已删除 */.toMap(DiyFormFields::getFieldKey, a => a)); - const existFieldKeys: string[] = []; - const diyFormFields: DiyFormFields[] = []; - if (CommonUtils.isNotEmpty(editParam.value)) { - const value: Record = JsonUtils.parseObject(editParam.value); - const components: JSONArray = value.getJSONArray("value"); - for (const componentObj of components) { - const component: Record = JsonUtils.parseObject(componentObj); - const componentType: string = component.getStr("componentType"); - const componentName: string = component.getStr("componentName"); - if (!"diy_form".equals(componentType) || "FormSubmit".equals(componentName)) { - continue; - } - const field: Record = component.getRecord("field"); - - const fieldRecord: DiyFormFields = new DiyFormFields(); - fieldRecord.siteId = this.requestContext.siteId; - fieldRecord.formId = model.formId; - fieldRecord.fieldKey = component.get("id".toString()); - fieldRecord.fieldType = componentName; - fieldRecord.fieldName = field.containsKey("name" ? field.getStr("name") : ""); - if(field.containsKey("remark")) - { - const remark: Record = field.getRecord("remark"); - if(remark.containsKey("text")) - { - fieldRecord.fieldRemark = remark.getStr("text"); - }else{ - fieldRecord.fieldRemark = ""; - } - }else{ - fieldRecord.fieldRemark = ""; - } - fieldRecord.fieldDefault = field.containsKey("default" ? field.get("default").toString() : ""); - fieldRecord.fieldRequired = field.containsKey("required" ? field.getInt("required") : 0); - fieldRecord.fieldHidden = component.getInt("isHidden"); - fieldRecord.fieldUnique = field.containsKey("unique" ? field.getInt("unique") : 0); - fieldRecord.privacyProtection = field.containsKey("privacyProtection" ? field.getInt("privacyProtection") : 0); - fieldRecord.updateTime = Date.now( / 1000); - - if(formFieldsListMap.containsKey(component.getStr("id"))) - { - this.diyFormFieldsRepository.save(fieldRecord, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("site_id", this.requestContext.siteId).eq("field_id", formFieldsListMap.get(component.getStr("id")).fieldId)); - existFieldKeys.push(component.getStr("id")); - }else{ - diyFormFields.push(fieldRecord); - } - - } - if ((diyFormFields && diyFormFields.length > 0)) { - this.diyFormFieldsRepository.save(diyFormFields); - } - for (Map.Entry entry : formFieldsListMap.entrySet()) { - - if(!existFieldKeys.includes(entry.key)) { - this.diyFormFieldsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("field_id", entry.getValue().fieldId)); - } - } - }else{ - this.diyFormFieldsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("form_id", model.formId)); - } + async edit(id: number, editParam: DiyFormParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(formIds: List): Promise { - const count: number = this.diyFormRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId).eq("status", 1)); - if(count > 0){ - throw new BadRequestException("存在正在使用的表单,无法删除"); - } - //事件检测是否可以被删除 - DiyFormDelBeforeEventDefiner.const event: DiyFormDelBeforeEvent = new DiyFormDelBeforeEventDefiner.DiyFormDelBeforeEvent(); - for (const formId of formIds) { - event.formId = formId; - event.siteId = this.requestContext.siteId; - const result: DiyFormDelBeforeEventDefiner.DiyFromDelBeforeResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event); - for (DiyFormDelBeforeEventDefiner.DiyFromDelBeforeResult res : result) { - if(CommonUtils.isNotEmpty(res)) - { - if(!res.allowOperate) throw new BadRequestException("存在正在使用的表单,无法删除"); - } - } - } - - this.diyFormRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).in("form_id", formIds)); - this.diyFormFieldsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).in("form_id", formIds)); - this.diyFormSubmitConfigRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).in("form_id", formIds)); - this.diyFormWriteConfigRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).in("form_id", formIds)); + // TODO: 实现del业务逻辑 + return null; } /** * getInit */ - async getInit(params: DiyFormInitParam): Promise { - const time: number = Date.now() / 1000; - const data: DiyFormInfoVo = new DiyFormInfoVo(); - - if (!params.formId === 0) { - data = getInfo(params.formId); - } - - if (CommonUtils.isNotEmpty(data.type)) { - const diyFormTypeEnum: DiyFormTypeEnum = new DiyFormTypeEnum(); - const currentType: Record = diyFormTypeEnum.getType(data.type); - const typeName: string = currentType.getStr("title"); - data.typeName = typeName; - } else { - if (CommonUtils.isEmpty(params.type)) { - throw new BadRequestException("DIY_FORM_TYPE_NOT_EXIST"); - } - const type: string = params.type; - - // 新页面赋值 - const pageTitle: string = params.title != null ? params.title : "表单页面" + time; - - const diyFormTypeEnum: DiyFormTypeEnum = new DiyFormTypeEnum(); - const currentType: Record = diyFormTypeEnum.getType(params.type); - const typeName: string = currentType.getStr("title"); - const value: string = ""; - - data = new DiyFormInfoVo(); - data.formId = 0; - data.pageTitle = pageTitle; - data.title = typeName; - data.type = type; - data.typeName = typeName; - data.value = value; - data.status = 1; - } - - const initVo: DiyFormInitVo = new DiyFormInitVo(); - Object.assign(initVo, data); - initVo.component = getComponentList(data.type); - initVo.domainUrl = this.systemConfigService.getSceneDomain(this.requestContext.siteId); - return initVo; + async getInit(params: DiyFormInitParamDto): Promise { + // TODO: 实现getInit业务逻辑 + return null; } /** * modifyShare */ async modifyShare(formId: number, share: string): Promise { - const diyForm: DiyForm = new DiyForm(); - diyForm.share = share; - this.diyFormRepository.save(diyForm, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("form_id", formId).eq("site_id", this.requestContext.siteId)); - return true; + // TODO: 实现modifyShare业务逻辑 + return null; } /** * getComponentList */ async getComponentList(type: string): Promise { - const formComponentEunm: DiyFormComponentEnum = new DiyFormComponentEnum(); - const formComponentList: Record = formComponentEunm.component; - for (const formComponentObj of formComponentList.keySet()) { - const formComponent: Record = formComponentList.getRecord(formComponentObj); - const list: Record = formComponent.getRecord("list"); - Iterator> iterator = list.entrySet().iterator(); - while (iterator.hasNext()) { - const cv: Record = JsonUtils.parseObject(iterator.next()); - if(cv.containsKey("support")) - { - const support: JSONArray = cv.getJSONArray("support"); - if (support != null && support.length > 0 && !support.includes(type)) { - iterator.remove(); - continue; - } - } - cv.remove("sort"); - cv.remove("support"); - } - // 根据 sort 排序 - formComponent.put("list", sortRecordBySortField(list)); - } - - componentType(formComponentList, "diy_form"); - - const data: Record = formComponentList; - if ("DIY_FORM".equals(type)) { - const diyComponentList: Record = this.diyService.getComponentList(""); - componentType(diyComponentList, "diy"); - data = mergeJsonObjects(formComponentList, diyComponentList); - } - return data; + // TODO: 实现getComponentList业务逻辑 + return null; } /** @@ -435,71 +118,14 @@ export class DiyFormServiceImplService { * copy */ async copy(formId: number): Promise { - const diyForm: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId)); - if(CommonUtils.isEmpty(diyForm)) throw new BadRequestException("万能表单不存在"); - const diyFormSubmitConfig: DiyFormSubmitConfig = this.diyFormSubmitConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })); - const diyFormWriteConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })); - const diyFormFields: DiyFormFields[] = this.diyFormFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - - // 复制表单信息 - const newDiyForm: DiyForm = new DiyForm(); - Object.assign(newDiyForm, diyForm); - newDiyForm.formId = null; // 清空原有的 form_id,让数据库自动生成新的 - newDiyForm.pageTitle = newDiyForm.pageTitle + "_副本"; - newDiyForm.status = 0; - newDiyForm.share = ""; - newDiyForm.writeNum = 0; - const currentTime: number = Date.now() / 1000; - newDiyForm.createTime = currentTime; - newDiyForm.updateTime = currentTime; - - // 插入新的表单信息 - this.diyFormRepository.save(newDiyForm); - const newFormId: number = newDiyForm.formId; - - // 复制表单字段 - if (!CommonUtils.isEmpty(diyFormFields)) { - const newFormFieldList: DiyFormFields[] = []; - for (const item of diyFormFields) { - const newField: DiyFormFields = new DiyFormFields(); - Object.assign(newField, item); - newField.fieldId = null; // 清空原有的 field_id,让数据库自动生成新的 - newField.formId = newFormId; - newField.writeNum = 0; - newField.createTime = currentTime; - newField.updateTime = currentTime; - newFormFieldList.push(newField); - } - MybatisBatch mybatisBatch = new MybatisBatch<>(sqlSessionFactory, newFormFieldList); - MybatisBatch.Method method = new MybatisBatch.Method<>(DiyFormFieldsMapper.class); - mybatisBatch.execute(method.insert()); - } - - // 复制填写配置 - if (!CommonUtils.isEmpty(diyFormWriteConfig)) { - const newWriteConfig: DiyFormWriteConfigParam = new DiyFormWriteConfigParam(); - Object.assign(newWriteConfig, diyFormWriteConfig); - newWriteConfig.formId = newFormId; - newWriteConfig.id = null; - this.coreDiyFormConfigService.addWriteConfig(newWriteConfig); - } - - // 复制提交配置 - if (!CommonUtils.isEmpty(diyFormSubmitConfig)) { - const newSubmitConfig: DiyFormSubmitConfigParam = new DiyFormSubmitConfigParam(); - Object.assign(newSubmitConfig, diyFormSubmitConfig); - newSubmitConfig.formId = newFormId; - newSubmitConfig.id = null; - this.coreDiyFormConfigService.addSubmitConfig(newSubmitConfig); - } - - return newFormId; + // TODO: 实现copy业务逻辑 + return null; } /** * getTemplate */ - async getTemplate(params: DiyFormTemplateParam): Promise { + async getTemplate(params: DiyFormTemplateParamDto): Promise { const diyFormTemplateEnum: DiyFormTemplateEnum = new DiyFormTemplateEnum(); return diyFormTemplateEnum.getTemplate(params.type, params.templateKey); } @@ -515,17 +141,15 @@ export class DiyFormServiceImplService { /** * modifyStatus */ - async modifyStatus(formStatusParam: DiyFormStatusParam): Promise { - const diyForm: DiyForm = new DiyForm(); - diyForm.status = formStatusParam.status; - this.diyFormRepository.save(diyForm, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("form_id", formStatusParam.formId).eq("site_id", this.requestContext.siteId)); - return true; + async modifyStatus(formStatusParam: DiyFormStatusParamDto): Promise { + // TODO: 实现modifyStatus业务逻辑 + return null; } /** * getRecordPages */ - async getRecordPages(pageParam: PageParam, searchParam: DiyFormRecordsSearchParam): Promise { + async getRecordPages(pageParam: PageParamDto, searchParam: DiyFormRecordsSearchParamDto): Promise { searchParam.siteId = this.requestContext.siteId; return this.coreDiyFormRecordsService.page(pageParam, searchParam); } @@ -541,112 +165,23 @@ export class DiyFormServiceImplService { * delRecord */ async delRecord(formId: number, recordId: number): Promise { - try { - // 减少填写数量 - any /* TODO: QueryWrapper */ formQueryWrapper = new QueryWrapper(); - formQueryWrapper.eq("form_id", formId); - const diyForm: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (diyForm != null) { - diyForm.writeNum = diyForm.writeNum - 1; - diyFormMapper.updateById(diyForm); - } - - // 删除记录 - any /* TODO: QueryWrapper */ recordsQueryWrapper = new QueryWrapper(); - recordsQueryWrapper.eq("site_id", this.requestContext.siteId) - .eq("record_id", recordId); - this.diyFormRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - - // 删除万能表单填写字段 - any /* TODO: QueryWrapper */ fieldsQueryWrapper = new QueryWrapper(); - fieldsQueryWrapper.eq("site_id", this.requestContext.siteId) - .eq("record_id", recordId); - this.diyFormRecordsFieldsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - - return true; - } catch (e) { - // 事务会自动回滚,因为使用了 @Transactional 注解 - throw new BadRequestException("删除记录失败: " + e.message); - } + // TODO: 实现delRecord业务逻辑 + return null; } /** * getFieldsList */ - async getFieldsList(diyFormRecordsFieldsSearchParam: DiyFormRecordsFieldsSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId) - .eq("form_id", diyFormRecordsFieldsSearchParam.formId); - if(diyFormRecordsFieldsSearchParam.sort === "asc") - { - queryWrapper.orderByAsc(diyFormRecordsFieldsSearchParam.order); - }else { - queryWrapper.orderByDesc(diyFormRecordsFieldsSearchParam.order); - } - const list: DiyFormFields[] = this.diyFormFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const listVo: DiyFormFieldsListVo[] = []; - for (const item of list) { - const vo: DiyFormFieldsListVo = new DiyFormFieldsListVo(); - Object.assign(vo, item); - listVo.push(vo); - } - return listVo; + async getFieldsList(diyFormRecordsFieldsSearchParam: DiyFormRecordsFieldsSearchParamDto): Promise { + // TODO: 实现getFieldsList业务逻辑 + return null; } /** * getSelectPage */ - async getSelectPage(pageParam: PageParam, param: DiyFormSelectParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - // 验证表单ID集合 - const verifyFormIds: number[] = []; - if (param.verifyFormIds != null && !param.verifyFormIds.isEmpty()) { - // 查询存在的表单ID - const existForms: DiyForm[] = this.diyFormRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .in("form_id", param.verifyFormIds) - ); - - verifyFormIds = existForms - .map(DiyForm::getFormId) - ; - } - - // 构建查询条件 - Lambdaany /* TODO: QueryWrapper */ queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(DiyForm::getSiteId, this.requestContext.siteId) - .eq(DiyForm::getStatus, 1) - .orderByDesc(DiyForm::getFormId); - - // 添加搜索条件 - if (StringUtils.hasText(param.title)) { - queryWrapper.like(DiyForm::getTitle, param.title); - } - if (StringUtils.hasText(param.type)) { - queryWrapper.eq(DiyForm::getType, param.type); - } - if (StringUtils.hasText(param.addon)) { - queryWrapper.eq(DiyForm::getAddon, param.addon); - } - - // 分页查询 - [DiyForm[], number] formPage = this.diyFormRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - - if (formPageTotal == 0){ - return PageResult.build(page, limit, 0, []); - } - const resultList: DiyFormInfoVo[] = []; - formPageRecords.forEach(item => { - const diyFormInfoVo: DiyFormInfoVo = new DiyFormInfoVo(); - Object.assign(diyFormInfoVo, item); - const currentType: Record = new DiyFormTypeEnum().getType(item.type); - const typeName: string = currentType.getStr("title"); - diyFormInfoVo.typeName = typeName; - const addon: Addon = this.addonRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq(Addon::getKey, item.addon)); - const addonName: string = CommonUtils.isNotEmpty(addon) ? addon.title : ""; - diyFormInfoVo.addonName = addonName; - resultList.push(diyFormInfoVo); - }); - return PageResult.build(page, limit, formPageTotal, resultList); + async getSelectPage(pageParam: PageParamDto, param: DiyFormSelectParamDto): Promise { + // TODO: 实现getSelectPage业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-column-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-column-service-impl.service.ts index d6e3092b..ddb68784 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-column-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-column-service-impl.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; -import { GenerateColumnDto } from '../../../../entities/generate-column.entity'; +import { GenerateColumn } from '../../../../entities/generate-column.entity'; @Injectable() export class GenerateColumnServiceImplService { diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-service-impl.service.ts index 4bf0c9d8..9c34b262 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/generator/impl/generate-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { GenerateListVoDto } from '../../../../dtos/admin/generator/vo/generate-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { GenerateCodeParamDto } from '../../../../dtos/admin/generator/param/generate-code-param.dto'; @@ -11,381 +11,77 @@ import { GenerateSearchParamDto } from '../../../../dtos/admin/generator/param/g import { CoreGenerateTemplateVoDto } from '../../../../dtos/core/generator/vo/core-generate-template-vo.dto'; import { MapperInfoVoDto } from '../../../../dtos/core/generator/vo/mapper-info-vo.dto'; import { GenerateDetailVoDto } from '../../../../dtos/admin/generator/vo/generate-detail-vo.dto'; -import { GenerateColumnVoDto } from '../../../../entities/generate-column-vo.entity'; +import { GenerateColumnVo } from '../../../../entities/generate-column-vo.entity'; import { GeneratePreviewVoDto } from '../../../../dtos/admin/generator/vo/generate-preview-vo.dto'; @Injectable() export class GenerateServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * getPage */ - async getPage(pageParam: PageParam, searchParam: GenerateSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "ngt"; - queryWrapper.select("ngt.id, ngt.table_name, ngt.table_content, ngt.module_name, ngt.class_name, ngt.create_time, ngt.edit_type, ngt.addon_name, ngt.order_type, ngt.parent_menu, ngt.relations, ngt.synchronous_number, na.title, na.`key`"); - queryWrapper.leftJoin("?_addon na ON na.`key` = ngt.addon_name".replace("?_", this.appConfig.tablePrefix)); - if (CommonUtils.isNotEmpty(searchParam.tableName)) { - queryWrapper.like("ngt.table_name", searchParam.tableName); - } - - if (CommonUtils.isNotEmpty(searchParam.tableContent)) { - queryWrapper.eq("ngt.table_content", searchParam.tableContent); - } - - if (CommonUtils.isNotEmpty(searchParam.addonName)) { - if (searchParam.addonName === "2") { - queryWrapper.eq("ngt.addon_name", ""); - } else { - queryWrapper.like("ngt.addon_name", searchParam.addonName); - } - } - - queryWrapper.orderByDesc("ngt.create_time"); - - [GenerateListVo[], number] iPage = generateTableMapper.selectJoinPage(new Page<>(page, limit), GenerateListVo.class, queryWrapper); - return PageResult.build(iPage); + async getPage(pageParam: PageParamDto, searchParam: GenerateSearchParamDto): Promise { + // TODO: 实现getPage业务逻辑 + return null; } /** * getInfo */ async getInfo(id: number): Promise { - const generateTable: GenerateTable = generateTableMapper.selectById(id); - if (CommonUtils.isEmpty(generateTable)) throw new AdminException("生成表不存在"); - const vo: GenerateDetailVo = new GenerateDetailVo(); - Object.assign(vo, generateTable); - - if (vo.orderType != 0) { - const orderColumn: GenerateColumn = this.generateColumnRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("is_order", 1)); - if (CommonUtils.isNotEmpty(orderColumn)) { - vo.orderColumnName = orderColumn.columnName; - } else { - vo.orderColumnName = ""; - } - } - const deleteColumn: GenerateColumn = this.generateColumnRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("is_delete", 1)); - if (CommonUtils.isNotEmpty(deleteColumn)) { - vo.deleteColumnName = deleteColumn.columnName; - vo.isDelete = 1; - } else { - vo.deleteColumnName = ""; - vo.isDelete = 0; - } - const columnList: GenerateColumn[] = this.generateColumnRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - if (CommonUtils.isNotEmpty(columnList)) { - const columnVoList: GenerateColumnVo[] = []; - for (const column of columnList) { - const generateColumnVo: GenerateColumnVo = new GenerateColumnVo(); - Object.assign(generateColumnVo, column); - if (column.viewType === "number") { - if (!column.validateType.isEmpty()) { - if (column.validateType.startsWith("[")) { - const numValidate: JSONArray = JSONUtil.parseArray(column.validateType); - if (numValidate.get(0).toString() === "between") { - generateColumnVo.viewMax = JSONUtil.parseArray(numValidate.get(1).get(1).toString()); - generateColumnVo.viewMin = JSONUtil.parseArray(numValidate.get(1).get(0).toString()); - } else if (numValidate.get(0).toString() === "max") { - generateColumnVo.viewMax = JSONUtil.parseArray(numValidate.get(1).get(0).toString()); - } else if (numValidate.get(0).toString() === "min") { - generateColumnVo.viewMin = JSONUtil.parseArray(numValidate.get(1).get(0).toString()); - } else { - generateColumnVo.viewMax = "100"; - generateColumnVo.viewMin = "0"; - } - } else { - generateColumnVo.viewMax = "100"; - generateColumnVo.viewMin = "0"; - } - - } else { - generateColumnVo.viewMax = "100"; - generateColumnVo.viewMin = "0"; - } - } else { - generateColumnVo.viewMax = ""; - generateColumnVo.viewMin = ""; - } - if (!column.validateType.isEmpty()) { - if (column.validateType.startsWith("[")) { - const num1Validate: JSONArray = JSONUtil.parseArray(column.validateType); - if (num1Validate.get(0).toString() === "between") { - generateColumnVo.maxNumber = JSONUtil.parseArray(num1Validate.get(1).get(1).toString()); - generateColumnVo.minNumber = JSONUtil.parseArray(num1Validate.get(1).get(0).toString()); - } else if (num1Validate.get(0).toString() === "max") { - generateColumnVo.maxNumber = JSONUtil.parseArray(num1Validate.get(1).get(0).toString()); - } else if (num1Validate.get(0).toString() === "min") { - generateColumnVo.minNumber = JSONUtil.parseArray(num1Validate.get(1).get(0).toString()); - } else { - generateColumnVo.maxNumber = "120"; - generateColumnVo.minNumber = "1"; - } - } else { - generateColumnVo.maxNumber = "120"; - generateColumnVo.minNumber = "1"; - } - - } else { - generateColumnVo.maxNumber = "120"; - generateColumnVo.minNumber = "1"; - } - if (!column.model.isEmpty()) { - generateColumnVo.selectType = 2; - } else { - generateColumnVo.selectType = 1; - } - columnVoList.push(generateColumnVo); - } - vo.tableColumn = columnVoList; - } - return vo; + // TODO: 实现getInfo业务逻辑 + return null; } /** * add */ - async add(generateParam: GenerateParam): Promise { - const sql: string = "SHOW TABLE STATUS WHERE 1=1 "; - const tablePrefix: string = this.appConfig.tablePrefix; - if (!generateParam.tableName.isEmpty()) { - sql += " AND Name = '" + generateParam.tableName + "'"; - } - List> listData = jdbcTemplate.queryForList(sql); - if (CommonUtils.isEmpty(listData)) throw new AdminException("数据表不存在"); - const table: Record = listData.get(0); - if (CommonUtils.isEmpty(table)) throw new AdminException("数据表不存在"); - const tableName: string = table.get("Name").toString().substring(tablePrefix.length()); - - //添加生成表数据 - const generateTable: GenerateTable = new GenerateTable(); - generateTable.tableName = tableName; - generateTable.tableContent = table.get("Comment".toString()); - generateTable.className = tableName; - generateTable.createTime = Date.now( / 1000); - generateTable.moduleName = tableName; - this.generateTableRepository.save(generateTable); - - //添加生成字段数据 - List> columns = jdbcTemplate.queryForList("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) and TABLE_NAME='" + tablePrefix + tableName + "'"); - const id: number = generateTable.id; - const list: GenerateColumn[] = []; - for (Record column : columns) { - const generateColumn: GenerateColumn = new GenerateColumn(); - - generateColumn.isRequired = 0; - const defaultColumn: string[] = {"id", "create_time", "update_time"}; - if (column.get("IS_NULLABLE").toString() === "NO" && !column.get("COLUMN_KEY").equals("PRI") && [defaultColumn].includes(column.get("COLUMN_NAME").toString())) { - generateColumn.isRequired = 1; - } - - generateColumn.tableId = id; - generateColumn.columnName = column.get("COLUMN_NAME".toString()); - generateColumn.columnType = getDbFieldType(column.get("DATA_TYPE".toString())); - if (generateColumn.columnType === "number" && generateColumn.columnName.includes("time")) { - generateColumn.columnType = "number"; - } - generateColumn.columnComment = column.get("COLUMN_COMMENT".toString()); - generateColumn.isPk = column.get("COLUMN_KEY".equals("PRI") ? 1 : 0); - generateColumn.isInsert = [defaultColumn].includes(column.get("COLUMN_NAME".toString()) ? 0 : 1); - generateColumn.isUpdate = [defaultColumn].includes(column.get("COLUMN_NAME".toString()) ? 0 : 1); - generateColumn.isLists = [defaultColumn].includes(column.get("COLUMN_NAME".toString()) ? 0 : 1); - generateColumn.isDelete = 0; - generateColumn.queryType = "="; - generateColumn.viewType = "input"; - generateColumn.dictType = ""; - generateColumn.addon = ""; - generateColumn.model = ""; - generateColumn.labelKey = ""; - generateColumn.valueKey = ""; - generateColumn.createTime = Date.now( / 1000); - generateColumn.updateTime = Date.now( / 1000); - list.push(generateColumn); - - } - this.generateColumnService.insertAll(list); - return id; + async add(generateParam: GenerateParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, generateParam: GenerateEditParam): Promise { - //添加生成表数据 - const generateTable: GenerateTable = new GenerateTable(); - generateTable.id = id; - generateTable.tableName = generateParam.tableName; - generateTable.tableContent = generateParam.tableContent; - generateTable.moduleName = generateParam.moduleName; - generateTable.className = generateParam.className; - generateTable.editType = generateParam.editType; - generateTable.addonName = generateParam.addonName; - generateTable.orderType = generateParam.orderType; - generateTable.parentMenu = generateParam.parentMenu; - generateTable.relations = generateParam.relations; - generateTableMapper.updateById(generateTable); - //更新表字段 - this.generateColumnRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); - const columns: JSONArray = JSONUtil.parseArray(generateParam.tableColumn); - const list: GenerateColumn[] = []; - - for (const i of number = 0; i < columns.length; i++) { - const generateColumn: GenerateColumn = new GenerateColumn(); - const column: Record = columns.getRecord(i); - generateColumn.tableId = id; - generateColumn.columnName = column.getStr("column_name"); - generateColumn.columnComment = column.getStr("column_comment"); - generateColumn.isPk = column.getInt("is_pk"); - generateColumn.isRequired = column.getInt("is_required"); - generateColumn.isInsert = column.getInt("is_insert"); - generateColumn.isUpdate = column.getInt("is_update"); - generateColumn.isLists = column.getInt("is_lists"); - generateColumn.isSearch = column.getInt("is_search"); - generateColumn.isDelete = 0; - generateColumn.isOrder = 0; - generateColumn.queryType = column.getStr("query_type"); - generateColumn.viewType = CommonUtils.isEmpty(column.getStr("view_type") ? "input" : column.getStr("view_type")); - generateColumn.dictType = CommonUtils.isEmpty(column.getStr("dict_type") ? "" : column.getStr("dict_type")); - generateColumn.addon = CommonUtils.isEmpty(column.getStr("addon") ? "" : column.getStr("addon")); - generateColumn.model = CommonUtils.isEmpty(column.getStr("model") ? "" : column.getStr("model")); - generateColumn.labelKey = CommonUtils.isEmpty(column.getStr("label_key") ? "" : column.getStr("label_key")); - generateColumn.valueKey = CommonUtils.isEmpty(column.getStr("value_key") ? "" : column.getStr("value_key")); - generateColumn.updateTime = Date.now( / 1000); - generateColumn.createTime = Date.now( / 1000); - generateColumn.columnType = CommonUtils.isEmpty(column.getStr("column_type") ? "String" : column.getStr("column_type")); - generateColumn.validateType = CommonUtils.isEmpty(column.getStr("validate_type") ? "" : column.getStr("validate_type")); - //传入字段rule暂时不知含义,待定 - - if (generateParam.isDelete == 1) { - if (column.getStr("column_name").equals(generateParam.deleteColumnName)) { - generateColumn.isDelete = 1; - } - } - if (generateParam.orderType != 0) { - if (column.getStr("column_name").equals(generateParam.orderColumnName)) { - generateColumn.isOrder = 1; - } - } - - if (CommonUtils.isNotEmpty(column.getStr("validate_type")) && !column.getStr("view_type").equals("number")) { - if (column.getStr("validate_type").equals("between")) { - const jsonArray: JSONArray = new JSONArray(); - jsonArray.push("between"); - jsonArray.push(new String[]{column.getStr("min_number"), column.getStr("max_number")}); - generateColumn.validateType = jsonArray.toString(); - } else if (column.getStr("validate_type").equals("max")) { - const jsonArray: JSONArray = new JSONArray(); - jsonArray.push("max"); - jsonArray.push(new String[]{column.getStr("max_number")}); - generateColumn.validateType = jsonArray.toString(); - } else if (column.getStr("validate_type").equals("min")) { - const jsonArray: JSONArray = new JSONArray(); - jsonArray.push("min"); - jsonArray.push(new String[]{column.getStr("min_number")}); - generateColumn.validateType = jsonArray.toString(); - } - } - - if (column.getStr("view_type").equals("number")) { - const numJsonArray: JSONArray = new JSONArray(); - numJsonArray.push("between"); - numJsonArray.push(new String[]{column.getStr("view_min"), column.getStr("view_max")}); - generateColumn.validateType = numJsonArray.toString(); - } - if (CommonUtils.isNotEmpty(column.getStr("model"))) { - generateColumn.dictType = ""; - } - list.push(generateColumn); - - } - - this.generateColumnService.insertAll(list); + async edit(id: number, generateParam: GenerateEditParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - this.generateTableRepository.delete(id); - this.generateColumnRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * generate */ - async generate(generateCodeParam: GenerateCodeParam): Promise { - const generateTable: GenerateTable = generateTableMapper.selectById(generateCodeParam.id); - const columnList: GenerateColumn[] = this.generateColumnRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }))); - const coreGenerateService: CoreGenerateService = new CoreGenerateService(); - const list: CoreGenerateTemplateVo[] = this.coreGenerateService.generateCode(generateTable, columnList); - - // 下载 - if (generateCodeParam.generateType === "2") { - const tempDir: string = this.appConfig.webRootDownResource + "upload/generate/"; - const packageDir: string = tempDir + "package/"; - FileTools.createDirs(packageDir); - FileUtil.clean(tempDir); - for (const coreGenerateTemplateVo of list) { - FileTools.createDirs(packageDir + coreGenerateTemplateVo.path); - FileUtil.writeUtf8String(coreGenerateTemplateVo.data, packageDir + coreGenerateTemplateVo.getPath(, coreGenerateTemplateVo.fileName)); - } - const zipFile: string = ZipUtil.zip(packageDir, tempDir + "package.zip"); - } else { - // 同步 - if (this.appConfig.envType !== "dev") throw new BadRequestException("只有在开发模式下才能进行同步代码"); - - for (const coreGenerateTemplateVo of list) { - if (coreGenerateTemplateVo.type === "sql") { - SQLScriptRunnerTools.execScript(coreGenerateTemplateVo.data); - } else { - FileUtil.writeUtf8String(coreGenerateTemplateVo.data, this.appConfig.projectRoot + "/" + coreGenerateTemplateVo.getPath(, coreGenerateTemplateVo.fileName)); - } - } - } + async generate(generateCodeParam: GenerateCodeParamDto): Promise { + // TODO: 实现generate业务逻辑 + return null; } /** * preview */ async preview(id: number): Promise { - const generateTable: GenerateTable = generateTableMapper.selectById(id); - const list: GenerateColumn[] = this.generateColumnRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - const coreGenerateService: CoreGenerateService = new CoreGenerateService(); - const columnList: CoreGenerateTemplateVo[] = this.coreGenerateService.generateCode(generateTable, list); - const voList: GeneratePreviewVo[] = []; - for (const coreGenerateTemplateVo of columnList) { - const vo: GeneratePreviewVo = new GeneratePreviewVo(); - vo.name = coreGenerateTemplateVo.fileName; - vo.type = coreGenerateTemplateVo.type; - vo.content = coreGenerateTemplateVo.data; - vo.fileDir = coreGenerateTemplateVo.path + "/"; - voList.push(vo); - } - return voList; + // TODO: 实现preview业务逻辑 + return null; } /** * getDbFieldType */ async getDbFieldType(type: string): Promise { - type = getDbType(type); - const map: Record = SqlColumnEnum.map; - const field: string = ""; - for (Map.Entry entry : map.entrySet()) { - if ([entry.getValue(]).includes(type)) { - field = entry.key; - } - } - if (field === "") { - field = "String"; - } - return field; + // TODO: 实现getDbFieldType业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/home/impl/auth-site-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/home/impl/auth-site-service-impl.service.ts index 60129d8d..8ef778ea 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/home/impl/auth-site-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/home/impl/auth-site-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteListVoDto } from '../../../../dtos/admin/site/vo/site-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { AddonInfoVoDto } from '../../../../dtos/admin/addon/vo/addon-info-vo.dto'; @@ -12,210 +12,52 @@ import { SiteGroupVoDto } from '../../../../dtos/admin/home/vo/site-group-vo.dto import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; import { UserCreateSiteVoDto } from '../../../../dtos/admin/home/vo/user-create-site-vo.dto'; import { SiteAddParamDto } from '../../../../dtos/admin/site/param/site-add-param.dto'; -import { AddonDto } from '../../../../entities/addon.entity'; +import { Addon } from '../../../../entities/addon.entity'; @Injectable() export class AuthSiteServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SiteSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - //查询条件判断组装 - if (CommonUtils.isNotEmpty(searchParam.keywords)) { - queryWrapper.like("site_name", searchParam.keywords).or().like("site_id", searchParam.keywords); - } - - if (CommonUtils.isNotEmpty(searchParam.status)) { - queryWrapper.eq("status", searchParam.status); - } - - if (CommonUtils.isNotEmpty(searchParam.groupId)) { - queryWrapper.eq("group_id", searchParam.groupId); - } - - if (CommonUtils.isNotEmpty(searchParam.app)) { - queryWrapper.like("app", searchParam.app); - } - - if (CommonUtils.isNotEmpty(searchParam.siteDomain)) { - queryWrapper.like("site_domain", searchParam.siteDomain); - } - queryWrapper.ne("app_type", "admin"); - - const siteIds: number[] = getSiteIds(); - if(!this.authService.isSuperAdmin()) { - if (CommonUtils.isNotEmpty(siteIds)) { - queryWrapper.in("site_id", siteIds); - } else { - return PageResult.build(page, limit, 0).data = []; - } - } - - if (CommonUtils.isNotEmpty(searchParam.createTime)) { - - const createTime: string[] = searchParam.createTime; - const startTime: number = (createTime[0] == null) ? 0: DateUtils.StringToTimestamp(createTime[0]); - console.log(startTime); - const endTime: number = (createTime[1] == null) ? 0: DateUtils.StringToTimestamp(createTime[1]); - if(startTime > 0 && endTime > 0) - { - queryWrapper.between("create_time", startTime, endTime); - }else if (startTime > 0 && endTime == 0) - { - queryWrapper.ge("create_time", startTime); - }else if (startTime == 0 && endTime > 0) - { - queryWrapper.le("create_time", startTime); - } - } - - if (CommonUtils.isNotEmpty(searchParam.expireTime)) { - - const expireTime: string[] = searchParam.expireTime; - const startTime: number = (expireTime[0] == null) ? 0: DateUtils.StringToTimestamp(expireTime[0]); - console.log(startTime); - const endTime: number = (expireTime[1] == null) ? 0: DateUtils.StringToTimestamp(expireTime[1]); - if(startTime > 0 && endTime > 0) - { - queryWrapper.between("expire_time", startTime, endTime); - }else if (startTime > 0 && endTime == 0) - { - queryWrapper.ge("expire_time", startTime); - }else if (startTime == 0 && endTime > 0) - { - queryWrapper.le("expire_time", startTime); - } - } - - if(CommonUtils.isEmpty(searchParam.sort)){ - queryWrapper.orderByDesc("create_time"); - }else{ - queryWrapper.orderByDesc(searchParam.sort); - } - - [Site[], number] iPage = this.siteRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SiteListVo[] = []; - for (const item of iPageRecords) { - const vo: SiteListVo = new SiteListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SiteSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - MPJany /* TODO: QueryWrapper */ siteMPJQueryWrapper = new MPJQueryWrapper(); - siteMPJQueryWrapper.select("ns.site_id, ns.site_name, ns.group_id, ns.keywords, ns.app_type, ns.logo, ns.`desc`, ns.status, ns.latitude, ns.longitude, ns.province_id, ns.city_id, ns.district_id, ns.address, ns.full_address, ns.phone, ns.business_hours, ns.create_time, ns.expire_time, ns.front_end_name, ns.front_end_logo, ns.front_end_icon, ns.icon, ns.member_no, ns.app, ns.addons, ns.initalled_addon, ns.site_domain, nsg.group_name") - .setAlias("ns") - .leftJoin("?_site_group nsg ON ns.group_id = nsg.group_id".replace("?_", this.appConfig.tablePrefix)); - siteMPJQueryWrapper.eq("ns.site_id", id); - const siteInfoVo: SiteInfoVo = siteMapper.selectJoinOne(SiteInfoVo.class, siteMPJQueryWrapper); - siteInfoVo.addonKeys = this.this.CoreSiteService.getAddonKeysBySiteId(siteInfoVo.siteId); - if(siteInfoVo.addonKeys.size()!=0){ - siteInfoVo.siteAddons = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("type", AddonActionEnum.ADDON.code))); - siteInfoVo.apps = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("type", AddonActionEnum.APP.code))); - }else{ - siteInfoVo.siteAddons = []; - siteInfoVo.apps = []; - } - return siteInfoVo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SiteParam): Promise { - const model: Site = new Site(); - model.siteName = addParam.siteName; - model.groupId = addParam.groupId; - model.keywords = addParam.keywords; - model.appType = addParam.appType; - //model.logo = UrlUtils.toRelativeUrl(addParam.logo); - model.desc = addParam.desc; - model.status = addParam.status; - model.latitude = addParam.latitude; - model.longitude = addParam.longitude; - model.provinceId = addParam.provinceId; - model.cityId = addParam.cityId; - model.districtId = addParam.districtId; - model.address = addParam.address; - model.fullAddress = addParam.fullAddress; - model.phone = addParam.phone; - model.businessHours = addParam.businessHours; - model.createTime = Date.now( / 1000); - model.expireTime = addParam.expireTime; - model.frontEndName = addParam.frontEndName; - model.frontEndLogo = addParam.frontEndLogo; - model.frontEndIcon = addParam.frontEndIcon; - model.icon = addParam.icon; - model.memberNo = addParam.memberNo; - model.app = addParam.app; - model.addons = addParam.addons; - model.initalledAddon = addParam.initalledAddon; - model.siteDomain = addParam.siteDomain; - this.siteRepository.save(model); + async add(addParam: SiteParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SiteParam): Promise { - const model: Site = this.siteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - model.siteId = id; - model.siteName = editParam.siteName; - model.groupId = editParam.groupId; - model.keywords = editParam.keywords; - model.appType = editParam.appType; - //model.logo = UrlUtils.toRelativeUrl(editParam.logo); - model.desc = editParam.desc; - model.status = editParam.status; - model.latitude = editParam.latitude; - model.longitude = editParam.longitude; - model.provinceId = editParam.provinceId; - model.cityId = editParam.cityId; - model.districtId = editParam.districtId; - model.address = editParam.address; - model.fullAddress = editParam.fullAddress; - model.phone = editParam.phone; - model.businessHours = editParam.businessHours; - model.expireTime = editParam.expireTime; - model.frontEndName = editParam.frontEndName; - model.frontEndLogo = editParam.frontEndLogo; - model.frontEndIcon = editParam.frontEndIcon; - model.icon = editParam.icon; - model.memberNo = editParam.memberNo; - model.app = editParam.app; - model.addons = editParam.addons; - model.initalledAddon = editParam.initalledAddon; - model.siteDomain = editParam.siteDomain; - siteMapper.updateById(model); + async edit(id: number, editParam: SiteParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: Site = this.siteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.siteRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** @@ -241,138 +83,40 @@ export class AuthSiteServiceImplService { /** * getSiteCountByCondition */ - async getSiteCountByCondition(siteSearchParam: SiteSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper=new QueryWrapper(); - if (CommonUtils.isNotEmpty(siteSearchParam.createTime)) { - - const createTime: string[] = siteSearchParam.createTime; - const startTime: number = (createTime[0] == null) ? 0: DateUtils.StringToTimestamp(createTime[0]); - const endTime: number = (createTime[1] == null) ? 0: DateUtils.StringToTimestamp(createTime[1]); - if(startTime > 0 && endTime > 0) - { - queryWrapper.between("create_time", startTime, endTime); - }else if (startTime > 0 && endTime == 0) - { - queryWrapper.ge("create_time", startTime); - }else if (startTime == 0 && endTime > 0) - { - queryWrapper.le("create_time", startTime); - } - } - - if (CommonUtils.isNotEmpty(siteSearchParam.status)) { - queryWrapper.eq("status", siteSearchParam.status); - } - - if (CommonUtils.isNotEmpty(siteSearchParam.groupId)) { - queryWrapper.eq("group_id", siteSearchParam.groupId); - } - - if (CommonUtils.isNotEmpty(siteSearchParam.expireTime)) { - - const expireTime: string[] = siteSearchParam.expireTime; - const startTime: number = (expireTime[0] == null) ? 0: DateUtils.StringToTimestamp(expireTime[0]); - const endTime: number = (expireTime[1] == null) ? 0: DateUtils.StringToTimestamp(expireTime[1]); - if(startTime > 0 && endTime > 0) - { - queryWrapper.between("expire_time", startTime, endTime); - }else if (startTime > 0 && endTime == 0) - { - queryWrapper.ge("expire_time", startTime); - }else if (startTime == 0 && endTime > 0) - { - queryWrapper.le("expire_time", startTime); - } - } - const siteCount: number = this.siteRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }); - return siteCount.intValue(); + async getSiteCountByCondition(siteSearchParam: SiteSearchParamDto): Promise { + // TODO: 实现getSiteCountByCondition业务逻辑 + return null; } /** * getSiteIds */ async getSiteIds(): Promise { - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJany /* TODO: QueryWrapper */(); - queryWrapper.select("site_id").eq("uid", RequestUtils.uid()).ne("site_id", RequestUtils.defaultSiteId()).eq("status", 1); - const sysUserRoleList: SysUserRole[] = this.sysUserRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const siteIds: number[] = []; - for (const sysUserRole of sysUserRoleList) { - siteIds.push(sysUserRole.siteId); - } - return siteIds; + // TODO: 实现getSiteIds业务逻辑 + return null; } /** * getSiteGroup */ async getSiteGroup(): Promise { - const userCreateSiteVoList: UserCreateSiteVo[] = []; - if(this.authService.isSuperAdmin()){ - const siteGroupList: SiteGroup[] = this.siteGroupRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - for (const siteGroup of siteGroupList) { - const userCreateSiteVo: UserCreateSiteVo = new UserCreateSiteVo(); - userCreateSiteVo.groupId = siteGroup.groupId; - const siteGroupVo: SiteGroupVo = new SiteGroupVo(); - BeanUtil.copyProperties(siteGroup, siteGroupVo); - siteGroupVo.appName = this.addonService.getTitleListByKey(siteGroup.app); - siteGroupVo.addonName = this.addonService.getTitleListByKey(siteGroup.addon); - userCreateSiteVo.siteGroup = siteGroupVo; - userCreateSiteVoList.push(userCreateSiteVo); - } - }else{ - any /* TODO: QueryWrapper */ userCreateSiteLimitQueryWrapper=new QueryWrapper(); - userCreateSiteLimitQueryWrapper.eq("uid", RequestUtils.uid()); - const userCreateSiteLimitList: UserCreateSiteLimit[] = this.userCreateSiteLimitRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - for (const userCreateSiteLimit of userCreateSiteLimitList) { - const userCreateSiteVo: UserCreateSiteVo = new UserCreateSiteVo(); - BeanUtil.copyProperties(userCreateSiteLimit, userCreateSiteVo); - const siteGroup: SiteGroup = siteGroupMapper.selectById(userCreateSiteLimit.groupId); - const siteGroupVo: SiteGroupVo = new SiteGroupVo(); - BeanUtil.copyProperties(siteGroup, siteGroupVo); - siteGroupVo.appName = this.addonService.getTitleListByKey(siteGroup.app); - siteGroupVo.addonName = this.addonService.getTitleListByKey(siteGroup.addon); - userCreateSiteVo.siteGroup = siteGroupVo; - userCreateSiteVoList.push(userCreateSiteVo); - } - } - return userCreateSiteVoList; + // TODO: 实现getSiteGroup业务逻辑 + return null; } /** * createSite */ - async createSite(homeSiteAddParam: HomeSiteAddParam): Promise { - const month: number = 1; - if(!this.authService.isSuperAdmin()){ - const userCreateSiteLimit: UserCreateSiteLimit = this.userCreateSiteLimitRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("group_id", homeSiteAddParam.groupId)); - if (!userCreateSiteLimit) throw new BadRequestException("NO_PERMISSION_TO_CREATE_SITE_GROUP"); - const userSiteNum: number = this.siteGroupService.getUserSiteGroupSiteNum(RequestUtils.uid(), homeSiteAddParam.groupId); - if(userSiteNum>userCreateSiteLimit.num-1){ - throw new BadRequestException("SITE_GROUP_CREATE_SITE_EXCEEDS_LIMIT"); - } - month=userCreateSiteLimit.month; - } - const siteAddParam: SiteAddParam = new SiteAddParam(); - siteAddParam.siteName = homeSiteAddParam.siteName; - siteAddParam.uid = RequestUtils.uid(); - siteAddParam.groupId = homeSiteAddParam.groupId; - siteAddParam.expireTime = DateUtils.getDateAddMonth(month); - this.siteService.push(siteAddParam); + async createSite(homeSiteAddParam: HomeSiteAddParamDto): Promise { + // TODO: 实现createSite业务逻辑 + return null; } /** * getSiteGroupAppList */ async getSiteGroupAppList(): Promise { - const siteGroupAppList: string[] = getSiteGroupApps(); - if (CollectionUtils.isEmpty(siteGroupAppList)){ - return List.of(); - } - const addonList: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq(Addon::getStatus, AddonStatusEnum.ON.code) - .eq(Addon::getType, AddonActionEnum.APP.code) - .in(Addon::getKey, siteGroupAppList)); - - return processAddonList(addonList); + // TODO: 实现getSiteGroupAppList业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-account-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-account-service-impl.service.ts index 6ba817e8..505086b9 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-account-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-account-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { MemberAccountLogListVoDto } from '../../../../dtos/admin/member/vo/member-account-log-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { AdjustAccountParamDto } from '../../../../dtos/admin/member/param/adjust-account-param.dto'; @@ -16,7 +16,6 @@ import { SumPointVoDto } from '../../../../dtos/admin/member/vo/sum-point-vo.dto @Injectable() export class MemberAccountServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, @@ -24,159 +23,54 @@ export class MemberAccountServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: MemberAccountLogSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "mal".innerJoin("?_member m ON mal.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("mal.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg"); - queryWrapper.eq("mal.site_id", siteId); - queryWrapper.eq("mal.account_type", searchParam.accountType); - queryWrapper.orderByDesc("mal.id"); - - if (CommonUtils.isNotEmpty(searchParam.keywords)) - queryWrapper.like("m.member_no|m.username|m.nickname|m.mobile", searchParam.keywords); - if (ObjectUtil.defaultIfNull(searchParam.memberId, 0) > 0) - queryWrapper.eq("mal.member_id", searchParam.memberId); - if (CommonUtils.isNotEmpty(searchParam.fromType)) - queryWrapper.eq("mal.from_type", searchParam.fromType); - if (CommonUtils.isNotEmpty(searchParam.createTime)) - QueryMapperUtils.buildByTime(queryWrapper, "mal.create_time", searchParam.createTime); - - [MemberAccountLogVo[], number] iPage = memberAccountLogMapper.selectJoinPage(new Page<>(page, limit), MemberAccountLogVo.class, queryWrapper); - const list: MemberAccountLogListVo[] = []; - for (const item of iPageRecords) { - const vo: MemberAccountLogListVo = new MemberAccountLogListVo(); - Object.assign(vo, item); - - const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(memberInfoVo, item); - - vo.member = memberInfoVo; - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: MemberAccountLogSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * getMemberAccountInfo */ async getMemberAccountInfo(memberId: number): Promise { - const siteId: number = this.requestContext.siteId; - - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId)); - if (!member) throw new BadRequestException("会员不存在"); - - const memberAccountVo: MemberAccountVo = new MemberAccountVo(); - Object.assign(memberAccountVo, member); - - return memberAccountVo; + // TODO: 实现getMemberAccountInfo业务逻辑 + return 0; } /** * sumCommission */ - async sumCommission(searchParam: MemberAccountLogSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - const vo: SumCommissionVo = new SumCommissionVo(); - const zero: BigDecimal = (new BigDecimal(0)); - - if (CommonUtils.isNotEmpty(searchParam.memberId) && searchParam.memberId > 0) { - const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.memberId); - vo.commission = memberAccountInfo.commission; - vo.commissionCashOuting = memberAccountInfo.commissionCashOuting; - vo.totalCommission = memberAccountInfo.commissionGet; - const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) AS account_sum") - .eq("member_id", searchParam.memberId) - .eq("site_id", siteId) - .eq("account_type", AccountTypeEnum.COMMISSION.type) - .eq("from_type", "cash_out")); - vo.withdrawnCommission = memberAccountLog == null ? zero : memberAccountLog.accountSum; - } else { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) AS commission_get,SUM(commission) AS commission, SUM(commission_cash_outing) AS commission_cash_outing") - .eq("site_id", siteId)); - - vo.commission = member == null ? zero : member.commission; - vo.commissionCashOuting = member == null ? zero : member.commissionCashOuting; - vo.totalCommission = member == null ? zero : member.commissionGet; - const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) AS account_sum") - .eq("site_id", siteId) - .eq("account_type", AccountTypeEnum.COMMISSION.type) - .eq("from_type", "cash_out")); - vo.withdrawnCommission = memberAccountLog == null ? zero : memberAccountLog.accountSum; - } - return vo; + async sumCommission(searchParam: MemberAccountLogSearchParamDto): Promise { + // TODO: 实现sumCommission业务逻辑 + return null; } /** * sumBalance */ - async sumBalance(searchParam: MemberAccountLogSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - const vo: SumBalanceVo = new SumBalanceVo(); - - if (CommonUtils.isNotEmpty(searchParam.memberId) && searchParam.memberId > 0) { - const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.memberId); - - vo.balance = memberAccountInfo == null ? new BigDecimal(0 : memberAccountInfo.balance); - vo.money = memberAccountInfo == null ? new BigDecimal(0 : memberAccountInfo.money); - } else { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) AS balance,SUM(money) AS money") - .eq("site_id", siteId)); - - vo.balance = member == null ? new BigDecimal(0 : member.balance); - vo.money = member == null ? new BigDecimal(0 : member.money); - } - - return vo; + async sumBalance(searchParam: MemberAccountLogSearchParamDto): Promise { + // TODO: 实现sumBalance业务逻辑 + return null; } /** * sumPoint */ - async sumPoint(searchParam: MemberAccountLogSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - const vo: SumPointVo = new SumPointVo(); - - if (CommonUtils.isNotEmpty(searchParam.memberId) && searchParam.memberId > 0) { - const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.memberId); - const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) AS account_sum") - .eq("site_id", siteId) - .eq("member_id", searchParam.memberId) - .eq("account_type", AccountTypeEnum.POINT.type) - .lt("account_data", 0)); - vo.pointGet = memberAccountInfo.pointGet; - vo.pointUse = memberAccountLog == null ? 0 : memberAccountLog.accountSum.abs(.intValue()); - } else { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) AS point_get") - .eq("site_id", siteId)); - vo.pointGet = member == null ? 0 : member.pointGet; - - const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) AS account_sum") - .eq("site_id", siteId) - .eq("account_type", AccountTypeEnum.POINT.type) - .lt("account_data", 0)); - vo.pointUse = memberAccountLog == null ? 0 : memberAccountLog.accountSum.abs(.intValue()); - } - - return vo; + async sumPoint(searchParam: MemberAccountLogSearchParamDto): Promise { + // TODO: 实现sumPoint业务逻辑 + return null; } /** * adjustPoint */ - async adjustPoint(param: AdjustAccountParam): Promise { + async adjustPoint(param: AdjustAccountParamDto): Promise { this.coreMemberAccountService.addLog(this.requestContext.siteId, param.memberId, AccountTypeEnum.POINT.type, param.accountData, "adjust", param.memo, ""); } /** * adjustBalance */ - async adjustBalance(param: AdjustAccountParam): Promise { + async adjustBalance(param: AdjustAccountParamDto): Promise { this.coreMemberAccountService.addLog(this.requestContext.siteId, param.memberId, AccountTypeEnum.BALANCE.type, param.accountData, "adjust", param.memo, ""); } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-address-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-address-service-impl.service.ts index b376b6e7..fa474f5c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-address-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-address-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberAddressParamDto } from '../../../../dtos/admin/member/param/member-address-param.dto'; import { MemberAddressSearchParamDto } from '../../../../dtos/admin/member/param/member-address-search-param.dto'; @@ -18,41 +18,23 @@ export class MemberAddressServiceImplService { /** * list */ - async list(searchParam: MemberAddressSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - queryWrapper.eq("site_id", this.requestContext.siteId); - if (CommonUtils.isNotEmpty(searchParam.memberId)) queryWrapper.eq("member_id", searchParam.memberId); - - const records: MemberAddress[] = this.memberAddressRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const list: MemberAddressListVo[] = []; - for (const item of records) { - const vo: MemberAddressListVo = new MemberAddressListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + async list(searchParam: MemberAddressSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: MemberAddress = this.memberAddressRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - ); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: MemberAddressInfoVo = new MemberAddressInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: MemberAddressParam): Promise { + async add(addParam: MemberAddressParamDto): Promise { const model: MemberAddress = new MemberAddress(); Object.assign(model, addParam); model.siteId = this.requestContext.siteId; @@ -62,25 +44,16 @@ export class MemberAddressServiceImplService { /** * edit */ - async edit(id: number, editParam: MemberAddressParam): Promise { - const model: MemberAddress = this.memberAddressRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - ); - - if (!model) throw new BadRequestException("数据不存在!"); - Object.assign(model, editParam); - memberAddressMapper.updateById(model); + async edit(id: number, editParam: MemberAddressParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: MemberAddress = this.memberAddressRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.memberAddressRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-cash-out-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-cash-out-service-impl.service.ts index d3e4d755..6eb387fb 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-cash-out-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-cash-out-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { MemberCashOutListVoDto } from '../../../../dtos/api/member/vo/member-cash-out-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { CashOutTransferParamDto } from '../../../../dtos/admin/member/param/cash-out-transfer-param.dto'; @@ -15,7 +15,6 @@ import { CashOutStatVoDto } from '../../../../dtos/admin/member/vo/cash-out-stat @Injectable() export class MemberCashOutServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, @@ -23,115 +22,40 @@ export class MemberCashOutServiceImplService { /** * pages */ - async pages(pageParam: PageParam, searchParam: MemberCashOutSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "mco".innerJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg"); - queryWrapper.eq("mco.site_id", siteId); - queryWrapper.orderByDesc("mco.id"); - - if (CommonUtils.isNotEmpty(searchParam.keywords)) { - queryWrapper.and(i => i.like("m.member_no", searchParam.keywords) - .or().like("m.username", searchParam.keywords) - .or().like("m.nickname", searchParam.keywords) - .or().like("m.mobile", searchParam.keywords) - ); - } - if (CommonUtils.isNotEmpty(searchParam.memberId) && searchParam.memberId > 0) queryWrapper.eq("mco.member_id", searchParam.memberId); - if (CommonUtils.isNotEmpty(searchParam.status)) queryWrapper.eq("mco.status", searchParam.status); - if (CommonUtils.isNotEmpty(searchParam.cashOutNo)) queryWrapper.like("mco.cash_out_no", searchParam.cashOutNo); - if (CommonUtils.isNotEmpty(searchParam.transferType)) queryWrapper.like("mco.transfer_type", searchParam.transferType); - if (CommonUtils.isNotEmpty(searchParam.createTime)) QueryMapperUtils.buildByTime(queryWrapper, "mco.create_time", searchParam.createTime); - if (CommonUtils.isNotEmpty(searchParam.transferTime)) QueryMapperUtils.buildByTime(queryWrapper, "mco.transfer_time", searchParam.transferTime); - - [MemberCashOutListVo[], number] iPage = memberCashOutMapper.selectJoinPage(new Page<>(page, limit), MemberCashOutListVo.class, queryWrapper); - for (const item of iPageRecords) { - const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(memberInfoVo, item); - item.member = memberInfoVo; - } - return PageResult.build(page, limit, iPageTotal).data = iPageRecords; + async pages(pageParam: PageParamDto, searchParam: MemberCashOutSearchParamDto): Promise { + // TODO: 实现pages业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - const vo: MemberCashOutInfoVo = memberCashOutMapper.selectJoinOne( - MemberCashOutInfoVo.class, - new MPJany /* TODO: QueryWrapper */() - .select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg,pt.transfer_voucher,pt.transfer_remark") - .eq("mco.id", id) - .eq("mco.site_id", siteId) - .setAlias("mco") - .leftJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)) - .leftJoin("?_pay_transfer pt ON mco.transfer_no = pt.transfer_no".replace("?_", this.appConfig.tablePrefix)) - ); - - if (vo != null) { - MemberCashOutInfoVo.const transfer: Transfer = new MemberCashOutInfoVo.Transfer(); - transfer.transferNo = vo.transferNo; - transfer.transferRemark = vo.transferRemark; - transfer.transferVoucher = vo.transferVoucher; - vo.transfer = transfer; - } - - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * stat */ async stat(): Promise { - const siteId: number = this.requestContext.siteId; - const vo: CashOutStatVo = new CashOutStatVo(); - - const transfered: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", siteId) - .select("SUM(apply_money) AS apply_money") - .last("limit 1")); - - const allMoney: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId) - .select("SUM(apply_money) AS apply_money") - .last("limit 1")); - - const zero: BigDecimal = new BigDecimal(0); - vo.transfered = transfered == null ? zero : transfered.applyMoney; - if (allMoney != null) { - vo.cashOuting = allMoney.getApplyMoney(.subtract(vo.transfered)); - } else { - vo.cashOuting = zero; - } - return vo; + // TODO: 实现stat业务逻辑 + return null; } /** * audit */ - async audit(param: MemberCashOutAuditParam): Promise { + async audit(param: MemberCashOutAuditParamDto): Promise { this.this.CoreMemberCashOutService.audit(this.requestContext.siteId, param.id, param.action, param); } /** * transfer */ - async transfer(param: CashOutTransferParam): Promise { - const siteId: number = this.requestContext.siteId; - - const model: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", siteId) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - this.this.CoreMemberCashOutService.transfer(model, param); + async transfer(param: CashOutTransferParamDto): Promise { + // TODO: 实现transfer业务逻辑 + return null; } /** @@ -144,14 +68,9 @@ export class MemberCashOutServiceImplService { /** * remark */ - async remark(id: number, param: MemberCashOutRemarkParam): Promise { - const model: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - ); - if (!model) throw new BadRequestException("数据不存在"); - - model.remark = param.remark; - memberCashOutMapper.updateById(model); + async remark(id: number, param: MemberCashOutRemarkParamDto): Promise { + // TODO: 实现remark业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-config-service-impl.service.ts index 49095bcc..115903ab 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-config-service-impl.service.ts @@ -23,7 +23,7 @@ export class MemberConfigServiceImplService { /** * setLoginConfig */ - async setLoginConfig(configParam: LoginConfigParam): Promise { + async setLoginConfig(configParam: LoginConfigParamDto): Promise { this.this.CoreMemberConfigService.loginConfig = this.requestContext.siteId, configParam; } @@ -37,7 +37,7 @@ export class MemberConfigServiceImplService { /** * setCashOutConfig */ - async setCashOutConfig(configParam: CashOutConfigParam): Promise { + async setCashOutConfig(configParam: CashOutConfigParamDto): Promise { this.this.CoreMemberConfigService.cashOutConfig = this.requestContext.siteId, configParam; } @@ -51,7 +51,7 @@ export class MemberConfigServiceImplService { /** * setMemberConfig */ - async setMemberConfig(configParam: MemberConfigParam): Promise { + async setMemberConfig(configParam: MemberConfigParamDto): Promise { this.this.CoreMemberConfigService.memberConfig = this.requestContext.siteId, configParam; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-label-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-label-service-impl.service.ts index 05a29959..9fa6f32e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-label-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-label-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberLabelListVoDto } from '../../../../dtos/admin/member/vo/member-label-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberLabelEditParamDto } from '../../../../dtos/admin/member/param/member-label-edit-param.dto'; @@ -12,125 +12,54 @@ import { MemberLabelInfoVoDto } from '../../../../dtos/admin/member/vo/member-la @Injectable() export class MemberLabelServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: MemberLabelSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", siteId); - queryWrapper.orderByDesc("label_id"); - if (CommonUtils.isNotEmpty(searchParam.labelName)){ - queryWrapper.like("label_name", searchParam.labelName); - } - [MemberLabel[], number] iPage = this.memberLabelRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: MemberLabelListVo[] = []; - for (const item of iPageRecords) { - const vo: MemberLabelListVo = new MemberLabelListVo(); - const labelId: number = item.labelId; - any /* TODO: QueryWrapper */ wrapper = new QueryWrapper(); - wrapper.eq("site_id",siteId); - const canshu: string = String(labelId); - //添加如果是空值判断 - wrapper.apply("JSON_VALID(member_label) = 1 AND JSON_SEARCH(member_label, 'one', {0}) IS NOT NULL",canshu); - const members: Member[] = this.memberRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - Object.assign(vo, item); - vo.memberNum = members.length; - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: MemberLabelSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - const model: MemberLabel = this.memberLabelRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("label_id", id) - .last("limit 1")); - - if (!model) throw new BadRequestException("标签不存在"); - - const vo: MemberLabelInfoVo = new MemberLabelInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: MemberLabelEditParam): Promise { - const siteId: number = this.requestContext.siteId; - - const model: MemberLabel = new MemberLabel(); - model.siteId = siteId; - model.labelName = addParam.labelName; - model.memo = addParam.memo; - model.sort = addParam.sort; - model.createTime = Date.now( / 1000); - - this.memberLabelRepository.save(model); + async add(addParam: MemberLabelEditParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: MemberLabelEditParam): Promise { - const siteId: number = this.requestContext.siteId; - - UpdateWrapper updateWrapper = new UpdateWrapper(); - updateWrapper.eq("site_id", siteId) - .eq("label_id", id); - - const model: MemberLabel = new MemberLabel(); - model.labelName = editParam.labelName; - model.memo = editParam.memo; - model.sort = editParam.sort; - model.updateTime = Date.now( / 1000); - - this.memberLabelRepository.save(model, updateWrapper); + async edit(id: number, editParam: MemberLabelEditParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - any /* TODO: QueryWrapper */ queryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("site_id", siteId) - .eq("label_id", id); - - this.memberLabelRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现del业务逻辑 + return null; } /** * all */ async all(): Promise { - const siteId: number = this.requestContext.siteId; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJany /* TODO: QueryWrapper */(); - queryWrapper.select("label_id,label_name").eq("site_id", siteId); - - const labels: MemberLabel[] = this.memberLabelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); // 调用 selectList 方法 - - const list: MemberLabelAllListVo[] = []; - for (const item of labels) { - const vo: MemberLabelAllListVo = new MemberLabelAllListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + // TODO: 实现all业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-level-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-level-service-impl.service.ts index 97a0c99b..353cf244 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-level-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-level-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberLevelListVoDto } from '../../../../dtos/admin/member/vo/member-level-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberLevelParamDto } from '../../../../dtos/api/member/param/member-level-param.dto'; @@ -12,127 +12,54 @@ import { MemberLevelInfoVoDto } from '../../../../dtos/api/member/vo/member-leve @Injectable() export class MemberLevelServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: MemberLevelSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", siteId); - queryWrapper.orderByAsc("growth"); - if (CommonUtils.isNotEmpty(searchParam.levelName)) queryWrapper.like("level_name", searchParam.levelName); - - [MemberLevel[], number] iPage = this.memberLevelRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: MemberLevelListVo[] = []; - for (const item of iPageRecords) { - const vo: MemberLevelListVo = new MemberLevelListVo(); - Object.assign(vo, item); - vo.memberNum = this.memberRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }))); - if (CommonUtils.isNotEmpty(item.levelBenefits)) vo.levelBenefits = this.coreMemberService.getBenefitsContent(item.siteId, JsonUtils.parseObject(item.levelBenefits, "admin")); - if (CommonUtils.isNotEmpty(item.levelGifts)) vo.levelGifts = this.coreMemberService.getGiftContent(item.siteId, JsonUtils.parseObject(item.levelGifts, "admin")); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: MemberLevelSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - const model: MemberLevel = this.memberLevelRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("level_id", id) - .last("limit 1")); - - if (!model) throw new BadRequestException("等级不存在"); - - const vo: MemberLevelInfoVo = new MemberLevelInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: MemberLevelParam): Promise { - const siteId: number = this.requestContext.siteId; - - const model: MemberLevel = new MemberLevel(); - - model.siteId = siteId; - model.levelName = addParam.levelName; - model.growth = addParam.growth; - model.remark = addParam.remark; - model.createTime = Date.now( / 1000); - model.levelBenefits = addParam.levelBenefits.toString(); - model.levelGifts = addParam.levelGifts.toString(); - - this.memberLevelRepository.save(model); + async add(addParam: MemberLevelParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: MemberLevelParam): Promise { - const siteId: number = this.requestContext.siteId; - - UpdateWrapper updateWrapper = new UpdateWrapper(); - updateWrapper.eq("site_id", siteId) - .eq("level_id", id); - - const model: MemberLevel = new MemberLevel(); - model.levelName = editParam.levelName; - model.growth = editParam.growth; - model.remark = editParam.remark; - model.updateTime = Date.now( / 1000); - model.levelBenefits = editParam.levelBenefits.toString(); - model.levelGifts = editParam.levelGifts.toString(); - - this.memberLevelRepository.save(model, updateWrapper); + async edit(id: number, editParam: MemberLevelParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - const memberNum: number = this.memberRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("member_level", id)); - if (memberNum > 0) throw new BadRequestException("该等级下存在会员不允许删除"); - - any /* TODO: QueryWrapper */ queryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("site_id", siteId) - .eq("level_id", id); - - this.memberLevelRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现del业务逻辑 + return null; } /** * all */ async all(): Promise { - const siteId: number = this.requestContext.siteId; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJany /* TODO: QueryWrapper */(); - queryWrapper.select("level_id,level_name, growth,site_id,level_benefits,level_gifts").eq("site_id", siteId); - - const labels: MemberLevel[] = this.memberLevelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); // 调用 selectList 方法 - - const list: MemberLevelAllListVo[] = []; - for (const item of labels) { - const vo: MemberLevelAllListVo = new MemberLevelAllListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + // TODO: 实现all业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-service-impl.service.ts index fb32b32e..a911e50e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { MemberListVoDto } from '../../../../dtos/admin/member/vo/member-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberAllListVoDto } from '../../../../dtos/admin/member/vo/member-all-list-vo.dto'; @@ -16,7 +16,6 @@ import { BatchModifyParamDto } from '../../../../dtos/admin/member/param/batch-m @Injectable() export class MemberServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, @@ -24,299 +23,65 @@ export class MemberServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: MemberSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - const siteId: number = this.requestContext.siteId; - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "m".leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("m.*, ml.level_name as member_level_name"); - queryWrapper.eq("m.site_id", siteId); - queryWrapper.orderByDesc("member_id"); - - // 查询条件 - if (CommonUtils.isNotEmpty(searchParam.keyword)) { - queryWrapper.and(i => i.like("member_no", searchParam.keyword).or() - .like("username", searchParam.keyword).or() - .like("nickname", searchParam.keyword).or() - .like("mobile", searchParam.keyword)); - } - - if (ObjectUtil.isNotNull(searchParam.isDel) && CommonUtils.isNotEmpty(searchParam.keyword)) { - queryWrapper.eq("is_del", searchParam.isDel); - } - if (CommonUtils.isNotEmpty(searchParam.memberLevel) && searchParam.memberLevel != 0) { - queryWrapper.eq("member_level", searchParam.memberLevel); - } - if (CommonUtils.isNotEmpty(searchParam.registerChannel)) { - queryWrapper.eq("register_channel", searchParam.registerChannel); - } - if (CommonUtils.isNotEmpty(searchParam.memberLabel) && searchParam.memberLabel != 0) { - queryWrapper.like("member_label", searchParam.memberLabel); - } - if (CommonUtils.isNotEmpty(searchParam.registerType)) { - queryWrapper.eq("register_type", searchParam.registerType); - } - if (CommonUtils.isNotEmpty(searchParam.createTime)) { - QueryMapperUtils.buildByTime(queryWrapper, "m.create_time", searchParam.createTime); - } - - [Member[], number] iPage = null; - const memberList: Member[] = []; - if (page > 0 && limit > 0) { - iPage = this.memberRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - memberList = iPageRecords; - } else { - memberList = this.memberRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - } - - const levelMap: Record = Collections.emptyMap(); - const levelIds: number[] = CollStreamUtil.toSet(memberList, Member::getMemberLevel); - if (CommonUtils.isNotEmpty(levelIds)) { - levelMap = memberLevelMapper.selectBatchIds(levelIds).stream().collect(/* Collectors已删除 */.toMap(MemberLevel::getLevelId, e => e)); - } - - const list: MemberListVo[] = []; - for (const item of memberList) { - const vo: MemberListVo = new MemberListVo(); - Object.assign(vo, item); - vo.sexName = SexEnum.getNameBySex(item.sex); - vo.statusName = StatusEnum.getNameByStatus(item.status); - vo.registerChannelName = ChannelEnum.getNameByCode(item.registerChannel); - vo.memberLevelName = levelMap.getOrDefault(item.memberLevel, new MemberLevel().levelName); - - if (!item.memberLabel.isEmpty()) { - const memberLabelArrays: JSONArray = JSONUtil.parseArray(vo.memberLabel); - if (memberLabelArrays != null && memberLabelArrays.length > 0) { - const memberLabelArray: MemberLabelAllListVo[] = []; - const labelList: MemberLabel[] = this.memberLabelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).in("label_id", memberLabelArrays)); - for (const labelItem of labelList) { - const labelVo: MemberLabelAllListVo = new MemberLabelAllListVo(); - Object.assign(labelVo, labelItem); - memberLabelArray.push(labelVo); - } - vo.memberLabelArray = memberLabelArray; - } - } - list.push(vo); - } - return PageResult.build(page, limit, iPage == null ? list.length : iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: MemberSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - const model: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .setAlias("m") - .leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix)) - .select("m.*, ml.level_name as member_level_name") - .eq("member_id", id) - .eq("m.site_id", siteId) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: MemberInfoVo = new MemberInfoVo(); - Object.assign(vo, model); - if ("0".equals(model.memberLevel)){ - vo.memberLevel = ""; - } - - if (StrUtil.isNotEmpty(model.memberLabel) && ![model.getMemberLabel(]).isEmpty()) { - const memberLabelArrays: JSONArray = JSONUtil.parseArray(vo.memberLabel); - if (memberLabelArrays != null && memberLabelArrays.length > 0) { - const memberLabelArray: MemberLabelAllListVo[] = []; - const labelList: MemberLabel[] = this.memberLabelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).in("label_id", memberLabelArrays)); - for (const item of labelList) { - const labelVo: MemberLabelAllListVo = new MemberLabelAllListVo(); - Object.assign(labelVo, item); - memberLabelArray.push(labelVo); - } - vo.memberLabelArray = memberLabelArray; - } - } - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: MemberAddParam): Promise { - const siteId: number = this.requestContext.siteId; - - addParam.username = addParam.mobile; - - const mobileIsExist: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId) - .and(i => i.eq("mobile", addParam.mobile).or().eq("username", addParam.mobile)) - .last("limit 1")); - Assert.isNull(mobileIsExist, "手机号已存在"); - - if (addParam.nickname.length() == 0 & addParam.mobile.length() > 0) { - addParam.nickname = addParam.mobile.replaceAll("(\\d{3}\\d{4}(\\d{4})", "$1****$2")); - } - - if (addParam.memberNo.isEmpty()) { - addParam.memberNo = this.this.CoreMemberService.createMemberNo(siteId); - } else { - const memberNoIsExist: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId) - .eq("member_no", addParam.memberNo) - .last("limit 1")); - Assert.isNull(memberNoIsExist, "会员编码已存在"); - } - - const model: Member = new Member(); - model.siteId = siteId; - model.mobile = addParam.mobile; - model.memberNo = addParam.memberNo; - model.username = addParam.username; - model.nickname = addParam.nickname; - model.headimg = addParam.headimg; - model.password = PasswordEncipher.encode(addParam.password); - model.registerType = MemberRegisterTypeEnum.MANUAL.type; - model.registerChannel = MemberRegisterChannelEnum.MANUAL.type; - model.createTime = Date.now( / 1000); - model.memberLabel = "[]"; - this.memberRepository.save(model); - // 会员注册事件 - const registerEvent: MemberRegisterEvent = new MemberRegisterEvent(); - registerEvent.siteId = this.requestContext.siteId; - registerEvent.addAppSign("shop_fenxiao"); - registerEvent.name = "MemberRegisterEvent"; - registerEvent.member = model; - EventPublisher.publishEvent(registerEvent); + async add(addParam: MemberAddParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: MemberParam): Promise { - const siteId: number = this.requestContext.siteId; - - UpdateWrapper updateWrapper = new UpdateWrapper(); - updateWrapper.eq("site_id", siteId) - .eq("member_id", id); - - const model: Member = new Member(); - model.nickname = editParam.nickname; - model.headimg = editParam.headimg; - model.password = editParam.password; - model.sex = editParam.sex; - model.birthday = editParam.birthday; - - this.memberRepository.save(model, updateWrapper); + async edit(id: number, editParam: MemberParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * modify */ - async modify(editParam: MemberModifyParam): Promise { - if (editParam == null || editParam.field == null || editParam.value == null) { - if(editParam.field === "member_label"){ - throw new AdminException("修改参数不能为空"); - } - } - - const siteId: number = this.requestContext.siteId; - const value: string = String(editParam.value).trim(); - - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper(); - updateWrapper.eq(Member::getSiteId, siteId) - .eq(Member::getMemberId, editParam.memberId); - - switch (editParam.field) { - case "nickname": - updateWrapper.set(Member::getNickname, value === "" || value === "null" ? "" : value); - break; - case "headimg": - updateWrapper.set(Member::getHeadimg, value === "" || value === "null" ? "" : value); - break; - case "member_label": - updateWrapper.set(Member::getMemberLabel, (!value || value.length === 0) ? "[]" : value); - break; - case "member_level": - updateWrapper.set(Member::getMemberLevel, value === "" || value === "null" ? 0 : number.parseInt(value)); - break; - case "birthday": - updateWrapper.set(Member::getBirthday, value === "" || value === "null" ? "" : value); - break; - case "sex": - updateWrapper.set(Member::getSex, value === "" || value === "null" ? 0 : number.parseInt(value)); - break; - case "id_card": - // if (!IdcardUtil.isValidCard(value) && (value && value.length > 0)){ - // throw new AdminException("请输入正确的身份证号"); - // } - updateWrapper.set(Member::getIdCard, value === "" || value === "null" ? "" : value); - break; - case "remark": - updateWrapper.set(Member::getRemark, value === "" || value === "null" ? "" : value); - break; - case "mobile": - if (!PhoneUtil.isPhone(value) && (value && value.length > 0)){ - throw new AdminException("请输入正确的手机号"); - } - updateWrapper.set(Member::getMobile, value === "" || value === "null" ? "" : value); - break; - } - - this.memberRepository.save(updateWrapper); + async modify(editParam: MemberModifyParamDto): Promise { + // TODO: 实现modify业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - any /* TODO: QueryWrapper */ queryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("site_id", siteId) - .eq("member_id", id) - .last("limit 1"); - - this.memberRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现del业务逻辑 + return null; } /** * all */ - async all(searchParam: MemberSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJany /* TODO: QueryWrapper */(); - queryWrapper.select("member_id,headimg,nickname").eq("site_id", siteId); - if (CommonUtils.isNotEmpty(searchParam.keyword)) - queryWrapper.like("member_no|username|nickname|mobile", searchParam.keyword); - - const members: Member[] = this.memberRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); // 调用 selectList 方法 - - const list: MemberAllListVo[] = []; - for (const item of members) { - const vo: MemberAllListVo = new MemberAllListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + async all(searchParam: MemberSearchParamDto): Promise { + // TODO: 实现all业务逻辑 + return null; } /** * setStatus */ - async setStatus(status: number, param: MemberParam): Promise { - const siteId: number = this.requestContext.siteId; - - UpdateWrapper updateWrapper = new UpdateWrapper(); - updateWrapper.in("member_id", param.memberIds); - updateWrapper.eq("site_id", siteId); - - const updateMember: Member = new Member(); - updateMember.status = status; - this.memberRepository.save(updateMember, updateWrapper); + async setStatus(status: number, param: MemberParamDto): Promise { + // TODO: 实现setStatus业务逻辑 + return null; } /** @@ -343,32 +108,8 @@ export class MemberServiceImplService { /** * batchModify */ - async batchModify(param: BatchModifyParam): Promise { - if (CommonUtils.isEmpty(param.value.toString())){ - return; - } - const field: string = param.field; - const memberIds: number[] = param.memberIds; - const isAll: number = param.isAll; - if (!"member_label".equals(field) && !"member_level".equals(field)){ - throw new BadRequestException("不支持的字段:" + field); - } - UpdateWrapper uw = new UpdateWrapper(); - if (isAll == 0){ - if (!StringUtils.isEmptyArray(memberIds)){ - uw.in("member_id", memberIds); - } - }else { - if (!StringUtils.isEmptyArray(memberIds)) { - uw.notIn("member_id", memberIds); - } - } - if ("member_label".equals(field)){ - const value: JSONArray = JSONUtil.parseArray(param.value); - uw.set("member_label", JSONUtil.toJsonStr(value)); - }else if ("member_level".equals(field)){ - uw.set("member_level", number.parseInt(param.value.toString())); - } - this.memberRepository.save(uw); + async batchModify(param: BatchModifyParamDto): Promise { + // TODO: 实现batchModify业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-sign-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-sign-service-impl.service.ts index 8f5ee2ad..f7542dd7 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-sign-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/member/impl/member-sign-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, JsonUtils, RequestContextService } from '@wwjBoot'; import { MemberSignListVoDto } from '../../../../dtos/admin/member/vo/member-sign-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberSignSearchParamDto } from '../../../../dtos/admin/member/param/member-sign-search-param.dto'; @@ -12,7 +12,6 @@ import { SignConfigVoDto } from '../../../../dtos/admin/member/vo/sign-config-vo @Injectable() export class MemberSignServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, @@ -20,45 +19,9 @@ export class MemberSignServiceImplService { /** * pages */ - async pages(pageParam: PageParam, searchParam: MemberSignSearchParam): Promise { - const siteId: number = this.requestContext.siteId; - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "ms".innerJoin("?_member m ON ms.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("ms.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg"); - queryWrapper.eq("ms.site_id", siteId); - queryWrapper.orderByDesc("ms.sign_id"); - - if (CommonUtils.isNotEmpty(searchParam.keywords)){ - // queryWrapper.like("m.member_no|m.username|m.nickname|m.mobile", searchParam.keywords); - QueryMapperUtils.addMultiLike(queryWrapper, searchParam.keywords, - "m.member_no", "m.username", "m.nickname", "m.mobile"); - } - if (CommonUtils.isNotEmpty(searchParam.createTime)) { - QueryMapperUtils.buildByTime(queryWrapper, "ms.create_time", searchParam.createTime); - } - - [MemberSign[], number] iPage = this.memberSignRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: MemberSignListVo[] = []; - for (const item of iPageRecords) { - const vo: MemberSignListVo = new MemberSignListVo(); - Object.assign(vo, item); - - if (!item.dayAward.isEmpty()) { - vo.dayAward = this.coreMemberService.getGiftContent(item.siteId, JsonUtils.parseObject(item.dayAward, "admin")); - } - if (!item.continueAward.isEmpty()) { - vo.continueAward = this.coreMemberService.getGiftContent(item.siteId, JsonUtils.parseObject(item.continueAward, "admin")); - } - const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(memberInfoVo, item); - - vo.member = memberInfoVo; - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async pages(pageParam: PageParamDto, searchParam: MemberSignSearchParamDto): Promise { + // TODO: 实现pages业务逻辑 + return []; } /** @@ -72,7 +35,7 @@ export class MemberSignServiceImplService { /** * setSignConfig */ - async setSignConfig(configParam: SignConfigParam): Promise { + async setSignConfig(configParam: SignConfigParamDto): Promise { this.this.CoreConfigService.config = this.requestContext.siteId, "SIGN_CONFIG", JsonUtils.parseObject(configParam); } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/cloud-build-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/cloud-build-service-impl.service.ts index 2614b735..a5be6406 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/cloud-build-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/cloud-build-service-impl.service.ts @@ -1,18 +1,14 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService } from '@wwjBoot'; -import * as fs from 'fs'; -import { HttpRequestDto } from '../dtos/http-request.dto'; -import { HttpResponseDto } from '../dtos/http-response.dto'; +import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; import { ConnectTestParamDto } from '../../../../dtos/admin/niucloud/param/connect-test-param.dto'; -import { InstallAddonListVoDto } from '../../../../entities/install-addon-list-vo.entity'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { InstallAddonListVo } from '../../../../entities/install-addon-list-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class CloudBuildServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -20,10 +16,8 @@ export class CloudBuildServiceImplService { * getBuildTask */ async getBuildTask(mode: string): Promise { - if (cached.get("cloud_build_task") == null) return null; - this.buildTask = (Record) cached.get("cloud_build_task"); - if (!this.buildTask.getStr("mode").equals(mode)) return null; - return this.buildTask; + // TODO: 实现getBuildTask业务逻辑 + return null; } /** @@ -40,85 +34,22 @@ export class CloudBuildServiceImplService { * build */ async build(mode: string): Promise { - getBuildTask(mode); - - if (this.buildTask != null) throw new BadRequestException("已有正在执行中的编译任务"); - - const taskKey: string = RandomUtil.randomString(10); - - this.buildTask = new Record(); - this.buildTask.set("mode", mode); - this.buildTask.set("task_key", taskKey); - - const tempDir: string = this.appConfig.webRootDownRuntime + "cloud_build/" + taskKey + "/"; - const packageDir: string = tempDir + "package/"; - FileTools.createDirs(packageDir); - - buildPackage(packageDir); - - const zipFile: string = ZipUtil.zip(packageDir, tempDir + "build.zip"); - - const instance: NiucloudUtils = NiucloudUtils.instance; - - const actionQuery: Record = new const query: Record<>(); - actionQuery.put("data[product_key]", instance.productKey); - const actionToken: Record = this.niucloudService.getActionToken("cloudbuild", actionQuery); - - Record = {}; - query.put("authorize_code", instance.code); - query.put("timestamp", Date.now() / 1000); - query.put("token", actionToken == null ? "" : actionToken.getStr("token")); - - const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/build").query(query) - .func(i => { - i.form("file", zipFile, "build.zip"); - }) - .method(Method.POST).execute(); - - const res: Record = JsonUtils.parseObject(response.body()); - - if (!res.getInt("code", 0).equals(1)) throw new BadRequestException(res.getStr("msg")); - - this.buildTask.set("timestamp", query.get("timestamp")); - cached.put("cloud_build_task", this.buildTask); - - return this.buildTask; + // TODO: 实现build业务逻辑 + return null; } /** * getBuildLog */ async getBuildLog(mode: string): Promise { - getBuildTask(mode); - - if (this.buildTask == null) return null; - if (!this.buildTask.getStr("mode").equals(mode)) return null; - - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("authorize_code", instance.code); - query.put("timestamp", this.buildTask.getStr("timestamp")); - - const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/get_build_logs").query(query).method(Method.GET).execute(); - if (!JSONUtil.isJson(response.body())) return null; - - const res: Record = JsonUtils.parseObject(response.body()); - - const data: JSONArray = res.getByPath("data.0", JSONArray.class); - if (data.length > 0) { - const last: Record = data.getRecord(data.length - 1); - if (last.getInt("percent", 0).equals(100) && last.getInt("code", 0).equals(1)) { - res = buildSuccess(res); - } - } - return res; + // TODO: 实现getBuildLog业务逻辑 + return null; } /** * setLocalCloudCompileConfig */ - async setLocalCloudCompileConfig(param: ConnectTestParam): Promise { + async setLocalCloudCompileConfig(param: ConnectTestParamDto): Promise { const jsonObject: Record = JsonUtils.parseObject(JSONUtil.toJsonPrettyStr(param)); this.coreConfigService.config = RequestUtils.defaultSiteId(, "LOCAL_CLOUD_COMPILE_CONFIG", jsonObject); } @@ -127,32 +58,15 @@ export class CloudBuildServiceImplService { * connectTest */ async connectTest(checkLocal: boolean, url: string): Promise { - try { - const stringBuilder: StringBuilder = new StringBuilder(); - stringBuilder.append("http://") - .append(InetAddress.getByName("oss.niucloud.com").hostAddress) - .append(":8000/"); - baseUrl = stringBuilder.toString(); - if (checkLocal){ - isConnected =checkLocal(url); - } - return isConnected; - } catch (e) { - throw new AdminException("联通测试失败"); - } + // TODO: 实现connectTest业务逻辑 + return null; } /** * clearBuildTask */ async clearBuildTask(): Promise { - if (this.buildTask == null) return; - const tempDir: string = this.appConfig.webRootDownRuntime + "cloud_build/" + this.buildTask.getStr("task_key"); - try { - if (fs.existsSync(tempDir)) fs.rmSync(tempDir, { recursive: true, force: true }); - } catch (e) { - } - cached.remove("cloud_build_task"); - this.buildTask = null; + // TODO: 实现clearBuildTask业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/niu-cloud-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/niu-cloud-service-impl.service.ts index 29a36b1a..7b3fa17b 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/niu-cloud-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/niucloud/impl/niu-cloud-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -20,138 +20,63 @@ export class NiuCloudServiceImplService { * getFrameworkLastVersion */ async getFrameworkLastVersion(): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("product_key", instance.productKey); - - const data: Record = NiucloudUtils.Niucloud.get("store/framework/lastversion", query).getRecord("data"); - - const frameWorkVersion: FrameWorkVersion = new FrameWorkVersion(); - if (data != null) { - frameWorkVersion.lastVersion = data.getStr("last_version", ""); - frameWorkVersion.lastUpdateTime = data.getStr("last_update_time", ""); - } - - return frameWorkVersion; + // TODO: 实现getFrameworkLastVersion业务逻辑 + return null; } /** * getFrameworkVersionList */ async getFrameworkVersionList(): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("product_key", instance.productKey); - - const data: JSONArray = NiucloudUtils.Niucloud.get("store/framework/version", query).getJSONArray("data"); - if (data == null) return null; - - const list: FrameworkVersionListVo[] = []; - for (const i of number = 0; i < data.length; i++) { - list.push(Object.assign(new FrameworkVersionListVo(), data.getRecord(i)) /* TODO: 检查FrameworkVersionListVo构造函数 */); - } - return list; + // TODO: 实现getFrameworkVersionList业务逻辑 + return null; } /** * getAuthinfo */ async getAuthinfo(): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("code", instance.code); - query.put("secret", instance.secret); - query.put("product_key", instance.productKey); - - const authInfo: Record = NiucloudUtils.Niucloud.get("authinfo", query).getRecord("data"); - if (authInfo == null) return null; - - const vo: AuthInfoVo = new AuthInfoVo(); - AuthInfoVo.const data: AuthInfo = JSONUtil.toBean(authInfo, AuthInfoVo.AuthInfo.class); - vo.data = data; - return vo; + // TODO: 实现getAuthinfo业务逻辑 + return null; } /** * setAuthorize */ - async setAuthorize(param: SetAuthorizeParam): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("code", param.authCode); - query.put("secret", param.authSecret); - query.put("product_key", instance.productKey); - - const authInfo: Record = NiucloudUtils.Niucloud.get("authinfo", query).getRecord("data"); - if (authInfo == null) throw new BadRequestException("未获取到授权信息"); - - this.coreNiucloudConfigService.niucloudConfig = param; - NiucloudUtils.Niucloud.clearAccessToken(); + async setAuthorize(param: SetAuthorizeParamDto): Promise { + // TODO: 实现setAuthorize业务逻辑 + return null; } /** * getModuleList */ async getModuleList(): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("code", instance.code); - query.put("secret", instance.secret); - query.put("product_key", instance.productKey); - - const addonList: JSONArray = NiucloudUtils.Niucloud.get("member_app_all", query).getJSONArray("data"); - if (addonList == null && addonList.length == 0) return null; - - const list: ModuleListVo[] = []; - for (const i of number = 0; i < addonList.length; i++) { - const item: Record = addonList.getRecord(i); - const vo: ModuleListVo = Object.assign(new ModuleListVo(), item) /* TODO: 检查ModuleListVo构造函数 */; - list.push(vo); - } - return list; + // TODO: 实现getModuleList业务逻辑 + return null; } /** * getActionToken */ async getActionToken(action: string, param: Map): Promise { - return NiucloudUtils.Niucloud.get("member_app_action/" + action, query).getRecord("data"); + // TODO: 实现getActionToken业务逻辑 + return null; } /** * checkKey */ async checkKey(key: string): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("product_key", instance.productKey); - - return NiucloudUtils.Niucloud.get("store/app_check/" + key, query).get("data", boolean.class); + // TODO: 实现checkKey业务逻辑 + return null; } /** * getAppVersionList */ - async getAppVersionList(param: GetAppVersionListParam): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("product_key", instance.productKey); - query.put("app_key", param.appKey); - - const data: JSONArray = ObjectUtil.defaultIfNull(NiucloudUtils.Niucloud.get("store/app_version/list", query).get("data", JSONArray.class), new JSONArray()); - - const list: AppVersionListVo[] = []; - - for (const i of number = 0; i < data.length; i++) { - list.push(Object.assign(new AppVersionListVo(), data.getRecord(i)) /* TODO: 检查AppVersionListVo构造函数 */); - } - return list; + async getAppVersionList(param: GetAppVersionListParamDto): Promise { + // TODO: 实现getAppVersionList业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-log-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-log-service-impl.service.ts index 3bc79cec..613066e4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-log-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-log-service-impl.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; -import { SysNoticeLogDto } from '../../../../entities/sys-notice-log.entity'; +import { SysNoticeLog } from '../../../../entities/sys-notice-log.entity'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { NoticeLogSearchParamDto } from '../../../../dtos/core/notice/param/notice-log-search-param.dto'; @@ -16,7 +16,7 @@ export class NoticeLogServiceImplService { /** * getPage */ - async getPage(pageParam: PageParam, noticeLogSearchParam: NoticeLogSearchParam): Promise { + async getPage(pageParam: PageParamDto, noticeLogSearchParam: NoticeLogSearchParamDto): Promise { return this.coreNoticeLogService.getPage(this.requestContext.siteId, pageParam, noticeLogSearchParam); } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-service-impl.service.ts index bfdbac8a..428205e5 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/notice-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; @@ -44,15 +44,8 @@ export class NoticeServiceImplService { /** * editMessageStatus */ - async editMessageStatus(param: EditMessageStatusParam): Promise { - if (NoticeTypeEnum.getNameByType(param.type).isEmpty()) throw new BadRequestException("消息类型不存在"); - - const jsonModuleLoader: JsonModuleLoader = new JsonModuleLoader(); - const notice: Record = jsonModuleLoader.mergeResultElement("notice/notice.json"); - if (notice.getRecord(param.key) == null) throw new BadRequestException("消息类型不存在"); - - const data: Record = new Record(); - data.put("is_" + param.type, param.status); - this.coreNoticeService.edit(this.requestContext.siteId, param.key, data); + async editMessageStatus(param: EditMessageStatusParamDto): Promise { + // TODO: 实现editMessageStatus业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/nui-sms-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/nui-sms-service-impl.service.ts index f819621f..5c30f988 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/nui-sms-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/notice/impl/nui-sms-service-impl.service.ts @@ -1,10 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; -import { HttpRequestDto } from '../dtos/http-request.dto'; -import { HttpResponseDto } from '../dtos/http-response.dto'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { NoticeEnumListVoDto } from '../../../../dtos/notice/vo/notice-enum-list-vo.dto'; import { TemplateListVoDto } from '../../../../dtos/admin/notice/vo/template-list-vo.dto'; @@ -25,7 +22,6 @@ import { TemplateListVoDto } from '../../../../dtos/admin/notice/vo/template-lis @Injectable() export class NuiSmsServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -33,684 +29,191 @@ export class NuiSmsServiceImplService { * captcha */ async captcha(): Promise { - try { - const jsonObject: Record = NiucloudUtils.Niucloud.get(SEND_CAPTCHA_URL, {}); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("获取验证码失败异常信息:{}", e.message); - throw new Error(e); - } + // TODO: 实现captcha业务逻辑 + return null; } /** * sendMobileCode */ - async sendMobileCode(param: SendMobileCodeParam): Promise { - const body: Record = {}; - body.put("mobile", param.mobile); - body.put("captcha_key", param.captchaKey); - body.put("captcha_code", param.captchaCode); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.post(SEND_CODE_URL, body); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("发送验证码失败异常信息:{}", e.message); - throw new AdminException("发送验证码失败"); - } + async sendMobileCode(param: SendMobileCodeParamDto): Promise { + // TODO: 实现sendMobileCode业务逻辑 + return null; } /** * registerAccount */ - async registerAccount(param: RegisterAccountParam): Promise { - if (CommonUtils.isNotEmpty(param.imgUrl)) { - param.imgUrl = RequestUtils.getReqeustURI(, param.imgUrl.toString()); - } - const result: Record = null; - try { - result = NiucloudUtils.Niucloud.post(ACCOUNT_REGISTER_URL, param); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - } catch (e) { - log.error("注册账号失败异常信息:{}", e.message); - throw new AdminException("注册账号失败"); - } - return result; + async registerAccount(param: RegisterAccountParamDto): Promise { + // TODO: 实现registerAccount业务逻辑 + return 0; } /** * loginAccount */ - async loginAccount(param: RegisterAccountParam): Promise { - const url: string = String.format(LOGIN_ACCOUNT_URL, param.username); - const body: Record = {}; - body.put("username", param.username); - body.put("password", param.password); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.post(url, body); - const result: Record = jsonObject.getRecord("data"); - if (result == null) { - throw new AdminException("登录失败"); - } - param.signature = " "; - param.defaultVal = " "; - setConfig(param); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("登录账号失败异常信息:{}", e.message); - throw new AdminException(e.message); - } + async loginAccount(param: RegisterAccountParamDto): Promise { + // TODO: 实现loginAccount业务逻辑 + return 0; } /** * resetPassword */ - async resetPassword(param: RegisterAccountParam): Promise { - const result: Record = new Record(); - // 获取用户信息 - const data: Record = accountInfo(param.username); - - // 拆分手机号并验证 - const mobiles: string = String(data.getOrDefault("mobiles", "")); - const mobileList: string[] = [mobiles.split(","]); - if (!mobileList.includes(param.mobile)) { - throw new AdminException("手机号错误"); - } - - // 重置密码 - const newPassword: string = null; - try { - const resetPasswordUrl: string = String.format(RESET_PASSWORD_URL, param.username); - const resetPasswordBody: Record = {}; - resetPasswordBody.put("mobile", param.mobile); - resetPasswordBody.put("code", param.code); - resetPasswordBody.put("key", param.key); - const resetPasswordJson: Record = NiucloudUtils.Niucloud.put(resetPasswordUrl, resetPasswordBody); - const resetPasswordDataJson: Record = resetPasswordJson.getRecord("data"); - newPassword = resetPasswordDataJson.getStr("newPassword"); - } catch (e) { - log.error("重置密码失败异常信息:{}", e.message); - throw new AdminException("重置密码失败"); - } - - //修改配置 - const registerAccountParam: RegisterAccountParam = new RegisterAccountParam(); - registerAccountParam.username = param.username; - registerAccountParam.password = param.password; - setConfig(registerAccountParam); - - result.put("password", newPassword); - return result; + async resetPassword(param: RegisterAccountParamDto): Promise { + // TODO: 实现resetPassword业务逻辑 + return null; } /** * accountInfo */ async accountInfo(username: string): Promise { - const infoUrl: string = String.format(ACCOUNT_INFO_URL, username); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.get(infoUrl, {}); - const result: Record = jsonObject.getRecord("data"); - // 获取配置 - const nyConfig: Record = getConfig(false); - if (result != null && nyConfig != null && nyConfig.containsKey("username")) { - if (nyConfig.getStr("username").equals(result.getStr("username"))) { - result.set("signature", nyConfig.getOrDefault("signature", "").toString().trim()); - } - } - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("获取用户信息失败异常信息:{}", e.message); - throw new AdminException("获取用户信息失败"); - } + // TODO: 实现accountInfo业务逻辑 + return 0; } /** * getTemplateList */ async getTemplateList(smsType: string, username: string): Promise { - const config: Record = getConfig(false); - const siteId: number = this.requestContext.siteId; - if (CommonUtils.isEmpty(config) || !config.getOrDefault("username", "").equals(username)) { - throw new ApiException("牛云短信账号异常,请重新登录账号"); - } - const list: SysNotice[] = this.sysNoticeRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - const map: Record = {}; - if (!CollectionUtils.isEmpty(list)) { - map = list.collect(/* Collectors已删除 */.toMap(SysNotice::getKey, item => item)); - } - const notice: TemplateListVo[] = []; - for (Map.Entry noticeMap : NoticeEnum.niuyunNotice.entrySet()) { - const noticeInfoVo: TemplateListVo = new TemplateListVo(); - BeanUtil.copyProperties(noticeMap.value, noticeInfoVo); - if (map.containsKey(noticeMap.key)) { - BeanUtil.copyProperties(map.get(noticeMap.key), noticeInfoVo); - } - //针对短信,微信公众号,小程序配置 - if (CommonUtils.isNotEmpty(noticeMap.getValue().support_type_map)) { - for (Map.Entry> supportTypeMap : noticeMap.getValue().support_type_map.entrySet()) { - if (supportTypeMap.key === "sms") { - noticeInfoVo.sms = supportTypeMap.value; - } - if (supportTypeMap.key === "wechat") { - noticeInfoVo.wechat = supportTypeMap.value; - } - if (supportTypeMap.key === "weapp") { - noticeInfoVo.weapp = supportTypeMap.value; - } - } - } - - notice.push(noticeInfoVo); - } - const niuSmsTemplates: NiuSmsTemplate[] = this.niuSmsTemplateRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("username", username) - .eq("site_id", siteId)); - const templateMap: Record = {}; - if (!CollectionUtils.isEmpty(niuSmsTemplates)){ - templateMap = niuSmsTemplates.collect(/* Collectors已删除 */.toMap(NiuSmsTemplate::getTemplateKey, item => item)); - } - const addonList: Addon[] = this.coreSiteService.getSiteAddons(siteId); - const sys: Addon = new Addon(); - sys.key = "system"; - addonList.push(0, sys); - const result: TemplateListVo[] = []; - for (const addon of addonList) { - for (const noticeInfoVo of notice) { - if (addon.key === noticeInfoVo.addon) { - if ("system".equals(noticeInfoVo.addon)) { - noticeInfoVo.addon = "系统"; - } - const auditInfo: Record = new Record(); - auditInfo.set("audit_msg", templateMap.containsKey(noticeInfoVo.key) ? templateMap.get(noticeInfoVo.getKey()).auditMsg : ""); - auditInfo.set("audit_status", templateMap.containsKey(noticeInfoVo.key) ? templateMap.get(noticeInfoVo.getKey()).auditStatus : TemplateAuditStatus.TEMPLATE_NOT_REPORT.code); - auditInfo.set("audit_status_name", TemplateAuditStatus.getByCode(auditInfo.getInt("audit_status")).description); - const paramsJson: string[] = []; - if (templateMap.containsKey(noticeInfoVo.key)){ - const paramJson: string = templateMap.get(noticeInfoVo.getKey()).paramJson; - if (CommonUtils.isNotEmpty(paramJson)){ - const jsonObject: Record = JsonUtils.parseObject(paramJson); - paramsJson.addAll(jsonObject.keySet()); - } - } - Collections.sort(paramsJson); - - const variable: string[] = []; - if (CommonUtils.isNotEmpty(noticeInfoVo.variable)) { - variable.addAll(noticeInfoVo.variable.keySet()); - } - Collections.sort(variable); - - const errorStatus: string = ""; - // 比较两个键列表 - if (templateMap.containsKey(noticeInfoVo.key) && variable !== paramsJson) { - if ((!paramsJson || paramsJson.length === 0)) { - errorStatus = String(TemplateAuditStatus.TEMPLATE_NEED_PULL.code); - } else { - errorStatus = auditInfo.getInt("audit_status") == TemplateAuditStatus.TEMPLATE_PASS.code - ? String(TemplateAuditStatus.TEMPLATE_STATUS_AGAIN_REPORT.code) - : string.valueOf(TemplateAuditStatus.TEMPLATE_NEED_EDIT.code); - } - } - auditInfo.set("error_status", errorStatus); - if (StringUtil.isNotEmpty(errorStatus)){ - auditInfo.set("error_status_name", TemplateAuditStatus.getByCode(number.parseInt(errorStatus)).description); - }else { - auditInfo.set("error_status_name", ""); - } - noticeInfoVo.auditInfo = auditInfo; - if (templateMap.containsKey(noticeInfoVo.key)){ - const niuSmsTemplate: NiuSmsTemplate = templateMap.get(noticeInfoVo.key); - if (StringUtils.isNotEmpty(niuSmsTemplate.templateType)){ - noticeInfoVo.templateTypeName = TemplateTypeEnum.fromCode(number.parseInt(niuSmsTemplate.getTemplateType()).description); - }else { - noticeInfoVo.templateTypeName = ""; - } - noticeInfoVo.templateId = number.parseInt(niuSmsTemplate.templateId); - } - result.push(noticeInfoVo); - } - } - } - return result; + // TODO: 实现getTemplateList业务逻辑 + return null; } /** * orderList */ - async orderList(pageParam: PageParam, username: string, param: OrderListParam): Promise { - const orderListUrl: string = String.format(ORDER_LIST_URL, username); - const result: Record = null; - try { - const orderListParam: Record = {}; - orderListParam.put("out_trade_no", param.outTradeNo); - orderListParam.put("order_status", param.status); - orderListParam.put("create_time_start", param.createTimeStart); - orderListParam.put("create_time_end", param.createTimeEnd); - orderListParam.put("limit", pageParam.limit); - orderListParam.put("page", pageParam.page); - const jsonObject: Record = NiucloudUtils.Niucloud.get(orderListUrl, orderListParam); - result = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - } catch (e) { - log.error("获取订单列表失败异常信息:{}", e.message); - throw new AdminException("获取订单列表失败"); - } - return result; + async orderList(pageParam: PageParamDto, username: string, param: OrderListParamDto): Promise { + // TODO: 实现orderList业务逻辑 + return null; } /** * accountSendList */ - async accountSendList(pageParam: PageParam, username: string, param: SendListParam): Promise { - const accountSendUrl: string = String.format(ACCOUNT_SEND_LIST_URL, username); - const accountSendParam: Record = {}; - accountSendParam.put("mobile", param.mobile); - accountSendParam.put("content", param.content); - accountSendParam.put("smsStatus", param.smsStatus); - accountSendParam.put("limit", pageParam.limit); - accountSendParam.put("page", pageParam.page); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.get(accountSendUrl, accountSendParam); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("获取发送列表失败异常信息:{}", e.message); - throw new AdminException("获取发送列表失败"); - } + async accountSendList(pageParam: PageParamDto, username: string, param: SendListParamDto): Promise { + // TODO: 实现accountSendList业务逻辑 + return 0; } /** * enable */ async enable(isEnable: number): Promise { - const registerAccountParam: RegisterAccountParam = new RegisterAccountParam(); - if (isEnable == 1) { - const config: Record = getConfig(true); - if (CommonUtils.isEmpty(config) || - !config.containsKey(NIUYUN) || - (config.getRecord(NIUYUN)).get("username") == null || - (config.getRecord(NIUYUN)).get("username").toString().isEmpty() || - (config.getRecord(NIUYUN)).get("password") == null || - (config.getRecord(NIUYUN)).get("password").toString().isEmpty() || - (config.getRecord(NIUYUN)).get("signature") == null || - (config.getRecord(NIUYUN)).get("signature").toString().isEmpty()) { - throw new AdminException("需登录账号并配置签名后才能启用牛云短信"); - } - registerAccountParam.defaultVal = NIUYUN; - setConfig(registerAccountParam); - } else { - registerAccountParam.defaultVal = " "; - setConfig(registerAccountParam); - } + // TODO: 实现enable业务逻辑 + return null; } /** * editAccount */ - async editAccount(username: string, param: EditAccountParam): Promise { - const editAccountUrl: string = String.format(ACCOUNT_EDIT_URL, username); - const editAccountBody: Record = {}; - editAccountBody.put("new_mobile", param.newMobile); - editAccountBody.put("mobile", param.mobile); - editAccountBody.put("code", param.code); - editAccountBody.put("key", param.key); - editAccountBody.put("signature", param.signature); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.put(editAccountUrl, editAccountBody); - const registerAccountParam: RegisterAccountParam = new RegisterAccountParam(); - registerAccountParam.signature = param.signature; - setConfig(registerAccountParam); - JacksonUtils.removeNull(jsonObject); - return jsonObject; - } catch (e) { - log.error("修改账号信息失败异常信息:{}", e.message); - throw new AdminException("修改账号信息失败"); - } + async editAccount(username: string, param: EditAccountParamDto): Promise { + // TODO: 实现editAccount业务逻辑 + return 0; } /** * signDelete */ - async signDelete(username: string, param: SignDeleteParam): Promise { - const config: Record = getConfig(false); - param.password = config.getStr("password"); - try { - const failList: Object[] = delSign(username, param); - - const configSignature: string = config.getStr("signature"); - const signatures: string[] = param.signatures; - - if (signatures != null && (failList && failList.length > 0) && - signatures.includes(configSignature) && - !failList.includes(configSignature)) { - // 如果满足条件,则清空账户的签名 - const editAccountParam: EditAccountParam = new EditAccountParam(); - editAccountParam.signature = ""; - editAccount(username, editAccountParam); - } - return failList; - } catch (e) { - log.error("删除签名失败异常信息:{}", e.message); - throw new AdminException("删除签名失败异常"); - } + async signDelete(username: string, param: SignDeleteParamDto): Promise { + // TODO: 实现signDelete业务逻辑 + return null; } /** * signCreate */ - async signCreate(username: string, param: RegisterAccountParam): Promise { - if (CommonUtils.isNotEmpty(param.imgUrl)) { - param.imgUrl = RequestUtils.getReqeustURI(, param.imgUrl.toString()); - } - const signCreateUrl: string = String.format(SIGN_ADD_URL, username); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.post(signCreateUrl, param); - const data: Record = jsonObject.getRecord("data"); - if (data.containsKey("failList") && !data.getJSONArray("failList").isEmpty()) { - const failList: JSONArray = data.getJSONArray("failList"); - throw new ApiException(failList.getRecord(0).getStr("msg")); - } - } catch (e) { - log.error("创建签名失败异常信息:{}", e.message); - throw new AdminException("创建签名失败"); - } + async signCreate(username: string, param: RegisterAccountParamDto): Promise { + // TODO: 实现signCreate业务逻辑 + return null; } /** * getSmsPackageList */ - async getSmsPackageList(param: SmsPackageParam): Promise { - const pageListParam: Record = {}; - pageListParam.put("package_name", param.packageName); - pageListParam.put("sms_num", param.smsNum); - pageListParam.put("price_start", param.priceStart); - pageListParam.put("price_end", param.priceEnd); - pageListParam.put("original_price_start", param.originalPriceStart); - pageListParam.put("original_price_end", param.originalPriceEnd); - pageListParam.put("time_start", param.timeStart); - pageListParam.put("time_end", param.timeEnd); - pageListParam.put("page", 1); - pageListParam.put("limit", 15); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.get(PACKAGE_LIST_URL, pageListParam); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("获取套餐列表失败异常信息:{}", e.message); - throw new AdminException("获取套餐列表失败"); - } + async getSmsPackageList(param: SmsPackageParamDto): Promise { + // TODO: 实现getSmsPackageList业务逻辑 + return null; } /** * orderCalculate */ - async orderCalculate(username: string, param: OrderCalculateParam): Promise { - const orderCalculateUrl: string = String.format(ORDER_CALCULATE_URL, username); - const orderCalculateBody: Record = {}; - orderCalculateBody.put("package_id", param.packageId); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.post(orderCalculateUrl, orderCalculateBody); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("计算订单失败异常信息:{}", e.message); - throw new AdminException("计算订单失败"); - } + async orderCalculate(username: string, param: OrderCalculateParamDto): Promise { + // TODO: 实现orderCalculate业务逻辑 + return null; } /** * createOrder */ - async createOrder(username: string, param: OrderCalculateParam): Promise { - const orderCreateUrl: string = String.format(ORDER_CREATE_URL, username); - const orderCreateBody: Record = {}; - orderCreateBody.put("package_id", param.packageId); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.post(orderCreateUrl, orderCreateBody); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("创建订单失败异常信息:{}", e.message); - throw new AdminException("创建订单失败"); - } + async createOrder(username: string, param: OrderCalculateParamDto): Promise { + // TODO: 实现createOrder业务逻辑 + return null; } /** * getPayInfo */ async getPayInfo(username: string, outTradeNo: string): Promise { - const request: HttpServletRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).request; - - const protocol: string = request.isSecure() ? "https" : "http"; - const host: string = request.serverName; - const port: number = request.serverPort; - if (port != 80 && port != 443) { - host += ":" + port; - } - const returnUrl: string = String.format("%s://%s/site/setting/sms/pay", protocol, host); - const payInfoUrl: string = String.format(ORDER_PAY_URL, username); - const payInfoBody: Record = {}; - payInfoBody.put("notify_url", payInfoUrl); - payInfoBody.put("return_url", returnUrl); - payInfoBody.put("out_trade_no", outTradeNo); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.post(payInfoUrl, payInfoBody); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("获取支付信息失败异常信息:{}", e.message); - throw new AdminException("获取支付信息失败"); - } + // TODO: 实现getPayInfo业务逻辑 + return null; } /** * getOrderInfo */ async getOrderInfo(username: string, outTradeNo: string): Promise { - const orderInfoUrl: string = String.format(ORDER_INFO_URL, username, outTradeNo); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.get(orderInfoUrl, {}); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("获取订单信息失败异常信息:{}", e.message); - throw new AdminException("获取订单信息失败"); - } + // TODO: 实现getOrderInfo业务逻辑 + return null; } /** * getOrderStatus */ async getOrderStatus(username: string, outTradeNo: string): Promise { - const orderStatusUrl: string = String.format(ORDER_STATUS_URL, username, outTradeNo); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.get(orderStatusUrl, {}); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - return result; - } catch (e) { - log.error("获取订单状态失败异常信息:{}", e.message); - throw new AdminException("获取订单状态失败"); - } + // TODO: 实现getOrderStatus业务逻辑 + return null; } /** * templateCreate */ - async templateCreate(username: string, smsType: string, param: TemplateCreateParam): Promise { - const templateKey: string = param.templateKey; - const templateList: TemplateListVo[] = getTemplateList(smsType, username); - - // 查找模版信息,如果不存在则抛出异常 - const templateInfo: TemplateListVo = templateList - .filter(item => item.key === templateKey) - .findFirst() - .orElseThrow(() => new AdminException("当前模版未配置短信内容")); - - // 检查模版是否配置了短信内容,如果未配置则抛出异常 - if (CommonUtils.isEmpty(templateInfo.sms) || CommonUtils.isEmpty(templateInfo.sms.get("content"))) { - throw new AdminException("当前模版未配置短信内容"); - } - - // 检查模版是否已经审核通过,如果已通过则抛出异常 - const modelInfo: NiuSmsTemplate[] = this.niuSmsTemplateRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .eq("username", username)); - if (!CollectionUtils.isEmpty(modelInfo) && TemplateAuditStatus.TEMPLATE_PASS.code.toString() === modelInfo.get(0.auditStatus)) { - throw new AdminException("审核通过的模版不允许修改"); - } - - const config: Record = getConfig(false); - const templateCreateUrl: string = String.format(TEMPLATE_ADD_URL, username); - const templateCreateBody: Record = {}; - templateCreateBody.put("temName", path.basename(templateInfo)); - templateCreateBody.put("temType", param.templateType); - templateCreateBody.put("temContent", templateInfo.sms.get("content")); - templateCreateBody.put("paramJson", param.paramsJson); - templateCreateBody.put("extend", Map.of("template_key", templateKey)); - templateCreateBody.put("signature", config.getStr("signature")); - templateCreateBody.put("temId", param.templateId); - - Record result; - try { - const jsonObject: Record = NiucloudUtils.Niucloud.post(templateCreateUrl, templateCreateBody); - result = jsonObject.getRecord("data"); - JacksonUtils.removeNull(result); // 删除null值,防止序列化报错 - } catch (e) { - log.error("创建模版失败异常信息:{},", e.message); - throw new AdminException("创建模版失败"); - } - - // 获取模板ID,如果不存在则设为0 - const temId: number = result.containsKey("temId") ? result.getInt("temId") : 0; - - if (CollectionUtils.isEmpty(modelInfo)) { - const niuSmsTemplate: NiuSmsTemplate = new NiuSmsTemplate(); - niuSmsTemplate.siteId = this.requestContext.siteId; - niuSmsTemplate.smsType = smsType; - niuSmsTemplate.username = username; - niuSmsTemplate.templateKey = templateKey; - niuSmsTemplate.auditStatus = TemplateAuditStatus.TEMPLATE_WAIT.code.toString(); - niuSmsTemplate.templateId = temId.toString(); - niuSmsTemplate.reportInfo = JSONUtil.toJsonStr(result); - niuSmsTemplate.createTime = Date.now( / 1000); - niuSmsTemplate.updateTime = Date.now( / 1000); - this.niuSmsTemplateRepository.save(niuSmsTemplate); - } else { - const niuSmsTemplate: NiuSmsTemplate = modelInfo.get(0); - niuSmsTemplate.auditStatus = TemplateAuditStatus.TEMPLATE_WAIT.code.toString(); - niuSmsTemplate.templateId = temId.toString(); - niuSmsTemplate.reportInfo = JSONUtil.toJsonStr(result); - niuSmsTemplate.updateTime = Date.now( / 1000); - niuSmsTemplateMapper.updateById(niuSmsTemplate); - } - - return result != null ? result : new Record(); + async templateCreate(username: string, smsType: string, param: TemplateCreateParamDto): Promise { + // TODO: 实现templateCreate业务逻辑 + return null; } /** * templateDelete */ async templateDelete(username: string, templateId: string): Promise { - const config: Record = getConfig(false); - const deleteBody: Record = {}; - const time: number = DateUtil.currentSeconds(); - deleteBody.put("tKey", time); - deleteBody.put("password", DigestUtil.md5Hex(DigestUtil.md5Hex(config.getStr("password")) + time)); - deleteBody.put("username", username); - deleteBody.put("temId", templateId); - try { - sendHttp(TEMPLATE_DELETE, deleteBody); - this.niuSmsTemplateRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); - } catch (e) { - log.error("删除模版失败异常信息:{},", e.message); - throw new AdminException("删除模版失败"); - } + // TODO: 实现templateDelete业务逻辑 + return null; } /** * templateInfo */ async templateInfo(username: string, smsType: string, templateKey: string): Promise { - const niuSmsTemplate: NiuSmsTemplate = this.niuSmsTemplateRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq(NiuSmsTemplate::getSiteId, this.requestContext.siteId) - .eq(NiuSmsTemplate::getSmsType, smsType) - .eq(NiuSmsTemplate::getUsername, username) - .eq(NiuSmsTemplate::getTemplateKey, templateKey)); - if (CommonUtils.isEmpty(niuSmsTemplate)){ - throw new AdminException("短信模版暂未报备"); - } - const orderCreateUrl: string = String.format(TEMPLATE_INFO_URL, username); - const templateInfoParam: Record = {}; - templateInfoParam.put("tem_id", niuSmsTemplate.templateId); - try { - const jsonObject: Record = NiucloudUtils.Niucloud.get(orderCreateUrl, templateInfoParam); - const result: Record = jsonObject.getRecord("data"); - //删除null值 防止序列化报错 - JacksonUtils.removeNull(result); - const auditStatus: string = result.containsKey("auditResult") && CommonUtils.isNotEmpty(result.getRecord("auditResult")) - ? result.getStr("auditResult") : niuSmsTemplate.auditStatus; - niuSmsTemplate.auditStatus = auditStatus; - niuSmsTemplateMapper.updateById(niuSmsTemplate); - return niuSmsTemplate; - } catch (e) { - log.error("获取模版信息失败异常信息:{}", e.message); - throw new AdminException("获取模版信息失败"); - } + // TODO: 实现templateInfo业务逻辑 + return null; } /** * sendHttp */ async sendHttp(url: string, param: Map): Promise { - const response: HttpResponse = HttpRequest.post(url).body(JSONUtil.toJsonStr(body)).execute(); - if (!response.isOk()) { - throw new AdminException("HTTP请求失败,状态码: " + response.status); - } - - const resJson: Record = JsonUtils.parseObject(response.body()); - if (resJson.getInt("code") != 200) { - throw new AdminException(resJson.getStr("msg")); - } - return resJson; + // TODO: 实现sendHttp业务逻辑 + return null; } /** * setConfig */ - async setConfig(param: RegisterAccountParam): Promise { - const config: Record = getConfig(true); - config.put("default", CommonUtils.isNotEmpty(param.defaultVal) ? param.defaultVal : config.getOrDefault("default", "")); - const niuSmsConfig: Record = config.getRecord(NIUYUN); - const newNiuSmsConfig: Record = {}; - newNiuSmsConfig.put("username", CommonUtils.isNotEmpty(param.username) ? param.username : niuSmsConfig != null ? niuSmsConfig.getOrDefault("username", "") : ""); - newNiuSmsConfig.put("password", CommonUtils.isNotEmpty(param.password) ? param.password : niuSmsConfig != null ? niuSmsConfig.getOrDefault("password", "") : ""); - newNiuSmsConfig.put("signature", CommonUtils.isNotEmpty(param.signature) ? param.signature : niuSmsConfig != null ? niuSmsConfig.getOrDefault("signature", "") : ""); - config.put(NIUYUN, newNiuSmsConfig); - this.coreConfigService.config = this.requestContext.siteId, "SMS", config; + async setConfig(param: RegisterAccountParamDto): Promise { + // TODO: 实现setConfig业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-channel-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-channel-service-impl.service.ts index c614c64b..b898a30e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-channel-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-channel-service-impl.service.ts @@ -1,123 +1,46 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; -import { PayChannelListVoDto } from '../../../../dtos/core/pay/vo/pay-channel-list-vo.dto'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PayChannelAllSetParamDto } from '../../../../dtos/admin/pay/param/pay-channel-all-set-param.dto'; +import { PayChannelListVoDto } from '../../../../dtos/core/pay/vo/pay-channel-list-vo.dto'; import { PayChanneltemVoDto } from '../../../../dtos/admin/pay/vo/pay-channeltem-vo.dto'; @Injectable() export class PayChannelServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * setAll */ - async setAll(param: PayChannelAllSetParam): Promise { - for (const channelKey of param.config.keySet()) { - const channel: Record = param.config.getRecord(channelKey); - const payTypeList: JSONArray = channel.getJSONArray("pay_type"); - for (const i of number = 0; i < payTypeList.length; i++) { - const payType: Record = payTypeList.getRecord(i); - set(channel.getStr("key"), payType.getStr("key"), payType); - } - } + async setAll(param: PayChannelAllSetParamDto): Promise { + // TODO: 实现setAll业务逻辑 + return null; } /** * set */ async set(channel: string, type: string, data: JSONObject): Promise { - const payChannel: PayChannel = this.payChannelRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("channel", channel) - .eq("type", type) - ); - - if (CommonUtils.isNotEmpty(payChannel)) { - const config: Record = JsonUtils.parseObject(payChannel.config); - for (const key of data.getRecord("config").keySet()) { - const value: string = data.getRecord("config").getStr(key, ""); - if (!value.includes("*")) config.set(key, value); - } - payChannel.config = config.toString(); - payChannel.sort = data.getInt("sort"); - payChannel.status = data.getInt("status"); - payChannelMapper.updateById(payChannel); - } else { - const model: PayChannel = new PayChannel(); - model.siteId = this.requestContext.siteId; - model.channel = channel; - model.type = type; - model.config = data.getRecord("config".toString()); - model.sort = data.getInt("sort"); - model.status = data.getInt("status"); - this.payChannelRepository.save(model); - } + // TODO: 实现set业务逻辑 + return null; } /** * getListByChannel */ async getListByChannel(channel: string): Promise { - const payChannel: PayChannel[] = this.payChannelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("channel", channel) - ); - - const list: PayChannelListVo[] = []; - for (const item of payChannel) { - const vo: PayChannelListVo = new PayChannelListVo(); - Object.assign(vo, item); - if (CommonUtils.isNotEmpty(item.config) && "transfer".equals(channel)) { - const config: Record = JsonUtils.parseObject(item.config); - // 定义需要隐藏的配置项列表 - const keysToHide: string[] = { - "mch_secret_key", - "mch_secret_cert", - "mch_public_cert_path", - "wechat_public_cert_path", - "wechat_public_cert_id" - }; - - for (const key of keysToHide) { - const value: string = config.getStr(key); - if (CommonUtils.isNotEmpty(value)) { - try { - config.set(key, StringUtils.hide(value, 0, value.length())); - } catch (e) { - log.error("字段:{},值:{},支付设置脱敏失败{}", key, value, e.message); - } - } - } - vo.config = config.toString(); - } - list.push(vo); - } - - return list; + // TODO: 实现getListByChannel业务逻辑 + return null; } /** * setTransfer */ async setTransfer(param: JSONObject): Promise { - const alipayConfig: Record = param.getRecord("alipay_config"); - const wechatpayConfig: Record = param.getRecord("wechatpay_config"); - - if (wechatpayConfig != null) { - this.set("transfer", "wechatpay", new Record() - .set("config", wechatpayConfig) - .set("status", 1) - .set("sort", 0)); - } - - if (alipayConfig != null) { - this.set("transfer", "alipay", new Record() - .set("config", alipayConfig) - .set("status", 1) - .set("sort", 0)); - } + // TODO: 实现setTransfer业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-refund-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-refund-service-impl.service.ts index 75b06f63..a76e199f 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-refund-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-refund-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { PayRefundListVoDto } from '../../../../dtos/core/pay/vo/pay-refund-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { PayRefundSearchParamDto } from '../../../../dtos/core/pay/param/pay-refund-search-param.dto'; @@ -18,49 +18,23 @@ export class PayRefundServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: PayRefundSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - if (CommonUtils.isNotEmpty(searchParam.refundNo)) queryWrapper.eq("refund_no", searchParam.refundNo); - if (CommonUtils.isNotEmpty(searchParam.status)) queryWrapper.eq("status", searchParam.status); - if (CommonUtils.isNotEmpty(searchParam.createTime)) QueryMapperUtils.buildByTime(queryWrapper, "create_time", searchParam.createTime); - queryWrapper.orderByDesc("id"); - - const payTypeEnum: Record = PayTypeEnum.type; - - [PayRefund[], number] iPage = this.payRefundRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: PayRefundListVo[] = []; - for (const item of iPageRecords) { - const vo: PayRefundListVo = new PayRefundListVo(); - Object.assign(vo, item); - vo.typeName = payTypeEnum.getByPath(vo.type + ".name", String.class); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: PayRefundSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(refundNo: string): Promise { - const model: PayRefund = this.payRefundRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: PayRefundInfoVo = new PayRefundInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * transfer */ - async transfer(param: PayRefundTransferParam): Promise { + async transfer(param: PayRefundTransferParamDto): Promise { param.siteId = this.requestContext.siteId; this.coreRefundService.refund(param); } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-service-impl.service.ts index 94c45f29..c4540935 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { PayListVoDto } from '../../../../dtos/core/pay/vo/pay-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { GetFriendspayInfoByTradeParamDto } from '../../../../dtos/admin/pay/param/get-friendspay-info-by-trade-param.dto'; @@ -22,167 +22,63 @@ export class PayServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: PaySearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - - [Pay[], number] iPage = this.payRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: PayListVo[] = []; - for (const item of iPageRecords) { - const vo: PayListVo = new PayListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: PaySearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: Pay = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: PayInfoVo = new PayInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: PayParam): Promise { - const model: Pay = new Pay(); - model.siteId = addParam.siteId; - model.mainId = addParam.mainId; - model.outTradeNo = addParam.outTradeNo; - model.tradeType = addParam.tradeType; - model.tradeId = addParam.tradeId; - model.tradeNo = addParam.tradeNo; - model.body = addParam.body; - model.money = addParam.money; - model.voucher = addParam.voucher; - model.status = addParam.status; - model.json = addParam.json; - model.createTime = Date.now( / 1000); - model.payTime = addParam.payTime; - model.cancelTime = addParam.cancelTime; - model.type = addParam.type; - model.mchId = addParam.mchId; - model.mainType = addParam.mainType; - model.channel = addParam.channel; - model.failReason = addParam.failReason; - this.payRepository.save(model); + async add(addParam: PayParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: PayParam): Promise { - const model: Pay = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - model.id = id; - model.siteId = editParam.siteId; - model.mainId = editParam.mainId; - model.outTradeNo = editParam.outTradeNo; - model.tradeType = editParam.tradeType; - model.tradeId = editParam.tradeId; - model.tradeNo = editParam.tradeNo; - model.body = editParam.body; - model.money = editParam.money; - model.voucher = editParam.voucher; - model.status = editParam.status; - model.json = editParam.json; - model.payTime = editParam.payTime; - model.cancelTime = editParam.cancelTime; - model.type = editParam.type; - model.mchId = editParam.mchId; - model.mainType = editParam.mainType; - model.channel = editParam.channel; - model.failReason = editParam.failReason; - payMapper.updateById(model); + async edit(id: number, editParam: PayParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: Pay = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.payRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * getFriendspayInfoByTrade */ - async getFriendspayInfoByTrade(param: GetFriendspayInfoByTradeParam): Promise { - const payInfo: GetInfoByTradeVo = this.corePayService.getInfoByTrade(this.requestContext.siteId, param.tradeType, param.tradeId, param.channel, "friendspay"); - if (CommonUtils.isEmpty(payInfo)) { - return new FriendsPayInfoByTradeVo(); - } - - const vo: FriendsPayInfoByTradeVo = new FriendsPayInfoByTradeVo(); - Object.assign(vo, payInfo); - vo.config = payInfo.config; - vo.createTime = DateUtils.timestampToString(payInfo.createTime); - - if (payInfo.cancelTime > 0) { - vo.cancelTime = DateUtils.timestampToString(payInfo.cancelTime); - } - - if (payInfo.payTime > 0) { - vo.payTime = DateUtils.timestampToString(payInfo.payTime); - } - - any /* TODO: QueryWrapper */ posterQueryWrapper = new QueryWrapper(); - posterQueryWrapper.eq("site_id", this.requestContext.siteId) - .eq("type", "friendspay") - .eq("status", 1) - .eq("is_default", 1); - - const poster: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isNotEmpty(poster)) { - vo.posterId = poster.id; - } - - any /* TODO: QueryWrapper */ memberQueryWrapper = new QueryWrapper(); - memberQueryWrapper.eq("site_id", this.requestContext.siteId) - .eq("member_id", vo.mainId); - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - vo.member = member; - - const qrcode: QR = getQrcode(param.tradeType, param.tradeId, param.channel); - vo.link = qrcode.link; - vo.qrcode = qrcode.qrcode; - return vo; + async getFriendspayInfoByTrade(param: GetFriendspayInfoByTradeParamDto): Promise { + // TODO: 实现getFriendspayInfoByTrade业务逻辑 + return null; } /** * getPayTypeList */ async getPayTypeList(): Promise { - const payTypeList: PayTypeVo[] = this.corePayService.getPayTypeByTrade(this.requestContext.siteId, "", ChannelEnum.H5); - if (CommonUtils.isEmpty(payTypeList)) { - return Collections.emptyList(); - } - - return payTypeList.filter(o => o.key === "balancepay" || o.key === "friendspay"); + // TODO: 实现getPayTypeList业务逻辑 + return null; } /** * pay */ - async pay(param: PayParam): Promise { + async pay(param: PayParamDto): Promise { param.siteId = this.requestContext.siteId; return this.corePayService.pay(param); } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-transfer-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-transfer-service-impl.service.ts index 0d0f3bb0..12cd8f48 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-transfer-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/pay/impl/pay-transfer-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; @@ -16,22 +16,15 @@ export class PayTransferServiceImplService { /** * setSceneId */ - async setSceneId(param: SetSceneIdParam): Promise { - const config: Record = this.coreTransferSceneService.getWechatTransferSceneConfig(this.requestContext.siteId); - - const tradeScenelist: Record = TransferSceneEnum.wechatTransferSceneMap; - if (!tradeScenelist.containsKey(param.scene)) { - throw new BadRequestException("不存在的商户转账场景"); - } - - config.put(param.scene, param.sceneId); - this.coreTransferSceneService.wechatTransferSceneConfig = this.requestContext.siteId, config; + async setSceneId(param: SetSceneIdParamDto): Promise { + // TODO: 实现setSceneId业务逻辑 + return null; } /** * setTradeScene */ - async setTradeScene(param: SetTradeSceneParam): Promise { + async setTradeScene(param: SetTradeSceneParamDto): Promise { this.coreTransferSceneService.tradeScene = this.requestContext.siteId, param.type, param; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-account-log-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-account-log-service-impl.service.ts index ce7573d0..71ae28fa 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-account-log-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-account-log-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteAccountLogListVoDto } from '../../../../dtos/admin/site/vo/site-account-log-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SiteAccountLogParamDto } from '../../../../dtos/admin/site/param/site-account-log-param.dto'; @@ -12,78 +12,22 @@ import { SiteGroupListVoDto } from '../../../../dtos/admin/site/vo/site-group-li @Injectable() export class SiteAccountLogServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SiteAccountLogSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - //查询条件判断组装 - if (CommonUtils.isNotEmpty(searchParam.tradeNo)) { - queryWrapper.like("trade_no", searchParam.tradeNo); - } - if (CommonUtils.isNotEmpty(searchParam.type)) { - queryWrapper.eq("type", searchParam.type); - } - if (CommonUtils.isNotEmpty(searchParam.createTime)) { - const createTime: string[] = searchParam.createTime; - QueryMapperUtils.buildByTime(queryWrapper, "create_time", createTime); - } - queryWrapper.orderByDesc("create_time"); - [SiteAccountLog[], number] iPage = this.siteAccountLogRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SiteAccountLogListVo[] = []; - for (const item of iPageRecords) { - const vo: SiteAccountLogListVo = new SiteAccountLogListVo(); - Object.assign(vo, item); - const typeModel: Object = new Object(); - if (item.type === "pay") { - typeModel = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .last("limit 1")); - } else if (item.type === "refund") { - typeModel = this.payRefundRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .last("limit 1")); - } else { - typeModel = this.payTransferRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .last("limit 1")); - } - vo.payInfo = typeModel; - list.push(vo); - } - - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SiteAccountLogSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SiteAccountLog = this.siteAccountLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("id", id) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: SiteAccountLogInfoVo = new SiteAccountLogInfoVo(); - Object.assign(vo, model); - const typeModel: Object = new Object(); - if (model.type === "pay") { - typeModel = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .last("limit 1")); - } else if (model.type === "refund") { - typeModel = this.payRefundRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .last("limit 1")); - } else { - typeModel = this.payTransferRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .last("limit 1")); - } - vo.payInfo = typeModel; - return vo; + // TODO: 实现info业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-group-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-group-service-impl.service.ts index 52eb5288..4c563450 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-group-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-group-service-impl.service.ts @@ -1,228 +1,90 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteGroupListVoDto } from '../../../../dtos/admin/site/vo/site-group-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SiteGroupAddParamDto } from '../../../../dtos/admin/site/param/site-group-add-param.dto'; import { SiteGroupParamDto } from '../../../../dtos/admin/site/param/site-group-param.dto'; import { SiteGroupSearchParamDto } from '../../../../dtos/admin/site/param/site-group-search-param.dto'; -import { InstallAddonListVoDto } from '../../../../entities/install-addon-list-vo.entity'; +import { InstallAddonListVo } from '../../../../entities/install-addon-list-vo.entity'; import { @LazyDto } from '../dtos/@-lazy.dto'; @Injectable() export class SiteGroupServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SiteGroupSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - if (CommonUtils.isNotEmpty(searchParam.keywords)) { - queryWrapper.like("group_name", searchParam.keywords); - } - queryWrapper.orderByDesc("group_id"); - - [SiteGroup[], number] iPage = this.siteGroupRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - - //获取所有的addon - const addonList: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - const list: SiteGroupListVo[] = []; - for (const item of iPageRecords) { - const vo: SiteGroupListVo = new SiteGroupListVo(); - vo.groupId = item.groupId; - vo.groupName = item.groupName; - vo.groupDesc = item.groupDesc; - vo.createTime = item.createTime; - vo.updateTime = item.updateTime; - const addonJson: JSONArray = JSONUtil.parseArray(item.addon); - vo.addon = addonJson; - const appJson: JSONArray = JSONUtil.parseArray(item.app); - vo.app = appJson; - const addonStr: string[] = []; - const appStr: string[] = []; - const appList: SiteGroupListVo.IconAndTitle[] = []; - const addonListResult: SiteGroupListVo.IconAndTitle[] = []; - for (const addon of addonList) - { - if(addonJson.includes(addon.key)){ - addonStr.push(addon.title); - SiteGroupListVo.const iconAndTitle: IconAndTitle = new SiteGroupListVo.IconAndTitle(); - iconAndTitle.title = addon.title; - try { - iconAndTitle.icon = ImageToBase64ConverterUtil.convertToBase64(addon.icon); - } catch (e) { - iconAndTitle.icon = ""; - } - addonListResult.push(iconAndTitle); - } - if(appJson.includes(addon.key)){ - appStr.push(addon.title); - SiteGroupListVo.const iconAndTitle: IconAndTitle = new SiteGroupListVo.IconAndTitle(); - iconAndTitle.title = addon.title; - try { - iconAndTitle.icon = ImageToBase64ConverterUtil.convertToBase64(addon.icon); - } catch (e) { - iconAndTitle.icon = ""; - } - - appList.push(iconAndTitle); - } - } - vo.addonName = addonStr; - vo.appName = appStr; - vo.addonList = addonListResult; - vo.appList = appList; - list.push(vo); - } - return PageResult.build(iPage.current, iPage.size, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SiteGroupSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * getAll */ async getAll(): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("group_id"); - return this.siteGroupRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现getAll业务逻辑 + return null; } /** * info */ async info(id: number): Promise { - const model: SiteGroup = this.siteGroupRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - return model; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SiteGroupAddParam): Promise { - const groupRoles: JSONArray = new JSONArray(); - groupRoles.addAll(addParam.addon); - groupRoles.addAll(addParam.app); - /**判断应用是否全部是有效的已安装应用 */ - checkAddon(groupRoles); - const model: SiteGroup = new SiteGroup(); - model.groupName = addParam.groupName; - model.groupDesc = addParam.groupDesc; - model.app = JSONUtil.toJsonStr(addParam.app); - model.addon = JSONUtil.toJsonStr(addParam.addon); - model.createTime = DateUtils.currTime(); - model.updateTime = DateUtils.currTime(); - this.siteGroupRepository.save(model); + async add(addParam: SiteGroupAddParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SiteGroupParam): Promise { - const model: SiteGroup = this.siteGroupRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - const groupRoles: JSONArray = new JSONArray(); - groupRoles.addAll(editParam.addon); - groupRoles.addAll(editParam.app); - /**判断应用是否全部是有效的已安装应用 */ - checkAddon(groupRoles); - - const group: SiteGroup = new SiteGroup(); - group.groupId = id; - group.groupId = editParam.groupId; - group.groupName = editParam.groupName; - group.groupDesc = editParam.groupDesc; - group.app = JSONUtil.toJsonStr(editParam.app); - group.addon = JSONUtil.toJsonStr(editParam.addon); - group.updateTime = DateUtils.currTime(); - siteGroupMapper.updateById(group); - this.cached.remove("site_group_menu_ids" + id); - if (!model.app === group.app) { - // 修改站点应用 - const siteModel: Site = new Site(); - siteModel.app = model.app; - this.siteRepository.save(siteModel, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("group_id", id)); - } - - if (!model.app === group.app || !model.addon === group.addon) { - const siteList: Site[] = this.siteRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - if (CommonUtils.isNotEmpty(siteList)) { - for (const site of siteList) { - this.siteService.siteAddonChange(site, model); - this.coreSiteService.clearSiteCache(site.siteId); - } - - } - } + async edit(id: number, editParam: SiteGroupParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: SiteGroup = this.siteGroupRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - const siteCount: number = this.siteRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ })); - if(siteCount>0){ - throw new BadRequestException("当前套餐存在站点,不能删除"); - } - this.siteGroupRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * checkAddon */ async checkAddon(jsonArray: JSONArray): Promise { - const addonListVoMap: Record = this.coreAddonService.installAddonList; - const keys: string[] = new ArrayList<>(addonListVoMap.keySet()); - const addonString: string[] = JSONUtil.toList(jsonArray, String.class); - keys.retainAll(addonString); - if(keys.length!=addonString.length){ - throw new AdminException("SITE_GROUP_APP_NOT_EXIST"); - } + // TODO: 实现checkAddon业务逻辑 + return null; } /** * getUserSiteGroupAll */ async getUserSiteGroupAll(uid: number): Promise { - const siteGroupListVoList: SiteGroupListVo[] = []; - const siteGroupList: SiteGroup[] = this.siteGroupRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - - for (const siteGroup of siteGroupList) { - const siteGroupListVo: SiteGroupListVo = new SiteGroupListVo(); - Object.assign(siteGroupListVo, siteGroup); - siteGroupListVo.siteNum = getUserSiteGroupSiteNum(uid, siteGroup.groupId); - siteGroupListVoList.push(siteGroupListVo); - } - return siteGroupListVoList; + // TODO: 实现getUserSiteGroupAll业务逻辑 + return null; } /** * getUserSiteGroupSiteNum */ async getUserSiteGroupSiteNum(uid: number, groupId: number): Promise { - MPJany /* TODO: QueryWrapper */ userRoleMPJQueryWrapper = new MPJQueryWrapper(); - userRoleMPJQueryWrapper.alias = "sur" - .leftJoin("?_site s ON sur.site_id = s.site_id".replace("?_", this.appConfig.tablePrefix)); - userRoleMPJQueryWrapper.eq("sur.uid", uid); - userRoleMPJQueryWrapper.eq("sur.is_admin", 1); - userRoleMPJQueryWrapper.eq("s.group_id", groupId); - const count: number = sysUserRoleMapper.selectJoinCount(userRoleMPJQueryWrapper); - return count; + // TODO: 实现getUserSiteGroupSiteNum业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-service-impl.service.ts index c735e950..4b8f3a14 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteListVoDto } from '../../../../dtos/admin/site/vo/site-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysUserRoleParamDto } from '../../../../dtos/admin/sys/param/sys-user-role-param.dto'; @@ -12,8 +11,8 @@ import { SiteAddParamDto } from '../../../../dtos/admin/site/param/site-add-para import { SiteUserParamDto } from '../../../../dtos/admin/site/param/site-user-param.dto'; import { SiteEditParamDto } from '../../../../dtos/admin/site/param/site-edit-param.dto'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; -import { SiteDto } from '../../../../entities/site.entity'; -import { SiteGroupDto } from '../../../../entities/site-group.entity'; +import { Site } from '../../../../entities/site.entity'; +import { SiteGroup } from '../../../../entities/site-group.entity'; import { ShowAppListVoDto } from '../../../../dtos/admin/site/vo/show-app-list-vo.dto'; import { SpecialMenuListVoDto } from '../../../../dtos/admin/site/vo/special-menu-list-vo.dto'; import { MenuVoDto } from '../dtos/menu-vo.dto'; @@ -21,96 +20,15 @@ import { MenuVoDto } from '../dtos/menu-vo.dto'; @Injectable() export class SiteServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SiteSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "se" - .selectAll(Site.class) - .select("sg.group_name") - .leftJoin("?_site_group sg on sg.group_id = se.group_id".replace("?_", this.appConfig.tablePrefix)); - - - //查询条件判断组装 - if (CommonUtils.isNotEmpty(searchParam.keywords)) { - queryWrapper.like("se.siteName", searchParam.keywords).or().like("se.siteName", searchParam.keywords); - } - - if (CommonUtils.isNotEmpty(searchParam.app)) { - queryWrapper.and(wrapper => wrapper - .like("sg.addon", searchParam.app) - .or() - .like("sg.app", searchParam.app) - ); - } - - if (CommonUtils.isNotEmpty(searchParam.status)) { - queryWrapper.eq("se.status", searchParam.status); - } - - if (CommonUtils.isNotEmpty(searchParam.groupId)) { - queryWrapper.eq("se.group_id", searchParam.groupId); - } - - if (CommonUtils.isNotEmpty(searchParam.siteDomain)) { - queryWrapper.like("se.site_domain", searchParam.siteDomain); - } - queryWrapper.ne("se.app_type", "admin"); - if (CommonUtils.isNotEmpty(searchParam.createTime)) { - - const createTime: string[] = searchParam.createTime; - const startTime: number = (createTime[0] == null) ? 0L : DateUtils.StringToTimestamp(createTime[0]); - const endTime: number = (createTime[1] == null) ? 0L : DateUtils.StringToTimestamp(createTime[1]); - if (startTime > 0L && endTime > 0L) { - queryWrapper.between("se.create_time", startTime, endTime); - } else if (startTime > 0L && endTime == 0L) { - queryWrapper.ge("se.create_time", startTime); - } else if (startTime == 0L && endTime > 0L) { - queryWrapper.le("se.create_time", startTime); - } - } - - if (CommonUtils.isNotEmpty(searchParam.expireTime)) { - - const expireTime: string[] = searchParam.expireTime; - const startTime: number = (expireTime[0] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[0]); - const endTime: number = (expireTime[1] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[1]); - if (startTime > 0 && endTime > 0) { - queryWrapper.between("se.expire_time", startTime, endTime); - } else if (startTime > 0 && endTime == 0) { - queryWrapper.ge("se.expire_time", startTime); - } else if (startTime == 0 && endTime > 0) { - queryWrapper.le("se.expire_time", startTime); - } - } - - queryWrapper.orderByDesc("se.create_time"); - - [SiteListVo[], number] iPage = siteMapper.selectJoinPage(new Page<>(page, limit), SiteListVo.class, queryWrapper); - - const list: SiteListVo[] = []; - for (const item of iPageRecords) { - const vo: SiteListVo = new SiteListVo(); - Object.assign(vo, item); - MPJany /* TODO: QueryWrapper */ userRoleMPJQueryWrapper = new MPJQueryWrapper(); - userRoleMPJQueryWrapper.select("nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count") - .setAlias("nsur") - .leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix)); - userRoleMPJQueryWrapper.eq("nsur.is_admin", 1); - userRoleMPJQueryWrapper.eq("nsur.site_id", item.siteId); - vo.admin = sysUserRoleMapper.selectJoinOne(SiteAdminVo.class, userRoleMPJQueryWrapper); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal, list); + async list(pageParam: PageParamDto, searchParam: SiteSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** @@ -123,169 +41,25 @@ export class SiteServiceImplService { /** * add */ - async add(addParam: SiteAddParam): Promise { - const siteGroup: SiteGroup = this.siteGroupService.info(addParam.groupId); - if (ObjectUtil.isNull(siteGroup) || CommonUtils.isEmpty(siteGroup)) { - throw new BadRequestException("SITE_GROUP_NOT_EXIST"); - } - const model: Site = new Site(); - model.siteName = addParam.siteName; - model.groupId = addParam.groupId; - model.appType = AppTypeEnum.basename(SITE); - model.createTime = DateUtils.currTime(); - model.expireTime = DateUtils.StringToTimestamp(addParam.expireTime); - model.app = siteGroup.app; - model.addons = ""; - model.siteDomain = addParam.siteDomain; - this.siteRepository.save(model); - const siteId: number = model.siteId; - if (ObjectUtil.isNull(addParam.uid) || addParam.uid == 0) { - //添加用户 - const siteUserParam: SiteUserParam = new SiteUserParam(); - siteUserParam.username = addParam.username; - siteUserParam.headImg = ""; - siteUserParam.status = 1; - siteUserParam.realName = addParam.realName; - siteUserParam.password = addParam.password; - siteUserParam.isAdmin = 1; - this.sysUserService.addSiteUser(siteUserParam, siteId); - } else { - const sysUserRoleParam: SysUserRoleParam = new SysUserRoleParam(); - sysUserRoleParam.uid = addParam.uid; - sysUserRoleParam.roleIds = new JsonArray(.toString()); - sysUserRoleParam.isAdmin = 1; - sysUserRoleParam.siteId = siteId; - this.userRoleService.push(sysUserRoleParam); - } - - const event: SiteAddAfterEvent = new SiteAddAfterEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.name = "SiteAddAfterEvent"; - event.site = model; - event.siteGroup = siteGroup; - EventAndSubscribeOfPublisher.publishAll(event); - - const param: Record = {}; - param.put("site_id", siteId); - param.put("main_app", siteGroup.app); - param.put("tag", "add"); - this.diyService.loadDiyData(param); + async add(addParam: SiteAddParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SiteEditParam): Promise { - const model: Site = this.siteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - if (ObjectUtil.isNotNull(editParam.groupId) && CommonUtils.isNotEmpty(editParam.groupId) && !editParam.groupId === model.groupId) { - model.groupId = editParam.groupId; - } - if (ObjectUtil.isNotNull(editParam.siteName) && CommonUtils.isNotEmpty(editParam.siteName)) { - model.siteName = editParam.siteName; - } - - const oldSiteGroup: SiteGroup = this.siteGroupService.info(model.groupId); - - const initallJsonArray: JSONArray = new JSONArray(); - if (ObjectUtil.isNull(model.initalledAddon) || CommonUtils.isEmpty(model.initalledAddon)) { - initallJsonArray.addAll(JSONUtil.parseArray(oldSiteGroup.app)); - initallJsonArray.addAll(JSONUtil.parseArray(oldSiteGroup.addon)); - } - - const siteGroup: SiteGroup = this.siteGroupService.info(editParam.groupId); - if (ObjectUtil.isNull(siteGroup) || CommonUtils.isEmpty(siteGroup)) { - throw new BadRequestException("SITE_GROUP_NOT_EXIST"); - } - initallJsonArray.addAll(JSONUtil.parseArray(siteGroup.app)); - initallJsonArray.addAll(JSONUtil.parseArray(siteGroup.addon)); - - model.initalledAddon = JSONUtil.toJsonStr(initallJsonArray); - model.siteDomain = editParam.siteDomain; - model.expireTime = new DateTime(editParam.getExpireTime().time / 1000); - model.status = model.expireTime > DateUtils.currTime( ? SiteStatusEnum.ON.code : SiteStatusEnum.EXPIRE.code); - siteMapper.updateById(model); - - this.coreSiteService.clearSiteCache(id); - - const event: SiteEditAfterEvent = new SiteEditAfterEvent(); - event.siteId = model.siteId; - event.addAppSign("core"); - event.name = "SiteEditAfterEvent"; - event.site = model; - event.siteGroup = siteGroup; - EventAndSubscribeOfPublisher.publishAll(event); + async edit(id: number, editParam: SiteEditParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const siteUserRoles: SysUserRole[] = null; - const delResult: number = 0; - - try { - const model: Site = siteMapper.selectById(id); - if (!model) throw new BadRequestException("数据不存在!"); - - //获取所有需要处理的Mapper - List>> allModels = new ArrayList<>(this.generateService.getMappers("system")); - this.coreSiteService.getAddonKeysBySiteId(id).forEach(addon => allModels.addAll(this.generateService.getMappers(addon)) - ); - - Class wrapperClass = Class.forName("com.baomidou.mybatisplus.core.conditions.query.QueryWrapper"); - Constructor wrapperConstructor = wrapperClass.getConstructor(Class.class); - const eqMethod: Method = wrapperClass.getMethod("eq", boolean.class, Object.class, Object.class); - const deleteMethod: Method = BaseMapper.class.getMethod("delete", Wrapper.class); - - // 处理所有关联表 - for (Class> mapperClass : allModels) { - BaseMapper mapper = (BaseMapper) SpringContext.getBean(mapperClass); - if (mapper == null) { - continue; - } - - Class entityClass = resolveEntityClass(mapperClass); - if (entityClass == null || !hasSiteIdField(entityClass)) { - continue; - } - - try { - // 创建QueryWrapper并执行删除 - const wrapper: Object = wrapperConstructor.newInstance(entityClass); - eqMethod.invoke(wrapper, true, "site_id", id); - deleteMethod.invoke(mapper, wrapper); - } catch (e) { - log.error("删除表数据失败: {} | 原因: {}", - entityClass.simpleName, - e.cause != null ? e.getCause().message : e.message); - } - } - - // 处理用户角色关系 - any /* TODO: QueryWrapper */ userRoleWrapper = new QueryWrapper(); - userRoleWrapper.eq("site_id", id); - siteUserRoles = this.sysUserRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - delResult = this.sysUserRoleRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - - // 删除站点主表 - this.siteRepository.delete(id); - } catch (e) { - log.error("删除站点失败: {}", e.message, e); - throw new BadRequestException("删除失败: " + (e.cause != null ? e.getCause().message : e.message)); - } - - // 清理缓存 - if (delResult > 0 && siteUserRoles != null) { - siteUserRoles.forEach(userRole => { - cached.remove("user_role_" + userRole.uid + "_" + id); - cached.remove("user_role_list_" + userRole.uid); - }); - } - cached.remove("site_cache_" + id); + // TODO: 实现del业务逻辑 + return null; } /** @@ -313,160 +87,40 @@ export class SiteServiceImplService { /** * getSiteCountByCondition */ - async getSiteCountByCondition(siteSearchParam: SiteSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - if (CommonUtils.isNotEmpty(siteSearchParam.createTime)) { - - const createTime: string[] = siteSearchParam.createTime; - const startTime: number = (createTime[0] == null) ? 0 : DateUtils.StringToTimestamp(createTime[0]); - const endTime: number = (createTime[1] == null) ? 0 : DateUtils.StringToTimestamp(createTime[1]); - if (startTime > 0 && endTime > 0) { - queryWrapper.between("create_time", startTime, endTime); - } else if (startTime > 0 && endTime == 0) { - queryWrapper.ge("create_time", startTime); - } else if (startTime == 0 && endTime > 0) { - queryWrapper.le("create_time", startTime); - } - } - - if (CommonUtils.isNotEmpty(siteSearchParam.status)) { - queryWrapper.eq("status", siteSearchParam.status); - } - - if (CommonUtils.isNotEmpty(siteSearchParam.groupId)) { - queryWrapper.eq("group_id", siteSearchParam.groupId); - } - - if (CommonUtils.isNotEmpty(siteSearchParam.appType)) { - queryWrapper.eq("app_type", siteSearchParam.appType); - } - - if (CommonUtils.isNotEmpty(siteSearchParam.expireTime)) { - - const expireTime: string[] = siteSearchParam.expireTime; - const startTime: number = (expireTime[0] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[0]); - const endTime: number = (expireTime[1] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[1]); - if (startTime > 0 && endTime > 0) { - queryWrapper.between("expire_time", startTime, endTime); - } else if (startTime > 0 && endTime == 0) { - queryWrapper.ge("expire_time", startTime); - } else if (startTime == 0 && endTime > 0) { - queryWrapper.le("expire_time", startTime); - } - } - const siteCount: number = this.siteRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }); - return siteCount.intValue(); + async getSiteCountByCondition(siteSearchParam: SiteSearchParamDto): Promise { + // TODO: 实现getSiteCountByCondition业务逻辑 + return null; } /** * getSiteAddons */ async getSiteAddons(): Promise { - return this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("status", 1) - .in("`key`", this.coreSiteService.getAddonKeysBySiteId(this.requestContext.siteId))); + // TODO: 实现getSiteAddons业务逻辑 + return null; } /** * siteAddonChange */ async siteAddonChange(site: Site, siteGroup: SiteGroup): Promise { - const event: SiteEditAfterEvent = new SiteEditAfterEvent(); - event.siteId = site.siteId; - event.addAppSign("core"); - event.name = "SiteEditAfterEvent"; - event.site = site; - event.siteGroup = siteGroup; - this.coreSiteService.clearSiteCache(site.siteId); - EventAndSubscribeOfPublisher.publishAll(event); + // TODO: 实现siteAddonChange业务逻辑 + return null; } /** * siteInit */ async siteInit(siteId: number): Promise { - const siteInfo: SiteInfoVo = info(siteId); - if (CommonUtils.isEmpty(siteInfo)) { - throw new AdminException("站点不存在"); - } - const tables: string[] = SiteInitEnum.getSiteInitTables(siteId); - return this.coreSiteService.siteInitBySiteId(siteId, tables); + // TODO: 实现siteInit业务逻辑 + return null; } /** * getSpecialMenuList */ async getSpecialMenuList(): Promise { - const authMenuList: JSONArray = this.authService.getAuthMenuTreeList(1, "all"); - - // 将菜单列表转换为Map,便于通过menu_key查找 - const authMenuMap: Record> = {}; - for (const i of number = 0; i < authMenuList.length; i++) { - const menu: Record = authMenuList.getRecord(i); - authMenuMap.put(menu.get("menu_key").toString(), menu); - } - - // 获取"addon"菜单 - const addonMenu: Record = authMenuMap.get("addon"); - if (addonMenu == null) { - return new SpecialMenuListVo("addon", []); - } - - const showList: Record = showCustomer(false); - const addonChildMenus: AddonChildMenuEnum.MenuConfig[] = AddonChildMenuEnum.all; - - const menuList: SpecialMenuListVo.MenuVo[] = []; - - // 遍历插件子菜单,构建菜单列表 - for (AddonChildMenuEnum.MenuConfig item : addonChildMenus) { - const menuKey: string = item.key; - const menuKeyList: string[] = []; - if (showList.containsKey(menuKey) && showList.get(menuKey) instanceof Map) { - const menuItem: Record = (Record) showList.get(menuKey); - if (menuItem.containsKey("list") && menuItem.get("list") instanceof List) { - List> listItems = (List>) menuItem.get("list"); - for (Record listItem : listItems) { - if (listItem.containsKey("key")) { - menuKeyList.push(listItem.get("key").toString()); - } - } - } - } - SpecialMenuListVo.const tempMenu: MenuVo = new SpecialMenuListVo.MenuVo(); - tempMenu.menuName = path.basename(item); - tempMenu.menuKey = item.key; - tempMenu.menuShortName = item.shortName; - tempMenu.parentKey = "addon"; - tempMenu.menuType = "0"; - tempMenu.icon = "iconfont iconzhuangxiu3"; - tempMenu.apiUrl = ""; - tempMenu.routerPath = ""; - tempMenu.viewPath = ""; - tempMenu.methods = ""; - tempMenu.sort = item.sort; - tempMenu.status = "1"; - tempMenu.isShow = "1"; - - const children: SpecialMenuListVo.MenuVo[] = []; - const authChildren: JSONArray = addonMenu.getJSONArray("children"); - if (authChildren != null) { - for (const j of number = 0; j < authChildren.length; j++) { - const child: Record = authChildren.getRecord(j); - if (menuKeyList.includes(child.get("menu_key").toString())) { - // 转换为MenuVo对象 - SpecialMenuListVo.const childMenu: MenuVo = convertToMenuVo(child); - children.push(childMenu); - } - } - } - - tempMenu.children = children; - menuList.push(tempMenu); - } - const result: SpecialMenuListVo = new SpecialMenuListVo(); - result.parentKey = "addon"; - result.list = menuList; - - return result; + // TODO: 实现getSpecialMenuList业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-user-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-user-service-impl.service.ts index 4aa6f4ce..c6e26c1b 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-user-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/site/impl/site-user-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteUserVoDto } from '../../../../dtos/admin/site/vo/site-user-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SiteUserParamDto } from '../../../../dtos/admin/site/param/site-user-param.dto'; @@ -12,95 +12,39 @@ import { SysUserRoleParamDto } from '../../../../dtos/admin/sys/param/sys-user-r @Injectable() export class SiteUserServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SiteUserSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ userRoleMPJQueryWrapper = new MPJQueryWrapper(); - userRoleMPJQueryWrapper.select("nsur.id, nsur.is_admin, nsu.status, nsur.site_id, nsur.role_ids, nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count") - .setAlias("nsur") - .leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix)); - if(ObjectUtil.isNotNull(searchParam.username) && CommonUtils.isNotEmpty(searchParam.username)){ - userRoleMPJQueryWrapper.like("nsu.username", searchParam.username); - } - userRoleMPJQueryWrapper.eq("nsur.site_id", this.requestContext.siteId); - userRoleMPJQueryWrapper.isNotNull("nsu.uid"); - userRoleMPJQueryWrapper.orderByDesc("nsur.is_admin"); - userRoleMPJQueryWrapper.orderByDesc("nsur.id"); - [SiteUserVo[], number] iPage = sysUserRoleMapper.selectJoinPage(new Page<>(page, limit), SiteUserVo.class, userRoleMPJQueryWrapper); - for (const siteUserVo of iPageRecords) { - const roleArray: string[] = []; - if(CommonUtils.isNotEmpty(siteUserVo.roleIds) && JSONUtil.parseArray(siteUserVo.roleIds).size()>0){ - any /* TODO: QueryWrapper */ roleQueryWrapper=new QueryWrapper(); - roleQueryWrapper.in("role_id", JSONUtil.parseArray(siteUserVo.roleIds)); - const roleList: SysRole[] = this.sysRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - for (const sysRole of roleList) { - roleArray.push(sysRole.roleName); - } - } - siteUserVo.roleArray = roleArray; - } - return PageResult.build(page, limit, iPageTotal).data = iPageRecords; + async list(pageParam: PageParamDto, searchParam: SiteUserSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * add */ - async add(siteUserParam: SiteUserParam): Promise { - if (siteUserParam.username.matches(".*[\\u4e00-\\u9fa5].*")){ - throw new AdminException("用户名不能包含中文"); - } - this.sysUserService.addSiteUser(siteUserParam, this.requestContext.siteId); + async add(siteUserParam: SiteUserParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * getInfo */ async getInfo(uid: number): Promise { - MPJany /* TODO: QueryWrapper */ userRoleMPJQueryWrapper = new MPJQueryWrapper(); - userRoleMPJQueryWrapper.select("nsur.id, nsur.is_admin, nsur.status,nsur.site_id, nsur.role_ids, nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count") - .setAlias("nsur") - .leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix)); - userRoleMPJQueryWrapper.eq("nsur.site_id", this.requestContext.siteId); - userRoleMPJQueryWrapper.eq("nsu.uid", uid); - - const siteUserVo: SiteUserVo = sysUserRoleMapper.selectJoinOne(SiteUserVo.class, userRoleMPJQueryWrapper); - return siteUserVo; + // TODO: 实现getInfo业务逻辑 + return null; } /** * edit */ - async edit(uid: number, siteUserParam: SiteUserParam): Promise { - try{ - const sysUserParam: SysUserParam = new SysUserParam(); - sysUserParam.headImg = siteUserParam.headImg; - if(CommonUtils.isNotEmpty(siteUserParam.password)){ - sysUserParam.password = siteUserParam.password; - } - sysUserParam.username = siteUserParam.username; - sysUserParam.status = siteUserParam.status; - sysUserParam.realName = siteUserParam.realName; - this.sysUserService.edit(uid, sysUserParam); - //创建用户站点管理权限 - const roleIds: string[] = siteUserParam.roleIds; - const sysUserRoleParam: SysUserRoleParam = new SysUserRoleParam(); - sysUserRoleParam.siteId = this.requestContext.siteId; - sysUserRoleParam.roleIds = JSONUtil.toJsonStr(roleIds); - sysUserRoleParam.uid = uid; - sysUserRoleParam.status = siteUserParam.status; - this.sysUserRoleService.edit(sysUserRoleParam); - }catch (e){ - throw new AdminException(e.message); - } + async edit(uid: number, siteUserParam: SiteUserParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** @@ -125,16 +69,6 @@ export class SiteUserServiceImplService { * delete */ async delete(uid: number): Promise { - const sysUserRoleList: SysUserRole[] = this.sysUserRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq(SysUserRole::getUid, uid).eq(SysUserRole::getSiteId, this.requestContext.siteId).last("limit 1")); - if (CollectionUtils.isEmpty(sysUserRoleList)){ - throw new BadRequestException("用户不存在"); - } - const sysUserRole: SysUserRole = sysUserRoleList.get(0); - if (sysUserRole.isAdmin == 1){ - throw new BadRequestException("超级管理员不允许删除"); - } - this.sysUserRepository.delete(uid); - this.loginService.clearToken(uid,null, null); - cached.remove("user_role_list_" + uid); + // TODO: 实现delete业务逻辑 } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-hour-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-hour-service-impl.service.ts index 18f22afb..9a9132c1 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-hour-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-hour-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -17,131 +17,40 @@ export class StatHourServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: StatHourSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - - [StatHour[], number] iPage = this.statHourRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: StatHourListVo[] = []; - for (const item of iPageRecords) { - const vo: StatHourListVo = new StatHourListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: StatHourSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: StatHour = this.statHourRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: StatHourInfoVo = new StatHourInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: StatHourParam): Promise { - const model: StatHour = new StatHour(); - model.siteId = addParam.siteId; - model.addon = addParam.addon; - model.field = addParam.field; - model.fieldTotal = addParam.fieldTotal; - model.year = addParam.year; - model.month = addParam.month; - model.day = addParam.day; - model.startTime = Date.now( / 1000); - model.lastTime = addParam.lastTime; - model.hour0 = addParam.hour0; - model.hour1 = addParam.hour1; - model.hour2 = addParam.hour2; - model.hour3 = addParam.hour3; - model.hour4 = addParam.hour4; - model.hour5 = addParam.hour5; - model.hour6 = addParam.hour6; - model.hour7 = addParam.hour7; - model.hour8 = addParam.hour8; - model.hour9 = addParam.hour9; - model.hour10 = addParam.hour10; - model.hour11 = addParam.hour11; - model.hour12 = addParam.hour12; - model.hour13 = addParam.hour13; - model.hour14 = addParam.hour14; - model.hour15 = addParam.hour15; - model.hour16 = addParam.hour16; - model.hour17 = addParam.hour17; - model.hour18 = addParam.hour18; - model.hour19 = addParam.hour19; - model.hour20 = addParam.hour20; - model.hour21 = addParam.hour21; - model.hour22 = addParam.hour22; - model.hour23 = addParam.hour23; - this.statHourRepository.save(model); + async add(addParam: StatHourParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: StatHourParam): Promise { - const model: StatHour = this.statHourRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - model.id = id; - model.siteId = editParam.siteId; - model.addon = editParam.addon; - model.field = editParam.field; - model.fieldTotal = editParam.fieldTotal; - model.year = editParam.year; - model.month = editParam.month; - model.day = editParam.day; - model.lastTime = editParam.lastTime; - model.hour0 = editParam.hour0; - model.hour1 = editParam.hour1; - model.hour2 = editParam.hour2; - model.hour3 = editParam.hour3; - model.hour4 = editParam.hour4; - model.hour5 = editParam.hour5; - model.hour6 = editParam.hour6; - model.hour7 = editParam.hour7; - model.hour8 = editParam.hour8; - model.hour9 = editParam.hour9; - model.hour10 = editParam.hour10; - model.hour11 = editParam.hour11; - model.hour12 = editParam.hour12; - model.hour13 = editParam.hour13; - model.hour14 = editParam.hour14; - model.hour15 = editParam.hour15; - model.hour16 = editParam.hour16; - model.hour17 = editParam.hour17; - model.hour18 = editParam.hour18; - model.hour19 = editParam.hour19; - model.hour20 = editParam.hour20; - model.hour21 = editParam.hour21; - model.hour22 = editParam.hour22; - model.hour23 = editParam.hour23; - statHourMapper.updateById(model); + async edit(id: number, editParam: StatHourParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: StatHour = this.statHourRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.statHourRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-service-impl.service.ts index e112c339..c0b9d748 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/stat/impl/stat-service-impl.service.ts @@ -22,139 +22,7 @@ export class StatServiceImplService { * getIndexData */ async getIndexData(): Promise { - const statInfoVo: StatInfoVo = new StatInfoVo(); - const createTimes: string[] = new String[2]; - createTimes[0] = DateUtils.currInitDate(); - createTimes[1] = DateUtils.currDate(); - /** - * 会员统计类 - */ - const statToDayVo: StatToDayVo = new StatToDayVo(); - //总会员数 - const totalMemberCount: number = this.coreMemberService.getMemberCount(new MemberStatSearchParam()); - statToDayVo.totalMemberCount = totalMemberCount; - - //今天注册总会员数 - const todayMemberParam: MemberStatSearchParam = new MemberStatSearchParam(); - todayMemberParam.createTime = createTimes; - statToDayVo.todayMemberCount = this.coreMemberService.getMemberCount(todayMemberParam); - //总站点数 - statToDayVo.totalSiteCount = this.siteService.getSiteCountByCondition(new SiteSearchParam()); - //今日站点数 - const todaySiteParam: SiteSearchParam = new SiteSearchParam(); - todaySiteParam.createTime = createTimes; - todaySiteParam.appType = AppTypeEnum.basename(SITE); - statToDayVo.todaySiteCount = this.siteService.getSiteCountByCondition(todaySiteParam); - //正常站点数 - const normaSiteParam: SiteSearchParam = new SiteSearchParam(); - normaSiteParam.status = 1; - normaSiteParam.appType = AppTypeEnum.basename(SITE); - statToDayVo.normaSiteCount = this.siteService.getSiteCountByCondition(normaSiteParam); - //到期站点数 - const expireSiteParam: SiteSearchParam = new SiteSearchParam(); - expireSiteParam.status = 2; - expireSiteParam.appType = AppTypeEnum.basename(SITE); - statToDayVo.expireSiteCount = this.siteService.getSiteCountByCondition(expireSiteParam); - //即将到期站点数 - const weekExpireSiteParam: SiteSearchParam = new SiteSearchParam(); - const expireTimes: string[] = new String[2]; - expireTimes[0] = DateUtils.currDate(); - expireTimes[1] = DateUtils.getDateAddDay(7); - weekExpireSiteParam.status = 1; - weekExpireSiteParam.expireTime = expireTimes; - weekExpireSiteParam.appType = AppTypeEnum.basename(SITE); - statToDayVo.weekExpireSiteCount = this.siteService.getSiteCountByCondition(weekExpireSiteParam); - - /** - * 系统数据类 - */ - const statSystemVo: StatSystemVo = new StatSystemVo(); - statSystemVo = this.systemService.info; - - statInfoVo.todayData = statToDayVo; - statInfoVo.system = statSystemVo; - - /** - * 站点、会员数据统计数据 - */ - const memberCountVo: StatDateVo = new StatDateVo(); - const siteCountVo: StatDateVo = new StatDateVo(); - const dates: string[] = []; - const memberValues: number[] = []; - const siteValues: number[] = []; - const statNum: number = 7; - for (const i of number = 0; i <= statNum; i++) { - - const itemDay: string = DateUtils.getDateAddDay(i - statNum); - const startEndDate: string[] = DateUtils.getStartEndByDay(itemDay); - - const itemMemberParam: MemberStatSearchParam = new MemberStatSearchParam(); - itemMemberParam.createTime = startEndDate; - const itemMemberCount: number = this.coreMemberService.getMemberCount(itemMemberParam); - dates.push(startEndDate[0]); - memberValues.push(itemMemberCount); - const itemSiteParam: SiteSearchParam = new SiteSearchParam(); - itemSiteParam.createTime = startEndDate; - const itemSiteCount: number = this.siteService.getSiteCountByCondition(itemSiteParam); - siteValues.push(itemSiteCount); - } - memberCountVo.date = dates; - memberCountVo.value = memberValues; - siteCountVo.date = dates; - siteCountVo.value = siteValues; - - statInfoVo.memberCountStat = memberCountVo; - statInfoVo.siteStat = siteCountVo; - - /** - * 会员性别类型统计 - */ - const memberStat: StatTypeVo = new StatTypeVo(); - const sexlist: string[] = []; - sexlist.push(SexEnum.basename(MAN)); - sexlist.push(SexEnum.basename(WOMAN)); - sexlist.push(SexEnum.basename(UNKNOWN)); - - const sexCountList: number[] = []; - const sexMemberParam: MemberStatSearchParam = new MemberStatSearchParam(); - sexMemberParam.sex = SexEnum.MAN.value; - const manSexCount: number = this.coreMemberService.getMemberCount(sexMemberParam); - sexMemberParam.sex = SexEnum.WOMAN.value; - const womanSexCount: number = this.coreMemberService.getMemberCount(sexMemberParam); - sexCountList.push(manSexCount); - sexCountList.push(womanSexCount); - sexCountList.push(totalMemberCount - manSexCount - womanSexCount); - memberStat.type = sexlist; - memberStat.value = sexCountList; - statInfoVo.memberStat = memberStat; - - /** - * 站点分组 统计 - */ - const siteGroupStat: StatTypeVo = new StatTypeVo(); - const grouplist: string[] = []; - const groupCountList: number[] = []; - - const groupList: SiteGroup[] = this.siteGroupService.all; - for (const siteGroup of groupList) { - grouplist.push(siteGroup.groupName); - const siteGroupParam: SiteSearchParam = new SiteSearchParam(); - siteGroupParam.groupId = siteGroup.groupId; - groupCountList.push(this.siteService.getSiteCountByCondition(siteGroupParam)); - } - siteGroupStat.type = grouplist; - siteGroupStat.value = groupCountList; - statInfoVo.siteGroupStat = siteGroupStat; - /** - * 所有应用安装统计 - */ - const appVo: StatAppVo = new StatAppVo(); - const totalAddonCount: number = this.coreAddonService.localAddonCount; - const installAddonCount: number = this.coreAddonService.getAddonCountByCondition(new CoreAddonSearchParam()); - appVo.appCount = totalAddonCount; - appVo.appInstalledCount = installAddonCount; - appVo.appNoInstalledCount = Math.max(totalAddonCount - installAddonCount, 0); - statInfoVo.app = appVo; - return statInfoVo; + // TODO: 实现getIndexData业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-agreement-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-agreement-service-impl.service.ts index 6c59e5fc..a3fc65ea 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-agreement-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-agreement-service-impl.service.ts @@ -2,11 +2,11 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; -import { SysAgreementListVoDto } from '../../../../dtos/admin/sys/vo/sys-agreement-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysAgreementParamDto } from '../../../../dtos/admin/sys/param/sys-agreement-param.dto'; import { SysAgreementSearchParamDto } from '../../../../dtos/admin/sys/param/sys-agreement-search-param.dto'; import { SysAgreementInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-agreement-info-vo.dto'; +import { SysAgreementListVoDto } from '../../../../dtos/admin/sys/vo/sys-agreement-list-vo.dto'; @Injectable() export class SysAgreementServiceImplService { @@ -19,27 +19,16 @@ export class SysAgreementServiceImplService { * list */ async list(): Promise { - const typeJson: Record = AgreementEnum.type; - const list: SysAgreementListVo[] = []; - - for (Map.Entry map : typeJson.entrySet()) { - const vo: SysAgreementListVo = new SysAgreementListVo(); - const sysAgreement: SysAgreement = this.coreAgreementService.getAgreement(this.requestContext.siteId, map.key); - Object.assign(vo, sysAgreement); - list.push(vo); - } - - return list; + // TODO: 实现list业务逻辑 + return []; } /** * getAgreement */ async getAgreement(key: string): Promise { - const sysAgreement: SysAgreement = this.coreAgreementService.getAgreement(this.requestContext.siteId, key); - const vo: SysAgreementInfoVo = new SysAgreementInfoVo(); - Object.assign(vo, sysAgreement); - return vo; + // TODO: 实现getAgreement业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-area-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-area-service-impl.service.ts index 9124d3a8..d835abaf 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-area-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-area-service-impl.service.ts @@ -1,8 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysAreaListVoDto } from '../../../../dtos/api/sys/vo/sys-area-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysAreaSearchParamDto } from '../../../../dtos/admin/sys/param/sys-area-search-param.dto'; @@ -12,7 +11,6 @@ import { SysMapVoDto } from '../../../../dtos/admin/sys/vo/sys-map-vo.dto'; @Injectable() export class SysAreaServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -20,81 +18,55 @@ export class SysAreaServiceImplService { * getListByPid */ async getListByPid(pid: number): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("pid", pid); - return this.sysAreaRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现getListByPid业务逻辑 + return null; } /** * getAreaTree */ async getAreaTree(level: number): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.le("level", level); - const list: SysArea[] = this.sysAreaRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const jsonArray: JSONArray = JSONUtil.parseArray(JSONUtil.toJsonStr(list)); - return TreeUtils.listToTree(jsonArray, "id", "pid", "child"); + // TODO: 实现getAreaTree业务逻辑 + return null; } /** * getAreaId */ async getAreaId(name: string, level: number): Promise { - const areaInfo: SysArea = this.sysAreaRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("level", level).last("limit 1")); - if (areaInfo != null) { - return areaInfo.id; - } - return null; + // TODO: 实现getAreaId业务逻辑 + return null; } /** * getAreaName */ async getAreaName(id: number): Promise { - const areaInfo: SysArea = this.sysAreaRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).last("limit 1")); - if (areaInfo != null) { - return path.basename(areaInfo); - } - return null; + // TODO: 实现getAreaName业务逻辑 + return null; } /** * list */ - async list(pageParam: PageParam, searchParam: SysAreaSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc(["sort", "id"]); - - [SysArea[], number] iPage = this.sysAreaRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysAreaListVo[] = []; - for (const item of iPageRecords) { - const vo: SysAreaListVo = new SysAreaListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysAreaSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * getAddressInfo */ async getAddressInfo(location: string): Promise { - const map: SysMapVo = this.coreSysConfigService.getMap(this.requestContext.siteId); - const result: string = HttpUtil.get("https://apis.map.qq.com/ws/geocoder/v1/?location="+ location +"&key=" + map.key); - if (!JSONUtil.isJson(result)) return null; - return JsonUtils.parseObject(result); + // TODO: 实现getAddressInfo业务逻辑 + return null; } /** * getAddress */ async getAddress(address: string): Promise { - const map: SysMapVo = this.coreSysConfigService.getMap(this.requestContext.siteId); - const result: string = HttpUtil.get("https://apis.map.qq.com/ws/geocoder/v1/?address="+ address +"&key=" + map.key); - if (!JSONUtil.isJson(result)) return null; - return JsonUtils.parseObject(result); + // TODO: 实现getAddress业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-attachment-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-attachment-service-impl.service.ts index 6fc55d94..6edf43ee 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-attachment-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-attachment-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysAttachmentListVoDto } from '../../../../dtos/admin/sys/vo/sys-attachment-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { AttachmentUploadVoDto } from '../../../../dtos/admin/sys/vo/attachment-upload-vo.dto'; @@ -17,153 +16,86 @@ import { SysAttachmentCategoryParamDto } from '../../../../dtos/admin/sys/param/ @Injectable() export class SysAttachmentServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SysAttachmentSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("att_id"); - if (CommonUtils.isNotEmpty(searchParam.attType)) queryWrapper.eq("att_type", searchParam.attType); - if (CommonUtils.isNotEmpty(searchParam.cateId) && searchParam.cateId > 0) queryWrapper.eq("cate_id", searchParam.cateId); - if (CommonUtils.isNotEmpty(searchParam.realName)) queryWrapper.like("real_name", searchParam.realName); - - [SysAttachment[], number] iPage = this.sysAttachmentRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysAttachmentListVo[] = []; - for (const item of iPageRecords) { - const vo: SysAttachmentListVo = new SysAttachmentListVo(); - Object.assign(vo, item); - vo.thumb = CommonUtils.thumbImageSmall(item.siteId, item.path); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysAttachmentSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * image */ - async image(param: AttachmentUploadParam): Promise { - param.siteId = this.requestContext.siteId; - param.attType = "image"; - param.dir = "attachment/image/" + param.siteId + "/" + DateFormatUtils.uploadFormat + "/"; - return this.coreUploadService.upload(param); + async image(param: AttachmentUploadParamDto): Promise { + // TODO: 实现image业务逻辑 + return null; } /** * video */ - async video(param: AttachmentUploadParam): Promise { - param.siteId = this.requestContext.siteId; - param.attType = "video"; - param.dir = "attachment/video/" + param.siteId + "/" + DateFormatUtils.uploadFormat + "/"; - return this.coreUploadService.upload(param); + async video(param: AttachmentUploadParamDto): Promise { + // TODO: 实现video业务逻辑 + return null; } /** * document */ - async document(param: AttachmentUploadParam): Promise { - param.siteId = this.requestContext.siteId; - param.isAttachment = 0; - param.attType = "document"; - param.storageType = "local"; - param.dir = "attachment/document/" + param.documentType + "/" + param.siteId + "/" + DateFormatUtils.uploadFormat + "/"; - return this.coreUploadService.upload(param); + async document(param: AttachmentUploadParamDto): Promise { + // TODO: 实现document业务逻辑 + return null; } /** * batchMoveCategory */ - async batchMoveCategory(param: SysAttachmentMoveParam): Promise { - const model: SysAttachment = new SysAttachment(); - model.cateId = param.cateId; - this.sysAttachmentRepository.save(model, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("site_id", this.requestContext.siteId) - .in("att_id", param.attIds)); + async batchMoveCategory(param: SysAttachmentMoveParamDto): Promise { + // TODO: 实现batchMoveCategory业务逻辑 + return null; } /** * del */ - async del(param: SysAttachmentDelParam): Promise { - const sysAttachmentList: SysAttachment[] = this.sysAttachmentRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })) - .in("att_id", param.attIds)); - if ((!sysAttachmentList || sysAttachmentList.length === 0)) { - throw new BadRequestException("请选择要删除的附件"); - } - for (const sysAttachment of sysAttachmentList) { - this.coreUploadService.delete(sysAttachment.siteId, sysAttachment.storageType, sysAttachment.path); - } - this.sysAttachmentRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).in("att_id", param.attIds)); + async del(param: SysAttachmentDelParamDto): Promise { + // TODO: 实现del业务逻辑 + return null; } /** * getCategoryList */ - async getCategoryList(searchParam: SysAttachmentCategorySearchParam): Promise { - const siteId: number = this.requestContext.siteId; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJany /* TODO: QueryWrapper */(); - queryWrapper.select("id,name,type").eq("site_id", siteId); - if (CommonUtils.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam)); - if (CommonUtils.isNotEmpty(searchParam.type)) queryWrapper.eq("type", searchParam.type); - - const categorys: SysAttachmentCategory[] = this.sysAttachmentCategoryRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); // 调用 selectList 方法 - - const list: SysAttachmentCategoryListVo[] = []; - for (const item of categorys) { - const vo: SysAttachmentCategoryListVo = new SysAttachmentCategoryListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + async getCategoryList(searchParam: SysAttachmentCategorySearchParamDto): Promise { + // TODO: 实现getCategoryList业务逻辑 + return null; } /** * addCategory */ - async addCategory(addParam: SysAttachmentCategoryParam): Promise { - if (CommonUtils.isEmpty(addParam.type)) throw new BadRequestException("type参数不能为空"); - - const model: SysAttachmentCategory = new SysAttachmentCategory(); - model.siteId = this.requestContext.siteId; - model.type = addParam.type; - model.name = path.basename(addParam); - this.sysAttachmentCategoryRepository.save(model); + async addCategory(addParam: SysAttachmentCategoryParamDto): Promise { + // TODO: 实现addCategory业务逻辑 + return null; } /** * editCategory */ - async editCategory(id: number, editParam: SysAttachmentCategoryParam): Promise { - const siteId: number = this.requestContext.siteId; - - UpdateWrapper updateWrapper = new UpdateWrapper(); - updateWrapper.eq("site_id", siteId).eq("id", id); - - const model: SysAttachmentCategory = new SysAttachmentCategory(); - model.name = path.basename(editParam); - - this.sysAttachmentCategoryRepository.save(model, updateWrapper); + async editCategory(id: number, editParam: SysAttachmentCategoryParamDto): Promise { + // TODO: 实现editCategory业务逻辑 + return null; } /** * delCategory */ async delCategory(id: number): Promise { - const siteId: number = this.requestContext.siteId; - - any /* TODO: QueryWrapper */ queryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("site_id", siteId) - .eq("id", id); - - this.sysAttachmentCategoryRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现delCategory业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-backup-records-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-backup-records-service-impl.service.ts index e0a98b53..33df3876 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-backup-records-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-backup-records-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils } from '@wwjBoot'; -import * as fs from 'fs'; +import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; import { SysBackupRecordsListVoDto } from '../../../../dtos/admin/sys/vo/sys-backup-records-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { BackupTaskVoDto } from '../dtos/backup-task-vo.dto'; @@ -16,249 +15,85 @@ import { BackupRestoreParamDto } from '../../../../dtos/admin/sys/param/backup-r @Injectable() export class SysBackupRecordsServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * page */ - async page(pageParam: PageParam, searchParam: SysBackupRecordsSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("create_time"); - - if (searchParam != null) { - if (searchParam.content != null) { - queryWrapper.like("content", searchParam.content); - } - } - - [SysBackupRecords[], number] iPage = this.sysBackupRecordsRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysBackupRecordsListVo[] = []; - for (const item of iPageRecords) { - const vo: SysBackupRecordsListVo = new SysBackupRecordsListVo(); - Object.assign(vo, item); - vo.createTime = DateUtils.timestampToString(item.createTime); - vo.completeTime = DateUtils.timestampToString(item.completeTime); - vo.statusName = BackupRecordStatusEnum.getNameByStatus(vo.status); - vo.backupDir = "webroot/runtime/upgrade/"+vo.backupKey+"/backup"; - list.push(vo); - } - - return PageResult.build(page, limit, iPageTotal).data = list; + async page(pageParam: PageParamDto, searchParam: SysBackupRecordsSearchParamDto): Promise { + // TODO: 实现page业务逻辑 + return []; } /** * add */ - async add(addParam: SysBackupRecordsParam): Promise { - const model: SysBackupRecords = new SysBackupRecords(); - Object.assign(model, addParam); - model.createTime = Date.now( / 1000); - this.sysBackupRecordsRepository.save(model); + async add(addParam: SysBackupRecordsParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SysBackupRecordsParam): Promise { - const model: SysBackupRecords = this.sysBackupRecordsRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })); - if (!model) throw new BadRequestException("备份记录不存在"); - - Object.assign(model, editParam); - sysBackupRecordsMapper.updateById(model); + async edit(id: number, editParam: SysBackupRecordsParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * clear */ async clear(threshold: number): Promise { - this.sysBackupRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }).in("status", STATUS_READY, STATUS_FAIL)); + // TODO: 实现clear业务逻辑 + return null; } /** * del */ - async del(delParam: SysBackupRecordsDelParam): Promise { - const queryWrapper: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */; - - if (delParam.ids instanceof ArrayList) { - const intArray: number[] = []; - ((ArrayList) delParam.ids).forEach(item => { - if (!item) throw new BadRequestException("id不能为空"); - intArray.push(item); - }); - queryWrapper.in("id", intArray); - } else { - queryWrapper.eq("id", delParam.ids); - } - - const backupRecords: SysBackupRecords[] = this.sysBackupRecordsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isNotEmpty(backupRecords)) { - for (const item of backupRecords) { - const file: string = backupDir(item.backupKey, "backup"); - if (fs.existsSync(file)) { - try { - fs.rmSync(file, { recursive: true, force: true }); - } catch (e) { - } - } - } - this.sysBackupRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - } + async del(delParam: SysBackupRecordsDelParamDto): Promise { + // TODO: 实现del业务逻辑 + return null; } /** * restore */ - async restore(restoreParam: BackupRestoreParam): Promise { - const record: SysBackupRecords = checkDir(restoreParam); - - const vo: BackupTaskVo = getRestoreTask(); - if (vo == null) { - vo = new BackupTaskVo(); - LinkedHashMap steps = new LinkedHashMap(); - steps.put("startRestore", new BackupTaskVo.Step("startRestore", "开始恢复")); - steps.put("backupCode", new BackupTaskVo.Step("backupCode", "备份源码")); - steps.put("backupSql", new BackupTaskVo.Step("backupSql", "备份数据库")); - steps.put("restoreBackupComplete", new BackupTaskVo.Step("restoreBackupComplete", "备份完成")); - steps.put("restoreCode", new BackupTaskVo.Step("restoreCode", "恢复源码备份")); - steps.put("restoreSql", new BackupTaskVo.Step("restoreSql", "恢复数据库备份")); - steps.put("restoreComplete", new BackupTaskVo.Step("restoreComplete", "恢复完成")); - vo.key = RandomUtil.randomString(10); - vo.steps = steps; - vo.step = "startRestore"; - vo.executed.add("startRestore"); - vo.content = "开始恢复"; - vo.task = ""; - - const addParam: SysBackupRecordsParam = new SysBackupRecordsParam(); - addParam.backupKey = vo.key; - addParam.status = BackupRecordStatusEnum.STATUS_READY.status; - addParam.content = "自动备份"; - addParam.version = this.appConfig.version; - add(addParam); - } - vo.backupRecord = record; - if (!vo.task === "") return vo; - - const steps: string[] = vo.steps.keySet().stream(); - const step: string = steps.indexOf(vo.step) < steps.length - 1 ? steps.get(steps.indexOf(vo.step) + 1) : ""; - - if ((step && step.length > 0)) { - if (!vo.executed.includes(step)) { - vo.executed.add(step); - } - try { - const param: Record = null; - param = (Record) dynamicMethodCall(step, vo); - if (param != null) { - vo.params = param; - } else { - vo.step = step; - vo.params = null; - } - setBackupRestoreTaskCache(vo); - } catch (e) { - vo.step = step; - vo.task = "fail"; - vo.content = "备份恢复失败,稍后请手动恢复,备份文件路径:webroot/runtime/upgrade/"+ record.backupKey +"/backup,失败原因:" + e.message; - setBackupRestoreTaskCache(vo); - // 删除备份记录 - this.sysBackupRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }))); - console.error(e); - console.log("恢复异常."); - - this.sysUpgradeRecordsService.clearRestoreTaskCache(5); - } - } - return vo; + async restore(restoreParam: BackupRestoreParamDto): Promise { + // TODO: 实现restore业务逻辑 + return null; } /** * backup */ async backup(): Promise { - const vo: BackupTaskVo = getBackupTask(); - if (vo == null) { - vo = new BackupTaskVo(); - vo.key = RandomUtil.randomString(10); - vo.step = "startBackup"; - vo.executed.add("startBackup"); - vo.content = "开始备份"; - - const addParam: SysBackupRecordsParam = new SysBackupRecordsParam(); - addParam.backupKey = vo.key; - addParam.status = BackupRecordStatusEnum.STATUS_READY.status; - addParam.content = "手动备份"; - addParam.version = this.appConfig.version; - add(addParam); - } - - const steps: string[] = vo.steps.keySet().stream(); - const step: string = steps.indexOf(vo.step) < steps.length - 1 ? steps.get(steps.indexOf(vo.step) + 1) : ""; - - if ((step && step.length > 0)) { - if (!vo.executed.includes(step)) { - vo.executed.add(step); - } - try { - const param: Record = null; - param = (Record) dynamicMethodCall(step, vo); - if (param != null) { - vo.params = param; - } else { - vo.step = step; - vo.params = null; - } - setBackupTaskCache(vo); - } catch (e) { - vo.step = step; - vo.task = "fail"; - vo.content = "备份失败,稍后请重新手动备份,失败原因:" + e.message; - setBackupTaskCache(vo); - // 删除备份记录 - this.sysBackupRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }))); - console.error(e); - console.log("备份异常."); - - this.sysUpgradeRecordsService.clearBackupTaskCache(5); - } - } - return vo; + // TODO: 实现backup业务逻辑 + return null; } /** * backupComplete */ - async backupComplete(vo: BackupTaskVo): Promise { - const backupRecord: SysBackupRecords = new SysBackupRecords(); - backupRecord.status = UpgradeRecordStatusEnum.STATUS_COMPLETE.status; - backupRecord.completeTime = Date.now( / 1000); - this.sysBackupRecordsRepository.save(backupRecord, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("backup_key", vo.key)); - - vo.task = "end"; - - this.sysUpgradeRecordsService.clearBackupTaskCache(5); + async backupComplete(vo: BackupTaskVoDto): Promise { + // TODO: 实现backupComplete业务逻辑 + return null; } /** * restoreBackupComplete */ - async restoreBackupComplete(vo: BackupTaskVo): Promise { - const backupRecord: SysBackupRecords = new SysBackupRecords(); - backupRecord.status = UpgradeRecordStatusEnum.STATUS_COMPLETE.status; - backupRecord.completeTime = Date.now( / 1000); - this.sysBackupRecordsRepository.save(backupRecord, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("backup_key", vo.key)); + async restoreBackupComplete(vo: BackupTaskVoDto): Promise { + // TODO: 实现restoreBackupComplete业务逻辑 + return null; } /** * restoreComplete */ - async restoreComplete(vo: BackupTaskVo): Promise { + async restoreComplete(vo: BackupTaskVoDto): Promise { vo.task = "end"; this.sysUpgradeRecordsService.clearRestoreTaskCache(5); } @@ -266,7 +101,7 @@ export class SysBackupRecordsServiceImplService { /** * setBackupTaskCache */ - async setBackupTaskCache(vo: BackupTaskVo): Promise { + async setBackupTaskCache(vo: BackupTaskVoDto): Promise { const cache: Cached = CacheFactory.cacheOperator; cache.put("backup_task", JsonUtils.parseObject(vo).toString(), 1800); } @@ -274,7 +109,7 @@ export class SysBackupRecordsServiceImplService { /** * setBackupRestoreTaskCache */ - async setBackupRestoreTaskCache(vo: BackupTaskVo): Promise { + async setBackupRestoreTaskCache(vo: BackupTaskVoDto): Promise { const cache: Cached = CacheFactory.cacheOperator; cache.put("backup_restore_task", JsonUtils.parseObject(vo).toString(), 1800); } @@ -283,149 +118,55 @@ export class SysBackupRecordsServiceImplService { * clearBackupTaskCache */ async clearBackupTaskCache(delayed: number): Promise { - if (delayed > 0) { - try { - Thread.sleep(delayed * 1000); - } catch (e) { - } - } - const cache: Cached = CacheFactory.cacheOperator; - cache.remove("backup_task"); + // TODO: 实现clearBackupTaskCache业务逻辑 + return null; } /** * clearRestoreTaskCache */ async clearRestoreTaskCache(delayed: number): Promise { - if (delayed > 0) { - try { - Thread.sleep(delayed * 1000); - } catch (e) { - } - } - const cache: Cached = CacheFactory.cacheOperator; - cache.remove("backup_restore_task"); + // TODO: 实现clearRestoreTaskCache业务逻辑 + return null; } /** * getBackupTask */ async getBackupTask(): Promise { - const cache: Cached = CacheFactory.cacheOperator; - const data: Object = cache.get("backup_task"); - if (data == null) return null; - return Object.assign(new BackupTaskVo(), JsonUtils.parseObject(data)) /* TODO: 检查BackupTaskVo构造函数 */; + // TODO: 实现getBackupTask业务逻辑 + return null; } /** * getRestoreTask */ async getRestoreTask(): Promise { - const cache: Cached = CacheFactory.cacheOperator; - const data: Object = cache.get("backup_restore_task"); - if (data == null) return null; - return Object.assign(new BackupTaskVo(), JsonUtils.parseObject(data)) /* TODO: 检查BackupTaskVo构造函数 */; + // TODO: 实现getRestoreTask业务逻辑 + return null; } /** * checkDir */ - async checkDir(param: BackupRestoreParam): Promise { - const record: SysBackupRecords = sysBackupRecordsMapper.selectById(param.id); - if (!record) throw new BadRequestException("备份记录不存在"); - if (!record.status === BackupRecordStatusEnum.STATUS_COMPLETE.status) throw new Error("备份记录未完成"); - - const code: string = this.appConfig.webRootDownRuntime + "upgrade/"+ record.getBackupKey( + "/backup/code"); - if (!fs.existsSync(code)) throw new Error("未找到备份的源码文件"); - - const sql: string = this.appConfig.webRootDownRuntime + "upgrade/"+ record.getBackupKey( + "/backup/sql"); - if (!fs.existsSync(sql)) throw new Error("未找到备份的数据库文件"); - - return record; + async checkDir(param: BackupRestoreParamDto): Promise { + // TODO: 实现checkDir业务逻辑 + return null; } /** * checkPermission */ async checkPermission(): Promise { - const upgradeCheck: boolean = true; - - const checkResult: Record = new Record(); - const rootPath: string = ""; - const runtimePath: string = ""; - const readableDir: JSONArray = new JSONArray(); - const writeDir: JSONArray = new JSONArray(); - - if (this.appConfig.envType === "dev") { - rootPath = this.appConfig.projectRoot + "/"; - runtimePath = rootPath; - - readableDir.put(new Record().set("dir", rootPath + "niucloud-addon").set("status", true)); - writeDir.put(new Record().set("dir", rootPath + "niucloud-addon").set("status", true)); - readableDir.put(new Record().set("dir", rootPath + "webroot").set("status", true)); - writeDir.put(new Record().set("dir", rootPath + "webroot").set("status", true)); - } else { - rootPath = this.appConfig.webRoot + "/"; - runtimePath = rootPath + "runtime/"; - - readableDir.put(new Record().set("dir", runtimePath).set("status", true)); - writeDir.put(new Record().set("dir", runtimePath).set("status", true)); - } - - readableDir.put(new Record().set("dir", runtimePath + "admin").set("status", true)); - readableDir.put(new Record().set("dir", runtimePath + "uni-app").set("status", true)); - readableDir.put(new Record().set("dir", runtimePath + "web").set("status", true)); - - writeDir.put(new Record().set("dir", runtimePath + "admin").set("status", true)); - writeDir.put(new Record().set("dir", runtimePath + "uni-app").set("status", true)); - writeDir.put(new Record().set("dir", runtimePath + "web").set("status", true)); - - for (const i of number = 0; i < readableDir.length; i++) { - const dir: Record = readableDir.getRecord(i); - dir.set("status", dir.getStr("dir").canRead()); - dir.set("dir", dir.getStr("dir").replace(rootPath, "")); - readableDir.set(i, dir); - if (!dir.getBool("status")) upgradeCheck = false; - } - - for (const i of number = 0; i < writeDir.length; i++) { - const dir: Record = writeDir.getRecord(i); - dir.set("status", dir.getStr("dir").canWrite()); - dir.set("dir", dir.getStr("dir").replace(rootPath, "")); - writeDir.set(i, dir); - if (!dir.getBool("status")) upgradeCheck = false; - } - - checkResult.put("is_pass", upgradeCheck); - checkResult.put("dir", new Record().set("is_readable", readableDir).set("is_write", writeDir)); - return checkResult; + // TODO: 实现checkPermission业务逻辑 + return null; } /** * dynamicMethodCall */ async dynamicMethodCall(methodName: string, args: ): Promise { - try { - // 获取当前类的 Class 对象 - Class clazz = this.class; - // 获取方法对象 - java.lang.reflect.const method: Method = clazz.getMethod(methodName, extractParameterTypes(args)); - // 调用方法 - console.log("dynamicMethodCall method:" + methodName); - const result: Object = method.invoke(this, args); - if (method.returnType == void.class) { - return null; - } else { - return result; - } - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - if (e instanceof InvocationTargetException) { - ((InvocationTargetException) e).console.error(cause); - throw new BadRequestException(((InvocationTargetException) e).getCause().message); - } else { - console.error(e); - } - return null; - } + // TODO: 实现dynamicMethodCall业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-config-service-impl.service.ts index 60790f24..a2fe6a31 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-config-service-impl.service.ts @@ -3,7 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; -import { SceneDomainVoDto } from '../../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../../entities/scene-domain-vo.entity'; import { SysWebsiteParamDto } from '../../../../dtos/admin/sys/param/sys-website-param.dto'; import { SysCopyRightParamDto } from '../../../../dtos/admin/sys/param/sys-copy-right-param.dto'; import { SysMapParamDto } from '../../../../dtos/admin/sys/param/sys-map-param.dto'; @@ -27,7 +27,7 @@ export class SysConfigServiceImplService { /** * setWebSite */ - async setWebSite(configParam: SysWebsiteParam): Promise { + async setWebSite(configParam: SysWebsiteParamDto): Promise { this.coreSysConfigService.webSite = this.requestContext.siteId, configParam; } @@ -48,7 +48,7 @@ export class SysConfigServiceImplService { /** * setCopyRight */ - async setCopyRight(configParam: SysCopyRightParam): Promise { + async setCopyRight(configParam: SysCopyRightParamDto): Promise { this.coreSysConfigService.copyRight = this.requestContext.siteId, configParam; } @@ -62,7 +62,7 @@ export class SysConfigServiceImplService { /** * setMap */ - async setMap(configParam: SysMapParam): Promise { + async setMap(configParam: SysMapParamDto): Promise { this.coreSysConfigService.map = this.requestContext.siteId, configParam; } @@ -76,7 +76,7 @@ export class SysConfigServiceImplService { /** * setDeveloperToken */ - async setDeveloperToken(configParam: SysDeveloperTokenParam): Promise { + async setDeveloperToken(configParam: SysDeveloperTokenParamDto): Promise { this.coreSysConfigService.developerToken = configParam; } @@ -118,7 +118,7 @@ export class SysConfigServiceImplService { /** * setLogin */ - async setLogin(configParam: SysLoginConfigParam): Promise { + async setLogin(configParam: SysLoginConfigParamDto): Promise { this.coreSysConfigService.login = this.requestContext.siteId, configParam; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-export-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-export-service-impl.service.ts index 73e1c821..80cf58f6 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-export-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-export-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysExportListVoDto } from '../../../../dtos/admin/sys/vo/sys-export-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysExportSearchParamDto } from '../../../../dtos/admin/sys/param/sys-export-search-param.dto'; @@ -10,101 +10,38 @@ import { Object>Dto } from '../dtos/object>.dto'; @Injectable() export class SysExportServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SysExportSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - queryWrapper.like("export_key", searchParam.exportKey); - - if (CommonUtils.isNotEmpty(searchParam.exportKey)) { - queryWrapper.eq("export_status", searchParam.exportStatus); - } - - if (CommonUtils.isNotEmpty(searchParam.createTime)) { - const createTime: string[] = searchParam.createTime; - const startTime: number = (createTime[0] == null) ? 0 : DateUtils.StringToTimestamp(createTime[0]); - const endTime: number = (createTime[1] == null) ? 0 : DateUtils.StringToTimestamp(createTime[1]); - if (startTime > 0 && endTime > 0) { - queryWrapper.between("create_time", startTime, endTime); - } else if (startTime > 0 && endTime == 0) { - queryWrapper.ge("create_time", startTime); - } else if (startTime == 0 && endTime > 0) { - queryWrapper.le("create_time", startTime); - } - } - - const results: JSONArray = JsonModuleLoader.build().mergeResultSet("export/ExportType.json"); - - [SysExport[], number] iPage = this.sysExportRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - [SysExportListVo[], number] converted = iPage.convert(export => { - const vo: SysExportListVo = new SysExportListVo(); - Object.assign(vo, export); - vo.createTime = DateUtils.timestampToString(export.createTime); - vo.exportStatusName = ExportEnum.getNameByCode(export.exportStatus); - results - .map(JSONUtil::parseObj) - .filter(o => o.containsKey(export.exportKey)) - .findFirst() - .map(o => o.getRecord(export.exportKey)) - .ifPresent(o => vo.exportKeyName = o.getStr("name")); - - return vo; - }); - - return PageResult.build(converted); + async list(pageParam: PageParamDto, searchParam: SysExportSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * del */ async del(id: number): Promise { - const model: SysExport = this.sysExportRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.sysExportRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * checkExportData */ async checkExportData(type: string, param: Map): Promise { - const pageParam: PageParam = new PageParam(); - pageParam.page = number.parseInt(whereMap.getOrDefault("page", 0.toString())); - pageParam.limit = number.parseInt(whereMap.getOrDefault("limit", 0.toString())); - const jsonArray: JSONArray = this.coreExportService.getExportData(this.requestContext.siteId, type, JsonUtils.parseObject(whereMap), pageParam); - return (jsonArray && jsonArray.length > 0); + // TODO: 实现checkExportData业务逻辑 + return null; } /** * exportData */ async exportData(type: string, param: Map): Promise { - const siteId: number = this.requestContext.siteId; - const pageParam: PageParam = new PageParam(); - pageParam.page = whereMap.getOrDefault("page", 0); - pageParam.limit = whereMap.getOrDefault("limit", 0); - - const dataColumn: JSONArray = this.coreExportService.getExportDataColumn(type); - const dataArray: JSONArray = this.coreExportService.getExportData(siteId, type, JsonUtils.parseObject(whereMap), pageParam); - - const export: SysExport = new SysExport(); - export.siteId = this.requestContext.siteId; - export.exportKey = type; - export.exportNum = CollectionUtil.size(dataArray); - export.createTime = Date.now( / 1000); - this.coreExportService.push(export); - - this.coreExportService.export(siteId, export.id, type, dataColumn, dataArray); + // TODO: 实现exportData业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-menu-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-menu-service-impl.service.ts index 85ab0e29..518d6692 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-menu-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-menu-service-impl.service.ts @@ -1,14 +1,13 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysMenuParamDto } from '../../../../dtos/admin/sys/param/sys-menu-param.dto'; import { SysMenuInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-menu-info-vo.dto'; @Injectable() export class SysMenuServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -16,305 +15,103 @@ export class SysMenuServiceImplService { * info */ async info(id: number): Promise { - const model: SysMenu = this.sysMenuRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: SysMenuInfoVo = new SysMenuInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * get */ async get(appType: string, menuKey: string): Promise { - any /* TODO: QueryWrapper */ queryWrapper=new QueryWrapper(); - queryWrapper.eq("app_type", appType); - queryWrapper.eq("menu_key", menuKey); - const sysMenu: SysMenu = this.sysMenuRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (!sysMenu) throw new BadRequestException("菜单数据不存在"); - const sysMenuInfoVo: SysMenuInfoVo = new SysMenuInfoVo(); - BeanUtil.copyProperties(sysMenu, sysMenuInfoVo); - return sysMenuInfoVo; + // TODO: 实现get业务逻辑 + return null; } /** * add */ - async add(addParam: SysMenuParam): Promise { - const sysMenu: SysMenu = this.find(addParam.menuKey, addParam.appType); - if(ObjectUtil.isNotNull(sysMenu)){ - throw new AdminException("validate_menu.exit_menu_key"); - } - - const model: SysMenu = new SysMenu(); - BeanUtil.copyProperties(addParam, model); - model.createTime = DateUtils.currTime(); - model.source = MenuSourceEnum.CREATE.code; - this.sysMenuRepository.save(model); - /** 清理缓存 */ - cached.tag(cacheTagName).clear(); + async add(addParam: SysMenuParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(appType: string, menuKey: string, editParam: SysMenuParam): Promise { - const model: SysMenu = this.sysMenuRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("menu_key", menuKey) - .last("limit 1")); - if (!model) throw new BadRequestException("数据不存在!"); - BeanUtil.copyProperties(editParam, model); - sysMenuMapper.updateById(model); - /** 清理缓存 */ - cached.tag(cacheTagName).clear(); + async edit(appType: string, menuKey: string, editParam: SysMenuParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(appType: string, menuKey: string): Promise { - const keyCount: number = this.sysMenuRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("app_type", appType)); - if(keyCount>0){ - throw new AdminException("MENU_NOT_ALLOW_DELETE"); - } - this.sysMenuRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("menu_key", menuKey)); - /** 清理缓存 */ - cached.tag(cacheTagName).clear(); + // TODO: 实现del业务逻辑 + return null; } /** * menuTree */ async menuTree(): Promise { - return cached.rememberObject(useCache, cacheTagName, ["menuTree"], uniqueKey => { - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("app_type", "site"); - queryWrapper.orderByDesc(["sort", "id"]); - const sysMenuList: SysMenu[] = this.sysMenuRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList)); - return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children"); - }); + // TODO: 实现menuTree业务逻辑 + return null; } /** * getMenuListByCondition */ async getMenuListByCondition(appType: string, siteId: number, status: number, isButton: number, menuKeys: List, addon: string): Promise { - return cached.remember(useCache, cacheTagName, ["getMenuListByCondition", appType, siteId, status, isButton, menuKeys, addon], uniqueKey => { - const addonList: string[] = this.coreSiteService.getAddonKeysBySiteId(siteId); - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - if (CommonUtils.isNotEmpty(appType)) { - queryWrapper.eq("app_type", appType); - } - if (addonList.length > 0) { - addonList.push(""); - queryWrapper.in("addon", addonList); - } else { - queryWrapper.in("addon", ""); - } - if (status != 100) { - queryWrapper.eq("status", status); - } - if (menuKeys.length > 0) { - queryWrapper.in("menu_key", menuKeys); - } - if (isButton == 0) { - queryWrapper.ne("menu_type", 2); - } - - //排除菜单 后期处理 - - const menuList: SysMenu[] = this.sysMenuRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - return menuList; - }); + // TODO: 实现getMenuListByCondition业务逻辑 + return null; } /** * getMenuListByKeys */ async getMenuListByKeys(appType: string, siteId: number, isTree: number, isButton: number, menuKeys: List, addon: string): Promise { - const menuKeysVal: string = String.join("_", menuKeys); - const menuKeysValMD5: string = SecureUtil.md5(menuKeysVal); - const menuCatch: string = "menu" + menuKeysValMD5 + isTree.toString() + addon + siteId; - const outterMenuList: SysMenu[] = cached.cache(useCache, cacheTagName, menuCatch, uniqueKey => { - //通过站点id获取支持的应用插件 - const addonList: string[] = this.coreSiteService.getAddonKeysBySiteId(siteId); - - //组装查询条件 - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - if (menuKeys.length > 0) { - queryWrapper.in("menu_key", menuKeys); - } - const paichuList: SysMenu[] = null; - if (addon !== "all"){ - queryWrapper.eq("addon",addon); - - const jsonModuleLoader: JsonModuleLoader = new JsonModuleLoader(); - const jsonObject: Record = jsonModuleLoader.getResultElement(addon, "menu/site.json"); - const delJsonInfo: JSONArray = jsonObject.getJSONArray("delete"); - paichuList = JSONUtil.toList(delJsonInfo,SysMenu.class); - }else{ - queryWrapper.in("addon", addonList); - for (const i of number = 0; i = jsonModuleLoader.getResultElement(addonList.get(i), "menu/site.json"); - const delJsonInfo: JSONArray = jsonObject.getJSONArray("delete"); - paichuList = JSONUtil.toList(delJsonInfo,SysMenu.class); - } - } - if (CommonUtils.isNotEmpty(appType)) { - queryWrapper.eq("app_type", appType); - } - - //排除菜单 - if(ObjectUtil.isNotNull(paichuList) && paichuList.length>0){ - const paichuArr: string[] = []; - for (const i of number = 0; i { - //站点id - const siteId: number = this.requestContext.siteId; - - // 缓存Key值计算参数 - const key: string = "menuList_"+appType+"_"+status + siteId.toString(); - - const outterMenuList: SysMenu[] = cached.cache(useCache, cacheTagName, key, uniqueKey => { - const menuList: SysMenu[] = []; - try { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - if (CommonUtils.isNotEmpty(appType)) { - queryWrapper.eq("app_type", appType); - } - - //站点相关插件 - if (!RequestUtils.defaultSiteId() === siteId) { - const addonList: string[] = this.coreSiteService.getAddonKeysBySiteId(siteId); - - if (addonList.length > 0) { - addonList.push(""); - queryWrapper.in("addon", addonList); - } - } - - if (status != 100) { - queryWrapper.eq("status", status); - } - //排除菜单 - menuList = this.sysMenuRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - } catch (e) { - throw new BaseException("查询菜单错误"); - } - return menuList; - }); - - const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(outterMenuList)); - return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children"); + // TODO: 实现getAllMenuList业务逻辑 + return null; } /** * find */ async find(menuKey: string, appType: string): Promise { - any /* TODO: QueryWrapper */ queryWrapper= new QueryWrapper(); - if(ObjectUtil.isNotNull(menuKey) && CommonUtils.isNotEmpty(menuKey)){ - queryWrapper.eq("menu_key", menuKey); - } - if(ObjectUtil.isNotNull(appType) && CommonUtils.isNotEmpty(appType)){ - queryWrapper.eq("app_type", appType); - } - const sysMenu: SysMenu = this.sysMenuRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - return sysMenu; + // TODO: 实现find业务逻辑 + return null; } /** * getMenuByTypeDir */ async getMenuByTypeDir(addon: string): Promise { - const outterMenuList: SysMenu[] = cached.remember(useCache, cacheTagName, ["getMenuByTypeDir", addon], uniqueKey => { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("app_type", "site"); - queryWrapper.eq("menu_type", "0"); - queryWrapper.eq("addon", addon === "system"? "": addon); - queryWrapper.orderByDesc("sort"); - return this.sysMenuRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - }); - - //暂无多语言设计 - const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(outterMenuList)); - return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children"); + // TODO: 实现getMenuByTypeDir业务逻辑 + return null; } /** * getAddonMenu */ async getAddonMenu(appKey: string, status: string, isTree: number, isButton: number): Promise { - return cached.rememberObject(useCache, cacheTagName, ["getAddonMenu", appKey, status, isTree.toString(], isButton.toString()), uniqueKey => { - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("app_type", "site"); - queryWrapper.eq("addon", appKey); - queryWrapper.orderByDesc(["sort", "id"]); - if (status !== "all") { - queryWrapper.eq("status", status); - } - if (isButton == 0) { - queryWrapper.in("menu_type", new number[]{0, 1}); - } - const sysMenuList: SysMenu[] = this.sysMenuRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList)); - if (isTree == 0) { - return jsonArray; - } - return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children"); - }); + // TODO: 实现getAddonMenu业务逻辑 + return null; } /** * getSystemMenu */ async getSystemMenu(status: string, isTree: number, isButton: number): Promise { - return cached.rememberObject(useCache, cacheTagName, ["getSystemMenu", status, isTree.toString(], isButton.toString()), uniqueKey => { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("app_type", "site"); - queryWrapper.eq("addon", ""); - queryWrapper.orderByDesc(["sort", "id"]); - if (status !== "all") { - queryWrapper.eq("status", status); - } - if (isButton == 0) { - queryWrapper.in("menu_type", new number[]{0, 1}); - } - const sysMenuList: SysMenu[] = this.sysMenuRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList)); - if (isTree == 0) { - return jsonArray; - } - return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children"); - }); + // TODO: 实现getSystemMenu业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-log-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-log-service-impl.service.ts index 17fa434e..5c26a2d4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-log-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-log-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysNoticeLogListVoDto } from '../../../../dtos/admin/sys/vo/sys-notice-log-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { NoticeEnumListVoDto } from '../../../../dtos/notice/vo/notice-enum-list-vo.dto'; @@ -12,49 +12,22 @@ import { SysNoticeLogInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-notice- @Injectable() export class SysNoticeLogServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SysNoticeLogSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - if (CommonUtils.isNotEmpty(searchParam.receiver)) queryWrapper.eq("receiver", searchParam.receiver); - if (CommonUtils.isNotEmpty(searchParam.key)) queryWrapper.eq("`key`", searchParam.key); - if (CommonUtils.isNotEmpty(searchParam.createTime)) QueryMapperUtils.buildByTime(queryWrapper, "create_time", searchParam.createTime); - queryWrapper.orderByDesc("id"); - - const noticeEnum: Record = NoticeEnum.notice; - - [SysNoticeLog[], number] iPage = this.sysNoticeLogRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysNoticeLogListVo[] = []; - for (const item of iPageRecords) { - const vo: SysNoticeLogListVo = new SysNoticeLogListVo(); - Object.assign(vo, item); - vo.name = noticeEnum.get(item.key != null ? noticeEnum.get(item.getKey()).name : ""); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysNoticeLogSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysNoticeLog = this.sysNoticeLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: SysNoticeLogInfoVo = new SysNoticeLogInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-service-impl.service.ts index fd0ddf1b..877333e0 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -17,89 +17,40 @@ export class SysNoticeServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: SysNoticeSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - - [SysNotice[], number] iPage = this.sysNoticeRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysNoticeListVo[] = []; - for (const item of iPageRecords) { - const vo: SysNoticeListVo = new SysNoticeListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysNoticeSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysNotice = this.sysNoticeRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: SysNoticeInfoVo = new SysNoticeInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SysNoticeParam): Promise { - const model: SysNotice = new SysNotice(); - model.siteId = addParam.siteId; - model.key = addParam.key; - model.smsContent = addParam.smsContent; - model.isWechat = addParam.isWechat; - model.isWeapp = addParam.isWeapp; - model.isSms = addParam.isSms; - model.wechatTemplateId = addParam.wechatTemplateId; - model.weappTemplateId = addParam.weappTemplateId; - model.smsId = addParam.smsId; - model.createTime = Date.now( / 1000); - model.wechatFirst = addParam.wechatFirst; - model.wechatRemark = addParam.wechatRemark; - this.sysNoticeRepository.save(model); + async add(addParam: SysNoticeParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SysNoticeParam): Promise { - const model: SysNotice = this.sysNoticeRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - model.id = id; - model.siteId = editParam.siteId; - model.key = editParam.key; - model.smsContent = editParam.smsContent; - model.isWechat = editParam.isWechat; - model.isWeapp = editParam.isWeapp; - model.isSms = editParam.isSms; - model.wechatTemplateId = editParam.wechatTemplateId; - model.weappTemplateId = editParam.weappTemplateId; - model.smsId = editParam.smsId; - model.wechatFirst = editParam.wechatFirst; - model.wechatRemark = editParam.wechatRemark; - sysNoticeMapper.updateById(model); + async edit(id: number, editParam: SysNoticeParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: SysNotice = this.sysNoticeRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.sysNoticeRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-sms-log-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-sms-log-service-impl.service.ts index 0483c3ca..5cce9f6c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-sms-log-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-notice-sms-log-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysNoticeSmsLogListVoDto } from '../../../../dtos/admin/sys/vo/sys-notice-sms-log-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { NoticeEnumListVoDto } from '../../../../dtos/notice/vo/notice-enum-list-vo.dto'; @@ -12,52 +12,22 @@ import { SysNoticeSmsLogInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-noti @Injectable() export class SysNoticeSmsLogServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SysNoticeSmsLogSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - if (CommonUtils.isNotEmpty(searchParam.key)) queryWrapper.eq("`key`", searchParam.key); - if (CommonUtils.isNotEmpty(searchParam.smsType)) queryWrapper.eq("sms_type", searchParam.smsType); - if (CommonUtils.isNotEmpty(searchParam.mobile)) queryWrapper.eq("mobile", searchParam.mobile); - if (CommonUtils.isNotEmpty(searchParam.createTime)) QueryMapperUtils.buildByTime(queryWrapper,"create_time" ,searchParam.createTime); - queryWrapper.orderByDesc("id"); - - const smsTypeEnum: Record = SmsTypeEnum.type; - const notice: Record = NoticeEnum.notice; - - [SysNoticeSmsLog[], number] iPage = this.sysNoticeSmsLogRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysNoticeSmsLogListVo[] = []; - for (const item of iPageRecords) { - const vo: SysNoticeSmsLogListVo = new SysNoticeSmsLogListVo(); - Object.assign(vo, item); - vo.smsTypeName = smsTypeEnum.getByPath(item.smsType + ".name", String.class); - vo.name = ObjectUtil.defaultIfNull(notice.get(item.getKey().name, "")); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysNoticeSmsLogSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysNoticeSmsLog = this.sysNoticeSmsLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .last("limit 1")); - if (model == null) return null; - - const vo: SysNoticeSmsLogInfoVo = new SysNoticeSmsLogInfoVo(); - Object.assign(vo, model); - - return vo; + // TODO: 实现info业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-poster-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-poster-service-impl.service.ts index 919ee714..8c9ef1df 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-poster-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-poster-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysPosterListVoDto } from '../../../../dtos/admin/sys/vo/sys-poster-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysPosterInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-poster-info-vo.dto'; @@ -17,162 +16,69 @@ import { PreviewPosterParamDto } from '../../../../dtos/admin/sys/param/preview- @Injectable() export class SysPosterServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * page */ - async page(pageParam: PageParam, searchParam: SysPosterSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - if (CommonUtils.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam)); - if (CommonUtils.isNotEmpty(searchParam.type)) queryWrapper.eq("type", searchParam.type); - - [SysPoster[], number] iPage = this.sysPosterRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysPosterListVo[] = []; - for (const item of iPageRecords) { - const vo: SysPosterListVo = new SysPosterListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async page(pageParam: PageParamDto, searchParam: SysPosterSearchParamDto): Promise { + // TODO: 实现page业务逻辑 + return []; } /** * list */ - async list(searchParam: SysPosterSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - if (CommonUtils.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam)); - if (CommonUtils.isNotEmpty(searchParam.type)) queryWrapper.eq("type", searchParam.type); - - const records: SysPoster[] = this.sysPosterRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const list: SysPosterListVo[] = []; - for (const item of records) { - const vo: SysPosterListVo = new SysPosterListVo(); - Object.assign(vo, item); - list.push(vo); - } - return list; + async list(searchParam: SysPosterSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("海报不存在"); - - const vo: SysPosterInfoVo = new SysPosterInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SysPosterParam): Promise { - if (addParam.isDefault === 1) { - const update: UpdateWrapper = new UpdateWrapper(); - update.sql = "is_default = 0"; - update.eq("type", addParam.type); - update.eq("is_default", 1); - update.eq("site_id", this.requestContext.siteId); - this.sysPosterRepository.save(null, update); - } - const model: SysPoster = new SysPoster(); - Object.assign(model, addParam); - model.siteId = this.requestContext.siteId; - model.createTime = Date.now( / 1000); - this.sysPosterRepository.save(model); + async add(addParam: SysPosterParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SysPosterParam): Promise { - const model: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("海报不存在!"); - - if (editParam.isDefault === 1) { - const update: UpdateWrapper = new UpdateWrapper(); - update.sql = "is_default = 0"; - update.eq("type", editParam.type); - update.eq("is_default", 1); - update.eq("site_id", this.requestContext.siteId); - this.sysPosterRepository.save(null, update); - } - - Object.assign(model, editParam); - model.updateTime = Date.now( / 1000); - sysPosterMapper.updateById(model); + async edit(id: number, editParam: SysPosterParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("海报不存在!"); - - this.sysPosterRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * init */ - async init(param: SysPosterInitParam): Promise { - const vo: SysPosterInitVo = new SysPosterInitVo(); - Object.assign(vo, param); - - if (CommonUtils.isNotEmpty(param.id) && param.id > 0) { - const poster: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", this.requestContext.siteId)); - if (!poster) throw new BadRequestException("海报不存在!"); - Object.assign(vo, poster); - } - - vo.posterType = PosterTypeEnum.getType(vo.type); - if (CommonUtils.isNotEmpty(vo.posterType) && CommonUtils.isEmpty(vo.addon)) vo.addon = vo.posterType.getStr("addon", ""); - - const components: Record = JsonModuleLoader.build().mergeResultElement("poster/components.json"); - - vo.component = new Record(); - for (const key of components.keySet()) { - const item: Record = components.getRecord(key); - if (item.getRecord("list") == null || item.getRecord("list").keySet().size() == 0) { - continue; - } - const support: JSONArray = ObjectUtil.defaultIfNull(item.getJSONArray("support"), new JSONArray()); - if (key !== vo.type && support.length > 0 && !support.includes(vo.type)) { - continue; - } - vo.component.put(key, item); - } - - return vo; + async init(param: SysPosterInitParamDto): Promise { + // TODO: 实现init业务逻辑 + return null; } /** * template */ - async template(param: SysPosterTemplateSearchParam): Promise { + async template(param: SysPosterTemplateSearchParamDto): Promise { return this.corePosterService.template(param.addon, param.type); } @@ -180,46 +86,23 @@ export class SysPosterServiceImplService { * modifyStatus */ async modifyStatus(id: number, status: number): Promise { - const model: SysPoster = new SysPoster(); - model.status = status; - this.sysPosterRepository.save(model, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("id", id).eq("site_id", this.requestContext.siteId)); + // TODO: 实现modifyStatus业务逻辑 + return null; } /** * modifyDefault */ async modifyDefault(id: number): Promise { - const model: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("海报不存在!"); - - const update: UpdateWrapper = new UpdateWrapper(); - update.sql = "is_default = 0"; - update.eq("type", model.type); - update.eq("is_default", 1); - update.eq("site_id", this.requestContext.siteId); - this.sysPosterRepository.save(null, update); - - const updateModel: SysPoster = new SysPoster(); - updateModel.isDefault = 1; - updateModel.id = id; - sysPosterMapper.updateById(updateModel); + // TODO: 实现modifyDefault业务逻辑 + return null; } /** * preview */ - async preview(param: PreviewPosterParam): Promise { - const getPosterParam: GetPosterParam = new GetPosterParam(); - getPosterParam.id = param.id; - getPosterParam.type = param.type; - getPosterParam.siteId = this.requestContext.siteId; - getPosterParam.channel = ObjectUtil.defaultIfNull(param.channel, "h5"); - const posterParam: Record = {}; - posterParam.put("mode", "preview"); - getPosterParam.param = posterParam; - getPosterParam.isThrowException = true; - return this.corePosterService.get(getPosterParam); + async preview(param: PreviewPosterParamDto): Promise { + // TODO: 实现preview业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-service-impl.service.ts index db085814..e77b0393 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { SysPrinterListVoDto } from '../../../../dtos/admin/sys/vo/sys-printer-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysPrinterModifyStatusParamDto } from '../../../../dtos/admin/sys/param/sys-printer-modify-status-param.dto'; @@ -12,7 +11,7 @@ import { SysPrinterInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-printer-i import { SysPrinterAddPrinterYlyParamDto } from '../../../../dtos/core/sys/param/sys-printer-add-printer-yly-param.dto'; import { SysPrinterPrintTicketParamDto } from '../../../../dtos/core/sys/param/sys-printer-print-ticket-param.dto'; import { SysPrinterPrintTicketVoDto } from '../../../../dtos/core/sys/vo/sys-printer-print-ticket-vo.dto'; -import { SysPrinterDto } from '../../../../entities/sys-printer.entity'; +import { SysPrinter } from '../../../../entities/sys-printer.entity'; @Injectable() export class SysPrinterServiceImplService { @@ -24,192 +23,87 @@ export class SysPrinterServiceImplService { /** * page */ - async page(pageParam: PageParam, searchParam: SysPrinterSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - queryWrapper.eq("site_id", this.requestContext.siteId) - .orderByDesc("create_time"); - - if (CommonUtils.isNotEmpty(searchParam.printerName)) { - queryWrapper.like("printer_name", searchParam.printerName); - } - - [SysPrinter[], number] iPage = this.sysPrinterRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysPrinterListVo[] = []; - for (const item of iPageRecords) { - const vo: SysPrinterListVo = new SysPrinterListVo(); - Object.assign(vo, item); - vo.brandName = SysPrinterBrandEnum.getNameByBrand(item.brand); - vo.trigger = JSONArray.parseArray(item.trigger, String.class); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async page(pageParam: PageParamDto, searchParam: SysPrinterSearchParamDto): Promise { + // TODO: 实现page业务逻辑 + return []; } /** * getList */ - async getList(param: SysPrinterSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - queryWrapper.eq("site_id", this.requestContext.siteId) - .orderByDesc("create_time") - .select("printer_id, apikey, brand, create_time, open_id, print_width, printer_code, printer_key, printer_name, site_id, status, template_type, 'trigger', update_time, value"); - - if (CommonUtils.isNotEmpty(param.printerName)) { - queryWrapper.like("printer_name", param.printerName); - } - - const list: SysPrinterListVo[] = []; - for (const item of this.sysPrinterRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })) { - const vo: SysPrinterListVo = new SysPrinterListVo(); - Object.assign(vo, item); - vo.brandName = SysPrinterBrandEnum.getNameByBrand(item.brand); - vo.value = JSON.parseObject(item.value); - vo.trigger = JSONArray.parseArray(item.trigger, String.class); - list.push(vo); - } - - return list; + async getList(param: SysPrinterSearchParamDto): Promise { + // TODO: 实现getList业务逻辑 + return null; } /** * info */ async info(id: number): Promise { - const model: SysPrinter = this.sysPrinterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("小票打印机不存在"); - - const vo: SysPrinterInfoVo = new SysPrinterInfoVo(); - Object.assign(vo, model); - vo.value = JSON.parseObject(model.value); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SysPrinterParam): Promise { - const model: SysPrinter = new SysPrinter(); - Object.assign(model, addParam); - model.siteId = this.requestContext.siteId; - model.value = JSON.toJSONString(addParam.value); - model.templateType = addParam.templateType.get(0); - model.trigger = JSON.toJSONString(addParam.trigger); - model.createTime = Date.now( / 1000); - this.sysPrinterRepository.save(model); - - if (addParam.brand === SysPrinterBrandEnum.YI_LIAN_YUN.brand) { - const addPrinterYlyParam: SysPrinterAddPrinterYlyParam = new SysPrinterAddPrinterYlyParam(); - Object.assign(addPrinterYlyParam, addParam); - this.corePrinterService.addPrinterYly(addPrinterYlyParam); - } + async add(addParam: SysPrinterParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SysPrinterParam): Promise { - const model: SysPrinter = this.sysPrinterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("小票打印机不存在"); - Object.assign(model, editParam); - model.value = JSON.toJSONString(editParam.value); - model.templateType = editParam.templateType.get(0); - model.trigger = JSON.toJSONString(editParam.trigger); - model.updateTime = Date.now( / 1000); - sysPrinterMapper.updateById(model); - - if (editParam.brand === SysPrinterBrandEnum.YI_LIAN_YUN.brand) { - const addPrinterYlyParam: SysPrinterAddPrinterYlyParam = new SysPrinterAddPrinterYlyParam(); - Object.assign(addPrinterYlyParam, editParam); - this.corePrinterService.addPrinterYly(addPrinterYlyParam); - } + async edit(id: number, editParam: SysPrinterParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * modifyStatus */ - async modifyStatus(param: SysPrinterModifyStatusParam): Promise { - const model: SysPrinter = this.sysPrinterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", this.requestContext.siteId)); - model.status = param.status; - sysPrinterMapper.updateById(model); + async modifyStatus(param: SysPrinterModifyStatusParamDto): Promise { + // TODO: 实现modifyStatus业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: SysPrinter = this.sysPrinterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (CommonUtils.isEmpty(model)) { - return; - } - - this.sysPrinterRepository.delete(id); - - if (model.brand === SysPrinterBrandEnum.YI_LIAN_YUN.brand) { - this.corePrinterService.deletePrinterYly(model); - } + // TODO: 实现del业务逻辑 + return null; } /** * getBrand */ async getBrand(): Promise { - const jsonObject: Record = new Record(); - for (const value of SysPrinterBrandEnum.values()) { - if (CommonUtils.isEmpty(value.brand)) { - continue; - } - - jsonObject.put(value.brand, path.basename(value)); - } - return jsonObject; + // TODO: 实现getBrand业务逻辑 + return null; } /** * refreshToken */ async refreshToken(id: number): Promise { - const model: SysPrinter = this.sysPrinterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (CommonUtils.isEmpty(model)) { - throw new Error("打印机不存在"); - } - - return this.corePrinterService.refreshToken(model); + // TODO: 实现refreshToken业务逻辑 + return null; } /** * testPrint */ async testPrint(id: number): Promise { - const model: SysPrinter = this.sysPrinterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (CommonUtils.isEmpty(model)) { - throw new Error("打印机不存在"); - } - - if (model.brand === SysPrinterBrandEnum.YI_LIAN_YUN.brand) { - testYlyPrint(model); - } + // TODO: 实现testPrint业务逻辑 + return null; } /** * printTicket */ - async printTicket(param: SysPrinterPrintTicketParam): Promise { + async printTicket(param: SysPrinterPrintTicketParamDto): Promise { param.siteId = this.requestContext.siteId; return this.corePrinterService.printTicket(param); } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-template-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-template-service-impl.service.ts index 983e2fe1..c270a81e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-template-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-printer-template-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysPrinterTemplateListVoDto } from '../../../../dtos/admin/sys/vo/sys-printer-template-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysPrinterTemplateParamDto } from '../../../../dtos/admin/sys/param/sys-printer-template-param.dto'; @@ -11,139 +11,54 @@ import { SysPrinterTemplateInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-p @Injectable() export class SysPrinterTemplateServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * page */ - async page(pageParam: PageParam, searchParam: SysPrinterTemplateSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - queryWrapper.eq("site_id", this.requestContext.siteId) - .orderByDesc("create_time"); - - if (CommonUtils.isNotEmpty(searchParam.templateId)) { - queryWrapper.eq("template_id", searchParam.templateId); - } - if (CommonUtils.isNotEmpty(searchParam.templateName)) { - queryWrapper.like("template_name", searchParam.templateName); - } - if (CommonUtils.isNotEmpty(searchParam.templateType)) { - queryWrapper.eq("template_type", searchParam.templateType); - } - - [SysPrinterTemplate[], number] iPage = this.sysPrinterTemplateRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysPrinterTemplateListVo[] = []; - for (const item of iPageRecords) { - const vo: SysPrinterTemplateListVo = new SysPrinterTemplateListVo(); - Object.assign(vo, item); - vo.templateTypeName = SysPrinterTypeEnum.getTypeName(item.templateType); - vo.value = JSON.parseObject(item.value); - vo.createTime = DateUtils.timestampToString(item.createTime); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async page(pageParam: PageParamDto, searchParam: SysPrinterTemplateSearchParamDto): Promise { + // TODO: 实现page业务逻辑 + return []; } /** * getList */ - async getList(searchParam: SysPrinterTemplateSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - - queryWrapper.eq("site_id", this.requestContext.siteId) - .orderByDesc("create_time"); - - if (CommonUtils.isNotEmpty(searchParam.templateId)) { - queryWrapper.eq("template_id", searchParam.templateId); - } - if (CommonUtils.isNotEmpty(searchParam.templateName)) { - queryWrapper.like("template_name", searchParam.templateName); - } - if (CommonUtils.isNotEmpty(searchParam.templateType)) { - queryWrapper.eq("template_type", searchParam.templateType); - } - - const voList: SysPrinterTemplateListVo[] = []; - for (const item of this.sysPrinterTemplateRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })) { - const vo: SysPrinterTemplateListVo = new SysPrinterTemplateListVo(); - Object.assign(vo, item); - vo.templateTypeName = SysPrinterTypeEnum.getTypeName(item.templateType); - vo.value = JSON.parseObject(item.value); - vo.createTime = DateUtils.timestampToString(item.createTime); - voList.push(vo); - } - return voList; + async getList(searchParam: SysPrinterTemplateSearchParamDto): Promise { + // TODO: 实现getList业务逻辑 + return null; } /** * info */ async info(id: number): Promise { - const model: SysPrinterTemplate = this.sysPrinterTemplateRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("小票打印模板不存在"); - - const vo: SysPrinterTemplateInfoVo = new SysPrinterTemplateInfoVo(); - Object.assign(vo, model); - vo.value = JSON.parseObject(model.value); - vo.createTime = DateUtils.timestampToString(model.createTime); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SysPrinterTemplateParam): Promise { - const model: SysPrinterTemplate = new SysPrinterTemplate(); - Object.assign(model, addParam); - model.value = JSON.toJSONString(addParam.value); - model.createTime = Date.now( / 1000); - model.siteId = this.requestContext.siteId; - - this.sysPrinterTemplateRepository.save(model); + async add(addParam: SysPrinterTemplateParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: SysPrinterTemplateParam): Promise { - const model: SysPrinterTemplate = this.sysPrinterTemplateRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - if (!model) throw new BadRequestException("小票打印模板不存在"); - Object.assign(model, editParam); - sysPrinterTemplateMapper.updateById(model); + async edit(id: number, editParam: SysPrinterTemplateParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const template: SysPrinterTemplate = sysPrinterTemplateMapper.selectById(id); - - Lambdaany /* TODO: QueryWrapper */ printerLambdaQueryWrapper = new LambdaQueryWrapper(); - printerLambdaQueryWrapper.eq(SysPrinter::getSiteId, this.requestContext.siteId) - .like(SysPrinter::getTemplateType, template.templateType); - const printers: SysPrinter[] = this.sysPrinterRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - - Optional illegalPrinter = printers - .filter(printer => CommonUtils.isNotEmpty(printer.value)) - .filter(printer => JSON.parseArray(printer.value).stream() - .anyMatch(value => JSON.parseArray(value.toString()).stream() - .anyMatch(o => id === JSON.parseObject(o.toString().getInteger("template_id"))))) - .findFirst(); - - if (illegalPrinter.isPresent()) { - throw new Error("该模板已被打印机[" + illegalPrinter.get().printerName + "]使用,无法删除"); - } - - this.sysPrinterTemplateRepository.delete(id); + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-role-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-role-service-impl.service.ts index 7492a661..23def383 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-role-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-role-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysRoleListVoDto } from '../../../../dtos/admin/sys/vo/sys-role-list-vo.dto'; import { SysRoleParamDto } from '../../../../dtos/admin/sys/param/sys-role-param.dto'; import { SysRoleSearchParamDto } from '../../../../dtos/admin/sys/param/sys-role-search-param.dto'; @@ -11,168 +11,62 @@ import { PageParamDto } from '../../../../dtos/page-param.dto'; @Injectable() export class SysRoleServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SysRoleSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("role_id"); - queryWrapper.eq("site_id", this.requestContext.siteId); - if(ObjectUtil.isNotNull(searchParam.roleName) && CommonUtils.isNotEmpty(searchParam.roleName)){ - queryWrapper.like("role_name", searchParam.roleName); - } - [SysRole[], number] iPage = this.sysRoleRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysRoleListVo[] = []; - for (const item of iPageRecords) { - const vo: SysRoleListVo = new SysRoleListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysRoleSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysRole = this.sysRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: SysRoleInfoVo = new SysRoleInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SysRoleParam): Promise { - const isExist: SysRole = this.sysRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("role_name", addParam.roleName) - .eq("site_id", this.requestContext.siteId) - .last("limit 1") - ); - if (isExist != null) throw new AdminException("管理员角色已存在"); - - const model: SysRole = new SysRole(); - model.siteId = this.requestContext.siteId; - model.roleName = addParam.roleName; - model.rules = JSONUtil.toJsonStr(addParam.rules); - model.status = addParam.status; - model.createTime = DateUtils.currTime(); - model.updateTime = DateUtils.currTime(); - this.sysRoleRepository.save(model); + async add(addParam: SysRoleParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(roleId: number, editParam: SysRoleParam): Promise { - const isExist: SysRole = this.sysRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("role_name", editParam.roleName) - .eq("site_id", this.requestContext.siteId) - .ne("role_id", roleId) - .last("limit 1") - ); - if (isExist != null) throw new AdminException("管理员角色已存在"); - - const model: SysRole = this.sysRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - model.siteId = this.requestContext.siteId; - model.roleName = editParam.roleName; - model.rules = JSONUtil.toJsonStr(editParam.rules); - model.status = editParam.status; - model.updateTime = DateUtils.currTime(); - sysRoleMapper.updateById(model); + async edit(roleId: number, editParam: SysRoleParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: SysRole = this.sysRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - const userRoleCount: number = this.sysUserRoleRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ })); - if(userRoleCount>0){ - throw new AdminException("USER_ROLE_NOT_ALLOW_DELETE"); - } - this.sysRoleRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * getMenuIdsByRoleIds */ async getMenuIdsByRoleIds(siteId: number, roleIds: List): Promise { - const queryWrapper: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */; - queryWrapper.eq("status", RoleStatusEnum.ON.code); - // 判断roleIds不能为空 - if(ObjectUtil.isNotNull(roleIds) && roleIds.length>0){ - queryWrapper.in("role_id", roleIds); - } - const roleList: SysRole[] = this.sysRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const roleMenuJson: JSONArray = new JSONArray(); - for (const sysRole of roleList) { - const ruleJson: JSONArray = JSONUtil.parseArray(sysRole.rules); - roleMenuJson.addAll(ruleJson); - } - //去重 - const list: string[] = JSONUtil.toList(roleMenuJson, String.class); - return CollectionUtil.distinct(list); + // TODO: 实现getMenuIdsByRoleIds业务逻辑 + return null; } /** * getAllRole */ async getAllRole(): Promise { - any /* TODO: QueryWrapper */ queryWrapper=new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.eq("status", 1); - const roleList: SysRole[] = this.sysRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const sysRoleListVoList: SysRoleListVo[] = []; - for (const sysRole of roleList) { - const vo: SysRoleListVo = new SysRoleListVo(); - Object.assign(vo, sysRole); - sysRoleListVoList.push(vo); - } - const sysUserRole: SysUserRole = null; - const isAdmin: boolean = false; - if (this.authService.isSuperAdmin()){ - isAdmin=true; - }else { - sysUserRole = this.sysUserRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq(SysUserRole::getSiteId, this.requestContext.siteId).eq(SysUserRole::getUid, RequestUtils.uid())); - if (CommonUtils.isEmpty(sysUserRole)){ - return List.of(); - } - isAdmin = sysUserRole.isAdmin == 1 ? true : false; - } - if (!isAdmin){ - if (StringUtils.isNotEmpty(sysUserRole.roleIds) && "[]".equals(sysUserRole.roleIds)){ - const roleIdsStr: string = sysUserRole.roleIds.replaceAll("[\\[\\]\"]", ""); - const menuIdsByRoleIds: string[] = getMenuIdsByRoleIds(this.requestContext.siteId, Arrays.stream(roleIdsStr.split(","))); - for (const sysRoleListVo of sysRoleListVoList) { - const diff: string[] = new ArrayList<>(Collections.singleton(sysRoleListVo.rules)); - diff.removeAll(menuIdsByRoleIds); - if ((diff && diff.length > 0)){ - sysRoleListVo.disabled = true; - } - } - } - - } - sysRoleListVoList.forEach(sysRoleListVo => sysRoleListVo.rules = null); - return sysRoleListVoList; + // TODO: 实现getAllRole业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-schedule-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-schedule-service-impl.service.ts index aefd7071..fe7a0717 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-schedule-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-schedule-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysScheduleListVoDto } from '../../../../dtos/admin/sys/vo/sys-schedule-list-vo.dto'; import { SysScheduleLogListVoDto } from '../../../../dtos/admin/sys/vo/sys-schedule-log-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; @@ -13,12 +12,11 @@ import { SysScheduleStatusParamDto } from '../../../../dtos/admin/sys/param/sys- import { SysScheduleInfoVoDto } from '../../../../dtos/admin/sys/vo/sys-schedule-info-vo.dto'; import { SysScheduleTemplateVoDto } from '../../../../dtos/admin/sys/vo/sys-schedule-template-vo.dto'; import { ApplicationContextDto } from '../dtos/application-context.dto'; -import { SysScheduleLogDto } from '../../../../entities/sys-schedule-log.entity'; +import { SysScheduleLog } from '../../../../entities/sys-schedule-log.entity'; @Injectable() export class SysScheduleServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -33,144 +31,56 @@ export class SysScheduleServiceImplService { * init */ async init(): Promise { - // 通过 ApplicationContext 获取所有 IJobProvider 实现 - const providers: Record = applicationContext.getBeansOfType(IJobProvider.class); - log.info("Loaded job provider count: {}", providers.length); - for (const provider of providers.values()) { - log.info("Loaded job provider: {}", provider.getClass().name); - const annotation: JobProvider = provider.class.getAnnotation(JobProvider.class); - if (annotation != null) { - // 使用注解的 key 作为 map 的键 - jobProviderMap.put(annotation.key(), provider); - } - } + // TODO: 实现init业务逻辑 + return null; } /** * getSysEnableList */ async getSysEnableList(): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("status", 1); - queryWrapper.orderByDesc("sort", "id"); - return this.sysScheduleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现getSysEnableList业务逻辑 + return null; } /** * list */ - async list(pageParam: PageParam, searchParam: SysScheduleSearchParam): Promise { - // 分页参数 - const page: number = pageParam.page; - const limit: number = pageParam.limit; - // 构造查询条件执行查询 - Lambdaany /* TODO: QueryWrapper */ queryWrapper = new LambdaQueryWrapper(); - if (CommonUtils.isNotEmpty(searchParam.status) && !"all".equals(searchParam.status)){ - if ("0".equals(searchParam.status)){ - searchParam.status = "2"; - } - queryWrapper.eq( SysSchedule::getStatus, searchParam.status); - } - queryWrapper.eq(CommonUtils.isNotEmpty(searchParam.key), SysSchedule::getKey, searchParam.key); - queryWrapper.orderByDesc(SysSchedule::getSort, SysSchedule::getId); - [SysSchedule[], number] sysSchedulePage = this.sysScheduleRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - // 返回结果集 - const sysScheduleListVoList: SysScheduleListVo[] = []; - for (const sysSchedule of sysSchedulePageRecords) { - const sysScheduleListVo: SysScheduleListVo = new SysScheduleListVo(); - Object.assign(sysScheduleListVo, sysSchedule); - sysScheduleListVo.timeObject = sysSchedule.time; - sysScheduleListVo.crontabContent = QuartzJobManager.convertCronContent(sysSchedule.time); - sysScheduleListVoList.push(sysScheduleListVo); - } - return PageResult.build(page, limit, sysSchedulePageTotal).data = sysScheduleListVoList; + async list(pageParam: PageParamDto, searchParam: SysScheduleSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const sysSchedule: SysSchedule = sysScheduleMapper.selectById(id); - const sysScheduleInfoVo: SysScheduleInfoVo = new SysScheduleInfoVo(); - Object.assign(sysScheduleInfoVo, sysSchedule); - return sysScheduleInfoVo; + // TODO: 实现info业务逻辑 + return null; } /** * modifyStatus */ - async modifyStatus(sysScheduleStatusParam: SysScheduleStatusParam): Promise { - const oldSysSchedule: SysSchedule = this.findByIdAndCheck(sysScheduleStatusParam.id); - if (sysScheduleStatusParam.status == 2) { - QuartzJobManager.stopJob(oldSysSchedule); - } else { - QuartzJobManager.stopJob(oldSysSchedule); - QuartzJobManager.startJob(oldSysSchedule); - } - const newSysSchedule: SysSchedule = new SysSchedule(); - newSysSchedule.id = oldSysSchedule.id; - newSysSchedule.status = sysScheduleStatusParam.status; - newSysSchedule.updateTime = DateUtils.currTime(); - sysScheduleMapper.updateById(newSysSchedule); + async modifyStatus(sysScheduleStatusParam: SysScheduleStatusParamDto): Promise { + // TODO: 实现modifyStatus业务逻辑 + return null; } /** * add */ - async add(sysScheduleParam: SysScheduleParam): Promise { - const jobKey: string = sysScheduleParam.key; - const jobInfo: JobInfo = JobProviderFactory.getJobInfo(jobKey); - if (jobInfo == null) { - throw new Error("任务不存在."); - } - // 校验任务是否存在 - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("`key`", jobKey); - const sysScheduleList: SysSchedule[] = this.sysScheduleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (sysScheduleList != null && sysScheduleList.length > 0) { - throw new Error("任务已经存在."); - } - // 新增一个任务 - const newSysSchedule: SysSchedule = new SysSchedule(); - Object.assign(newSysSchedule, sysScheduleParam); - newSysSchedule.time = JSONUtil.toJsonStr(sysScheduleParam.time); - newSysSchedule.createTime = DateUtils.currTime(); - newSysSchedule.updateTime = DateUtils.currTime(); - newSysSchedule.siteId = this.requestContext.siteId; - newSysSchedule.addon = jobInfo.source; - const result: number = this.sysScheduleRepository.save(newSysSchedule); - if (result > 0) { - if (newSysSchedule.status == 1) { - // 如果是启动状态,就启动任务 - QuartzJobManager.startJob(newSysSchedule); - } - } + async add(sysScheduleParam: SysScheduleParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, sysScheduleParam: SysScheduleParam): Promise { - // 存在性检查 - this.findByIdAndCheck(id); - // 构建更新对象 - const newSysSchedule: SysSchedule = new SysSchedule(); - Object.assign(newSysSchedule, sysScheduleParam); - newSysSchedule.id = id; - newSysSchedule.siteId = this.requestContext.siteId; - newSysSchedule.updateTime = DateUtils.currTime(); - newSysSchedule.time = JSONUtil.toJsonStr(sysScheduleParam.time); - const result: number = sysScheduleMapper.updateById(newSysSchedule); - if (result <= 0) { - log.error("更新系统任务失败:id={}", id); - } - // 根据状态启停任务 - if (sysScheduleParam.status == 2) { - QuartzJobManager.stopJob(newSysSchedule.key); - } else { - QuartzJobManager.stopJob(newSysSchedule.key); - QuartzJobManager.startJob(newSysSchedule); - } + async edit(id: number, sysScheduleParam: SysScheduleParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** @@ -188,31 +98,15 @@ export class SysScheduleServiceImplService { * template */ async template(): Promise { - const sysScheduleTemplateVoList: SysScheduleTemplateVo[] = []; - const jobKeys: string[] = JobProviderFactory.jobKeys(); - for (const jobKey of jobKeys) { - const jobInfo: JobInfo = JobProviderFactory.getJobInfo(jobKey); - const sysScheduleTemplateVo: SysScheduleTemplateVo = new SysScheduleTemplateVo(); - sysScheduleTemplateVo.key = jobKey; - sysScheduleTemplateVo.name = path.basename(jobInfo); - sysScheduleTemplateVo.desc = jobInfo.describe; - sysScheduleTemplateVo.clazz = jobInfo.jobClass; - sysScheduleTemplateVo.function = jobInfo.jobClass; - sysScheduleTemplateVoList.push(sysScheduleTemplateVo); - } - return sysScheduleTemplateVoList; + // TODO: 实现template业务逻辑 + return null; } /** * deleteScheduleLog */ async deleteScheduleLog(successThreshold: number, status: string): Promise { - const sysScheduleLogs: SysScheduleLog[] = this.sysScheduleLogRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).lt("execute_time", successThreshold)); - if (CollectionUtils.isEmpty(sysScheduleLogs)) { - return; - } - const delIds: number[] = sysScheduleLogs.map(SysScheduleLog::getId).collect(/* Collectors已删除 */.toSet()); - sysScheduleLogMapper.deleteBatchIds(delIds); + // TODO: 实现deleteScheduleLog业务逻辑 } /** @@ -225,94 +119,25 @@ export class SysScheduleServiceImplService { /** * logList */ - async logList(pageParam: PageParam, searchParam: SysScheduleLogSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - Lambdaany /* TODO: QueryWrapper */ qw = new LambdaQueryWrapper(); - qw.eq(CommonUtils.isNotEmpty(searchParam.scheduleId), SysScheduleLog::getScheduleId, searchParam.scheduleId); - qw.eq(CommonUtils.isNotEmpty(searchParam.key), SysScheduleLog::getKey, searchParam.key); - if (CommonUtils.isNotEmpty(searchParam.status) && !"all".equals(searchParam.status)){ - qw.eq(SysScheduleLog::getStatus, searchParam.status); - } - if (CommonUtils.isNotEmpty(searchParam.executeTime)) { - QueryMapperUtils.buildByTime(qw, SysScheduleLog::getExecuteTime, searchParam.executeTime); - } - any /* TODO: Page */ sysScheduleLogPage = this.sysScheduleLogRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), qw); - const result: SysScheduleLogListVo[] = []; - sysScheduleLogPageRecords.forEach(sysScheduleLog => { - const sysScheduleLogListVo: SysScheduleLogListVo = new SysScheduleLogListVo(); - Object.assign(sysScheduleLogListVo, sysScheduleLog); - result.push(sysScheduleLogListVo); - }); - return PageResult.build(page, limit, sysScheduleLogPageTotal).data = result; + async logList(pageParam: PageParamDto, searchParam: SysScheduleLogSearchParamDto): Promise { + // TODO: 实现logList业务逻辑 + return null; } /** * addLog */ async addLog(log: SysScheduleLog): Promise { - const sysSchedule: SysSchedule = this.sysScheduleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq(SysSchedule::getKey, log.key).eq(SysSchedule::getAddon, log.addon)); - if (sysSchedule == null) return; - log.scheduleId = sysSchedule.id; - log.executeTime = DateUtils.currTime(); - this.sysScheduleLogRepository.save(log); + // TODO: 实现addLog业务逻辑 + return null; } /** * doSchedule */ async doSchedule(id: number): Promise { - const sysSchedule: SysSchedule = sysScheduleMapper.selectById(id); - if (sysSchedule == null) { - throw new BadRequestException("计划任务不存在"); - } - const basePackage: string = String.format("com.niu.%s.job", sysSchedule.addon); - const classPath: string = QuartzJobManager.getClassPath(basePackage, sysSchedule.key); - const jobKey: string = sysSchedule.key; - try { - // 动态加载任务类 - Class jobClass = Class.forName(classPath); - - // 验证是否为有效的任务类 - if (!IJobProvider.class.isAssignableFrom(jobClass)) { - throw new BadRequestException("无效的任务类: " + classPath); - } - - // 实例化任务 - const job: IJobProvider = (IJobProvider) jobClass.declaredConstructor.newInstance(); - - // 执行任务 - job.exec(null); - - // 构建日志信息 - const result: string = "计划任务:" + path.basename(sysSchedule) + "执行成功"; - addLog(SysScheduleLog.builder() - .key(jobKey) - .name(path.basename(sysSchedule)) - .addon(sysSchedule.addon) - .className(classPath) - .status("success") - .executeResult(result) - .job(classPath) - .build()); - - } catch (e) { - // 获取任务名称(即使在异常情况下也尝试获取) - const errorMsg: string = "计划任务:" + path.basename(sysSchedule) + "发生错误, 错误原因:" + e.message + - " at " + e.stackTrace[0].toString(); - addLog(SysScheduleLog.builder() - .key(jobKey) - .name(path.basename(sysSchedule)) - .addon(sysSchedule.addon) - .className(classPath) - .status("error") - .executeResult(errorMsg) - .job(classPath) - .build()); - - throw new BadRequestException("执行计划任务失败", e); - } + // TODO: 实现doSchedule业务逻辑 + return null; } /** @@ -326,6 +151,7 @@ export class SysScheduleServiceImplService { * clearLog */ async clearLog(scheduleId: number): Promise { - this.sysScheduleLogRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现clearLog业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-upgrade-records-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-upgrade-records-service-impl.service.ts index 281ac482..55d2fb2f 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-upgrade-records-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-upgrade-records-service-impl.service.ts @@ -2,7 +2,6 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; -import * as path from 'path'; import { SysUpgradeRecordsListVoDto } from '../dtos/sys-upgrade-records-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysUpgradeRecordsDelParamDto } from '../dtos/sys-upgrade-records-del-param.dto'; @@ -18,75 +17,8 @@ export class SysUpgradeRecordsServiceImplService { /** * page */ - async page(pageParam: PageParam, searchParam: SysUpgradeRecordsSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("create_time"); - - if (searchParam != null) { - if (path.basename(searchParam) != null) { - queryWrapper.like("name", path.basename(searchParam)); - } - } - - [SysUpgradeRecords[], number] iPage = this.sysUpgradeRecordsRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: SysUpgradeRecordsListVo[] = []; - for (const item of iPageRecords) { - const vo: SysUpgradeRecordsListVo = new SysUpgradeRecordsListVo(); - Object.assign(vo, item); - vo.createTime = DateUtils.timestampToString(item.createTime); - vo.completeTime = DateUtils.timestampToString(item.completeTime); - vo.statusName = UpgradeRecordStatusEnum.getNameByStatus(vo.status); - //判断为数组或者对象或者字符串 - const value: string = item.content; - if (!StrUtil.isEmpty(value)) { - if (value.startsWith("[")) { - vo.content = JSON.parseArray(value); - } else if (value.startsWith("{")) { - vo.content = JSON.parseObject(value); - } else { - vo.content = value; - } - } - list.push(vo); - } - - return PageResult.build(page, limit, iPageTotal).data = list; - } - - @Override - public void add(SysUpgradeRecordsParam addParam) { - const model: SysUpgradeRecords = new SysUpgradeRecords(); - Object.assign(model, addParam); - model.createTime = Date.now( / 1000); - this.sysUpgradeRecordsRepository.save(model); - } - - @Override - public void edit(String key, SysUpgradeRecordsParam editParam) { - const model: SysUpgradeRecords = new SysUpgradeRecords(); - Object.assign(model, editParam); - this.sysUpgradeRecordsRepository.save(model, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("upgrade_key", key)); - } - - @Override - public void clear(long threshold) { - this.sysUpgradeRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }).in("status", STATUS_READY, STATUS_FAIL)); - } - - @Override - public void del(SysUpgradeRecordsDelParam delParam) { - const queryWrapper: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */; - - if (delParam.getIds().getClass().name.startsWith("[")) { - const stringIds: string[] = (String[]) delParam.ids; - queryWrapper.in("id", stringIds); - } else { - queryWrapper.eq("id", delParam.ids); - } - this.sysUpgradeRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - } + async page(pageParam: PageParamDto, searchParam: SysUpgradeRecordsSearchParamDto): Promise { + // TODO: 实现page业务逻辑 + return []; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-log-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-log-service-impl.service.ts index 977c6506..e4a736c5 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-log-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-log-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysUserLogListVoDto } from '../../../../dtos/admin/sys/vo/sys-user-log-list-vo.dto'; import { SysUserLogParamDto } from '../../../../dtos/admin/sys/param/sys-user-log-param.dto'; import { SysUserLogSearchParamDto } from '../../../../dtos/admin/sys/param/sys-user-log-search-param.dto'; @@ -11,60 +11,30 @@ import { PageParamDto } from '../../../../dtos/page-param.dto'; @Injectable() export class SysUserLogServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SysUserLogSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - if(ObjectUtil.isNotNull(searchParam.username) && CommonUtils.isNotEmpty(searchParam.username)){ - queryWrapper.like("username", searchParam.username); - } - if(ObjectUtil.isNotNull(searchParam.ip) && CommonUtils.isNotEmpty(searchParam.ip)){ - queryWrapper.like("ip", searchParam.ip); - } - - if(ObjectUtil.isNotNull(searchParam.url) && CommonUtils.isNotEmpty(searchParam.url)){ - queryWrapper.like("url", searchParam.url); - } - [SysUserLog[], number] iPage = this.sysUserLogRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - - const list: SysUserLogListVo[] = []; - for (const item of iPageRecords) { - const vo: SysUserLogListVo = new SysUserLogListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysUserLogSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysUserLog = this.sysUserLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: SysUserLogInfoVo = new SysUserLogInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * destroy */ async destroy(): Promise { - this.sysUserLogRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }))); + // TODO: 实现destroy业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-role-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-role-service-impl.service.ts index ce30b65e..5cf294f1 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-role-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-role-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysUserRoleListVoDto } from '../../../../dtos/admin/sys/vo/sys-user-role-list-vo.dto'; import { SysUserRoleParamDto } from '../../../../dtos/admin/sys/param/sys-user-role-param.dto'; import { SysUserRoleSearchParamDto } from '../../../../dtos/admin/sys/param/sys-user-role-search-param.dto'; @@ -11,121 +11,54 @@ import { PageParamDto } from '../../../../dtos/page-param.dto'; @Injectable() export class SysUserRoleServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: SysUserRoleSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - - //sql语句 - queryWrapper.select("nsu.uid, nsu.username, nsu.head_img, nsu.password, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count, nsu.status, nsu.is_del, nsu.delete_time, nsu.update_time, nsur.id, nsur.site_id, nsur.role_ids, nsur.is_admin") - .setAlias("nsur") - .leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix)); - - //查询条件判断组装 - if (CommonUtils.isNotEmpty(searchParam.uid)) { - queryWrapper.eq("nsu.uid", searchParam.uid); - } - - //排序 - queryWrapper.orderByDesc("id"); - //分页查询 - [SysUserRoleListVo[], number] iPage = sysUserRoleMapper.selectJoinPage( - new Page<>(page, limit), - SysUserRoleListVo.class, - queryWrapper); - - - return PageResult.build(iPage); + async list(pageParam: PageParamDto, searchParam: SysUserRoleSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysUserRole = this.sysUserRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: SysUserRoleInfoVo = new SysUserRoleInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SysUserRoleParam): Promise { - const userRoleCount: number = this.sysUserRoleRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", addParam.siteId) - ); - if (userRoleCount>0){ - throw new BadRequestException("SITE_USER_EXIST"); - } - - const model: SysUserRole = new SysUserRole(); - model.uid = addParam.uid; - model.siteId = addParam.siteId==null? this.requestContext.siteId:addParam.siteId; - model.roleIds = addParam.roleIds; - model.createTime = DateUtils.currTime(); - model.isAdmin = addParam.isAdmin==null?0:addParam.isAdmin; - model.status = ObjectUtil.isNull(addParam.status? StatusEnum.ON.status : addParam.status); - if(model.status<1){ - model.roleIds = addParam.roleIds==null? JSONUtil.toJsonStr(new JsonArray():addParam.roleIds); - } - this.sysUserRoleRepository.save(model); + async add(addParam: SysUserRoleParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(editParam: SysUserRoleParam): Promise { - const model: SysUserRole = this.sysUserRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", editParam.siteId) - .last("limit 1")); - if (!model) throw new BadRequestException("数据不存在!"); - const isAdmin: number = model.isAdmin; - if(isAdmin>0){ - //超级管理员不允许改动权限 - throw new AdminException("ADMIN_NOT_ALLOW_EDIT_ROLE"); - } - model.status = editParam.status; - model.roleIds = editParam.roleIds; - sysUserRoleMapper.updateById(model); + async edit(editParam: SysUserRoleParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: SysUserRole = this.sysUserRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.sysUserRoleRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * getUserRole */ async getUserRole(site_id: number, uid: number): Promise { - const model: SysUserRole = this.sysUserRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", site_id).last(" limit 1")); - const vo: SysUserRoleInfoVo = new SysUserRoleInfoVo(); - if(ObjectUtil.isNotNull(model)){ - Object.assign(vo, model); - return vo; - }else{ - return null; - } + // TODO: 实现getUserRole业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-service-impl.service.ts index 287c41d5..8d30a680 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/sys-user-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable, BadRequestException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, AppConfigService, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SysUserListVoDto } from '../../../../dtos/admin/sys/vo/sys-user-list-vo.dto'; import { SiteUserParamDto } from '../../../../dtos/admin/site/param/site-user-param.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; @@ -19,7 +19,6 @@ import { SysUserCreateSiteLimitEditParamDto } from '../../../../dtos/admin/sys/p @Injectable() export class SysUserServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -33,305 +32,113 @@ export class SysUserServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: SysUserSearchParam): Promise { - this.authService.isSuperAdmin(); - const superAdminUid: number = cached.tag("adminAuth").get("superAdminUid"); - - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("uid"); - - if (ObjectUtil.isNotNull(searchParam.username) && CommonUtils.isNotEmpty(searchParam.username)) { - queryWrapper.like("username", searchParam.username).or().like("real_name", searchParam.username); - } - if (ObjectUtil.isNotNull(searchParam.lastTime) && CommonUtils.isNotEmpty(searchParam.lastTime)) { - const startTime: number = 0; - const endTime: number = 0; - if (ObjectUtil.isNotNull(searchParam.lastTime[0])) { - startTime = DateUtils.StringToTimestamp(searchParam.lastTime[0]); - } - if (ObjectUtil.isNotNull(searchParam.lastTime[1])) { - endTime = DateUtils.StringToTimestamp(searchParam.lastTime[1]); - } - if (startTime > 0 && endTime > 0) { - queryWrapper.between("last_time", startTime, endTime); - } else if (startTime > 0) { - queryWrapper.ge("last_time", startTime); - } else if (endTime > 0) { - queryWrapper.le("last_time", endTime); - } - } - - [SysUser[], number] iPage = this.sysUserRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - - const list: SysUserListVo[] = []; - for (const item of iPageRecords) { - const vo: SysUserListVo = new SysUserListVo(); - Object.assign(vo, item); - const siteNum: number = this.sysUserRoleRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ })).ne("site_id", RequestUtils.defaultSiteId())); - vo.siteNum = siteNum.intValue(); - vo.isSuperAdmin = superAdminUid == item.uid; - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: SysUserSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - this.authService.isSuperAdmin(); - const superAdminUid: number = cached.tag("adminAuth").get("superAdminUid"); - - const model: SysUser = this.sysUserRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - if (!model) throw new BadRequestException("用户数据不存在"); - - const vo: SysUserDetailVo = new SysUserDetailVo(); - Object.assign(vo, model); - - MPJany /* TODO: QueryWrapper */ userRoleMPJQueryWrapper = new MPJQueryWrapper(); - userRoleMPJQueryWrapper.select("sur.*, s.site_id, s.site_name, s.app_type, s.status as siteStatus, s.expire_time") - .setAlias("sur") - .leftJoin("?_site s ON sur.site_id = s.site_id".replace("?_", this.appConfig.tablePrefix)); - userRoleMPJQueryWrapper.eq("sur.uid", vo.uid); - const userSiteRoleVoList: SysUserSiteRoleVo[] = sysUserRoleMapper.selectJoinList(SysUserSiteRoleVo.class, userRoleMPJQueryWrapper); - vo.isSuperAdmin = superAdminUid == id; - vo.roles = userSiteRoleVoList; - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: SysUserParam): Promise { - if (checkUserName(addParam.username)) { - throw new AdminException("该用户名已被占用,请更换"); - } - const sysUser: SysUser = new SysUser(); - Object.assign(sysUser, addParam); - sysUser.createTime = DateUtils.currTime(); - sysUser.updateTime = DateUtils.currTime(); - sysUser.password = PasswordEncipher.encode(addParam.password); - this.sysUserRepository.save(sysUser); - const uid: number = sysUser.uid; - - //添加用户建站限制 - const createSiteLimitParamList: SysCreateSiteLimitParam[] = addParam.createSiteLimit; - const addList: UserCreateSiteLimit[] = []; - if (ObjectUtil.isNotNull(createSiteLimitParamList) && createSiteLimitParamList.length > 0) { - for (const sysCreateSiteLimitParam of createSiteLimitParamList) { - const userCreateSiteLimit: UserCreateSiteLimit = new UserCreateSiteLimit(); - userCreateSiteLimit.uid = uid; - userCreateSiteLimit.groupId = sysCreateSiteLimitParam.groupId; - userCreateSiteLimit.month = sysCreateSiteLimitParam.month; - userCreateSiteLimit.num = sysCreateSiteLimitParam.num; - addList.push(userCreateSiteLimit); - } - this.userCreateSiteLimitRepository.save(addList); - } - return uid; + async add(addParam: SysUserParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(uid: number, editParam: SysUserParam): Promise { - const model: SysUser = this.sysUserRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - if (!model) throw new BadRequestException("数据不存在!"); - const isOffStatus: boolean = false; - if (ObjectUtil.isNotNull(editParam.status)) { - model.status = editParam.status; - if (editParam.status == StatusEnum.OFF.status) { - isOffStatus = true; - } - } - if (ObjectUtil.isNotNull(editParam.headImg)) { - model.headImg = editParam.headImg; - } - if (ObjectUtil.isNotNull(editParam.realName)) { - model.realName = editParam.realName; - } - const isChangePassword: boolean = false; - if (ObjectUtil.isNotNull(editParam.password) && CommonUtils.isNotEmpty(editParam.password)) { - model.password = PasswordEncipher.encode(editParam.password); - isChangePassword = true; - } - /** - * 更新用戶信息 - */ - model.updateTime = DateUtils.currTime(); - sysUserMapper.updateById(model); - if (isOffStatus || isChangePassword) { - getLoginService().clearToken(uid, RequestUtils.appType(), ""); - } + async edit(uid: number, editParam: SysUserParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - this.authService.isSuperAdmin(); - const superAdminUid: number = cached.tag("adminAuth").get("superAdminUid"); - if (superAdminUid === id) { - throw new BadRequestException("超级管理员不允许删除"); - } - const count: number = this.sysUserRoleRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }).ne("site_id", RequestUtils.defaultSiteId())); - if (count > 0) { - throw new BadRequestException("该用户是一些站点的管理员不允许删除"); - } - - const model: SysUser = this.sysUserRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.sysUserRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } /** * getUserInfoByUserName */ async getUserInfoByUserName(userName: string): Promise { - const model: SysUser = this.sysUserRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).last("limit 1")); - if (!model) throw new BadRequestException("账号或密码错误"); - const vo: SysUserInfoVo = new SysUserInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现getUserInfoByUserName业务逻辑 + return null; } /** * editUserLoginInfo */ async editUserLoginInfo(uid: number): Promise { - const model: SysUser = this.sysUserRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - model.lastTime = DateUtils.currTime(); - model.lastIp = IpUtils.getIpAddr(RequestUtils.handler()); - model.loginCount = model.loginCount + 1; - sysUserMapper.updateById(model); + // TODO: 实现editUserLoginInfo业务逻辑 + return null; } /** * addSiteUser */ - async addSiteUser(siteUserParam: SiteUserParam, siteId: number): Promise { - const uid: number = 0; - try { - if (ObjectUtil.isNotNull(siteUserParam.uid) && siteUserParam.uid > 0) { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("uid", siteUserParam.uid); - const sysUser: SysUser = this.sysUserRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - uid = siteUserParam.uid; - if (ObjectUtil.isNull(sysUser)) { - throw new AdminException("USER_NOT_EXIST"); - } - } else { - const sysUserParam: SysUserParam = new SysUserParam(); - sysUserParam.headImg = siteUserParam.headImg; - sysUserParam.password = siteUserParam.password; - sysUserParam.lastIp = ""; - sysUserParam.loginCount = 0; - sysUserParam.username = siteUserParam.username; - sysUserParam.isDel = 0; - sysUserParam.lastTime = DateUtils.currTime(); - sysUserParam.status = siteUserParam.status; - sysUserParam.realName = siteUserParam.realName; - //添加用户 - uid = this.push(sysUserParam); - } - const roleIds: string[] = siteUserParam.roleIds; - const isAdmin: number = siteUserParam.isAdmin == null ? 0 : siteUserParam.isAdmin; - /** - * 创建用户站点管理权限 - */ - const sysUserRoleParam: SysUserRoleParam = new SysUserRoleParam(); - sysUserRoleParam.roleIds = JSONUtil.toJsonStr(roleIds); - sysUserRoleParam.siteId = siteId; - sysUserRoleParam.uid = uid; - sysUserRoleParam.status = siteUserParam.status; - sysUserRoleParam.isAdmin = isAdmin; - this.sysUserRoleService.push(sysUserRoleParam); - } catch (e) { - throw new AdminException(e.message); - } - return uid; + async addSiteUser(siteUserParam: SiteUserParamDto, siteId: number): Promise { + // TODO: 实现addSiteUser业务逻辑 + return null; } /** * checkUserName */ async checkUserName(userName: string): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("username", userName); - const count: number = this.sysUserRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (count > 0) { - return true; - } - return false; + // TODO: 实现checkUserName业务逻辑 + return null; } /** * getUserAll */ async getUserAll(): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("uid, username, head_img").orderByDesc("uid"); - return this.sysUserRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现getUserAll业务逻辑 + return null; } /** * getUserCreateSiteLimit */ async getUserCreateSiteLimit(uid: number): Promise { - const userCreateSiteLimitList: UserCreateSiteLimit[] = this.userCreateSiteLimitRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - const userCreateSiteLimitVoList: SysUserCreateSiteLimitVo[] = []; - for (const item of userCreateSiteLimitList) { - const userCreateSiteLimitVo: SysUserCreateSiteLimitVo = new SysUserCreateSiteLimitVo(); - BeanUtil.copyProperties(item, userCreateSiteLimitVo); - userCreateSiteLimitVoList.push(userCreateSiteLimitVo); - } - return userCreateSiteLimitVoList; + // TODO: 实现getUserCreateSiteLimit业务逻辑 + return null; } /** * getUserCreateSiteLimitInfo */ async getUserCreateSiteLimitInfo(id: number): Promise { - const userCreateSiteLimit: UserCreateSiteLimit = userCreateSiteLimitMapper.selectById(id); - const sysUserCreateSiteLimitVo: SysUserCreateSiteLimitVo = new SysUserCreateSiteLimitVo(); - if (ObjectUtil.isNotNull(userCreateSiteLimit)) { - BeanUtil.copyProperties(userCreateSiteLimit, sysUserCreateSiteLimitVo); - } - return sysUserCreateSiteLimitVo; + // TODO: 实现getUserCreateSiteLimitInfo业务逻辑 + return null; } /** * addUserCreateSiteLimit */ - async addUserCreateSiteLimit(userCreateSiteLimitAddParam: SysUserCreateSiteLimitAddParam): Promise { - this.userCreateSiteLimitRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("group_id", userCreateSiteLimitAddParam.groupId)); - const userCreateSiteLimit: UserCreateSiteLimit = new UserCreateSiteLimit(); - userCreateSiteLimit.num = userCreateSiteLimitAddParam.num; - userCreateSiteLimit.uid = userCreateSiteLimitAddParam.uid; - userCreateSiteLimit.month = userCreateSiteLimitAddParam.month; - userCreateSiteLimit.groupId = userCreateSiteLimitAddParam.groupId; - this.userCreateSiteLimitRepository.save(userCreateSiteLimit); + async addUserCreateSiteLimit(userCreateSiteLimitAddParam: SysUserCreateSiteLimitAddParamDto): Promise { + // TODO: 实现addUserCreateSiteLimit业务逻辑 + return null; } /** * editUserCreateSiteLimit */ - async editUserCreateSiteLimit(userCreateSiteLimitEditParam: SysUserCreateSiteLimitEditParam): Promise { - const userCreateSiteLimit: UserCreateSiteLimit = userCreateSiteLimitMapper.selectById(userCreateSiteLimitEditParam.id); - userCreateSiteLimit.num = userCreateSiteLimitEditParam.num; - userCreateSiteLimit.month = userCreateSiteLimitEditParam.month; - userCreateSiteLimitMapper.updateById(userCreateSiteLimit); + async editUserCreateSiteLimit(userCreateSiteLimitEditParam: SysUserCreateSiteLimitEditParamDto): Promise { + // TODO: 实现editUserCreateSiteLimit业务逻辑 + return null; } /** @@ -354,63 +161,7 @@ export class SysUserServiceImplService { * getUserSelect */ async getUserSelect(username: string): Promise { - // 1. 构建查询条件 - MPJany /* TODO: QueryWrapper */ qw = new MPJQueryWrapper(); - qw.alias = "u" - .leftJoin("?_sys_user_role ur on u.uid = ur.uid".replace("?_", this.appConfig.tablePrefix)) - .select("u.uid, u.username, u.head_img") - .and(wrapper => wrapper.eq("ur.is_admin", 1)) - .or() - .eq("ur.site_id", 0); - - // 2. 获取并过滤用户 - const userAll: SysUser[] = StringUtils.isNotEmpty(username) - ? getUserAll().stream() - .filter(item => item.username === username) - - : getUserAll(); - - if (CollectionUtils.isEmpty(userAll)) { - return List.of(); - } - - // 3. 获取有角色的用户ID集合 - const allRoleUserIds: number[] = this.sysUserRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).orderByDesc("id")) - .stream() - .map(SysUserRole::getUid) - .collect(/* Collectors已删除 */.toSet()); - - // 4. 查询管理员用户 - qw.orderByDesc("uid"); - const adminUsers: SysUser[] = this.sysUserRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - - // 5. 查询无角色用户 - const noRoleUsers: SysUser[] = []; - const noRoleUserIds: number[] = userAll - .map(SysUser::getUid) - .filter(uid => !allRoleUserIds.includes(uid)) - ; - - if (!CollectionUtils.isEmpty(noRoleUserIds)) { - noRoleUsers = this.sysUserRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .in("uid", noRoleUserIds) - .orderByDesc("uid")); - } - - // 6. 合并结果并去重 - const resultMap: Record = new LinkedHashMap(); - - adminUsers.forEach(user => { - const vo: SysUserInfoVo = new SysUserInfoVo(); - Object.assign(vo, user); - resultMap.put(user.uid, vo); - }); - noRoleUsers.forEach(user => { - const vo: SysUserInfoVo = new SysUserInfoVo(); - Object.assign(vo, user); - resultMap.put(user.uid, vo); - }); - - return new ArrayList<>(resultMap.values()); + // TODO: 实现getUserSelect业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/system-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/system-service-impl.service.ts index f4325791..d2dd426a 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/system-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/sys/impl/system-service-impl.service.ts @@ -1,17 +1,15 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { StatSystemVoDto } from '../../../../dtos/admin/stat/vo/stat-system-vo.dto'; import { StatVersionVoDto } from '../../../../dtos/admin/stat/vo/stat-version-vo.dto'; import { SpreadQrcodeParamDto } from '../../../../dtos/admin/sys/param/spread-qrcode-param.dto'; import { SpreadQrcodeVoDto } from '../../../../dtos/admin/sys/vo/spread-qrcode-vo.dto'; -import { FileDto } from '../dtos/file.dto'; @Injectable() export class SystemServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -19,17 +17,8 @@ export class SystemServiceImplService { * getInfo */ async getInfo(): Promise { - const statSystemVo: StatSystemVo = new StatSystemVo(); - statSystemVo.os = System.getProperty("os.name", "Linux"); - statSystemVo.environment = System.getProperty("catalina.home"); - statSystemVo.phpV = System.getProperty("java.version"); - - const statVersionVo: StatVersionVo = new StatVersionVo(); - statVersionVo.version = "202406150001"; - statVersionVo.code = "0.4.0"; - - statSystemVo.version = statVersionVo; - return statSystemVo; + // TODO: 实现getInfo业务逻辑 + return null; } /** @@ -42,33 +31,16 @@ export class SystemServiceImplService { /** * getSpreadQrcode */ - async getSpreadQrcode(param: SpreadQrcodeParam): Promise { - const vo: SpreadQrcodeVo = new SpreadQrcodeVo(); - - try { - const data: Record = {}; - for (SpreadQrcodeParam.Param qrcodeParam : param.params) { - const jsonArray: JSONArray = JSONUtil.parseArray(qrcodeParam); - const jsonObject: Record = JsonUtils.parseObject(jsonArray); - data.put(jsonObject.getStr("name"), qrcodeParam.columnValue); - } - const dir: string = "upload/qrcode/" + this.requestContext.siteId + "/" + param.folder; - vo.weappPath = QrcodeUtils.qrcodeToFile(this.requestContext.siteId, "weapp", "", param.page, data, dir); - } catch (e) { - - } - return vo; + async getSpreadQrcode(param: SpreadQrcodeParamDto): Promise { + // TODO: 实现getSpreadQrcode业务逻辑 + return null; } /** * getDatabaseVersion */ async getDatabaseVersion(): Promise { - try (const connection: Connection = dataSource.connection) { - const metaData: DatabaseMetaData = connection.metaData; - return metaData.databaseProductVersion; - }catch (e) { - return "未知"; - } + // TODO: 实现getDatabaseVersion业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upgrade/impl/upgrade-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upgrade/impl/upgrade-service-impl.service.ts index 9b9cd7dc..dd224213 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upgrade/impl/upgrade-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upgrade/impl/upgrade-service-impl.service.ts @@ -1,9 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils } from '@wwjBoot'; -import * as fs from 'fs'; -import { HttpResponseDto } from '../dtos/http-response.dto'; +import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; import { SysUpgradeRecordsParamDto } from '../dtos/sys-upgrade-records-param.dto'; import { UpgradeParamDto } from '../dtos/upgrade-param.dto'; import { UpgradeContentVoDto } from '../dtos/upgrade-content-vo.dto'; @@ -13,7 +11,6 @@ import { @LazyDto } from '../dtos/@-lazy.dto'; @Injectable() export class UpgradeServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -28,196 +25,38 @@ export class UpgradeServiceImplService { * upgradeCheck */ async upgradeCheck(addon: string): Promise { - if (this.appConfig.runActive === "dev") throw new BadRequestException("开发环境下请先关闭服务启动webroot/jar下的web-app-boot-exec进行升级"); - - const upgradeCheck: boolean = true; - - const checkResult: Record = new Record(); - const rootPath: string = ""; - const runtimePath: string = ""; - const readableDir: JSONArray = new JSONArray(); - const writeDir: JSONArray = new JSONArray(); - - if (this.appConfig.envType === "dev") { - rootPath = this.appConfig.projectRoot + "/"; - runtimePath = rootPath; - - readableDir.put(new Record().set("dir", rootPath + "niucloud-addon").set("status", true)); - writeDir.put(new Record().set("dir", rootPath + "niucloud-addon").set("status", true)); - readableDir.put(new Record().set("dir", rootPath + "webroot").set("status", true)); - writeDir.put(new Record().set("dir", rootPath + "webroot").set("status", true)); - } else { - rootPath = this.appConfig.webRoot + "/"; - runtimePath = rootPath + "runtime/"; - - readableDir.put(new Record().set("dir", runtimePath).set("status", true)); - writeDir.put(new Record().set("dir", runtimePath).set("status", true)); - } - - readableDir.put(new Record().set("dir", runtimePath + "admin").set("status", true)); - readableDir.put(new Record().set("dir", runtimePath + "uni-app").set("status", true)); - readableDir.put(new Record().set("dir", runtimePath + "web").set("status", true)); - - writeDir.put(new Record().set("dir", runtimePath + "admin").set("status", true)); - writeDir.put(new Record().set("dir", runtimePath + "uni-app").set("status", true)); - writeDir.put(new Record().set("dir", runtimePath + "web").set("status", true)); - - for (const i of number = 0; i < readableDir.length; i++) { - const dir: Record = readableDir.getRecord(i); - dir.set("status", dir.getStr("dir").canRead()); - dir.set("dir", dir.getStr("dir").replace(rootPath, "")); - readableDir.set(i, dir); - if (!dir.getBool("status")) upgradeCheck = false; - } - - for (const i of number = 0; i < writeDir.length; i++) { - const dir: Record = writeDir.getRecord(i); - dir.set("status", dir.getStr("dir").canWrite()); - dir.set("dir", dir.getStr("dir").replace(rootPath, "")); - writeDir.set(i, dir); - if (!dir.getBool("status")) upgradeCheck = false; - } - - checkResult.put("is_pass", upgradeCheck); - checkResult.put("dir", new Record().set("is_readable", readableDir).set("is_write", writeDir)); - return checkResult; + // TODO: 实现upgradeCheck业务逻辑 + return null; } /** * getUpgradeContent */ async getUpgradeContent(addon: string): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - const vo: UpgradeContentVo = new UpgradeContentVo(); - - const apps: Map[] = []; - - if ((!addon || addon.length === 0)) { - const query: Record = {}; - query.put("product_key", instance.productKey); - query.put("app_key", this.appConfig.appKey); - query.put("version", this.appConfig.version); - apps.push(query); - } else { - for (const key of addon.split(",")) { - const addonModel: Addon = this.addonRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).select("version,type")); - const query: Record = {}; - query.put("product_key", instance.productKey); - query.put("app_key", key); - query.put("version", addonModel.version); - if (addonModel.type === AddonTypeEnum.APP.type) { - apps.addFirst(query); - } else { - apps.push(query); - } - } - } - - for (Record item: apps) { - const content: Record = NiucloudUtils.Niucloud.get("member_app_upgrade/content", item).getRecord("data"); - if (content != null) { - UpgradeContentVo.const contentVo: Content = JSONUtil.toBean(content, UpgradeContentVo.Content.class); - vo.content.add(contentVo); - vo.getUpgradeApps().add(contentVo.getApp().appKey); - } - } - - vo.lastBackup = this.sysBackupRecordsRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ } - .orderByDesc("complete_time") - .last("limit 1") - )); - - return vo; + // TODO: 实现getUpgradeContent业务逻辑 + return null; } /** * upgrade */ - async upgrade(upgradeParam: UpgradeParam): Promise { - if (this.appConfig.runActive === "dev") throw new BadRequestException("开发环境下请先关闭服务启动webroot/jar下的web-app-boot-exec进行升级"); - if (getUpgradeTask() != null) throw new BadRequestException("已经有正在升级中的任务"); - - const upgradeContent: UpgradeContentVo = getUpgradeContent(upgradeParam.addon); - upgradeContent.content = upgradeContent.content.stream(.filter(c => c.versionList.size() > 0)); - upgradeContent.upgradeApps = upgradeContent.content.stream(.map(c => c.getApp().appKey)); - if (upgradeContent.content.size() == 0) throw new BadRequestException("没有获取到可以升级的内容"); - - const instance: NiucloudUtils = NiucloudUtils.instance; - - // 获取下载token - const actionQuery: Record = new const query: Record<>(); - actionQuery.put("data[product_key]", instance.productKey); - actionQuery.put("data[framework_version]", this.appConfig.version); - actionQuery.put("data[app_key]", upgradeContent.getContent().get(0).getApp().appKey); - actionQuery.put("data[version]", upgradeContent.getContent().get(0).version); - - const actionToken: Record = this.niucloudService.getActionToken("upgrade", actionQuery); - - Record = {}; - query.put("authorize_code", instance.code); - query.put("token", actionToken == null ? "" : actionToken.getStr("token")); - const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/upgrade").query(query).method(Method.GET).execute(); - - if (response.status != 200) throw new BadRequestException("升级请求失败"); - - const body: Record = JsonUtils.parseObject(response.body()); - if (body.getInt("code").equals(0)) throw new Error(body.getStr("msg")); - - const vo: UpgradeTaskVo = new UpgradeTaskVo(); - vo.envType = this.appConfig.envType; - vo.upgradeTime = DateUtil.now(); - vo.addon = actionQuery.get("data[app_key]"); - vo.key = RandomUtil.randomString(10); - vo.upgrade = actionQuery; - vo.step = "requestUpgrade"; - vo.executed.add("requestUpgrade"); - vo.getLog().add(vo.steps.get("requestUpgrade").title); - vo.params = query; - vo.upgradeContent = upgradeContent; - - if (!upgradeParam.isNeedBackup) { - vo.steps.remove("backupCode"); - vo.steps.remove("backupSql"); - } - if (!upgradeParam.isNeedCloudbuild) { - vo.steps.remove("cloudBuild"); - vo.steps.remove("gteCloudBuildLog"); - } - - // 添加升级记录 - const content: JSONArray = new JSONArray(); - upgradeContent.content.stream().forEach(i => { - const item: Record = new Record(); - item.set("app_key", i.getApp().appKey); - item.putByPath("app.name", i.getApp().appName); - item.set("version", i.version); - item.set("upgrade_version", i.upgradeVersion); - content.put(item); - }); - const record: SysUpgradeRecordsParam = new SysUpgradeRecordsParam(); - record.upgradeKey = vo.key; - record.status = UpgradeRecordStatusEnum.STATUS_READY.status; - record.content = content.toString(); - this.sysUpgradeRecordsService.push(record); - - setUpgradeTaskCache(vo); - return vo; + async upgrade(upgradeParam: UpgradeParamDto): Promise { + // TODO: 实现upgrade业务逻辑 + return null; } /** * getUpgradeTask */ async getUpgradeTask(): Promise { - const cache: Cached = CacheFactory.cacheOperator; - const data: Object = cache.get("upgrade"); - if (data == null) return null; - return Object.assign(new UpgradeTaskVo(), JsonUtils.parseObject(data)) /* TODO: 检查UpgradeTaskVo构造函数 */; + // TODO: 实现getUpgradeTask业务逻辑 + return null; } /** * setUpgradeTaskCache */ - async setUpgradeTaskCache(vo: UpgradeTaskVo): Promise { + async setUpgradeTaskCache(vo: UpgradeTaskVoDto): Promise { const cache: Cached = CacheFactory.cacheOperator; cache.put("upgrade", JsonUtils.parseObject(vo).toString()); } @@ -226,268 +65,69 @@ export class UpgradeServiceImplService { * clearUpgradeTask */ async clearUpgradeTask(delayed: number): Promise { - if (delayed > 0) { - try { - Thread.sleep(delayed * 1000); - } catch (e) { - } - } - const cache: Cached = CacheFactory.cacheOperator; - cache.remove("upgrade"); + // TODO: 实现clearUpgradeTask业务逻辑 + return null; } /** * execute */ async execute(): Promise { - const vo: UpgradeTaskVo = this.upgradeTask; - if (vo == null) return; - - if (CommonUtils.isNotEmpty(vo.status) && vo.status === "restarting") return; - - const steps: string[] = vo.steps.keySet().stream(); - const step: string = steps.indexOf(vo.step) < steps.length - 1 ? steps.get(steps.indexOf(vo.step) + 1) : ""; - - if ((step && step.length > 0)) { - if (!vo.executed.includes(step)) { - vo.executed.add(step); - vo.getLog().add(vo.getSteps().get(step).title); - } - try { - const param: Record = null; - param = (Record) dynamicMethodCall(step, vo); - if (param != null) { - vo.params = param; - } else { - vo.step = step; - vo.params = null; - vo.addon = vo.upgradeApps.get(0); - } - setUpgradeTaskCache(vo); - } catch (e) { - if (e.message.includes("队列")) { - throw e; - } else { - vo.step = step; - vo.getError().add(e.message); - setUpgradeTaskCache(vo); - this.upgradeErrorHandle(vo); - console.error(e); - console.log("升级异常."); - } - } - } + // TODO: 实现execute业务逻辑 + return null; } /** * coverCode */ - async coverCode(vo: UpgradeTaskVo): Promise { - if (this.appConfig.envType === "dev") { - vo.getUpgradeContent().content.forEach(item => { - const appKey: string = item.getApp().appKey; - const codeDir: string = upgradeDir(vo + "/download/" + appKey); - - // 判断目录存在并且不为空 - if (fs.existsSync(codeDir) && fs.readdirSync(codeDir).length > 0) { - item.versionList.stream().collect(/* Collectors已删除 */.collectingAndThen( - , - l => { - Collections.reverse(l); - return l; - })).forEach(version => { - // 如果是框架 - const rootDir: string = null; - if (appKey === this.appConfig.appKey) { - rootDir = this.appConfig.projectRoot; - } else { - rootDir = this.appConfig.webRootDownAddon, appKey; - } - - // 处理文件变更记录 - const changeRecord: string = codeDir, version.getVersionNo( + ".txt"); - if (fs.existsSync(changeRecord)) { - // 移除新版本删除的文件 - const change: string[] = null; - try { - change = [fs.readFileSync(changeRecord, "UTF-8"].split("\n")); - } catch (e) { - throw new Error(e); - } - if (CommonUtils.isNotEmpty(change)) { - for (const line of change) { - const content: string[] = line.split(" "); - if (content[0].equals("-")) { - (rootDir, content[2]).deleteOnExit(); - } - } - } - } - - const changeDir: string = codeDir, version.versionNo; - if (fs.existsSync(changeDir)) { - try { - FileUtils.copyDirectory(changeDir, rootDir); - } catch (e) { - throw new Error(e); - } - } - }); - - const projectDir: string = this.appConfig.projectNiucloudAddon, appKey; - if (fs.existsSync(projectDir)) { - try { - FileUtils.copyDirectory(this.appConfig.webRootDownAddon + appKey + "/java", projectDir); - } catch (e) { - throw new Error(e); - } - } - - // 合并resource - try { - FileUtils.copyDirectory(this.appConfig.webRootDownAddon + appKey + "/resource", this.appConfig.webRootDownResource, appKey); - } catch (e) { - } - } - }); - - vo.status = "restarting"; - setUpgradeTaskCache(vo); - } else { - vo.step = "coverCode"; - vo.status = "restarting"; - setUpgradeTaskCache(vo); - fs.writeFileSync(upgradeDir(vo, "upgrade.json"), JsonUtils.parseObject(vo.upgradeContent).toString(), "UTF-8"); - PipeNameUtils.noticeBootRestartByUpgrade(this.appConfig.applicationName, vo.key, vo.getUpgradeContent().getLastBackup().backupKey); - Thread.sleep(3000); - } + async coverCode(vo: UpgradeTaskVoDto): Promise { + // TODO: 实现coverCode业务逻辑 + return null; } /** * handleVue */ - async handleVue(vo: UpgradeTaskVo): Promise { - const envs: WebAppEnvs = this.appConfig; - - for (const key of vo.upgradeApps) { - if (key !== this.appConfig.appKey) { - const sourceDir: string = envs.webRootDownAddon + key; - if (fs.existsSync(sourceDir)) { - addonInstallTools.installVue(key); - } - } - } - - const addons: string[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .select("`key`") - .eq("status", AddonStatusEnum.ON.code)) - .stream().map(i => i.key) - ; - - // 处理pages.json - if (fs.existsSync(envs.webRoot + "uni-app/")) addonInstallTools.handlePagesJson(envs.webRoot + "/uni-app/", addons); - if (fs.existsSync(envs.webRootDownRuntime + "uni-app/")) addonInstallTools.handlePagesJson(envs.webRootDownRuntime + "/uni-app/", addons); - - // 处理组件 - if (fs.existsSync(envs.webRoot + "uni-app/")) addonInstallTools.handleUniappComponent(envs.webRoot + "/uni-app/", addons); - if (fs.existsSync(envs.webRootDownRuntime + "uni-app/")) addonInstallTools.handleUniappComponent(envs.webRootDownRuntime + "/uni-app/", addons); - - // 处理语言包 - for (const addon of addons) { - addonInstallTools.addon = addon; - if (fs.existsSync(envs.webRoot + "uni-app/")) addonInstallTools.mergeUniappLocale(envs.webRoot + "/uni-app/", "install"); - if (fs.existsSync(envs.webRootDownRuntime + "uni-app/")) addonInstallTools.mergeUniappLocale(envs.webRootDownRuntime + "/uni-app/", "install"); - - addonInstallTools.installDepend(addon); - } + async handleVue(vo: UpgradeTaskVoDto): Promise { + // TODO: 实现handleVue业务逻辑 + return null; } /** * cloudBuild */ - async cloudBuild(vo: UpgradeTaskVo): Promise { + async cloudBuild(vo: UpgradeTaskVoDto): Promise { this.cloudBuildService.build("build"); } /** * upgradeComplete */ - async upgradeComplete(vo: UpgradeTaskVo): Promise { - vo.status = "success"; - - for (const key of vo.upgradeApps) { - if (key !== this.appConfig.appKey) { - const addon: Addon = Object.assign(new Addon(), this.coreAddonService.getAddonConfig(key)) /* TODO: 检查Addon构造函数 */; - this.coreAddonService.set(addon); - } - } - - const backupDir: string = upgradeDir(vo); - FileUtil.writeUtf8String(JSONUtil.toJsonPrettyStr(JsonUtils.parseObject(vo)), backupDir, DateUtil.now( + ".log")); - - // 变更升级记录 - const editParam: SysUpgradeRecordsParam = new SysUpgradeRecordsParam(); - editParam.status = UpgradeRecordStatusEnum.STATUS_COMPLETE.status; - editParam.completeTime = Date.now( / 1000); - this.sysUpgradeRecordsService.edit(vo.key, editParam); - - this.upgradeService.clearUpgradeTask(5); - - this.cloudBuildService.clearBuildTask(); + async upgradeComplete(vo: UpgradeTaskVoDto): Promise { + // TODO: 实现upgradeComplete业务逻辑 + return null; } /** * upgradeErrorHandle */ - async upgradeErrorHandle(vo: UpgradeTaskVo): Promise { - LinkedHashMap steps = new LinkedHashMap(); - steps.put("rollback", new UpgradeTaskVo.Step("rollback", "升级失败开始回滚")); - - if (vo.executed.includes("coverCode")) { - steps.put("restoreCover", new UpgradeTaskVo.Step("restoreCover", "恢复变更文件")); - } - if (vo.executed.includes("handleUpgrade")) { - steps.put("restoreDatabase", new UpgradeTaskVo.Step("restoreDatabase", "恢复数据库")); - } - steps.put("restoreComplete", new UpgradeTaskVo.Step("restoreComplete", "回滚完成")); - - vo.steps = steps; - vo.step = "rollback"; - vo.log.add(steps.get("rollback").title); - vo.executed.add("rollback"); - - setUpgradeTaskCache(vo); - - // 变更升级记录 - const editParam: SysUpgradeRecordsParam = new SysUpgradeRecordsParam(); - editParam.status = UpgradeRecordStatusEnum.STATUS_FAIL.status; - editParam.failReason = JSONUtil.toJsonPrettyStr(vo.error); - this.sysUpgradeRecordsService.edit(vo.key, editParam); + async upgradeErrorHandle(vo: UpgradeTaskVoDto): Promise { + // TODO: 实现upgradeErrorHandle业务逻辑 + return null; } /** * operate */ async operate(operate: string): Promise { - const vo: UpgradeTaskVo = this.upgradeTask; - if (vo == null) return; - - switch (operate) { - case "local": - vo.step = "gteCloudBuildLog"; - setUpgradeTaskCache(vo); - break; - case "rollback": - vo.error.add("失败原因:一键云编译队列任务过多"); - upgradeErrorHandle(vo); - break; - } + // TODO: 实现operate业务逻辑 + return null; } /** * restoreComplete */ - async restoreComplete(vo: UpgradeTaskVo): Promise { + async restoreComplete(vo: UpgradeTaskVoDto): Promise { vo.status = "rollback"; this.upgradeService.clearUpgradeTask(5); } @@ -496,27 +136,7 @@ export class UpgradeServiceImplService { * dynamicMethodCall */ async dynamicMethodCall(methodName: string, args: ): Promise { - try { - // 获取当前类的 Class 对象 - Class clazz = this.class; - // 获取方法对象 - java.lang.reflect.const method: Method = clazz.getMethod(methodName, extractParameterTypes(args)); - // 调用方法 - console.log("dynamicMethodCall method:" + methodName); - const result: Object = method.invoke(this, args); - if (method.returnType == void.class) { - return null; - } else { - return result; - } - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - if (e instanceof InvocationTargetException) { - ((InvocationTargetException) e).console.error(cause); - throw new BadRequestException(((InvocationTargetException) e).getCause().message); - } else { - console.error(e); - } - return null; - } + // TODO: 实现dynamicMethodCall业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upload/impl/storage-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upload/impl/storage-config-service-impl.service.ts index a15d5ecb..035b1a1d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upload/impl/storage-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/upload/impl/storage-config-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { CoreStorAgeConfigVoDto } from '../../../../dtos/core/upload/vo/core-stor-age-config-vo.dto'; @Injectable() @@ -22,92 +22,15 @@ export class StorageConfigServiceImplService { * getStorageConfig */ async getStorageConfig(storageType: string): Promise { - const storageTypeList: Record = UploadLoader.type; - if (ObjectUtil.isNull(storageTypeList.get(storageType))) { - throw new AdminException("OSS_TYPE_NOT_EXIST"); - } - /** - * 获取配置 - */ - const storageConfig: Record = this.coreStorageService.getStorageConfig(this.requestContext.siteId); - - const storageValues: Record = JsonUtils.parseObject(storageTypeList.get(storageType)); - const coreStorAgeConfigVo: CoreStorAgeConfigVo = new CoreStorAgeConfigVo(); - coreStorAgeConfigVo.storageType = storageType; - coreStorAgeConfigVo.isUse = storageType === storageConfig.get("default" ? StorageEnum.ON.code : StorageEnum.OFF.code); - coreStorAgeConfigVo.name = storageValues.get("name".toString()); - coreStorAgeConfigVo.component = storageValues.get("component".toString()); - - const encryptParams: JSONArray = ObjectUtil.defaultIfNull(storageValues.getJSONArray("encrypt_params"), new JSONArray()); - - const params: Record = new Record(); - if (ObjectUtil.isNotNull(storageValues.get("params"))) { - const valuesParams: Record = JsonUtils.parseObject(storageValues.get("params")); - const configParams: Record = new Record(); - if (ObjectUtil.isNotNull(storageConfig.get(storageType))) { - configParams = JsonUtils.parseObject(storageConfig.get(storageType)); - } - for (const paramsKey of valuesParams.keySet()) { - const itemParam: Record = new Record(); - const paramsValues: string = valuesParams.get(paramsKey).toString(); - itemParam.set("name", paramsValues); - const value: string = configParams.getStr(paramsKey); - if (encryptParams.includes(paramsKey) && CommonUtils.isNotEmpty(value)) { - value = StringUtils.hide(value, 0, value.length()); - } - itemParam.set("value", value); - params.set(paramsKey, itemParam); - } - } - coreStorAgeConfigVo.params = params; - return coreStorAgeConfigVo; + // TODO: 实现getStorageConfig业务逻辑 + return null; } /** * setStorageConfig */ async setStorageConfig(storageType: string, storageData: JSONObject): Promise { - const storageTypeList: Record = UploadLoader.type; - if (ObjectUtil.isNull(storageTypeList.get(storageType))) { - throw new AdminException("云存储类型不存在"); - } - if (storageType !== FileEnum.LOCAL.code) { - const domain: string = storageData.getStr("domain"); - if (domain.indexOf("http://") < 0 && domain.indexOf("https://") < 0) { - throw new AdminException("空间域名请补全http://或https://"); - } - } - /** - * 获取配置 - */ - const storageConfig: Record = this.coreStorageService.getStorageConfig(this.requestContext.siteId); - - const storageValues: Record = JsonUtils.parseObject(storageTypeList.get(storageType)); - if (storageData.getInt("is_use") == 1) { - storageConfig.set("default", storageType); - } else { - if (storageData.getStr("storage_type").equals(storageConfig.get("default"))) { - storageConfig.set("default", ""); - } - } - - const configParams: Record = new Record(); - if (ObjectUtil.isNotNull(storageConfig.get(storageType))) { - configParams = JsonUtils.parseObject(storageConfig.get(storageType)); - } - - if (ObjectUtil.isNotNull(storageValues.get("params"))) { - const valuesParams: Record = JsonUtils.parseObject(storageValues.get("params")); - for (const paramsKey of valuesParams.keySet()) { - const value: string = storageData.getStr(paramsKey); - if (!value.includes("*")) { - configParams.set(paramsKey, value); - } - } - } - - storageConfig.set(storageType, configParams); - - this.coreConfigService.config = this.requestContext.siteId, "STORAGE", storageConfig; + // TODO: 实现setStorageConfig业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verifier-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verifier-service-impl.service.ts index 3a243f11..76a63b48 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verifier-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verifier-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { VerifierListVoDto } from '../../../../dtos/admin/verify/vo/verifier-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberBriefInfoVoDto } from '../../../../dtos/admin/member/vo/member-brief-info-vo.dto'; @@ -12,88 +12,38 @@ import { VerifierVoDto } from '../../../../dtos/admin/verify/vo/verifier-vo.dto' @Injectable() export class VerifierServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: VerifierSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "v".innerJoin("?_member m ON v.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg"); - queryWrapper.eq("v.site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - [VerifierVo[], number] iPage = verifierMapper.selectJoinPage(new Page<>(page, limit), VerifierVo.class, queryWrapper); - const list: VerifierListVo[] = []; - for (const item of iPageRecords) { - const vo: VerifierListVo = new VerifierListVo(); - Object.assign(vo, item); - - const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(memberInfoVo, item); - vo.member = memberInfoVo; - - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: VerifierSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * all */ async all(): Promise { - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "v".innerJoin("?_member m ON v.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg"); - queryWrapper.eq("v.site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - const verifierList: VerifierVo[] = verifierMapper.selectJoinList(VerifierVo.class, queryWrapper); - - const list: VerifierListVo[] = []; - for (const item of verifierList) { - const vo: VerifierListVo = new VerifierListVo(); - Object.assign(vo, item); - - const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(memberInfoVo, item); - vo.member = memberInfoVo; - - list.push(vo); - } - return list; + // TODO: 实现all业务逻辑 + return null; } /** * add */ - async add(addParam: VerifierParam): Promise { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("member_id", addParam.memberId).eq("site_id", this.requestContext.siteId)); - if (!member) throw new BadRequestException("会员不存在"); - - const verifier: Verifier = this.verifierRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("member_id", addParam.memberId).eq("site_id", this.requestContext.siteId)); - if (CommonUtils.isNotEmpty(verifier)) return; - - const model: Verifier = new Verifier(); - model.siteId = this.requestContext.siteId; - model.memberId = addParam.memberId; - model.createTime = Date.now( / 1000); - model.verifyType = JSONUtil.parseArray(addParam.verifyType.toString()); - - this.verifierRepository.save(model); + async add(addParam: VerifierParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - this.verifierRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId)); + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verify-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verify-service-impl.service.ts index 5cad8211..80c1dadd 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verify-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/verify/impl/verify-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { VerifyListVoDto } from '../../../../dtos/admin/verify/vo/verify-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberBriefInfoVoDto } from '../../../../dtos/admin/member/vo/member-brief-info-vo.dto'; @@ -12,78 +12,22 @@ import { VerifyVoDto } from '../../../../dtos/admin/verify/vo/verify-vo.dto'; @Injectable() export class VerifyServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: VerifySearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "v".innerJoin("?_member m ON v.verifier_member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg"); - queryWrapper.eq("v.site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - if (CommonUtils.isNotEmpty(searchParam.code)) queryWrapper.eq("code", searchParam.code); - if (CommonUtils.isNotEmpty(searchParam.type)) queryWrapper.eq("type", searchParam.type); - if (CommonUtils.isNotEmpty(searchParam.verifierMemberId)) queryWrapper.eq("verifier_member_id", searchParam.verifierMemberId); - if (CommonUtils.isNotEmpty(searchParam.createTime)) QueryMapperUtils.buildByTime(queryWrapper, "v.create_time", searchParam.createTime); - if (CommonUtils.isNotEmpty(searchParam.orderId)){ - queryWrapper.like("data", searchParam.orderId); - } - - [VerifyVo[], number] iPage = verifyMapper.selectJoinPage(new Page<>(page, limit), VerifyVo.class, queryWrapper); - const list: VerifyListVo[] = []; - for (const item of iPageRecords) { - const vo: VerifyListVo = new VerifyListVo(); - Object.assign(vo, item); - - const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(memberInfoVo, item); - vo.member = memberInfoVo; - - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: VerifySearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * detail */ async detail(code: string): Promise { - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "v".innerJoin("?_member m ON v.verifier_member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg"); - queryWrapper.eq("v.site_id", this.requestContext.siteId); - queryWrapper.eq("v.code", code); - - const model: VerifyVo = verifyMapper.selectJoinOne(VerifyVo.class, queryWrapper); - if (!model) throw new BadRequestException("数据不存在"); - - const vo: VerifyInfoVo = new VerifyInfoVo(); - Object.assign(vo, model); - - const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(memberInfoVo, model); - vo.member = memberInfoVo; - - VerifyInfoEventDefiner.const event: VerifyInfoEvent = new VerifyInfoEventDefiner.VerifyInfoEvent(); - event.data = vo; - const list: VerifyInfoEventDefiner.VerifyInfoEventResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event); - if (!CollectionUtils.isEmpty(list)){ - for (VerifyInfoEventDefiner.VerifyInfoEventResult verifyInfoEventResult : list) { - if (verifyInfoEventResult != null && verifyInfoEventResult.dataMap != null && !verifyInfoEventResult.dataMap.isEmpty()){ - vo.verifyInfo = verifyInfoEventResult.dataMap; - break; - } - } - } - return vo; + // TODO: 实现detail业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-config-service-impl.service.ts index 556d30b2..dcd89350 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-config-service-impl.service.ts @@ -1,11 +1,11 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; -import { SetDomainParamDto } from '../../../../entities/set-domain-param.entity'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { SetDomainParam } from '../../../../entities/set-domain-param.entity'; import { WeappStaticInfoVoDto } from '../../../../dtos/admin/weapp/vo/weapp-static-info-vo.dto'; import { WechatStaticInfoVoDto } from '../../../../dtos/admin/wechat/vo/wechat-static-info-vo.dto'; -import { SceneDomainVoDto } from '../../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../../entities/scene-domain-vo.entity'; import { WeappConfigParamDto } from '../../../../dtos/core/weapp/param/weapp-config-param.dto'; import { WeappConfigVoDto } from '../../../../dtos/core/weapp/vo/weapp-config-vo.dto'; import { WechatConfigParamDto } from '../../../../dtos/core/wechat/param/wechat-config-param.dto'; @@ -22,32 +22,14 @@ export class WeappConfigServiceImplService { * getWeappConfig */ async getWeappConfig(): Promise { - const weappConfigVo: WeappConfigVo = this.coreWeappConfigService.getWeappConfig(this.requestContext.siteId); - weappConfigVo = staticInfo(weappConfigVo); - - if (weappConfigVo.isAuthorization === 1) { - try { - const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(this.requestContext.siteId); - const domainResult: WxOpenMaDomainResult = this.wxOpenMaService.domain; - if (domainResult.errcode === "0") { - WeappConfigVo.const domain: Domain = new WeappConfigVo.Domain(); - domain.requestdomain = String.join(";", domainResult.requestDomain); - domain.wsrequestdomain = String.join(";", domainResult.wsRequestDomain); - domain.uploaddomain = String.join(";", domainResult.uploadDomain); - domain.downloaddomain = String.join(";", domainResult.downloadDomain); - weappConfigVo.domain = domain; - } - } catch (e) { - } - } - - return weappConfigVo; + // TODO: 实现getWeappConfig业务逻辑 + return null; } /** * setWeappConfig */ - async setWeappConfig(weappConfigParam: WeappConfigParam): Promise { + async setWeappConfig(weappConfigParam: WeappConfigParamDto): Promise { this.coreWeappConfigService.weappConfig = this.requestContext.siteId, weappConfigParam; } @@ -55,45 +37,23 @@ export class WeappConfigServiceImplService { * setDomain */ async setDomain(param: SetDomainParam): Promise { - try { - const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(this.requestContext.siteId); - this.wxOpenMaService.modifyDomain( - "set", - CommonUtils.isNotEmpty(param.requestdomain) ? [param.getRequestdomain(].split(";")) : [], - CommonUtils.isNotEmpty(param.wsrequestdomain)? [param.getWsrequestdomain(].split(";")) : [], - CommonUtils.isNotEmpty(param.uploaddomain)? [param.getUploaddomain(].split(";")) : [], - CommonUtils.isNotEmpty(param.downloaddomain)? [param.getDownloaddomain(].split(";")) : [], - CommonUtils.isNotEmpty(param.tcpdomain)? [param.getTcpdomain(].split(";")) : [], - CommonUtils.isNotEmpty(param.udpdomain)? [param.getUdpdomain(].split(";")) : [] - ); - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现setDomain业务逻辑 + return null; } /** * getPrivacySetting */ async getPrivacySetting(): Promise { - try { - const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(this.requestContext.siteId); - return this.wxOpenMaService.privacyService.getPrivacySetting(2); - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现getPrivacySetting业务逻辑 + return null; } /** * setPrivacySetting */ async setPrivacySetting(privacySetting: JSONObject): Promise { - try { - const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(this.requestContext.siteId); - const setPrivacySetting: SetPrivacySetting = Object.assign(new SetPrivacySetting(), privacySetting) /* TODO: 检查SetPrivacySetting构造函数 */; - setPrivacySetting.privacyVer = 2; - this.wxOpenMaService.privacyService.privacySetting = setPrivacySetting; - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现setPrivacySetting业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-template-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-template-service-impl.service.ts index 61a91002..b223a0e3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-template-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-template-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { WeappTemplateSyncParamDto } from '../../../../dtos/admin/weapp/param/weapp-template-sync-param.dto'; import { AddonNoticeListVoDto } from '../../../../dtos/core/notice/vo/addon-notice-list-vo.dto'; import { NoticeInfoVoDto } from '../../../../dtos/core/notice/vo/notice-info-vo.dto'; @@ -9,7 +9,6 @@ import { NoticeInfoVoDto } from '../../../../dtos/core/notice/vo/notice-info-vo. @Injectable() export class WeappTemplateServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -17,35 +16,15 @@ export class WeappTemplateServiceImplService { * list */ async list(): Promise { - const addonNoticeList: AddonNoticeListVo[] = this.coreNoticeService.getAddonList(this.requestContext.siteId); - - for (const item of addonNoticeList) { - const filter: NoticeInfoVo[] = []; - for (const noticeItem of item.notice) { - if (noticeItem.support_type.indexOf("weapp") != -1) { - filter.push(noticeItem); - } - } - item.notice = filter; - } - return addonNoticeList; + // TODO: 实现list业务逻辑 + return []; } /** * sync */ - async sync(param: WeappTemplateSyncParam): Promise { - const list: Record = this.coreNoticeService.getList(this.requestContext.siteId, param.keys); - const keys: string[] = [param.getKeys(]); - - for (const item of list.values()) { - if (item.weapp != null && (keys.length == 0 || keys.includes(item.key))) { - if (item.weappTemplateId.length() > 0) { - deleteTemplate(item.weappTemplateId); - } - const templateId: string = addTemplate(item.weapp.get("tid").toString(), item.weapp.getJSONArray("kid_list").toList(number.class), item.weapp.get("scene_desc").toString()); - this.coreNoticeService.edit(this.requestContext.siteId, item.key, new Record().set("weapp_template_id", templateId)); - } - } + async sync(param: WeappTemplateSyncParamDto): Promise { + // TODO: 实现sync业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-version-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-version-service-impl.service.ts index 509595b7..7d57988b 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-version-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/weapp/impl/weapp-version-service-impl.service.ts @@ -1,10 +1,8 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; -import * as fs from 'fs'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { WeappVersionListVoDto } from '../../../../dtos/admin/weapp/vo/weapp-version-list-vo.dto'; -import { HttpResponseDto } from '../dtos/http-response.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { DiyPageListVoDto } from '../../../../dtos/admin/diy/vo/diy-page-list-vo.dto'; import { WeappVersionAddParamDto } from '../../../../dtos/admin/weapp/param/weapp-version-add-param.dto'; @@ -14,126 +12,38 @@ import { WeappConfigVoDto } from '../../../../dtos/core/weapp/vo/weapp-config-vo @Injectable() export class WeappVersionServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - [WeappVersion[], number] iPage = this.weappVersionRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - - const list: WeappVersionListVo[] = []; - for (const item of iPageRecords) { - const vo: WeappVersionListVo = new WeappVersionListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page,limit, iPageTotal).data = list; + async list(pageParam: PageParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * add */ - async add(param: WeappVersionAddParam): Promise { - if (!RequestUtils.handler().scheme === "https") throw new BadRequestException("微信小程序请求地址只支持https请先配置ssl"); - - const weappConfig: WeappConfigVo = this.coreWeappConfigService.getWeappConfig(this.requestContext.siteId); - if (weappConfig.appId.isEmpty()) throw new BadRequestException("还没有配置微信小程序"); - if (weappConfig.uploadPrivateKey.isEmpty()) throw new BadRequestException("还没有配置微信小程序代码上传秘钥"); - - const uploading: WeappVersion = this.weappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId).eq("status", WeappVersionStatusEnum.APPLET_UPLOADING)); - if (uploading != null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作"); - - const lastVersion: WeappVersion = this.weappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId).orderByDesc("version_no").last("limit 1")); - const versionNo: number = lastVersion == null ? 1 : lastVersion.versionNo + 1; - - const addons: string[] = this.coreSiteService.getAddonKeysBySiteId(this.requestContext.siteId); - - const uploadParam: WeappUploadParam = new WeappUploadParam(); - uploadParam.baseUrl = RequestUtils.getDomain(true); - uploadParam.appId = weappConfig.appId; - uploadParam.uploadPrivateKey = weappConfig.uploadPrivateKey; - uploadParam.siteId = this.requestContext.siteId; - uploadParam.version = "1.0." + versionNo; - uploadParam.desc = param.desc; - uploadParam.addon = addons; - const taskKey: string = this.coreWeappCloudService.uploadWeapp(uploadParam); - - const model: WeappVersion = new WeappVersion(); - model.siteId = this.requestContext.siteId; - model.version = uploadParam.version; - model.versionNo = versionNo; - model.desc = param.desc; - model.taskKey = taskKey; - model.createTime = Date.now( / 1000); - - this.weappVersionRepository.save(model); + async add(param: WeappVersionAddParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * getWeappCompileLog */ async getWeappCompileLog(key: string): Promise { - const log: Record = this.coreWeappCloudService.getWeappCompileLog(key); - if (log != null) { - const data: JSONArray = ObjectUtil.defaultIfNull(log.getByPath("data.0", JSONArray.class), new JSONArray()); - if (data.length > 0) { - const last: Record = data.getRecord(data.length - 1); - if (last.getInt("code", -1).equals(0)) { - const model: WeappVersion = new WeappVersion(); - model.status = WeappVersionStatusEnum.APPLET_UPLOAD_FAIL.status; - model.failReason = last.getStr("msg", ""); - model.updateTime = Date.now( / 1000); - - this.weappVersionRepository.save(model, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("task_key", key)); - return log; - } - if (last.getInt("percent", 0).equals(100)) { - const model: WeappVersion = new WeappVersion(); - model.status = WeappVersionStatusEnum.APPLET_UPLOAD_SUCCESS.status; - model.updateTime = Date.now( / 1000); - - this.weappVersionRepository.save(model, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("task_key", key)); - } - } - } - return log; + // TODO: 实现getWeappCompileLog业务逻辑 + return null; } /** * getWeappPreviewImage */ async getWeappPreviewImage(): Promise { - const status: number[] = new number[] { WeappVersionStatusEnum.APPLET_AUDITING.status, WeappVersionStatusEnum.APPLET_UPLOAD_SUCCESS.status }; - const version: WeappVersion = this.weappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .in("status", status) - .orderByDesc("id") - .last("limit 1") - ); - if (version == null) return ""; - - if (version.fromType === "cloud_build") { - return this.coreWeappCloudService.weappPreviewImage; - } else { - try { - const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(this.requestContext.siteId); - const qrcode: string = this.wxOpenMaService.getTestQrcode("", {}); - if (fs.existsSync(qrcode)) { - return "data:image/jpeg;base64," + Base64.encoder.encodeToString(FileUtils.readFileToByteArray(qrcode)); - } - return ""; - } catch (e) { - return ""; - } - } + // TODO: 实现getWeappPreviewImage业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-config-service-impl.service.ts index 75ffd81f..71272323 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-config-service-impl.service.ts @@ -8,7 +8,7 @@ import { WechatReplySearchParamDto } from '../../../../dtos/admin/wechat/param/w import { WechatReplyInfoVoDto } from '../../../../dtos/admin/wechat/vo/wechat-reply-info-vo.dto'; import { WechatReplyListVoDto } from '../../../../dtos/admin/wechat/vo/wechat-reply-list-vo.dto'; import { WechatStaticInfoVoDto } from '../../../../dtos/admin/wechat/vo/wechat-static-info-vo.dto'; -import { SceneDomainVoDto } from '../../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../../entities/scene-domain-vo.entity'; import { WechatConfigParamDto } from '../../../../dtos/core/wechat/param/wechat-config-param.dto'; import { WechatConfigVoDto } from '../../../../dtos/core/wechat/vo/wechat-config-vo.dto'; @@ -29,7 +29,7 @@ export class WechatConfigServiceImplService { /** * setWechatConfig */ - async setWechatConfig(wechatConfigParam: WechatConfigParam): Promise { + async setWechatConfig(wechatConfigParam: WechatConfigParamDto): Promise { this.coreWechatConfigService.wechatConfig = this.requestContext.siteId, wechatConfigParam; } @@ -37,16 +37,7 @@ export class WechatConfigServiceImplService { * staticInfo */ async staticInfo(): Promise { - const sysUrl: SceneDomainVo = this.sysConfigService.url; - const request: HttpServletRequest = RequestUtils.handler(); - - const vo: WechatStaticInfoVo = new WechatStaticInfoVo(); - vo.serveUrl = request.scheme + "://" + request.serverName + "/api/wechat/serve/" + this.requestContext.siteId; - vo.businessDomain = sysUrl.wapDomain; - vo.jsSecureDomain = sysUrl.wapDomain; - vo.webAuthDomain = sysUrl.wapDomain; - vo.encryptionType = WechatEncryptionTypeEnum.map; - - return vo; + // TODO: 实现staticInfo业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-media-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-media-service-impl.service.ts index bb718310..27729b03 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-media-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-media-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { WechatMediaListVoDto } from '../../../../dtos/admin/wechat/vo/wechat-media-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { AttachmentUploadParamDto } from '../../../../dtos/admin/sys/param/attachment-upload-param.dto'; @@ -12,139 +12,38 @@ import { WechatMediaInfoVoDto } from '../../../../dtos/admin/wechat/vo/wechat-me @Injectable() export class WechatMediaServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * list */ - async list(pageParam: PageParam, searchParam: WechatMediaSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc("id"); - - if (CommonUtils.isNotEmpty(searchParam.type)) queryWrapper.eq("type", searchParam.type); - - [WechatMedia[], number] iPage = this.wechatMediaRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: WechatMediaListVo[] = []; - for (const item of iPageRecords) { - const vo: WechatMediaListVo = new WechatMediaListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: WechatMediaSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * image */ async image(file: MultipartFile): Promise { - const param: AttachmentUploadParam = new AttachmentUploadParam(); - param.siteId = this.requestContext.siteId; - param.storageType = "local"; - param.file = file; - param.attType = "image"; - param.dir = "attachment/image/" + param.siteId + "/" + (new SimpleDateFormat("yyyyMM/dd".format(new Date())) + "/"); - const uploadRes: AttachmentUploadVo = this.coreUploadService.upload(param); - - const wxMaterial: WxMpMaterial = new WxMpMaterial(); - wxMaterial.file = this.appConfig.webRootDownResource + uploadRes.url; - wxMaterial.name = param.newFilename; - - try { - const res: WxMpMaterialUploadResult = WechatUtils.mp(this.requestContext.getSiteId()).getMaterialService().materialFileUpload(WechatMediaTypeEnum.IMAGE.type, wxMaterial); - - const model: WechatMedia = new WechatMedia(); - model.siteId = this.requestContext.siteId; - model.type = WechatMediaTypeEnum.IMAGE.type; - model.value = uploadRes.url; - model.mediaId = res.mediaId; - model.createTime = Date.now( / 1000); - this.wechatMediaRepository.save(model); - - const vo: WechatMediaInfoVo = new WechatMediaInfoVo(); - Object.assign(vo, model); - return vo; - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现image业务逻辑 + return null; } /** * video */ async video(file: MultipartFile): Promise { - const param: AttachmentUploadParam = new AttachmentUploadParam(); - param.siteId = this.requestContext.siteId; - param.storageType = "local"; - param.file = file; - param.attType = "video"; - param.dir = "attachment/video/" + param.siteId + "/" + (new SimpleDateFormat("yyyyMM/dd".format(new Date())) + "/"); - const uploadRes: AttachmentUploadVo = this.coreUploadService.upload(param); - - const wxMaterial: WxMpMaterial = new WxMpMaterial(); - wxMaterial.file = this.appConfig.webRootDownResource + uploadRes.url; - wxMaterial.name = param.newFilename; - wxMaterial.videoIntroduction = (new SimpleDateFormat("yyyyMM/dd".format(new Date())) + "上传"); - wxMaterial.videoTitle = param.newFilename; - - try { - const res: WxMpMaterialUploadResult = WechatUtils.mp(this.requestContext.getSiteId()).getMaterialService().materialFileUpload(WechatMediaTypeEnum.VIDEO.type, wxMaterial); - - const model: WechatMedia = new WechatMedia(); - model.siteId = this.requestContext.siteId; - model.type = WechatMediaTypeEnum.VIDEO.type; - model.value = uploadRes.url; - model.mediaId = res.mediaId; - model.createTime = Date.now( / 1000); - this.wechatMediaRepository.save(model); - - const vo: WechatMediaInfoVo = new WechatMediaInfoVo(); - Object.assign(vo, model); - return vo; - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现video业务逻辑 + return null; } /** * syncNews */ async syncNews(offset: number): Promise { - try { - const count: number = 20; - - const result: WxMpMaterialNewsBatchGetResult = WechatUtils.mp(this.requestContext.getSiteId()).materialService.materialNewsBatchGet(offset, count); - if (result.itemCount > 0) { - for (WxMpMaterialNewsBatchGetResult.WxMaterialNewsBatchGetNewsItem item: result.items) { - const media: WechatMedia = this.wechatMediaRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("media_id", item.mediaId)); - - if (CommonUtils.isNotEmpty(media)) { - media.value = JSONUtil.toJsonStr(item.content); - media.updateTime = Date.now( / 1000); - wechatMediaMapper.updateById(media); - } else { - const model: WechatMedia = new WechatMedia(); - model.siteId = this.requestContext.siteId; - model.type = WechatMediaTypeEnum.VIDEO.type; - model.value = JSONUtil.toJsonStr(item.content); - model.mediaId = item.mediaId; - model.createTime = Date.now( / 1000); - this.wechatMediaRepository.save(model); - } - } - } - if (offset < Math.ceil(result.totalCount / count)) { - offset++; - this.syncNews(offset); - } - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现syncNews业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-menu-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-menu-service-impl.service.ts index 9131d776..03c40198 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-menu-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-menu-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { WechatStaticInfoVoDto } from '../../../../dtos/admin/wechat/vo/wechat-static-info-vo.dto'; import { WechatConfigParamDto } from '../../../../dtos/core/wechat/param/wechat-config-param.dto'; import { WechatConfigVoDto } from '../../../../dtos/core/wechat/vo/wechat-config-vo.dto'; @@ -24,13 +24,7 @@ export class WechatMenuServiceImplService { * edit */ async edit(data: JSONArray): Promise { - try{ - const params: Record = {}; - params.put("button", data); - WechatUtils.mp(this.requestContext.getSiteId()).menuService.menuCreate(JsonUtils.parseObject(params).toString()) ; - this.coreConfigService.config = this.requestContext.siteId, "WECHAT_MENU", data; - }catch (e){ - throw new AdminException(e.message); - } + // TODO: 实现edit业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-reply-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-reply-service-impl.service.ts index 56eb4ca6..ffc5c3a2 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-reply-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-reply-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { WechatReplyListVoDto } from '../../../../dtos/admin/wechat/vo/wechat-reply-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { WechatDefaultReplyParamDto } from '../../../../dtos/admin/wechat/param/wechat-default-reply-param.dto'; @@ -21,78 +20,33 @@ export class WechatReplyServiceImplService { /** * getKeywordList */ - async getKeywordList(pageParam: PageParam, searchParam: WechatReplySearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.type); - queryWrapper.eq("site_id", this.requestContext.siteId); - queryWrapper.orderByDesc(["sort", "id"]); - - if (CommonUtils.isNotEmpty(searchParam.keyword)) queryWrapper.like("keyword", searchParam.keyword); - if (CommonUtils.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam)); - - [WechatReply[], number] iPage = this.wechatReplyRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: WechatReplyListVo[] = []; - for (const item of iPageRecords) { - const vo: WechatReplyListVo = new WechatReplyListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async getKeywordList(pageParam: PageParamDto, searchParam: WechatReplySearchParamDto): Promise { + // TODO: 实现getKeywordList业务逻辑 + return null; } /** * getKeywordInfo */ async getKeywordInfo(id: number): Promise { - const model: WechatReply = this.wechatReplyRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.type)); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: WechatReplyInfoVo = new WechatReplyInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现getKeywordInfo业务逻辑 + return null; } /** * addKeyword */ - async addKeyword(addParam: WechatReplyParam): Promise { - const model: WechatReply = new WechatReply(); - model.name = path.basename(addParam); - model.siteId = this.requestContext.siteId; - model.keyword = addParam.keyword; - model.replyType = WechatReplyTypeEnum.REPLY_KEYWORD.type; - model.matchingType = addParam.matchingType; - model.content = addParam.content.toString(); - model.sort = addParam.sort; - model.createTime = Date.now( / 1000); - model.replyMethod = addParam.replyMethod; - this.wechatReplyRepository.save(model); + async addKeyword(addParam: WechatReplyParamDto): Promise { + // TODO: 实现addKeyword业务逻辑 + return null; } /** * editKeyword */ - async editKeyword(id: number, editParam: WechatReplyParam): Promise { - const model: WechatReply = this.wechatReplyRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId) - .eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.type)); - - if (!model) throw new BadRequestException("数据不存在!"); - - model.name = path.basename(editParam); - model.keyword = editParam.keyword; - model.matchingType = editParam.matchingType; - model.content = editParam.content.toString(); - model.sort = editParam.sort; - model.updateTime = Date.now( / 1000); - model.replyMethod = editParam.replyMethod; - wechatReplyMapper.updateById(model); + async editKeyword(id: number, editParam: WechatReplyParamDto): Promise { + // TODO: 实现editKeyword业务逻辑 + return null; } /** @@ -105,24 +59,9 @@ export class WechatReplyServiceImplService { /** * editDefault */ - async editDefault(param: WechatDefaultReplyParam): Promise { - const queryWrapper: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("reply_type", WechatReplyTypeEnum.REPLY_DEFAULT.type) - .eq("site_id", this.requestContext.siteId); - - const reply: WechatReply = this.wechatReplyRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - if (CommonUtils.isEmpty(reply)) { - const model: WechatReply = new WechatReply(); - model.content = param.content.toString(); - model.siteId = this.requestContext.siteId; - model.replyType = WechatReplyTypeEnum.REPLY_DEFAULT.type; - this.wechatReplyRepository.save(model); - } else { - const model: WechatReply = new WechatReply(); - model.content = param.content.toString(); - this.wechatReplyRepository.save(model, queryWrapper); - } + async editDefault(param: WechatDefaultReplyParamDto): Promise { + // TODO: 实现editDefault业务逻辑 + return null; } /** @@ -135,32 +74,16 @@ export class WechatReplyServiceImplService { /** * editSubscribe */ - async editSubscribe(param: WechatSubscribeReplyParam): Promise { - const queryWrapper: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("reply_type", WechatReplyTypeEnum.REPLY_SUBSCRIBE.type) - .eq("site_id", this.requestContext.siteId); - - const reply: WechatReply = this.wechatReplyRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - if (CommonUtils.isEmpty(reply)) { - const model: WechatReply = new WechatReply(); - model.content = param.content.toString(); - model.siteId = this.requestContext.siteId; - model.replyType = WechatReplyTypeEnum.REPLY_DEFAULT.type; - this.wechatReplyRepository.save(model); - } else { - const model: WechatReply = new WechatReply(); - model.content = param.content.toString(); - this.wechatReplyRepository.save(model, queryWrapper); - } + async editSubscribe(param: WechatSubscribeReplyParamDto): Promise { + // TODO: 实现editSubscribe业务逻辑 + return null; } /** * delKeyword */ async delKeyword(id: number): Promise { - this.wechatReplyRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("id", id) - .eq("site_id", this.requestContext.siteId)); + // TODO: 实现delKeyword业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-template-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-template-service-impl.service.ts index d75fef1a..c50dcfaf 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-template-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wechat/impl/wechat-template-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { WechatFansParamDto } from '../../../../dtos/admin/wechat/param/wechat-fans-param.dto'; import { WechatFansSearchParamDto } from '../../../../dtos/admin/wechat/param/wechat-fans-search-param.dto'; @@ -14,7 +14,6 @@ import { NoticeInfoVoDto } from '../../../../dtos/core/notice/vo/notice-info-vo. @Injectable() export class WechatTemplateServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -22,35 +21,15 @@ export class WechatTemplateServiceImplService { * list */ async list(): Promise { - const addonNoticeList: AddonNoticeListVo[] = this.coreNoticeService.getAddonList(this.requestContext.siteId); - - for (const item of addonNoticeList) { - const filter: NoticeInfoVo[] = []; - for (const noticeItem of item.notice) { - if (noticeItem.support_type.indexOf("wechat") != -1) { - filter.push(noticeItem); - } - } - item.notice = filter; - } - return addonNoticeList; + // TODO: 实现list业务逻辑 + return []; } /** * sync */ - async sync(param: WechatTemplateSyncParam): Promise { - const list: Record = this.coreNoticeService.getList(this.requestContext.siteId, param.keys); - const keys: string[] = [param.getKeys(]); - - for (const item of list.values()) { - if (item.wechat != null && (keys.length == 0 || keys.includes(item.key))) { - if (item.weappTemplateId.length() > 0) { - deleteTemplate(item.weappTemplateId); - } - const templateId: string = addTemplate(item.wechat.get("temp_key").toString(), item.wechat.getJSONArray("keyword_name_list").toList(String.class)); - this.coreNoticeService.edit(this.requestContext.siteId, item.key, new Record().set("wechat_template_id", templateId)); - } - } + async sync(param: WechatTemplateSyncParamDto): Promise { + // TODO: 实现sync业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-config-service-impl.service.ts index 51c1ceb9..018f17ba 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-config-service-impl.service.ts @@ -22,21 +22,14 @@ export class OplatformConfigServiceImplService { * getWxOplatformConfig */ async getWxOplatformConfig(): Promise { - const jsonObject: Record = this.coreConfigService.getConfigValue(RequestUtils.defaultSiteId(), ConfigKeyEnum.basename(WXOPLATFORM)); - const configJsonObject: Record = new Record(); - configJsonObject.set("app_id", jsonObject.getStr("app_id", "")); - configJsonObject.set("app_secret", jsonObject.getStr("app_secret", "")); - configJsonObject.set("token", jsonObject.getStr("token", "")); - configJsonObject.set("aes_key", jsonObject.getStr("aes_key", "")); - configJsonObject.set("develop_app_id", jsonObject.getStr("develop_app_id", "")); - configJsonObject.set("develop_upload_private_key", jsonObject.getStr("develop_upload_private_key", "")); - return configJsonObject; + // TODO: 实现getWxOplatformConfig业务逻辑 + return null; } /** * setWxOplatformConfig */ - async setWxOplatformConfig(oplatformConfigParam: OplatformConfigParam): Promise { + async setWxOplatformConfig(oplatformConfigParam: OplatformConfigParamDto): Promise { this.coreOplatformConfigService.oplatformConfig = oplatformConfigParam; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-server-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-server-service-impl.service.ts index 6a993af7..4a774b3e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-server-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-server-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AuthorizationParamDto } from '../../../../dtos/admin/wxoplatform/param/authorization-param.dto'; import { OplatformServerParamDto } from '../../../../dtos/admin/wxoplatform/param/oplatform-server-param.dto'; import { WeappConfigVoDto } from '../../../../dtos/core/weapp/vo/weapp-config-vo.dto'; @@ -16,65 +16,16 @@ export class OplatformServerServiceImplService { /** * server */ - async server(param: OplatformServerParam): Promise { - if (!StringUtils.toLowerCase() === "aes", param.getEncryptType(.toLowerCase()) - || !WechatUtils.WxOpen().getWxOpenComponentService().checkSignature(param.timestamp, param.nonce, param.signature)) { - throw new IllegalArgumentException("非法请求"); - } - - const inMessage: WxOpenXmlMessage = WxOpenXmlMessage.fromEncryptedXml(param.requestBody, WechatUtils.WxOpen().wxOpenConfigStorage, param.timestamp, param.nonce, param.msgSignature); - log.info("开放平台授权事件推送消息:{}", inMessage); - - try { - WechatUtils.WxOpen().wxOpenComponentService.route(inMessage); - - // 授权取消 - if (inMessage.infoType === "unauthorized") { - this.oplatformService.clearAuthorization(inMessage.authorizerAppid); - } - // 更新授权 - if (inMessage.infoType === "updateauthorized") { - const siteId: number = this.coreOplatformService.getSiteIdByAuthorizerAppid(inMessage.authorizerAppid); - RequestUtils.siteId = siteId; - - const authorizationParam: AuthorizationParam = new AuthorizationParam(); - authorizationParam.authCode = inMessage.authorizationCode; - this.oplatformService.authorization(authorizationParam); - } - } catch (e) { - log.error("处理开放平台授权事件消息异常", e); - } + async server(param: OplatformServerParamDto): Promise { + // TODO: 实现server业务逻辑 + return null; } /** * message */ - async message(appid: string, param: OplatformServerParam): Promise { - if (!StringUtils.toLowerCase() === "aes", param.getEncryptType(.toLowerCase()) - || !WechatUtils.WxOpen().getWxOpenComponentService().checkSignature(param.timestamp, param.nonce, param.signature)) { - throw new IllegalArgumentException("非法请求"); - } - - const inMessage: WxMpXmlMessage = WxOpenXmlMessage.fromEncryptedMpXml(param.requestBody, WechatUtils.WxOpen().wxOpenConfigStorage, param.timestamp, param.nonce, param.msgSignature); - log.info("开放平台消息与事件推送消息:{}", inMessage); - - if (inMessage.msgType === WxConsts.XmlMsgType.EVENT) { - // 小程序审核成功 - if (inMessage.event === WxConsts.EventType.WEAPP_AUDIT_SUCCESS) { - weappAuditSuccess(inMessage); - } - // 小程序审核失败 - if (inMessage.event === WxConsts.EventType.WEAPP_AUDIT_FAIL) { - weappAuditFail(inMessage); - } - } - - const wxOpenMessageRouter: WxOpenMessageRouter = new WxOpenMessageRouter(WechatUtils.WxOpen()); - - const outMessage: WxMpXmlOutMessage = wxOpenMessageRouter.route(inMessage, appid); - if(outMessage != null){ - return WxOpenXmlMessage.wxMpOutXmlMessageToEncryptedXml(outMessage, WechatUtils.WxOpen().wxOpenConfigStorage); - } - return "success"; + async message(appid: string, param: OplatformServerParamDto): Promise { + // TODO: 实现message业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-service-impl.service.ts index 95027f9c..f3ec8e95 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/oplatform-service-impl.service.ts @@ -1,13 +1,13 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { OplatformRecordVoDto } from '../../../../dtos/admin/wxoplatform/vo/oplatform-record-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { PayListVoDto } from '../../../../dtos/core/pay/vo/pay-list-vo.dto'; import { AuthorizationParamDto } from '../../../../dtos/admin/wxoplatform/param/authorization-param.dto'; import { IOplatformAuthRecordParamDto } from '../../../../dtos/admin/wxoplatform/param/i-oplatform-auth-record-param.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; import { WeappConfigParamDto } from '../../../../dtos/core/weapp/param/weapp-config-param.dto'; import { WechatConfigParamDto } from '../../../../dtos/core/wechat/param/wechat-config-param.dto'; import { WxOpenAuthorizerInfoDto } from '../dtos/wx-open-authorizer-info.dto'; @@ -16,7 +16,6 @@ import { WxOpenAuthorizationInfoDto } from '../dtos/wx-open-authorization-info.d @Injectable() export class OplatformServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -24,92 +23,31 @@ export class OplatformServiceImplService { * createPreAuthorizationUrl */ async createPreAuthorizationUrl(): Promise { - try { - const url: string = RequestUtils.getDomain(true) + "/site/wxoplatform/callback"; - return WechatUtils.WxOpen().wxOpenComponentService.getPreAuthUrl(url); - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现createPreAuthorizationUrl业务逻辑 + return null; } /** * authorization */ - async authorization(param: AuthorizationParam): Promise { - try { - const queryAuth: WxOpenQueryAuthResult = WechatUtils.WxOpen().getWxOpenComponentService().getQueryAuth(param.authCode); - - // 授权账号信息 授权信息 - const result: WxOpenAuthorizerInfoResult = WechatUtils.WxOpen().getWxOpenComponentService().getAuthorizerInfo(queryAuth.getAuthorizationInfo().authorizerAppid); - - const authorizerInfo: WxOpenAuthorizerInfo = result.authorizerInfo; - const authorization: WxOpenAuthorizationInfo = result.authorizationInfo; - - // 小程序 - if (CommonUtils.isNotEmpty(authorizerInfo.miniProgramInfo)) { - this.weappCheck(authorizerInfo, authorization); - - const weappConfig: WeappConfigParam = new WeappConfigParam(); - weappConfig.appId = authorization.authorizerAppid; - weappConfig.weappName = authorizerInfo.nickName; - weappConfig.weappOriginal = authorizerInfo.userName; - weappConfig.isAuthorization = 1; - weappConfig.qrCode = this.coreFetchService.image(authorizerInfo.qrcodeUrl, this.requestContext.siteId); - this.coreWeappConfigService.weappConfig = this.requestContext.siteId, weappConfig; - - this.coreWeappConfigService.weappAuthorizationInfo = this.requestContext.siteId, result; - } else { // 公众号 - this.wechatCheck(authorizerInfo, authorization); - - const wechatConfig: WechatConfigParam = new WechatConfigParam(); - wechatConfig.appId = authorization.authorizerAppid; - wechatConfig.wechatName = authorizerInfo.nickName; - wechatConfig.wechatOriginal = authorizerInfo.userName; - wechatConfig.isAuthorization = 1; - wechatConfig.qrcode = this.coreFetchService.image(authorizerInfo.qrcodeUrl, this.requestContext.siteId); - this.coreWechatConfigService.wechatConfig = this.requestContext.siteId, wechatConfig; - - this.coreWechatConfigService.wechatAuthorizationInfo = this.requestContext.siteId, result; - } - } catch (e) { - throw new BadRequestException(e.message); - } + async authorization(param: AuthorizationParamDto): Promise { + // TODO: 实现authorization业务逻辑 + return null; } /** * clearAuthorization */ async clearAuthorization(appid: string): Promise { - const configKey: string[] = new String[]{ ConfigKeyEnum.basename(WECHAT), ConfigKeyEnum.basename(WEAPP), ConfigKeyEnum.basename(WEAPP_AUTHORIZATION_INFO), ConfigKeyEnum.basename(WECHAT_AUTHORIZATION_INFO)}; - this.sysConfigRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }).in("config_key", configKey)); - this.coreConfigService.cacheClear(); + // TODO: 实现clearAuthorization业务逻辑 + return null; } /** * getAuthRecord */ - async getAuthRecord(pageParam: PageParam, searchParam: IOplatformAuthRecordParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); - wrapper.select(SysConfig::getCreateTime,SysConfig::getAddon,SysConfig::getStatus,SysConfig::getConfigKey, SysConfig::getValue, SysConfig::getSiteId, SysConfig::getUpdateTime); - wrapper.leftJoin(Site.class, "siteinfo",Site::getSiteId, SysConfig::getSiteId).select("site_name"); - wrapper.in(SysConfig::getConfigKey, ConfigKeyEnum.basename(WECHAT_AUTHORIZATION_INFO), ConfigKeyEnum.basename(WEAPP_AUTHORIZATION_INFO)); - wrapper.eq(SysConfig::getSiteId, this.requestContext.siteId); - wrapper.orderByDesc(SysConfig::getUpdateTime); - any /* TODO: Page */ pageObj = new Page<>(page, limit); - [SysConfig[], number] iPage = this.sysConfigRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }); - const listInfo: OplatformRecordVo[] = []; - for (const item of iPageRecords) { - const vo: OplatformRecordVo = new OplatformRecordVo(); - Object.assign(vo, item); - vo.value = JsonUtils.parseObject(item.value); - const siteInfo: Site = new Site(); - siteInfo.siteName = item.siteName; - vo.site = siteInfo; - listInfo.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = listInfo; + async getAuthRecord(pageParam: PageParamDto, searchParam: IOplatformAuthRecordParamDto): Promise { + // TODO: 实现getAuthRecord业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/weapp-version-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/weapp-version-service-impl.service.ts index 4c83c7ef..af86d8af 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/weapp-version-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/wxoplatform/impl/weapp-version-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { WxOplatfromWeappVersionVoDto } from '../../../../dtos/admin/wxoplatform/vo/wx-oplatfrom-weapp-version-vo.dto'; import { SiteGroupWeappVersionVoDto } from '../../../../dtos/admin/wxoplatform/vo/site-group-weapp-version-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; @@ -13,12 +13,11 @@ import { OplatformConfigVoDto } from '../../../../dtos/admin/wxoplatform/vo/opla import { WeappUploadParamDto } from '../../../../dtos/core/weapp/param/weapp-upload-param.dto'; import { WeappConfigVoDto } from '../../../../dtos/core/weapp/vo/weapp-config-vo.dto'; import { @LazyDto } from '../dtos/@-lazy.dto'; -import { WxOplatfromWeappVersionDto } from '../../../../entities/wx-oplatfrom-weapp-version.entity'; +import { WxOplatfromWeappVersion } from '../../../../entities/wx-oplatfrom-weapp-version.entity'; @Injectable() export class WeappVersionServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, @@ -34,250 +33,56 @@ export class WeappVersionServiceImplService { * getLastCommitRecord */ async getLastCommitRecord(): Promise { - any /* TODO: QueryWrapper */ queryWrapper=new QueryWrapper(); - queryWrapper.orderByDesc("id") - .last("limit 1"); - const wxOplatfromWeappVersion: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (wxOplatfromWeappVersion==null) return null; - const wxOplatfromWeappVersionVo: WxOplatfromWeappVersionVo = new WxOplatfromWeappVersionVo(); - Object.assign(wxOplatfromWeappVersionVo, wxOplatfromWeappVersion); - return wxOplatfromWeappVersionVo; + // TODO: 实现getLastCommitRecord业务逻辑 + return null; } /** * list */ - async list(pageParam: PageParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper=new QueryWrapper(); - queryWrapper.orderByDesc("id"); - - MPJany /* TODO: QueryWrapper */ wxOplatfromMPJQueryWrapper = new MPJQueryWrapper(); - wxOplatfromMPJQueryWrapper.select("wowv.id, wowv.site_group_id, wowv.template_id, wowv.user_version, wowv.user_desc, wowv.task_key, wowv.status, wowv.fail_reason, wowv.version_no, wowv.create_time, wowv.update_time, nsg.group_name as site_group_name") - .setAlias("wowv") - .leftJoin("?_site_group nsg ON nsg.group_id = wowv.site_group_id".replace("?_", this.appConfig.tablePrefix)); - wxOplatfromMPJQueryWrapper.orderByDesc("wowv.id"); - - [WxOplatfromWeappVersionVo[], number] iPage = wxOplatfromWeappVersionMapper.selectJoinPage(new Page<>(page, limit), WxOplatfromWeappVersionVo.class, wxOplatfromMPJQueryWrapper); - return PageResult.build(page, limit, iPageTotal).data = iPageRecords; + async list(pageParam: PageParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * add */ async add(siteGroupId: number, isAll: boolean): Promise { - const siteGroupList: SiteGroup[] = this.siteGroupRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).orderByAsc("create_time")); - if (CommonUtils.isEmpty(siteGroupList)) throw new BadRequestException("请先添加站点套餐"); - - const siteGroup: SiteGroup = siteGroupId == null || siteGroupId == 0 ? siteGroupList.get(0) : siteGroupMapper.selectById(siteGroupId); - - const uploading: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("status", 0) - .last("limit 1") - ); - if (uploading != null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作"); - - const lastVersion: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_group_id", siteGroup.groupId) - .orderByDesc("id") - .last("limit 1") - ); - - const config: OplatformConfigVo = this.coreOplatformConfigService.wxOplatformConfig; - - const addon: string[] = CollUtil.newArrayList(); - if (!siteGroup.app.isEmpty()) CollUtil.addAll(addon, JSONUtil.parseArray(siteGroup.app)); - if (!siteGroup.addon.isEmpty()) CollUtil.addAll(addon, JSONUtil.parseArray(siteGroup.addon)); - - const weappUploadParam: WeappUploadParam = new WeappUploadParam(); - weappUploadParam.appId = config.developAppId; - weappUploadParam.baseUrl = RequestUtils.getDomain(true); - weappUploadParam.siteId = 0; - weappUploadParam.version = "1." + siteGroup.groupId + "." + (lastVersion == null ? 1 : lastVersion.versionNo + 1); - weappUploadParam.uploadPrivateKey = config.developUploadPrivateKey; - weappUploadParam.addon = addon; - const taskKey: string = this.coreWeappCloudService.uploadWeapp(weappUploadParam); - - const model: WxOplatfromWeappVersion = new WxOplatfromWeappVersion(); - model.siteGroupId = siteGroup.groupId; - model.userVersion = weappUploadParam.version; - model.versionNo = lastVersion == null ? 1 : lastVersion.versionNo + 1; - model.createTime = Date.now( / 1000); - model.taskKey = taskKey; - this.wxOplatfromWeappVersionRepository.save(model); - - this.weappVersionService.getVersionUploadResult(taskKey, isAll); + // TODO: 实现add业务逻辑 + return null; } /** * getVersionUploadResult */ async getVersionUploadResult(taskKey: string, isAll: boolean): Promise { - if (scheduler == null || scheduler.isShutdown() || scheduler.isTerminated()) { - scheduler = Executors.newScheduledThreadPool(1); - } - scheduler.schedule(() => checkVersionUploadResult(taskKey, isAll), 10, TimeUnit.SECONDS); + // TODO: 实现getVersionUploadResult业务逻辑 + return null; } /** * uploadSuccess */ async uploadSuccess(taskKey: string, isAll: boolean): Promise { - const version: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })); - - const wxOpenService: WxOpenComponentService = WechatUtils.WxOpen().wxOpenComponentService; - - try { - const draftList: WxOpenMaCodeTemplate[] = this.wxOpenService.templateDraftList; - if (CommonUtils.isNotEmpty(draftList)) { - for (const item of draftList) { - if (item.userVersion === version.userVersion) { - // 添加模板 - this.wxOpenService.addToTemplate(item.draftId); - - const templateList: WxOpenMaCodeTemplate[] = this.wxOpenService.templateList; - for (const template of templateList) { - if (template.userVersion === version.userVersion) { - version.templateId = template.templateId.toString(); - wxOplatfromWeappVersionMapper.updateById(version); - - // 删除之前的模板 - const prev: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_group_id", version.siteGroupId) - .lt("id", version.id) - .orderByDesc("id") - .last("limit 1") - ); - if (prev!= null) { - this.wxOpenService.deleteTemplate(number.valueOf(prev.templateId)); - } - break; - } - } - } - } - } - } catch (e) { - console.log("小程序模板上传成功获取模板id异常"); - console.error(e); - } - - if (isAll) { - const siteGroup: SiteGroup = this.siteGroupRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .gt("group_id", version.siteGroupId) - .orderByDesc("group_id") - .last("limit 1") - ); - if (siteGroup != null) { - this.weappVersionService.push(siteGroup.groupId, true); - } - } + // TODO: 实现uploadSuccess业务逻辑 + return null; } /** * weappCommit */ async weappCommit(siteId: number, siteGroupId: number, version: WxOplatfromWeappVersion): Promise { - if (version == null) { - version = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .ne("template_id", "") - .orderByDesc("id") - .last("limit 1")); - if (version == null) throw new BadRequestException("平台尚未上传小程序到模板库"); - } - - const uploading: WeappVersion = this.weappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId).eq("status", WeappVersionStatusEnum.APPLET_AUDITING.status).last("limit 1")); - if (uploading!= null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作"); - - const weappCofig: WeappConfigVo = this.coreWeappConfigService.getWeappConfig(siteId); - - try { - const extJson: Record = new Record(); - extJson.set("extAppid", weappCofig.appId); - extJson.set("entryPagePath", "app/pages/index/index"); - extJson.set("directCommit", true); - extJson.putByPath("ext.site_id", siteId); - - const commitResult: WxOpenResult = WechatUtils.WxOpen().wxOpenComponentService - .getWxMaServiceByAppid(weappCofig.appId) - .codeCommit(number.valueOf(version.templateId), version.userVersion, version.userDesc, extJson); - - if (!commitResult.errcode === "0") throw new BadRequestException(commitResult.errmsg); - - const model: WeappVersion = new WeappVersion(); - model.siteId = siteId; - model.version = version.userVersion; - model.versionNo = version.versionNo; - model.desc = version.userDesc; - model.status = WeappVersionStatusEnum.APPLET_AUDITING.status; - model.createTime = Date.now( / 1000); - model.fromType = "open_platform"; - this.weappVersionRepository.save(model); - - // 提交审核 - this.weappVersionService.submitAudit(siteId, model.id); - } catch (e) { - console.log("小程序提交代码异常"); - console.error(e); - throw new BadRequestException(e.message); - } + // TODO: 实现weappCommit业务逻辑 + return null; } /** * submitAudit */ async submitAudit(siteId: number, versionId: number): Promise { - const version: WeappVersion = weappVersionMapper.selectById(versionId); - - try { - const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(siteId); - - const privacyInfo: WxOpenMaGetCodePrivacyInfoResult = this.wxOpenMaService.codePrivacyInfo; - if (!privacyInfo.errcode === "0") { - version.status = WeappVersionStatusEnum.APPLET_AUDIT_FAIL.status; - version.failReason = privacyInfo.errmsg; - version.updateTime = Date.now( / 1000); - weappVersionMapper.updateById(version); - return; - } - - const submitAuditMessage: WxOpenMaSubmitAuditMessage = new WxOpenMaSubmitAuditMessage(); - const submitResult: WxOpenMaSubmitAuditResult = this.wxOpenMaService.submitAudit(submitAuditMessage); - - version.status = submitResult.errcode === "0" ? WeappVersionStatusEnum.APPLET_AUDITING.status : WeappVersionStatusEnum.APPLET_AUDIT_FAIL.status; - version.failReason = submitResult.errmsg; - version.updateTime = Date.now( / 1000); - version.auditid = ObjectUtil.isNotNull(submitResult.auditId ? submitResult.auditId.toString() : ""); - - weappVersionMapper.updateById(version); - - if (scheduler != null && !scheduler.isShutdown()) { - scheduler.shutdown(); - } - } catch (e) { - // 如果检测任务结束未结束 - if (e.getError().errorCode == 61039) { - if (scheduler == null || scheduler.isShutdown() || scheduler.isTerminated()) { - scheduler = Executors.newScheduledThreadPool(1); - } - scheduler.schedule(() => submitAudit(siteId, versionId), 30, TimeUnit.SECONDS); - } else { - version.status = WeappVersionStatusEnum.APPLET_AUDIT_FAIL.status; - version.failReason = e.getError(.errorMsg); - version.updateTime = Date.now( / 1000); - weappVersionMapper.updateById(version); - - if (scheduler != null && !scheduler.isShutdown()) { - scheduler.shutdown(); - } - - console.log("小程序提交审核异常"); - console.error(e); - throw new BadRequestException(e.message); - } - } + // TODO: 实现submitAudit业务逻辑 + return null; } /** @@ -291,70 +96,24 @@ export class WeappVersionServiceImplService { /** * getSiteGroupCommitRecord */ - async getSiteGroupCommitRecord(pageParam: PageParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - [SiteGroup[], number] iPage = this.siteGroupRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.select("group_id,group_name")); - const list: SiteGroupWeappVersionVo[] = []; - - for (const item of iPageRecords) { - const vo: SiteGroupWeappVersionVo = new SiteGroupWeappVersionVo(); - Object.assign(vo, item); - - const lastVersion: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).orderByDesc("id").last("limit 1")); - if (lastVersion != null) { - const versionVo: WxOplatfromWeappVersionVo = new WxOplatfromWeappVersionVo(); - Object.assign(versionVo, lastVersion); - vo.commitRecord = versionVo; - } - list.push(vo); - } - - return PageResult.build(page, limit, iPageTotal).data = list; + async getSiteGroupCommitRecord(pageParam: PageParamDto): Promise { + // TODO: 实现getSiteGroupCommitRecord业务逻辑 + return null; } /** * undoAudit */ - async undoAudit(param: UndoAuditParam): Promise { - const version: WeappVersion = this.weappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (!version) throw new BadRequestException("未获取到小程序版本提交记录"); - if (!version.status === WeappVersionStatusEnum.APPLET_AUDITING.status) throw new BadRequestException("只有审核中的才可以撤回"); - - const weappCofig: WeappConfigVo = this.coreWeappConfigService.getWeappConfig(this.requestContext.siteId); - - try { - const commitResult: WxOpenResult = WechatUtils.WxOpen().wxOpenComponentService - .getWxMaServiceByAppid(weappCofig.appId).undoCodeAudit(); - } catch (e) { - throw new BadRequestException(e.message); - } - - version.status = WeappVersionStatusEnum.APPLET_AUDIT_UNDO.status; - version.updateTime = Date.now( / 1000); - weappVersionMapper.updateById(version); + async undoAudit(param: UndoAuditParamDto): Promise { + // TODO: 实现undoAudit业务逻辑 + return null; } /** * syncSiteGroupAuthWeapp */ - async syncSiteGroupAuthWeapp(param: SyncSiteGroupAuthWeappParam): Promise { - const version: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .ne("template_id", "") - .orderByDesc("id") - .last("limit 1") - ); - if (!version) throw new BadRequestException("平台尚未上传小程序到模板库"); - - const siteIds: number[] = this.siteRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("group_id", param.siteGroupId)).stream().map(Site::getSiteId); - if (CommonUtils.isNotEmpty(siteIds)) { - const authSite: SysConfig[] = this.sysConfigRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("config_key", ConfigKeyEnum.basename(WEAPP_AUTHORIZATION_INFO))); - if (CommonUtils.isNotEmpty(authSite)) { - authSite.forEach(item => { - weappCommit(item.siteId, param.siteGroupId, version); - }); - } - } + async syncSiteGroupAuthWeapp(param: SyncSiteGroupAuthWeappParamDto): Promise { + // TODO: 实现syncSiteGroupAuthWeapp业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/agreement/impl/agreement-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/agreement/impl/agreement-service-impl.service.ts index e3034faa..20b073b6 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/agreement/impl/agreement-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/agreement/impl/agreement-service-impl.service.ts @@ -14,17 +14,8 @@ export class AgreementServiceImplService { /** * info */ - async info(param: AgreementInfoParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("site_id, agreement_key, title, content, create_time, update_time"); - queryWrapper.eq("agreement_key", param.key); - queryWrapper.eq("site_id", param.siteId()); - const sysAgreement: SysAgreement = this.sysAgreementRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (sysAgreement == null) { - return null; - } - const agreementInfoVo: AgreementInfoVo = new AgreementInfoVo(); - Object.assign(agreementInfoVo, sysAgreement); - return agreementInfoVo; + async info(param: AgreementInfoParamDto): Promise { + // TODO: 实现info业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/channel/impl/app-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/channel/impl/app-service-impl.service.ts index b4a039de..638c7d14 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/channel/impl/app-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/channel/impl/app-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { LoginConfigVoDto } from '../../../../dtos/admin/member/vo/login-config-vo.dto'; import { GetNewVersionParamDto } from '../../../../dtos/api/channel/param/get-new-version-param.dto'; import { ApiAppConfigVoDto } from '../../../../dtos/api/channel/vo/api-app-config-vo.dto'; @@ -15,105 +15,46 @@ import { WeappConfigVoDto } from '../../../../dtos/core/weapp/vo/weapp-config-vo @Injectable() export class AppServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * wechatLogin */ - async wechatLogin(param: WechatAuthParam): Promise { - try { - const app: WxMpService = WechatUtils.app(this.requestContext.siteId); - - const wxOAuth2AccessToken: WxOAuth2AccessToken = app.getOAuth2Service().getAccessToken(param.code); - const wxUser: WxOAuth2UserInfo = app.oAuth2Service.getUserInfo(wxOAuth2AccessToken, null); - - return this.login( - ObjectUtil.defaultIfNull(wxUser.openid, ""), - ObjectUtil.defaultIfNull(wxUser.unionId, ""), - ObjectUtil.defaultIfNull(wxUser.nickname, ""), - ObjectUtil.defaultIfNull(wxUser.headImgUrl, ""), - param.pid - ); - } catch (e) { - throw new BadRequestException(e.message); - } + async wechatLogin(param: WechatAuthParamDto): Promise { + // TODO: 实现wechatLogin业务逻辑 + return null; } /** * getNewVersion */ - async getNewVersion(param: GetNewVersionParam): Promise { - const appVersion: AppVersion = this.appVersionRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("platform", param.platform) - .gt("version_code", param.versionCode) - .eq("status", AppDict.StatusEnum.STATUS_PUBLISHED.value) - .orderByDesc("version_code")); - - if (appVersion == null) { - return null; - } - - const newVersionVo: NewVersionVo = new NewVersionVo(); - BeanUtil.copyProperties(appVersion, newVersionVo); - - return newVersionVo; + async getNewVersion(param: GetNewVersionParamDto): Promise { + // TODO: 实现getNewVersion业务逻辑 + return null; } /** * register */ - async register(param: AuthRegisterParam): Promise { - switch (param.registerType) { - case "wechat": - return wechatRegister(param); - default: - return null; - } + async register(param: AuthRegisterParamDto): Promise { + // TODO: 实现register业务逻辑 + return null; } /** * getAppConfig */ async getAppConfig(): Promise { - const vo: ApiAppConfigVo = new ApiAppConfigVo(); - const config: AppConfigVo = this.coreAppService.getConfig(this.requestContext.siteId); - BeanUtil.copyProperties(config, vo); - - const weappConfig: WeappConfigVo = this.coreWeappConfigService.getWeappConfig(this.requestContext.siteId); - vo.weappOriginal = weappConfig.weappOriginal; - return vo; + // TODO: 实现getAppConfig业务逻辑 + return null; } /** * wechatRegister */ - async wechatRegister(param: AuthRegisterParam): Promise { - if (param.openid.isEmpty()) throw new BadRequestException("openid不能为空"); - try { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在"); - - if (!param.unionid.isEmpty()) { - const unionidMember: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在"); - } - - const config: LoginConfigVo = this.coreMemberConfigService.getLoginConfig(this.requestContext.siteId); - if (config.isBindMobile == 1) { - if (param.mobile.isEmpty()) throw new BadRequestException("手机号不能为空"); - this.registerService.checkMobileCode(param.mobile, param.mobileKey, param.mobileCode); - } - - const registerMember: Member = new Member(); - registerMember.wxappOpenid = param.openid; - registerMember.mobile = param.mobile; - registerMember.wxUnionid = param.unionid; - registerMember.pid = param.pid; - return this.registerService.register(registerMember); - } catch (e) { - throw new BadRequestException(e.message); - } + async wechatRegister(param: AuthRegisterParamDto): Promise { + // TODO: 实现wechatRegister业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-form-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-form-service-impl.service.ts index bff8decf..0e1aa07e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-form-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-form-service-impl.service.ts @@ -1,24 +1,22 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberConfigVoDto } from '../../../../dtos/admin/member/vo/member-config-vo.dto'; import { DiyFormParamDto } from '../../../../dtos/api/diy/param/diy-form-param.dto'; import { DiyFormRecordsParamDto } from '../../../../dtos/core/diy_form/param/diy-form-records-param.dto'; import { DiyFormSubmitConfigInfoVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-submit-config-info-vo.dto'; import { DiyFormInfoVoDto } from '../../../../dtos/api/diy/vo/diy-form-info-vo.dto'; -import { DiyFormWriteConfigDto } from '../../../../entities/diy-form-write-config.entity'; +import { DiyFormWriteConfig } from '../../../../entities/diy-form-write-config.entity'; import { DiyFormRecordsInfoVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-records-info-vo.dto'; import { DiyFormRecordsDetailVoDto } from '../../../../dtos/api/diy/vo/diy-form-records-detail-vo.dto'; import { DiyFormRecordsFieldsListVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-records-fields-list-vo.dto'; import { DiyMemberRecordVoDto } from '../../../../dtos/api/diy/vo/diy-member-record-vo.dto'; -import { DiyFormFieldsDto } from '../../../../entities/diy-form-fields.entity'; +import { DiyFormFields } from '../../../../entities/diy-form-fields.entity'; @Injectable() export class DiyFormServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -26,256 +24,47 @@ export class DiyFormServiceImplService { * getInfo */ async getInfo(formId: number): Promise { - // 查询 DiyFormWriteConfig - any /* TODO: QueryWrapper */ writeConfigWrapper = new QueryWrapper(); - writeConfigWrapper.eq("form_id", formId) - .eq("site_id", this.requestContext.siteId); - const writeConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - // 查询表单信息 - any /* TODO: QueryWrapper */ formWrapper = new QueryWrapper(); - formWrapper.eq("form_id", formId) - .eq("status", 1) - .eq("site_id", this.requestContext.siteId); - const formInfo: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - List> error = []; - const info: DiyFormInfoVo = new DiyFormInfoVo(); - if (formInfo != null) { - BeanUtil.copyProperties(formInfo, info); - // 过滤隐藏的组件 - const valueObj: Record = JsonUtils.parseObject(formInfo.value); - if (valueObj.containsKey("value")) { - const valueArray: JSONArray = valueObj.getJSONArray("value"); - if (valueArray != null) { - const newArray: JSONArray = new JSONArray(); - for (const obj of valueArray) { - const item: Record = (Record) obj; - if (!item.getBool("isHidden", false)) { - newArray.push(item); - } - } - valueObj.put("value", newArray); - info.value = valueObj.toString(); - } - } - - - // 检查会员相关限制 - const memberId: number = this.requestContext.memberId; - if (writeConfig != null && memberId != null) { - Record errorMsg; - errorMsg = checkMemberCanJoinOrNot(memberId, writeConfig); - if (CommonUtils.isNotEmpty(errorMsg)) { - error.push(errorMsg); - } - errorMsg = checkFormWriteTime(writeConfig); - if (CommonUtils.isNotEmpty(errorMsg)) { - error.push(errorMsg); - } - errorMsg = checkFormWriteLimitNum(formId, writeConfig); - if (CommonUtils.isNotEmpty(errorMsg)) { - error.push(errorMsg); - } - errorMsg = checkMemberWriteLimitNum(memberId, formId, writeConfig); - if (CommonUtils.isNotEmpty(errorMsg)) { - error.push(errorMsg); - } - } - } else { - const errorMap: Record = {}; - errorMap.put("title", "当前表单无法查看"); - errorMap.put("type", "表单状态"); - errorMap.put("desc", "该表单已关闭"); - error.push(errorMap); - } - info.error = error; - return info; + // TODO: 实现getInfo业务逻辑 + return null; } /** * addRecord */ - async addRecord(diyFormRecordsParam: DiyFormRecordsParam): Promise { - diyFormRecordsParam.siteId = this.requestContext.siteId; - diyFormRecordsParam.memberId = this.requestContext.memberId; - - // 检查表单是否存在且已开启 - any /* TODO: QueryWrapper */ formQueryWrapper = new QueryWrapper(); - formQueryWrapper.eq("form_id", diyFormRecordsParam.formId) - .eq("site_id", this.requestContext.siteId); - const formInfo: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (formInfo == null) { - throw new ApiException("表单不存在"); - } - if (formInfo.status == 0) { - throw new ApiException("该表单已关闭"); - } - - // 查询表单填写配置 - any /* TODO: QueryWrapper */ writeConfigQueryWrapper = new QueryWrapper(); - writeConfigQueryWrapper.eq("form_id", diyFormRecordsParam.formId) - .eq("site_id", this.requestContext.siteId); - const writeConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - if (writeConfig != null) { - // 检查会员是否可以参与 - const canJoinError: Record = checkMemberCanJoinOrNot(this.requestContext.memberId, writeConfig); - if ((canJoinError && canJoinError.length > 0)) { - throw new ApiException(canJoinError.get("desc")); - } - - // 检查表单填写时间 - const timeError: Record = checkFormWriteTime(writeConfig); - if ((timeError && timeError.length > 0)) { - throw new ApiException(timeError.get("desc")); - } - - // 检查表单总填写次数限制 - const formLimitError: Record = checkFormWriteLimitNum(diyFormRecordsParam.formId, writeConfig); - if ((formLimitError && formLimitError.length > 0)) { - throw new ApiException(formLimitError.get("desc")); - } - - // 检查会员填写次数限制 - const memberLimitError: Record = checkMemberWriteLimitNum(this.requestContext.memberId, diyFormRecordsParam.formId, writeConfig); - if ((memberLimitError && memberLimitError.length > 0)) { - throw new ApiException(memberLimitError.get("desc")); - } - } - - // 调用核心服务添加记录 - return this.coreDiyFormRecordsService.push(diyFormRecordsParam); + async addRecord(diyFormRecordsParam: DiyFormRecordsParamDto): Promise { + // TODO: 实现addRecord业务逻辑 + return null; } /** * getResult */ async getResult(recordId: number): Promise { - const diyFormRecords: DiyFormRecords = this.diyFormRecordsRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId).eq("member_id", this.requestContext.memberId)); - if (CommonUtils.isEmpty(diyFormRecords)) throw new ApiException("表单记录不存在"); - const vo: DiyFormRecordsInfoVo = new DiyFormRecordsInfoVo(); - BeanUtil.copyProperties(diyFormRecords, vo); - const diyFormSubmitConfig: DiyFormSubmitConfig = this.diyFormSubmitConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }))); - const configInfoVo: DiyFormSubmitConfigInfoVo = new DiyFormSubmitConfigInfoVo(); - if (CommonUtils.isNotEmpty(diyFormSubmitConfig)) { - BeanUtil.copyProperties(diyFormSubmitConfig, configInfoVo); - } - vo.diyFormSubmitConfig = configInfoVo; - return vo; + // TODO: 实现getResult业务逻辑 + return null; } /** * getFormRecordInfo */ async getFormRecordInfo(recordId: number): Promise { - const diyFormRecords: DiyFormRecords = this.diyFormRecordsRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", this.requestContext.siteId).eq("member_id", this.requestContext.memberId)); - const vo: DiyFormRecordsDetailVo = new DiyFormRecordsDetailVo(); - if (CommonUtils.isEmpty(diyFormRecords)) { - return vo; - } - BeanUtil.copyProperties(diyFormRecords, vo); - const list: DiyFormRecordsFields[] = this.diyFormRecordsFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }))); - if (CommonUtils.isNotEmpty(list)) { - const volist: DiyFormRecordsFieldsListVo[] = []; - for (const item of list) { - const diyFormRecordsFieldsListVo: DiyFormRecordsFieldsListVo = new DiyFormRecordsFieldsListVo(); - Object.assign(diyFormRecordsFieldsListVo, item); - volist.push(diyFormRecordsFieldsListVo); - } - vo.recordsFieldList = volist; - } - return vo; + // TODO: 实现getFormRecordInfo业务逻辑 + return null; } /** * getMemberInfoRecord */ async getMemberInfoRecord(): Promise { - const memberConfig: MemberConfigVo = this.coreMemberConfigService.getMemberConfig(this.requestContext.siteId); - if (CommonUtils.isEmpty(memberConfig.formId)) { - return List.of(); - } - const formId: number = memberConfig.formId; - MPJany /* TODO: QueryWrapper */ mpjqw = new MPJQueryWrapper(); - mpjqw.alias = "fr".leftJoin("?_diy_form_records_fields frf on frf.record_id = fr.record_id".replace("?_", this.appConfig.tablePrefix)); - mpjqw.select("frf.form_id, frf.form_field_id, frf.field_key, frf.field_type, frf.field_name, frf.field_value, frf.field_required, frf.field_unique, frf.privacy_protection"); - mpjqw.eq("fr.member_id", this.requestContext.memberId) - .eq("fr.form_id", formId) - .orderByDesc("fr.create_time"); - const diyFormRecordsFields: DiyFormRecordsFields[] = diyFormRecordsMapper.selectJoinList(DiyFormRecordsFields.class, mpjqw); - - MPJany /* TODO: QueryWrapper */ diyFormMpjqw = new MPJQueryWrapper(); - diyFormMpjqw.alias = "df" - .leftJoin("?_diy_form_fields dfi on dfi.form_id = df.form_id".replace("?_", this.appConfig.tablePrefix)); - diyFormMpjqw.select("df.form_id,df.type, dfi.field_id, dfi.field_key, dfi.field_type, dfi.field_name, dfi.field_required, dfi.field_hidden, dfi.field_unique, dfi.privacy_protection"); - diyFormMpjqw.eq("df.form_id", formId).eq("df.status", 1); - const diyFormFields: DiyFormFields[] = diyFormMapper.selectJoinList(DiyFormFields.class, diyFormMpjqw); - - - if (CommonUtils.isEmpty(diyFormFields)) { - return List.of(); - } - if (CommonUtils.isEmpty(diyFormRecordsFields)) { - return setResult(diyFormFields); - } - - const result: DiyMemberRecordVo = setResult(diyFormFields); - const fieldMap: Record = diyFormRecordsFields.collect(/* Collectors已删除 */.toMap(DiyFormRecordsFields::getFieldKey, field => field)); - for (const field of result.formField) { - if (fieldMap.containsKey(field.fieldKey)) { - field.fieldValue = fieldMap.get(field.getFieldKey().fieldValue == null ? "" : fieldMap.get(field.getFieldKey()).fieldValue); - } - } - return result; + // TODO: 实现getMemberInfoRecord业务逻辑 + return null; } /** * editRecord */ - async editRecord(param: DiyFormRecordsParam): Promise { - const diyFormRecords: DiyFormRecords = diyFormRecordsMapper.selectById(param.recordId); - if (CommonUtils.isEmpty(diyFormRecords)) { - throw new ApiException("表单记录不存在"); - } - const diyForm: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq(DiyForm::getFormId, param.formId)); - if (CommonUtils.isEmpty(diyForm)) { - throw new ApiException("表单不存在"); - } - if (diyForm.status == 0) { - throw new ApiException("该表单已关闭"); - } - // 查询表单填写配置 - any /* TODO: QueryWrapper */ writeConfigQueryWrapper = new QueryWrapper(); - writeConfigQueryWrapper.eq("form_id", param.formId) - .eq("site_id", this.requestContext.siteId); - const writeConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - if (writeConfig != null) { - // 检查会员是否可以参与 - const canJoinError: Record = checkMemberCanJoinOrNot(this.requestContext.memberId, writeConfig); - if ((canJoinError && canJoinError.length > 0)) { - throw new ApiException(canJoinError.get("desc")); - } - - // 检查表单填写时间 - const timeError: Record = checkFormWriteTime(writeConfig); - if ((timeError && timeError.length > 0)) { - throw new ApiException(timeError.get("desc")); - } - - // 检查表单总填写次数限制 - const formLimitError: Record = checkFormWriteLimitNum(param.formId, writeConfig); - if ((formLimitError && formLimitError.length > 0)) { - throw new ApiException(formLimitError.get("desc")); - } - - // 检查会员填写次数限制 - const memberLimitError: Record = checkMemberWriteLimitNum(this.requestContext.memberId, param.formId, writeConfig); - if ((memberLimitError && memberLimitError.length > 0)) { - throw new ApiException(memberLimitError.get("desc")); - } - } - this.coreDiyFormRecordsService.edit(param); + async editRecord(param: DiyFormRecordsParamDto): Promise { + // TODO: 实现editRecord业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-service-impl.service.ts index 4c2ffb8c..516e015d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/diy/impl/diy-service-impl.service.ts @@ -1,8 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { TemplateParamDto } from '../../../../dtos/admin/diy/param/template-param.dto'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; import { DiyInfoParamDto } from '../../../../dtos/api/diy/param/diy-info-param.dto'; @@ -25,96 +24,23 @@ export class DiyServiceImplService { /** * info */ - async info(param: DiyInfoParam): Promise { - const id: number = ObjectUtil.defaultIfNull(param.id, 0); - const name: string = ObjectUtil.defaultIfNull(path.basename(param), ""); - - log.info("id: {}, name: {}", id, name); - - const startUpPage: StartUpPageConfigVo = null; - const template: Record = null; - - if (!StrUtil.isEmpty(name)) { - // 查询启动页 - startUpPage = this.coreDiyConfigService.getStartUpPageConfig(param.siteId(), name); - log.info("startUpPage: {}", JSONUtil.toJsonStr(startUpPage)); - - const templateParam: TemplateParam = new TemplateParam(); - const key: string[] = { name }; - templateParam.key = key; - template = TemplateEnum.getTemplate(templateParam).getRecord(name); - } - - if (id == 0 && startUpPage != null && template != null && !startUpPage.page === template.getStr("page")) { - log.info("enter if, template: {}", template.toString()); - return startUpPage; - } else { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", param.siteId()); - log.info("site_id: {}",param.siteId() ); - - const info: DiyPage = null; - - log.info("id: {}, name: {}", id, name); - if (id > 0) { - queryWrapper.eq("id", id); - info = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - } else if ((name && name.length > 0)) { - queryWrapper.eq("name", name); - queryWrapper.eq("is_default", 1); - queryWrapper.orderByDesc("create_time"); - queryWrapper.last("limit 1"); - info = this.diyPageRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - } - - log.info("info: {}", JSONUtil.toJsonStr(info)); - - if (info == null) { - if ((name && name.length > 0)) { - const pageData: Record = getFirstPageData(name, ""); - if (pageData != null) { - info = new DiyPage(); - info.id = param.siteId(); - info.title = pageData.getStr("title"); - info.name = pageData.getStr("type"); - info.type = pageData.getStr("type"); - info.template = pageData.getStr("template"); - info.mode = pageData.getStr("mode"); - info.value = pageData.getRecord("data".toString()); - info.isDefault = 1; - } - } - } - - log.info("info: {}", JSONUtil.toJsonStr(info)); - if (info == null) return null; - - const vo: DiyInfoVo = new DiyInfoVo(); - Object.assign(vo, info); - log.info("vo: {}", JSONUtil.toJsonStr(vo)); - return vo; - } + async info(param: DiyInfoParamDto): Promise { + // TODO: 实现info业务逻辑 + return null; } /** * getFirstPageData */ async getFirstPageData(type: string, addon: string): Promise { - const pages: Record = PagesEnum.getPagesByAddon(type, addon); - if (pages == null || pages.keySet().size() == 0) return null; - - const template: string = pages.keySet().iterator().next(); - const data: Record = pages.getRecord(template); - data.set("type", type); - data.set("template", template); - - return data; + // TODO: 实现getFirstPageData业务逻辑 + return null; } /** * tabbar */ - async tabbar(param: DiyTabbarParam): Promise { + async tabbar(param: DiyTabbarParamDto): Promise { const diyTabbarVo: DiyTabbarVo = null; return diyTabbarVo; } @@ -122,54 +48,16 @@ export class DiyServiceImplService { /** * tabbarList */ - async tabbarList(param: DiyTabbarListParam): Promise { - const list: BottomConfigVo[] = this.coreDiyConfigService.bottomList; - const site: SiteInfoVo = this.coreSiteService.getSiteCache(param.siteId()); - - const tabbarList: BottomConfigVo[] = []; - for (const item of list) { - if (item.key === "app" && list.length > 1 && site.apps.size() == 1) continue; - const config: BottomConfigVo = this.coreDiyConfigService.getBottomConfig(param.siteId(), item.key); - tabbarList.push(config); - } - - return tabbarList; + async tabbarList(param: DiyTabbarListParamDto): Promise { + // TODO: 实现tabbarList业务逻辑 + return null; } /** * share */ - async share(param: DiyShareParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("id,title,name,page,share,is_share"); - queryWrapper.eq("page", param.route); - queryWrapper.eq("site_id", param.siteId()); - - const diyRoute: DiyRoute = this.diyRouteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (diyRoute == null || diyRoute.share.isEmpty()) return new Record(); - - const share: Record = JsonUtils.parseObject(diyRoute.share); - share.set("route", diyRoute.page); - share.set("query", ""); - - const query: Record = new Record(); - - if (param.params != null && !param.params.isEmpty()) { - query = JsonUtils.parseObject(param.params); - } - - if (param.memberId() != null && param.memberId() > 0) { - query.set("mid", param.memberId()); - } - - const queryStr: string = ""; - if (query.keySet().size() > 0) { - for (const key of query.keySet()) { - queryStr += (!queryStr || queryStr.length === 0) ? key + "=" + query.getStr(key) : "&" + key + "=" + query.getStr(key); - } - } - share.set("url", share.getStr("route") + ((!queryStr || queryStr.length === 0) ? "" : "?" + queryStr)); - - return share; + async share(param: DiyShareParamDto): Promise { + // TODO: 实现share业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/auth-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/auth-service-impl.service.ts index 090d0cf8..4aca6244 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/auth-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/auth-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, UnauthorizedException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; import { MemberInfoParamDto } from '../../../../dtos/api/member/param/member-info-param.dto'; import { MemberInfoVoDto } from '../../../../dtos/api/member/vo/member-info-vo.dto'; @@ -11,7 +11,6 @@ import { PcConfigVoDto } from '../../../../dtos/core/channel/vo/pc-config-vo.dto @Injectable() export class AuthServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -19,64 +18,23 @@ export class AuthServiceImplService { * checkSite */ async checkSite(): Promise { - const siteId: number = RequestUtils.apiSiteId(); - - if (siteId == 0) { - const site: Site = this.siteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_domain", RequestUtils.requestDomain)); - if (site == null) throw new UnauthorizedException("站点不存在", 403); - siteId = site.siteId; - } - - const siteInfoVo: SiteInfoVo = this.coreSiteService.getSiteCache(siteId); - if(CommonUtils.isEmpty(siteInfoVo)){ - throw new UnauthorizedException("站点不存在", 403); - } - const rule: string = RequestUtils.reqeustURI; - if (rule !== "site"){ - if(siteInfoVo.status == SiteStatusEnum.CLOSE.code || siteInfoVo.expireTime < DateUtils.currTime()){ - throw new UnauthorizedException("站点已停止", 402); - } - } - RequestUtils.siteId = siteId; + // TODO: 实现checkSite业务逻辑 + return null; } /** * checkSiteAuth */ async checkSiteAuth(): Promise { - if(ObjectUtil.isNotNull(this.requestContext.memberId) && this.requestContext.memberId>0){ - const memberInfoParam: MemberInfoParam = new MemberInfoParam(); - memberInfoParam.memberId = this.requestContext.memberId; - memberInfoParam.siteId = this.requestContext.siteId; - const memberInfoVo: MemberInfoVo = this.memberService.info(memberInfoParam); - if(ObjectUtil.isNull(memberInfoVo) || CommonUtils.isEmpty(memberInfoVo)){ - // 退出登录 - StpUtil.logout(RequestUtils.apiToken()); - throw new UnauthorizedException("MEMBER_NOT_EXIST", 401); - } - } + // TODO: 实现checkSiteAuth业务逻辑 + return null; } /** * checkChannel */ async checkChannel(): Promise { - const channel: string = RequestUtils.channel(); - const siteId: number = this.requestContext.siteId; - if (channel != null){ - if (channel === ChannelEnum.H5.code){ - const h5ConfigVo: H5ConfigVo = this.coreH5Service.getH5(siteId); - const isOpen: number = h5ConfigVo.isOpen; - if(isOpen==0){ - throw new UnauthorizedException("站点已停止", 402); - } - }else if (channel === ChannelEnum.PC.code){ - const pcConfigVo: PcConfigVo = this.corePcService.getPc(siteId); - const isOpen: number = pcConfigVo.isOpen; - if(isOpen==0){ - throw new UnauthorizedException("站点已停止", 402); - } - } - } + // TODO: 实现checkChannel业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/login-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/login-service-impl.service.ts index f5002138..2f588d39 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/login-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/login-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; @@ -10,7 +10,7 @@ import { @LazyDto } from '../dtos/@-lazy.dto'; import { AccountLoginParamDto } from '../../../../dtos/api/login/param/account-login-param.dto'; import { MobileLoginParamDto } from '../../../../dtos/api/login/param/mobile-login-param.dto'; import { MobileRegisterParamDto } from '../../../../dtos/api/login/param/mobile-register-param.dto'; -import { MemberDto } from '../../../../entities/member.entity'; +import { Member } from '../../../../entities/member.entity'; import { ResetPasswordParamDto } from '../../../../dtos/api/login/param/reset-password-param.dto'; import { SendMobileCodeParamDto } from '../../../../dtos/api/login/param/send-mobile-code-param.dto'; @@ -31,87 +31,33 @@ export class LoginServiceImplService { /** * account */ - async account(param: AccountLoginParam): Promise { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).and(i => i.eq("username", param.username).or().eq("mobile", param.username))); - - if (ObjectUtil.isNull(member)) throw new BadRequestException("账号不存在"); - if (!PasswordEncipher.matche(param.password, member.password)) throw new BadRequestException("账号或密码错误"); - member.loginType = MemberLoginTypeEnum.USERNAME.type; - - return this.login(member); + async account(param: AccountLoginParamDto): Promise { + // TODO: 实现account业务逻辑 + return 0; } /** * mobile */ - async mobile(param: MobileLoginParam): Promise { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - - if (member != null) { - member.loginType = MemberLoginTypeEnum.MOBILE.type; - return this.login(member); - } else { - const config: LoginConfigVo = this.coreMemberConfigService.getLoginConfig(this.requestContext.siteId); - // 开启强制绑定手机号 登录会自动注册 - if (config.isBindMobile == 1) { - const registerParam: MobileRegisterParam = new MobileRegisterParam(); - Object.assign(registerParam, param); - return this.registerService.mobile(registerParam); - } - } - throw new BadRequestException("账号不存在"); + async mobile(param: MobileLoginParamDto): Promise { + // TODO: 实现mobile业务逻辑 + return null; } /** * login */ async login(member: Member): Promise { - member = memberMapper.selectById(member.memberId); - if (StatusEnum.OFF === member.status) throw new BadRequestException("账号被锁定"); - - member.loginTime = Date.now( / 1000); - member.loginIp = RequestUtils.ip(); - member.loginCount = member.loginCount + 1; - member.loginChannel = RequestUtils.channel(); - if (member.loginType != null) member.loginType = member.loginType; - member.lastVisitTime = Date.now( / 1000); - this.memberMapper.updateById(member); - - const loginModel: SaLoginModel = SaLoginModel.create(); - loginModel.device = RequestUtils.handler(.getHeader("User-Agent")); - loginModel.extra = "memberId", member.memberId; - loginModel.extra = "username", member.username; - loginModel.extra = "siteId", member.siteId; - // 执行登录 - StpUtil.login("member-" + member.memberId, loginModel); - // 获取返回内容 - const saTokenInfo: SaTokenInfo = StpUtil.tokenInfo; - - const vo: LoginVo = new LoginVo(); - vo.token = saTokenInfo.tokenValue; - vo.expiresTime = DateUtils.currTime(+saTokenInfo.tokenTimeout); - vo.mobile = member.mobile; - - // 会员登录事件 - const loginEvent: MemberLoginEvent = new MemberLoginEvent(); - loginEvent.siteId = this.requestContext.siteId; - loginEvent.addAppSign("core"); - loginEvent.name = "MemberLoginEvent"; - loginEvent.member = member; - EventPublisher.publishEvent(loginEvent); - - return vo; + // TODO: 实现login业务逻辑 + return null; } /** * resetPassword */ - async resetPassword(param: ResetPasswordParam): Promise { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("mobile", param.mobile).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNull(member)) throw new BadRequestException("当前填写的手机号不存在账号"); - - member.password = PasswordEncipher.encode(param.password); - this.memberMapper.updateById(member); + async resetPassword(param: ResetPasswordParamDto): Promise { + // TODO: 实现resetPassword业务逻辑 + return null; } /** @@ -124,25 +70,9 @@ export class LoginServiceImplService { /** * sendMobileCode */ - async sendMobileCode(param: SendMobileCodeParam): Promise { - const key: string = RandomUtil.randomString(30); - - const cache: MobileCodeCacheVo = new MobileCodeCacheVo(); - cache.mobile = param.mobile; - cache.code = String.format("%0" + 4 + "d", RandomUtil.randomInt(1, 9999)); - cache.type = param.type; - - const data: Record = {}; - data.put("mobile", param.mobile); - data.put("code", cache.code); - - this.coreNoticeService.send(param.siteId(), "member_verify_code", data); - - this.cached.put(key, cache, 600); - - const vo: SendMobileCodeVo = new SendMobileCodeVo(); - vo.key = key; - return vo; + async sendMobileCode(param: SendMobileCodeParamDto): Promise { + // TODO: 实现sendMobileCode业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/register-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/register-service-impl.service.ts index 5f54a7c2..c2ed7848 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/register-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/login/impl/register-service-impl.service.ts @@ -1,18 +1,17 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { LoginConfigVoDto } from '../../../../dtos/admin/member/vo/login-config-vo.dto'; import { AccountRegisterParamDto } from '../../../../dtos/api/login/param/account-register-param.dto'; import { MobileRegisterParamDto } from '../../../../dtos/api/login/param/mobile-register-param.dto'; import { LoginVoDto } from '../../../../dtos/api/login/vo/login-vo.dto'; import { MobileCodeCacheVoDto } from '../../../../dtos/api/login/vo/mobile-code-cache-vo.dto'; -import { MemberDto } from '../../../../entities/member.entity'; +import { Member } from '../../../../entities/member.entity'; @Injectable() export class RegisterServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -20,110 +19,39 @@ export class RegisterServiceImplService { * checkLoginConfig */ async checkLoginConfig(type: string): Promise { - const config: LoginConfigVo = this.coreMemberConfigService.getLoginConfig(this.requestContext.siteId); - if (MemberLoginTypeEnum.USERNAME.type === type && config.isUsername != 1) throw new BadRequestException("未开启账号登录注册"); - if (MemberLoginTypeEnum.MOBILE.type === type && config.isMobile != 1) throw new BadRequestException("未开启手机验证码登录注册"); + // TODO: 实现checkLoginConfig业务逻辑 + return null; } /** * account */ - async account(param: AccountRegisterParam): Promise { - const memberExist: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("username", param.username).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(memberExist)) throw new BadRequestException("账号已存在"); - - if (!param.mobile.isEmpty()) { - const mobileExist: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("mobile", param.mobile).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(mobileExist)) throw new BadRequestException("当前手机号已绑定账号"); - this.checkMobileCode(param.mobile, param.mobileKey, param.mobileCode); - } - - const member: Member = new Member(); - member.username = param.username; - member.nickname = param.username; - member.password = PasswordEncipher.encode(param.password); - member.mobile = param.mobile; - member.registerType = MemberRegisterTypeEnum.USERNAME.type; - member.loginType = MemberLoginTypeEnum.USERNAME.type; - member.pid = param.pid; - - return this.register(member); + async account(param: AccountRegisterParamDto): Promise { + // TODO: 实现account业务逻辑 + return 0; } /** * mobile */ - async mobile(param: MobileRegisterParam): Promise { - const memberExist: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("mobile", param.mobile).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(memberExist)) throw new BadRequestException("账号已存在"); - - const member: Member = new Member(); - member.mobile = param.mobile; - member.nickname = param.mobile.substring(0, 3 + "****" + param.mobile.substring(7)); - member.registerType = MemberRegisterTypeEnum.MOBILE.type; - member.loginType = MemberLoginTypeEnum.MOBILE.type; - member.pid = param.pid; - member.headimg = ObjectUtil.defaultIfNull(param.avatar, ""); - member.nickname = ObjectUtil.defaultIfNull(param.nickname, ""); - member.wxOpenid = ObjectUtil.defaultIfNull(param.openid, ""); - - return this.register(member); + async mobile(param: MobileRegisterParamDto): Promise { + // TODO: 实现mobile业务逻辑 + return null; } /** * register */ async register(member: Member): Promise { - const request: HttpServletRequest = RequestUtils.handler(); - const pid: number = ObjectUtil.defaultIfNull(member.pid, 0); - if (pid > 0) { - const inviteMember: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("member_id", member.pid).eq("site_id", this.requestContext.siteId)); - if (inviteMember == null) member.pid = 0; - } - if (member.mobile != null && !member.mobile.isEmpty()) { - const mobile: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("mobile", member.mobile).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(mobile)) throw new BadRequestException("账号已存在"); - } - - if (CommonUtils.isEmpty(member.nickname)) { - if (CommonUtils.isNotEmpty(member.username)) { - member.nickname = member.username; - } else if (CommonUtils.isNotEmpty(member.mobile)) { - member.nickname = member.mobile.substring(0, 3 + "****" + member.mobile.substring(7)); - } else { - member.nickname = createName(); - } - } - - member.siteId = this.requestContext.siteId; - member.createTime = Date.now( / 1000); - member.memberNo = this.coreMemberService.createMemberNo(this.requestContext.siteId); - member.registerChannel = RequestUtils.channel(); - this.this.memberRepository.save(member); - - // 会员注册事件 - const registerEvent: MemberRegisterEvent = new MemberRegisterEvent(); - registerEvent.siteId = this.requestContext.siteId; - registerEvent.addAppSign("core"); - registerEvent.name = "MemberRegisterEvent"; - registerEvent.member = member; - EventPublisher.publishEvent(registerEvent); - - return this.loginService.login(member); + // TODO: 实现register业务逻辑 + return null; } /** * checkMobileCode */ async checkMobileCode(mobile: string, mobileKey: string, mobileCode: string): Promise { - if ((!mobile || mobile.length === 0)) throw new BadRequestException("手机号必须填写"); - const request: HttpServletRequest = RequestUtils.handler(); - if (CommonUtils.isEmpty(mobileKey) || CommonUtils.isEmpty(mobileCode)) throw new BadRequestException("手机验证码有误"); - const cache: Object = cached.get(mobileKey); - if (ObjectUtil.isNull(cache)) throw new BadRequestException("手机验证码有误"); - const vo: MobileCodeCacheVo = new MobileCodeCacheVo(); - Object.assign(vo, cache); - if (!vo.mobile === mobile || !vo.code === mobileCode) throw new BadRequestException("手机验证码有误"); - cached.remove(mobileKey); + // TODO: 实现checkMobileCode业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-account-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-account-service-impl.service.ts index 86e36bde..b834b5a9 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-account-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-account-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { GetAmountType(Dto } from '../dtos/get-amount-type(.dto'; import { GetTradeType(Dto } from '../dtos/get-trade-type(.dto'; @@ -19,65 +19,24 @@ export class MemberAccountServiceImplService { /** * accountRecords */ - async accountRecords(param: AccountRecordsParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("id"); - queryWrapper.eq("member_id", param.memberId()); - if (StrUtil.isNotEmpty(param.accountType)) { - queryWrapper.eq("account_type", param.accountType); - } - if (StrUtil.isNotEmpty(param.fromType)) { - queryWrapper.eq("from_type", param.fromType); - } - if (CommonUtils.isNotEmpty(param.createTime)) { - QueryMapperUtils.buildByTime(queryWrapper, "create_time", param.createTime); - } - const count: number = this.this.memberAccountLogRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }); - return count; + async accountRecords(param: AccountRecordsParamDto): Promise { + // TODO: 实现accountRecords业务逻辑 + return 0; } /** * getAccountSource */ - async getAccountSource(param: AccountAccountSourceParam): Promise { - const jsonObject: Record = JsonModuleLoader.build().mergeResultElement("account_change_type.json"); - const accountTypeObject: Record = jsonObject.getRecord(param.accountType); - if (accountTypeObject == null) { - throw new BaseException("MEMBER_TYPE_NOT_EXIST"); - } - return accountTypeObject; + async getAccountSource(param: AccountAccountSourceParamDto): Promise { + // TODO: 实现getAccountSource业务逻辑 + return 0; } /** * pointCount */ - async pointCount(param: AccountPointCountParam): Promise { - const accountPointCountVo: AccountPointCountVo = new AccountPointCountVo(); - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("point,point_get"); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - const member: Member = this.this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (member == null) { - throw new BaseException("会员不存在"); - } - if (member.point != null) { - accountPointCountVo.point = member.point; - } - if (member.pointGet != null) { - accountPointCountVo.pointGet = member.pointGet; - } - - const accountLog: MemberAccountLog = this.memberAccountLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("member_id", param.memberId()) - .eq("account_type", AccountTypeEnum.POINT.type) - .lt("account_data", 0) - .select("SUM(account_data) AS account_data") - .groupBy("member_id") - ); - if (accountLog != null) { - accountPointCountVo.use = Math.abs(accountLog.accountData.doubleValue()); - } - return accountPointCountVo; + async pointCount(param: AccountPointCountParamDto): Promise { + // TODO: 实现pointCount业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-address-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-address-service-impl.service.ts index a9915802..c4e54db5 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-address-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-address-service-impl.service.ts @@ -5,7 +5,7 @@ import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberAddressGetInfoVoDto } from '../../../../dtos/api/member/vo/member-address-get-info-vo.dto'; import { MemberAddressListInfoVoDto } from '../../../../dtos/api/member/vo/member-address-list-info-vo.dto'; import { MemberAddressAddParamDto } from '../../../../dtos/api/member/param/member-address-add-param.dto'; -import { MemberAddressDto } from '../../../../entities/member-address.entity'; +import { MemberAddress } from '../../../../entities/member-address.entity'; import { MemberAddressDeleteParamDto } from '../../../../dtos/api/member/param/member-address-delete-param.dto'; import { MemberAddressEditParamDto } from '../../../../dtos/api/member/param/member-address-edit-param.dto'; import { MemberAddressGetInfoParamDto } from '../../../../dtos/api/member/param/member-address-get-info-param.dto'; @@ -20,94 +20,39 @@ export class MemberAddressServiceImplService { /** * add */ - async add(param: MemberAddressAddParam): Promise { - // 校验区域有效性 - // this.checkAndFillAddressValue(param); - // 默认地址设定 - if (param.isDefault != null && param.isDefault == 1) { - try { - this.deleteDefaultAddress(param.memberId()); - } catch (e) { - log.error("更新会员默认地址数据库操作错误:", e.message); - throw new BaseException("添加会员收货地址错误."); - } - } - // 插入实体表 - const newMemberAddress: MemberAddress = CollectUtils.build(param, MemberAddress.class); - // 前置业务条件 - newMemberAddress.siteId = param.siteId(); - newMemberAddress.memberId = param.memberId(); - // 插入显式的设置为空 - newMemberAddress.id = null; - const result: number = this.this.memberAddressRepository.save(newMemberAddress); - if (result <= 0) { - throw new BaseException("添加会员收货地址失败."); - } - return result; + async add(param: MemberAddressAddParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * delete */ - async delete(param: MemberAddressDeleteParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - queryWrapper.eq("id", param.id); - const result: number = this.this.memberAddressRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (result == 0) { - throw new BaseException("删除会员收货地址失败."); - } - return result; + async delete(param: MemberAddressDeleteParamDto): Promise { + // TODO: 实现delete业务逻辑 } /** * edit */ - async edit(id: number, param: MemberAddressEditParam): Promise { - // 校验区域有效性 - // this.checkAndFillAddressValue(param); - // 默认地址设定 - if (param.isDefault != null && param.isDefault == 1) { - try { - deleteDefaultAddress(param.memberId()); - } catch (e) { - log.error("更新会员默认地址数据库操作错误:", e.message); - throw new BaseException("添加会员收货地址错误."); - } - } - // 存在校验 - const oldMemberAddress: MemberAddress = this.getMemberAddress(param.siteId(), param.memberId(), param.id); - if (oldMemberAddress == null) { - throw new BaseException("[" + oldMemberAddress.id + "]会员收货地址不存在"); - } - // 修改实体表 - const newMemberAddress: MemberAddress = CollectUtils.build(param, MemberAddress.class); - newMemberAddress.id = oldMemberAddress.id; - return this.memberAddressMapper.updateById(newMemberAddress); + async edit(id: number, param: MemberAddressEditParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * getInfo */ - async getInfo(param: MemberAddressGetInfoParam): Promise { - const memberAddress: MemberAddress = this.getMemberAddress(param.siteId(), param.memberId(), param.id); - const memberAddressGetInfoVo: MemberAddressGetInfoVo = new MemberAddressGetInfoVo(); - Object.assign(memberAddressGetInfoVo, memberAddress); - return memberAddressGetInfoVo; + async getInfo(param: MemberAddressGetInfoParamDto): Promise { + // TODO: 实现getInfo业务逻辑 + return null; } /** * getList */ - async getList(param: MemberAddressGetListParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("id,member_id,name,mobile,address,address_name,full_address,is_default,lng,lat"); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - queryWrapper.orderByDesc(["is_default", "id"]); - const memberAddressList: MemberAddress[] = this.memberAddressRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const memberAddressListInfoVo: MemberAddressListInfoVo[] = CollectUtils.convert(memberAddressList, MemberAddressListInfoVo.class); - return memberAddressListInfoVo; + async getList(param: MemberAddressGetListParamDto): Promise { + // TODO: 实现getList业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-cash-out-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-cash-out-service-impl.service.ts index f65de3ed..555257e7 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-cash-out-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-cash-out-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { CashOutTransferParamDto } from '../../../../dtos/admin/member/param/cash-out-transfer-param.dto'; import { CashOutConfigVoDto } from '../../../../dtos/admin/member/vo/cash-out-config-vo.dto'; @@ -24,7 +24,6 @@ import { MemberCashOutAccountDeleteParamDto } from '../../../../dtos/api/member/ @Injectable() export class MemberCashOutServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, @@ -32,50 +31,29 @@ export class MemberCashOutServiceImplService { /** * cashOutInfo */ - async cashOutInfo(param: MemberCashOutInfoParam): Promise { - const vo: MemberCashOutInfoVo = memberCashOutMapper.selectJoinOne( - MemberCashOutInfoVo.class, - new MPJany /* TODO: QueryWrapper */() - .select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg,pt.transfer_voucher,pt.transfer_remark,pt.extra,pt.package_info") - .eq("mco.id", param.id) - .eq("mco.member_id", param.memberId()) - .eq("mco.site_id", param.siteId()) - .setAlias("mco") - .leftJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix)) - .leftJoin("?_pay_transfer pt ON mco.transfer_no = pt.transfer_no".replace("?_", this.appConfig.tablePrefix)) - ); - - if (vo != null) { - MemberCashOutInfoVo.const transfer: Transfer = new MemberCashOutInfoVo.Transfer(); - transfer.transferNo = vo.transferNo; - transfer.transferRemark = vo.transferRemark; - transfer.transferVoucher = vo.transferVoucher; - transfer.extra = vo.extra; - transfer.packageInfo = vo.packageInfo; - vo.transfer = transfer; - } - - return vo; + async cashOutInfo(param: MemberCashOutInfoParamDto): Promise { + // TODO: 实现cashOutInfo业务逻辑 + return null; } /** * cashOutConfig */ - async cashOutConfig(param: MemberCashOutConfigParam): Promise { + async cashOutConfig(param: MemberCashOutConfigParamDto): Promise { return this.coreMemberConfigService.getCashOutConfig(param.siteId()); } /** * transferMethod */ - async transferMethod(param: MemberCashOutTransferMethodParam): Promise { + async transferMethod(param: MemberCashOutTransferMethodParamDto): Promise { return TransferTypeEnum.map; } /** * cashOutApply */ - async cashOutApply(param: MemberCashOutApplyParam): Promise { + async cashOutApply(param: MemberCashOutApplyParamDto): Promise { param.memberId = this.requestContext.memberId; param.siteId = this.requestContext.siteId; return this.coreMemberCashOutService.apply(param); @@ -84,116 +62,64 @@ export class MemberCashOutServiceImplService { /** * cashOutCancel */ - async cashOutCancel(param: MemberCashOutCancelParam): Promise { - const cashOut: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", param.siteId()) - .eq("id", param.id)); - if (CommonUtils.isEmpty(cashOut)) throw new BadRequestException("提现申请不存在"); - - this.coreMemberCashOutService.cancel(cashOut.siteId, cashOut.id); - return true; + async cashOutCancel(param: MemberCashOutCancelParamDto): Promise { + // TODO: 实现cashOutCancel业务逻辑 + return null; } /** * transfer */ - async transfer(param: CashOutTransferParam): Promise { - const cashOut: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", this.requestContext.siteId) - .eq("id", param.id)); - if (CommonUtils.isEmpty(cashOut)) throw new BadRequestException("提现申请不存在"); - if (!cashOut.status === MemberCashOutStatusEnum.WAIT_TRANSFER.status) throw new BadRequestException("当前提现申请未处于待转账状态"); - - return this.coreMemberCashOutService.transfer(cashOut, param); + async transfer(param: CashOutTransferParamDto): Promise { + // TODO: 实现transfer业务逻辑 + return null; } /** * accountList */ - async accountList(pageParam: PageParam, param: MemberCashOutAccountListParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code"); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - if (CommonUtils.isNotEmpty(param.accountType)) queryWrapper.eq("account_type", param.accountType); - queryWrapper.orderByDesc(["create_time"]); - [MemberCashOutAccount[], number] iPage = this.this.memberCashOutAccountRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const dataList: MemberCashOutAccountVo[] = CollectUtils.convert(iPageRecords, MemberCashOutAccountVo.class); - return PageResult.build(page, limit, iPageTotal).data = dataList; + async accountList(pageParam: PageParamDto, param: MemberCashOutAccountListParamDto): Promise { + // TODO: 实现accountList业务逻辑 + return 0; } /** * accountDetails */ - async accountDetails(param: MemberCashOutAccountDetailsParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code"); - queryWrapper.eq("account_id", param.accountId); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - const memberCashOutAccount: MemberCashOutAccount = this.this.memberCashOutAccountRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - const memberCashOutAccountDetailsVo: MemberCashOutAccountDetailsVo = new MemberCashOutAccountDetailsVo(); - Object.assign(memberCashOutAccountDetailsVo, memberCashOutAccount); - return memberCashOutAccountDetailsVo; + async accountDetails(param: MemberCashOutAccountDetailsParamDto): Promise { + // TODO: 实现accountDetails业务逻辑 + return 0; } /** * accountDetailsOfFirst */ - async accountDetailsOfFirst(param: MemberCashOutFirstAccountDetailsParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code"); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - if (CommonUtils.isNotEmpty(param.accountType)) queryWrapper.eq("account_type", param.accountType); - queryWrapper.orderByDesc("create_time"); - queryWrapper.last("limit 1"); - const memberCashOutAccount: MemberCashOutAccount = this.this.memberCashOutAccountRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (memberCashOutAccount == null) return null; - const memberCashOutFirstAccountDetailsVo: MemberCashOutFirstAccountDetailsVo = new MemberCashOutFirstAccountDetailsVo(); - Object.assign(memberCashOutFirstAccountDetailsVo, memberCashOutAccount); - return memberCashOutFirstAccountDetailsVo; + async accountDetailsOfFirst(param: MemberCashOutFirstAccountDetailsParamDto): Promise { + // TODO: 实现accountDetailsOfFirst业务逻辑 + return 0; } /** * addAccount */ - async addAccount(param: MemberCashOutAccountAddParam): Promise { - // 构建新的对象,并插入数据库 - const newMemberCashOutAccount: MemberCashOutAccount = new MemberCashOutAccount(); - newMemberCashOutAccount.siteId = param.siteId(); - newMemberCashOutAccount.memberId = param.memberId(); - newMemberCashOutAccount.createTime = Date.now( / 1000); - Object.assign(newMemberCashOutAccount, param); - this.this.memberCashOutAccountRepository.save(newMemberCashOutAccount); - // 返回当前对象的ID - return newMemberCashOutAccount.accountId; + async addAccount(param: MemberCashOutAccountAddParamDto): Promise { + // TODO: 实现addAccount业务逻辑 + return 0; } /** * editAccount */ - async editAccount(accountId: number, param: MemberCashOutAccountEditParam): Promise { - // 根据ID查找实体对象,对象存在即更新数据库 - const oldMemberCashOutAccount: MemberCashOutAccount = this.this.memberCashOutAccountRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("member_id", param.memberId())); - if (oldMemberCashOutAccount == null) { - throw new Error("会员账户不存在"); - } - const newMemberCashOutAccount: MemberCashOutAccount = new MemberCashOutAccount(); - Object.assign(newMemberCashOutAccount, param); - newMemberCashOutAccount.accountId = accountId; - newMemberCashOutAccount.updateTime = Date.now( / 1000); - return this.memberCashOutAccountMapper.updateById(newMemberCashOutAccount); + async editAccount(accountId: number, param: MemberCashOutAccountEditParamDto): Promise { + // TODO: 实现editAccount业务逻辑 + return 0; } /** * deleteAccount */ - async deleteAccount(param: MemberCashOutAccountDeleteParam): Promise { - return this.this.memberCashOutAccountRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("member_id", param.memberId())); + async deleteAccount(param: MemberCashOutAccountDeleteParamDto): Promise { + // TODO: 实现deleteAccount业务逻辑 + return 0; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-level-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-level-service-impl.service.ts index 995a6ca9..f661cc33 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-level-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-level-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberLevelParamDto } from '../../../../dtos/api/member/param/member-level-param.dto'; import { MemberGetMobileVoDto } from '../../../../dtos/api/member/vo/member-get-mobile-vo.dto'; import { MemberLevelInfoVoDto } from '../../../../dtos/api/member/vo/member-level-info-vo.dto'; @@ -10,8 +10,6 @@ import { MemberLevelSimpleInfoVoDto } from '../../../../dtos/api/member/vo/membe @Injectable() export class MemberLevelServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -26,110 +24,31 @@ export class MemberLevelServiceImplService { * findByIds */ async findByIds(idSet: Set): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("level_id,level_name"); - queryWrapper.in("id", idSet); - const memberLevelList: MemberLevel[] = this.memberLevelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - return CollectUtils.convert(memberLevelList, MemberLevelSimpleInfoVo.class); + // TODO: 实现findByIds业务逻辑 + return null; } /** * list */ - async list(param: MemberLevelParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("level_id,site_id,level_name,growth,remark,level_benefits,level_gifts"); - queryWrapper.eq("site_id", param.siteId()); - const memberLevelList: MemberLevel[] = this.memberLevelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - - if (memberLevelList == null) return null; - - const levelStyle: Record = MemberLevelStyleEnum.style; - - const filling: Record = new Record(); - filling.put("benefits_one", new Record().set("title", "专属客服").set("desc", "专业服务").set("icon", "/static/resource/images/member/benefits/benefits_kefu.png")); - filling.put("benefits_two", new Record().set("title", "专属徽章").set("desc", "专属徽章").set("icon", "/static/resource/images/member/benefits/benefits_badge.png")); - filling.put("benefits_four", new Record().set("title", "经验累计").set("desc", "经验累计").set("icon", "/static/resource/images/member/benefits/benefits_experience.png")); - filling.put("benefits_three", new Record().set("title", "尊享客服").set("desc", "尊享客服").set("icon", "/static/resource/images/member/benefits/benefits_badge.png")); - - const index: number = 0; - const list: MemberLevelInfoVo[] = []; - for (const level of memberLevelList) { - const vo: MemberLevelInfoVo = new MemberLevelInfoVo(); - Object.assign(vo, level); - - if (CommonUtils.isNotEmpty(level.levelBenefits)) { - const benefits: Record = JsonUtils.parseObject(level.levelBenefits); - benefits = this.coreMemberService.getBenefitsContent(param.siteId(), benefits, "member_level"); - vo.levelBenefits = benefits; - } else { - vo.levelBenefits = filling; - } - - if (vo.levelBenefits.size() < 4) { - for (const key of filling.keySet()) { - if (vo.levelBenefits.size() == 4) break; - vo.levelBenefits.putByPath(key + ".content", filling.get(key)); - } - } - - if (!level.levelGifts.isEmpty()) { - const gifts: Record = JsonUtils.parseObject(level.levelGifts); - gifts = this.coreMemberService.getGiftContent(param.siteId(), gifts, "member_level"); - vo.levelGifts = gifts; - } - const levelKey: number = index % 7 + 1; - vo.levelBg = "/static/resource/images/member/level/bg_" + levelKey + ".png"; - vo.memberBg = "/static/resource/images/member/level/member_" + levelKey + ".png"; - vo.levelIcon = "/static/resource/images/member/level/level_icon" + levelKey + ".png"; - vo.levelTag = "/static/resource/images/member/level/level_" + levelKey + ".png"; - vo.levelStyle = levelStyle.getRecord("level_" + levelKey); - - list.push(vo); - index++; - } - - return list; + async list(param: MemberLevelParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * findMemberLevel */ async findMemberLevel(memberId: number): Promise { - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "m" - .leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("ml.*"); - queryWrapper.eq("m.member_id", memberId); - queryWrapper.ne("m.member_level", 0); - const level: MemberLevel = memberMapper.selectJoinOne(MemberLevel.class, queryWrapper); - if (level == null) return null; - - const vo: MemberLevelInfoVo = new MemberLevelInfoVo(); - Object.assign(vo, level); - - if (CommonUtils.isNotEmpty(level.levelBenefits) && JSONUtil.isJson(level.levelBenefits)) vo.levelBenefits = JsonUtils.parseObject(level.levelBenefits); - if (CommonUtils.isNotEmpty(level.levelGifts) && JSONUtil.isJson(level.levelGifts)) vo.levelGifts = JsonUtils.parseObject(level.levelGifts); - - return vo; + // TODO: 实现findMemberLevel业务逻辑 + return null; } /** * getMobile */ async getMobile(mobileCode: string): Promise { - try { - const phoneInfo: WxMaPhoneNumberInfo = WechatUtils.miniapp(this.requestContext.getSiteId()).userService.getPhoneNoInfo(mobileCode); - const mobile: string = phoneInfo.purePhoneNumber; - - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("mobile", mobile).eq("site_id", this.requestContext.siteId)); - if (member != null) throw new BadRequestException("当前手机号已绑定账号"); - - const vo: MemberGetMobileVo = new MemberGetMobileVo(); - vo.mobile = mobile; - return vo; - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现getMobile业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-service-impl.service.ts index 6661349f..613b4d3b 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberConfigVoDto } from '../../../../dtos/admin/member/vo/member-config-vo.dto'; import { MemberCenterVoDto } from '../../../../dtos/api/member/vo/member-center-vo.dto'; import { MemberInfoVoDto } from '../../../../dtos/api/member/vo/member-info-vo.dto'; @@ -17,155 +17,61 @@ import { MemberQcodeParamDto } from '../../../../dtos/api/member/param/member-qc @Injectable() export class MemberServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * info */ - async info(param: MemberInfoParam): Promise { - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - queryWrapper.alias = "m" - .leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix)); - queryWrapper.select("member_id, m.site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, m.create_time, last_visit_time, last_consum_time, sex, m.status, birthday, point, balance, m.growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, wx_openid, weapp_openid, commission, commission_get, commission_cash_outing, ml.level_name as member_level_name"); - queryWrapper.eq("member_id", param.memberId()); - // SAAS域控制(交给SQL引擎处理) - queryWrapper.eq("m.site_id", param.siteId()); - const memberInfoVo: MemberInfoVo = memberMapper.selectJoinOne(MemberInfoVo.class, queryWrapper); - if (CommonUtils.isNotEmpty(memberInfoVo)){ - const memberConfig: MemberConfigVo = this.coreMemberConfigService.getMemberConfig(memberInfoVo.siteId); - memberInfoVo.formId = memberConfig.formId == null ? "" : memberConfig.formId.toString(); - memberInfoVo.formRecordId = ""; - if (StringUtils.isNotEmpty(memberInfoVo.formId)){ - const diyFormRecords: DiyFormRecords = this.diyFormRecordsRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq(DiyFormRecords::getFormId, memberConfig.formId) - .eq(DiyFormRecords::getMemberId, memberInfoVo.memberId) - .orderByDesc(DiyFormRecords::getCreateTime)); - if (CommonUtils.isNotEmpty(diyFormRecords)){ - memberInfoVo.formRecordId = diyFormRecords.recordId.toString(); - } - } - } - return memberInfoVo; + async info(param: MemberInfoParamDto): Promise { + // TODO: 实现info业务逻辑 + return null; } /** * center */ - async center(param: MemberCenterParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("member_id, site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, commission, commission_get, commission_cash_outing"); - queryWrapper.eq("member_id", param.memberId()); - queryWrapper.eq("site_id", param.siteId()); - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (member == null) { - return null; - } - - const memberCenterVo: MemberCenterVo = new MemberCenterVo(); - Object.assign(memberCenterVo, member); - return memberCenterVo; + async center(param: MemberCenterParamDto): Promise { + // TODO: 实现center业务逻辑 + return null; } /** * modify */ - async modify(param: MemberModifyParam): Promise { - const oldMember: Member = this.memberMapper.selectById(param.memberId()); - if (!oldMember) throw new BadRequestException("会员不存在"); - - const newMember: Member = new Member(); - newMember.memberId = oldMember.memberId; - - switch (param.field) { - case "nickname": - newMember.nickname = String(param.value); - break; - case "headimg": - newMember.headimg = String(param.value); - break; - case "member_label": - newMember.memberLabel = String(param.value); - break; - case "member_level": - newMember.memberLevel = number.parseInt(String(param.value)); - break; - case "birthday": - newMember.birthday = String(param.value); - break; - case "sex": - newMember.sex = number.parseInt(String(param.value)); - break; - default: - throw new BadRequestException("不允许修改的信息"); - } - return this.memberMapper.updateById(newMember); + async modify(param: MemberModifyParamDto): Promise { + // TODO: 实现modify业务逻辑 + return null; } /** * edit */ - async edit(param: MemberEditParam): Promise { - const oldMember: Member = this.memberMapper.selectById(param.memberId()); - if (!oldMember) throw new BadRequestException("会员不存在"); - - const newMember: Member = new Member(); - newMember.memberId = oldMember.memberId; - if (CommonUtils.isNotEmpty(param.getData().nickname)) newMember.nickname = param.getData(.nickname); - if (CommonUtils.isNotEmpty(param.getData().headimg)) newMember.headimg = param.getData(.headimg); - if (CommonUtils.isNotEmpty(param.getData().birthday)) newMember.birthday = param.getData(.birthday); - if (CommonUtils.isNotEmpty(param.getData().sex)) newMember.sex = param.getData(.sex); - if (CommonUtils.isNotEmpty(param.getData().lastVisitTime)) newMember.lastVisitTime = param.getData(.lastVisitTime); - return this.memberMapper.updateById(newMember); + async edit(param: MemberEditParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * mobile */ - async mobile(param: MemberMobileParam): Promise { - const oldMember: Member = this.memberMapper.selectById(param.memberId()); - if (!oldMember) throw new BadRequestException("会员不存在"); - - if (CommonUtils.isNotEmpty(param.mobile)) { - this.registerService.checkMobileCode(param.mobile, param.mobileKey, param.mobileCode); - } else if (CommonUtils.isNotEmpty(param.mobileCode)) { - try { - const phoneInfo: WxMaPhoneNumberInfo = WechatUtils.miniapp(this.requestContext.getSiteId()).getUserService().getPhoneNoInfo(param.mobileCode); - param.mobile = phoneInfo.purePhoneNumber; - } catch (e) { - throw new BadRequestException(e.message); - } - } else { - throw new BadRequestException("手机号不存在"); - } - - const mobileExist: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("mobile", param.mobile).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(mobileExist)) throw new BadRequestException("当前手机号已绑定账号"); - - const newMember: Member = new Member(); - newMember.memberId = param.memberId(); - newMember.mobile = param.mobile; - - return this.memberMapper.updateById(newMember); + async mobile(param: MemberMobileParamDto): Promise { + // TODO: 实现mobile业务逻辑 + return null; } /** * log */ - async log(param: MemberLogParam): Promise { - const updateMember: Member = new Member(); - updateMember.memberId = param.memberId(); - updateMember.lastVisitTime = DateUtils.currTime(); - this.memberMapper.updateById(updateMember); - return 1; + async log(param: MemberLogParamDto): Promise { + // TODO: 实现log业务逻辑 + return null; } /** * qrcode */ - async qrcode(param: MemberQcodeParam): Promise { + async qrcode(param: MemberQcodeParamDto): Promise { return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-sign-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-sign-service-impl.service.ts index 2a6df564..f8e0c889 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-sign-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/member/impl/member-sign-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberSignRecordVoDto } from '../../../../dtos/api/member/vo/member-sign-record-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberSignRecordParamDto } from '../../../../dtos/api/member/param/member-sign-record-param.dto'; @@ -18,251 +18,53 @@ import { MemberSignConfigParamDto } from '../../../../dtos/api/member/param/memb @Injectable() export class MemberSignServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * signRecord */ - async signRecord(pageParam: PageParam, param: MemberSignRecordParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - const queryWrapper: QueryWrapper = new QueryWrapper(); - queryWrapper.select("sign_id, site_id, member_id, days, day_award, continue_award, continue_tag, create_time, is_sign"); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - queryWrapper.orderByDesc(["create_time"]); - - [MemberSign[], number] iPage = this.this.memberSignRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const dataList: MemberSignRecordVo[] = CollectUtils.convert(iPageRecords, MemberSignRecordVo.class); - return PageResult.build(page, limit, iPageTotal).data = dataList; + async signRecord(pageParam: PageParamDto, param: MemberSignRecordParamDto): Promise { + // TODO: 实现signRecord业务逻辑 + return null; } /** * signDetails */ - async signDetails(param: MemberSignDetailsParam): Promise { - const queryWrapper: QueryWrapper = new QueryWrapper(); - queryWrapper.select("sign_id, site_id, member_id, days, day_award, continue_award, continue_tag, create_time, is_sign"); - queryWrapper.eq("sign_id", param.signId); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("member_id", param.memberId()); - const memberSignList: MemberSign[] = this.this.memberSignRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const memberSignDetailsVo: MemberSignDetailsVo = null; - if (memberSignList != null && memberSignList.length > 0) { - memberSignDetailsVo = new MemberSignDetailsVo(); - Object.assign(memberSignDetailsVo, memberSignList.get(0)); - } - return memberSignDetailsVo; + async signDetails(param: MemberSignDetailsParamDto): Promise { + // TODO: 实现signDetails业务逻辑 + return null; } /** * signOperate */ - async signOperate(param: MemberSignOperateParam): Promise { - const signConfig: Record = this.coreConfigService.getConfigValue(this.requestContext.siteId, "SIGN_CONFIG"); - const config: MemberSignConfigVo = Object.assign(new MemberSignConfigVo(), signConfig) /* TODO: 检查MemberSignConfigVo构造函数 */; - - if (!config.isUse) throw new Error("签到未开启"); - - // 获取今天的签到 - const todayMemberSign: MemberSign = this.queryMemberSign(param.siteId(), param.memberId(), DateUtils.formatTodayString); - if (todayMemberSign != null) throw new Error("今日已签到"); - - const vo: MemberSignOperateVo = new MemberSignOperateVo(); - vo.title = "签到成功"; - vo.info = "恭喜您获得以下奖励"; - - // 获取昨天的签到 - const yesterdayMemberSign: MemberSign = this.queryMemberSign(param.siteId(), param.memberId(), DateUtils.formatYesterdayString); - - const days: number = 1; - if (yesterdayMemberSign != null) { - //连签天数大于签到周期,连签天数重置为1 - days = yesterdayMemberSign.days + 1; - if (days > config.signPeriod) { - days = 1; - } - if (CommonUtils.isNotEmpty(config.continueAward)) { - const continueSigns: JSONArray = config.continueAward; - CollUtil.sort(continueSigns, Comparator.comparing(o => ((Record) o).getInt("continue_sign")).reversed()); - // 获取最大的连签天数 - const maxContinueSign: number = continueSigns.getRecord(0).getInt("continue_sign"); - if (days > maxContinueSign) { - days = 1; - } - } - } - - // 添加签到记录 - const model: MemberSign = new MemberSign(); - model.siteId = param.siteId(); - model.memberId = param.memberId(); - model.isSign = 1; - model.createTime = Date.now( / 1000); - model.days = days; - model.dayAward = config.dayAward.toString(); - model.continueAward = ""; - if (days === 1) model.startTime = Date.now( / 1000); - this.memberSignRepository.save(model); - - // 发放日签奖励 - const dayAwardVar: Record = {}; - dayAwardVar.put("from_type", "day_sign_award"); - dayAwardVar.put("memo", "日签奖励"); - this.coreMemberService.memberGiftGrant(param.siteId(), param.memberId(), config.dayAward, dayAwardVar); - vo.awards = this.coreMemberService.getGiftContent(param.siteId(, config.dayAward, "member_sign")); - - // 发放连签奖励 - if (config.continueAward.size() > 0) { - const continueAward: Record = null; - for (const i of number = 0; i < config.continueAward.size(); i++) { - const item: Record = config.continueAward.getRecord(i); - if (item.getInt("continue_sign").equals(days)) { - // 是否限制领取 - if (item.getInt("receive_limit").equals(2)) { - // 周期开始时间 - const periodStartTime: number = this.memberSignRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("member_id", param.memberId()) - .eq("site_id", param.siteId()) - .eq("days", 1) - .gt("start_time", 0) - .orderByDesc("sign_id") - .last("limit 1") - ).startTime; - // 周期结束时间 - const periodEndTime: number = periodStartTime + (config.signPeriod * 86400); - // 领取次数 - const receiveNum: number = this.memberSignRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", param.siteId()) - .between("create_time", periodStartTime, periodEndTime) - .eq("continue_tag", item.getStr("continue_tag")) - ); - if (receiveNum < item.getInt("receive_num")) { - continueAward = item; - } - } else { - continueAward = item; - } - break; - } - } - - if (continueAward != null) { - model.continueTag = continueAward.getStr("continue_tag"); - continueAward.remove("continue_sign"); - continueAward.remove("continue_tag"); - continueAward.remove("receive_limit"); - continueAward.remove("receive_num"); - - const continueAwardVar: Record = {}; - continueAwardVar.put("from_type", "continue_sign_award"); - continueAwardVar.put("memo", "连签奖励"); - this.coreMemberService.memberGiftGrant(param.siteId(), param.memberId(), continueAward, continueAwardVar); - - model.continueAward = continueAward.toString(); - memberSignMapper.updateById(model); - - vo.info = "连签" + days.toString( + "天恭喜您获得以下奖励"); - vo.awards = this.coreMemberService.getGiftContent(param.siteId(, continueAward, "member_sign")); - } - } - - return vo; + async signOperate(param: MemberSignOperateParamDto): Promise { + // TODO: 实现signOperate业务逻辑 + return null; } /** * signMonthRecord */ - async signMonthRecord(param: MemberSignMonthRecordParam): Promise { - const vo: MemberSignMonthRecordVo = new MemberSignMonthRecordVo(); - const days: number[] = []; - const period: MemberSignMonthRecordVo.Period[] = []; - - const date: Date = DateUtil.parse(param.year + "-" + param.month + "-1"); - - const signRecord: MemberSign[] = this.this.memberSignRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })) - .between("create_time", - DateUtil.beginOfMonth(date).time / 1000, - DateUtil.endOfMonth(date).time / 1000) - .orderByAsc("create_time")); - - if (signRecord.length > 0) { - for (const item of signRecord) { - days.push(number.parseInt(DateUtil.format(new Date(item.createTime * 1000), "dd"))); - } - } - - vo.days = days; - vo.period = period; - return vo; + async signMonthRecord(param: MemberSignMonthRecordParamDto): Promise { + // TODO: 实现signMonthRecord业务逻辑 + return null; } /** * signDayRecord */ - async signDayRecord(param: MemberSignDayRecordParam): Promise { + async signDayRecord(param: MemberSignDayRecordParamDto): Promise { return null; } /** * signConfig */ - async signConfig(param: MemberSignConfigParam): Promise { - const config: Record = this.coreConfigService.getConfigValue(this.requestContext.siteId, "SIGN_CONFIG"); - const signConfig: MemberSignConfigVo = Object.assign(new MemberSignConfigVo(), config) /* TODO: 检查MemberSignConfigVo构造函数 */; - - if (!signConfig.dayAward.isEmpty()) { - signConfig.dayAward = this.coreMemberService.getGiftContent(this.requestContext.siteId, signConfig.dayAward, "member_sign"); - } - if (!signConfig.continueAward.isEmpty()) { - const continueAward: JSONArray = new JSONArray(); - for (const i of number = 0; i < signConfig.continueAward.size(); i++) { - const awardItem: Record = new Record(); - const item: Record = signConfig.continueAward.getRecord(i); - awardItem.set("continue_sign", item.get("continue_sign")); - - item.remove("continue_sign"); - item.remove("continue_tag"); - item.remove("receive_limit"); - item.remove("receive_num"); - - const award: Record = this.coreMemberService.getGiftContent(this.requestContext.siteId, item, "member_sign_continue"); - - const content: string[] = []; - const icon: string = ""; - - for (const key of award.keySet()) { - if (award.getRecord(key).get("content") != null) { - content.push(award.getByPath(key + ".content.text", String.class)); - icon = award.getByPath(key + ".content.icon", String.class); - } - } - const gift: Record = new Record(); - if (content.length > 0) { - gift.set("text", String.join("+", content)); - gift.set("icon", content.length > 1 ? "static/resource/images/member/sign/pack01.png" : icon); - } - - awardItem.set("gift", new Record().set("total", gift)); - continueAward.push(awardItem); - } - signConfig.continueAward = continueAward; - } - - // 获取今天的签到 - const todayMemberSign: MemberSign = this.queryMemberSign(param.siteId(), param.memberId(), DateUtils.formatTodayString); - signConfig.isSign = todayMemberSign == null ? false : true; - - // 获取昨天的签到 - const yesterdayMemberSign: MemberSign = this.queryMemberSign(param.siteId(), param.memberId(), DateUtils.formatYesterdayString); - if (todayMemberSign == null) { - signConfig.days = yesterdayMemberSign == null ? 0 : yesterdayMemberSign.days; - } else { - signConfig.days = todayMemberSign.days; - } - return signConfig; + async signConfig(param: MemberSignConfigParamDto): Promise { + // TODO: 实现signConfig业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/pay/impl/pay-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/pay/impl/pay-service-impl.service.ts index 4d51c471..b4593950 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/pay/impl/pay-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/pay/impl/pay-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { PayAsyncNotifyParamDto } from '../../../../dtos/common/loader/pay/param/pay-async-notify-param.dto'; import { PayParamDto } from '../../../../dtos/admin/pay/param/pay-param.dto'; import { FriendspayInfoVoDto } from '../../../../dtos/api/pay/vo/friendspay-info-vo.dto'; @@ -17,27 +17,15 @@ export class PayServiceImplService { /** * pay */ - async pay(param: PayParam): Promise { - param.siteId = this.requestContext.siteId; - param.channel = RequestUtils.channel(); - param.buyerId = this.requestContext.memberId; - - if (RequestUtils.channel() === ChannelEnum.WECHAT.code && param.openid.isEmpty()) { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", param.siteId).eq("member_id", this.requestContext.memberId)); - param.openid = ObjectUtil.defaultIfNull(member.wxOpenid, ""); - } - if (RequestUtils.channel() === ChannelEnum.WEAPP.code && param.openid.isEmpty()) { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", param.siteId).eq("member_id", this.requestContext.memberId)); - param.openid = ObjectUtil.defaultIfNull(member.weappOpenid, ""); - } - - return this.corePayService.pay(param); + async pay(param: PayParamDto): Promise { + // TODO: 实现pay业务逻辑 + return null; } /** * asyncNotify */ - async asyncNotify(param: PayAsyncNotifyParam, request: HttpServletRequest, response: HttpServletResponse): Promise { + async asyncNotify(param: PayAsyncNotifyParamDto, request: HttpServletRequest, response: HttpServletResponse): Promise { return this.corePayService.asyncNotify(param, request, response); } @@ -52,52 +40,7 @@ export class PayServiceImplService { * friendspayInfo */ async friendspayInfo(tradeType: string, tradeId: number): Promise { - any /* TODO: QueryWrapper */ payQueryWrapper = new QueryWrapper(); - payQueryWrapper.eq("trade_type", tradeType) - .eq("trade_id", tradeId); - const fromPayInfos: Pay[] = this.payRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isEmpty(fromPayInfos) || fromPayInfos.noneMatch(o => o.siteId === this.requestContext.siteId)) { - throw new Error("支付单据不存在"); - } - - const payInfo: GetInfoByTradeVo = getInfoByTrade(tradeType, tradeId, "friendspay"); - if (CommonUtils.isEmpty(payInfo)) { - return new FriendspayInfoVo(); - } - - const vo: FriendspayInfoVo = new FriendspayInfoVo(); - BeanUtil.copyProperties(payInfo, vo); - vo.config = payInfo.config; - vo.payTypeList = payInfo.payTypeList; - vo.createTime = DateUtils.timestampToString(payInfo.createTime); - if (payInfo.payTime != 0) { - vo.payTime = DateUtils.timestampToString(payInfo.payTime); - } - - if (payInfo.cancelTime != 0) { - vo.cancelTime = DateUtils.timestampToString(payInfo.cancelTime); - } - - PayTradeInfoDefiner.const event: PayTradeInfoEvent = new PayTradeInfoDefiner.PayTradeInfoEvent(tradeType, tradeId); - const trades: PayTradeInfoDefiner.PayTradeInfoEventResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event); - if (CommonUtils.isNotEmpty(trades)) { - vo.tradeInfo = trades.get(0.jsonObject); - } - - vo.self = payInfo.mainId === this.requestContext.memberId; - - any /* TODO: QueryWrapper */ posterQueryWrapper = new QueryWrapper(); - posterQueryWrapper.eq("site_id", this.requestContext.siteId) - .eq("type", "friendspay") - .eq("status", 1) - .eq("is_default", 1); - const sysPoster: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isNotEmpty(sysPoster)) { - vo.posterId = sysPoster.id; - } - - const member: Member = memberMapper.selectById(payInfo.mainId); - vo.member = member; - return vo; + // TODO: 实现friendspayInfo业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/base64-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/base64-service-impl.service.ts index e46f026d..9ee1df60 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/base64-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/base64-service-impl.service.ts @@ -1,13 +1,12 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { Base64ImageVoDto } from '../../../../dtos/api/sys/vo/base64-image-vo.dto'; @Injectable() export class Base64ServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -15,10 +14,7 @@ export class Base64ServiceImplService { * image */ async image(content: string): Promise { - const url: string = this.coreBase64Service.image(content, this.requestContext.siteId); - const base64ImageVo: Base64ImageVo = new Base64ImageVo(); - base64ImageVo.url = url; - console.log("base64ImageVo = " + url); - return base64ImageVo; + // TODO: 实现image业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-area-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-area-service-impl.service.ts index eeefa15f..31c28a86 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-area-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-area-service-impl.service.ts @@ -8,7 +8,7 @@ import { SysAreaLevelVoDto } from '../../../../dtos/api/sys/vo/sys-area-level-vo import { SysAreaListVoDto } from '../../../../dtos/api/sys/vo/sys-area-list-vo.dto'; import { SysAreaLevelVoDto } from '../../../../dtos/api/sys/vo/sys-area-level-vo.dto'; import { SysAreaLevelVo>Dto } from '../dtos/sys-area-level-vo>.dto'; -import { SysAreaDto } from '../../../../entities/sys-area.entity'; +import { SysArea } from '../../../../entities/sys-area.entity'; @Injectable() export class SysAreaServiceImplService { @@ -20,121 +20,39 @@ export class SysAreaServiceImplService { * getAreaById */ async getAreaById(id: number): Promise { - // 缓存分组名称 - const group: string = SysArea.class.simpleName; - // 缓存Key值计算参数 - const paramList: Object[] = [id]; - // 自动缓存 - return cached.rememberObject(useCache, group, paramList, (uniqueKey) => { - const sysArea: SysArea = sysAreaMapper.selectById(id); - log.info("result object => " + sysArea); - return sysArea; - }); + // TODO: 实现getAreaById业务逻辑 + return null; } /** * getListByPid */ async getListByPid(pid: number): Promise { - // 缓存分组名称 - const group: string = SysAreaListVo.class.simpleName; - // 缓存Key值计算参数 - const paramList: Object[] = [pid]; - // 自动缓存 - const outterSysAreaList: SysAreaListVo[] = cached.remember(useCache, group, paramList, uniqueKey => { - const sysAreaVoList: SysAreaListVo[] = null; - try { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("id,name"); - queryWrapper.eq("pid", pid); - const sysAreaList: SysArea[] = this.sysAreaRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - sysAreaVoList = CollectUtils.convert(sysAreaList, SysAreaListVo.class); - } catch (e) { - log.error("查询区域错误:", e.message); - throw new BaseException("查询区域错误"); - } - return sysAreaVoList; - }); - return outterSysAreaList; + // TODO: 实现getListByPid业务逻辑 + return null; } /** * getAreaTree */ async getAreaTree(level: number): Promise { - if (level == 1) { - // 参数级别:1,返回1级 - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("id, pid, name"); - queryWrapper.eq("level", level); - const sysAreaList: SysArea[] = this.sysAreaRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - return CollectUtils.convert(sysAreaList, SysAreaLevelVo.class); - } else if (level == 2) { - // 参数级别:2,返回1级包含2级 - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("id, pid, name, level"); - queryWrapper.in("level", 1, 2); - const sysAreaList: SysArea[] = this.sysAreaRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const sysAreaLevelVoList: SysAreaLevelVo[] = CollectUtils.convert(sysAreaList, SysAreaLevelVo.class); - Map sysAreaMap = ObjectGroupUtils.groupList(sysAreaLevelVoList, "pid"); - return assembleAreaTree(sysAreaLevelVoList, sysAreaMap, 1, 2); - } else if (level == 3) { - // 参数级别:3,返回1级包含2级,2级包含3级 - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("id, pid, name, level"); - queryWrapper.in("level", 1, 2, 3); - const sysAreaList: SysArea[] = this.sysAreaRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - const sysAreaLevelVoList: SysAreaLevelVo[] = CollectUtils.convert(sysAreaList, SysAreaLevelVo.class); - Map sysAreaMap = ObjectGroupUtils.groupList(sysAreaLevelVoList, "pid"); - return assembleAreaTree(sysAreaLevelVoList, sysAreaMap, 1, 3); - } - return []; + // TODO: 实现getAreaTree业务逻辑 + return null; } /** * getAreaByAreaCode */ async getAreaByAreaCode(code: number): Promise { - const sysArea: SysArea = this.sysAreaMapper.selectById(code); - const jsonObject: Record = new Record(); - if (sysArea != null) { - if (sysArea.level == 1) { - jsonObject.putOpt("province", convertJsonObject(sysArea)); - } else if (sysArea.level == 2) { - jsonObject.putOpt("city", convertJsonObject(sysArea)); - const provinceSysArea: SysArea = this.sysAreaMapper.selectById(sysArea.pid); - if (provinceSysArea != null) { - jsonObject.putOpt("province", convertJsonObject(provinceSysArea)); - } - } else if (sysArea.level == 3) { - jsonObject.putOpt("district", convertJsonObject(sysArea)); - const citySysArea: SysArea = this.sysAreaMapper.selectById(sysArea.pid); - if (citySysArea != null) { - jsonObject.putOpt("city", convertJsonObject(citySysArea)); - const provinceSysArea: SysArea = this.sysAreaMapper.selectById(citySysArea.pid); - if (provinceSysArea != null) { - jsonObject.putOpt("province", convertJsonObject(provinceSysArea)); - } - } - } - } - return jsonObject; + // TODO: 实现getAreaByAreaCode业务逻辑 + return null; } /** * getAddressByLatlng */ - async getAddressByLatlng(param: SysAreaAddressByLatlngParam): Promise { - const sysMapVo: SysMapVo = this.coreSysConfigService.getMap(param.siteId()); - const key: string = sysMapVo.key; - const addressJsonString: string = TencentGeocoder.getAddress(key, param.latlng, param.getPoi); - const jsonObjectResult: Record = TencentGeocoder.formatData(addressJsonString); - const province: string = jsonObjectResult.getStr("province"); - jsonObjectResult.putOpt("province_id", this.queryCodeByNameAndLevel(province, 1)); - const city: string = jsonObjectResult.getStr("city"); - jsonObjectResult.putOpt("city_id", this.queryCodeByNameAndLevel(city, 2)); - const district: string = jsonObjectResult.getStr("district"); - jsonObjectResult.putOpt("district_id", this.queryCodeByNameAndLevel(district, 3)); - return jsonObjectResult; + async getAddressByLatlng(param: SysAreaAddressByLatlngParamDto): Promise { + // TODO: 实现getAddressByLatlng业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-config-service-impl.service.ts index c6d30076..3d6f8fd3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-config-service-impl.service.ts @@ -7,9 +7,9 @@ import { SysCopyRightVoDto } from '../../../../dtos/admin/sys/vo/sys-copy-right- import { SysMapVoDto } from '../../../../dtos/admin/sys/vo/sys-map-vo.dto'; import { SysConfigCopyrightParamDto } from '../../../../dtos/api/sys/param/sys-config-copyright-param.dto'; import { SysConfigMapParamDto } from '../../../../dtos/api/sys/param/sys-config-map-param.dto'; -import { SysConfigSceneDomainParamDto } from '../../../../entities/sys-config-scene-domain-param.entity'; +import { SysConfigSceneDomainParam } from '../../../../entities/sys-config-scene-domain-param.entity'; import { SysConfigSiteParamDto } from '../../../../dtos/api/sys/param/sys-config-site-param.dto'; -import { SceneDomainVoDto } from '../../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../../entities/scene-domain-vo.entity'; @Injectable() export class SysConfigServiceImplService { @@ -20,14 +20,14 @@ export class SysConfigServiceImplService { /** * copyright */ - async copyright(param: SysConfigCopyrightParam): Promise { + async copyright(param: SysConfigCopyrightParamDto): Promise { return this.coreSysConfigService.getCopyRight(param.siteId()); } /** * site */ - async site(param: SysConfigSiteParam): Promise { + async site(param: SysConfigSiteParamDto): Promise { return this.coreSiteService.getSiteCache(param.siteId()); } @@ -41,7 +41,7 @@ export class SysConfigServiceImplService { /** * map */ - async map(param: SysConfigMapParam): Promise { + async map(param: SysConfigMapParamDto): Promise { return this.coreSysConfigService.getMap(param.siteId()); } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-verify-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-verify-service-impl.service.ts index 4d616f3f..1f320a4c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-verify-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/sys-verify-service-impl.service.ts @@ -1,8 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; -import * as fs from 'fs'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { MemberBriefInfoVoDto } from '../../../../dtos/admin/member/vo/member-brief-info-vo.dto'; import { SysVerifyDetailVoDto } from '../../../../dtos/api/sys/vo/sys-verify-detail-vo.dto'; @@ -19,212 +18,54 @@ import { SysVerifyCodeParamDto } from '../../../../dtos/api/sys/param/sys-verify @Injectable() export class SysVerifyServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * getVerifyCode */ - async getVerifyCode(param: SysVerifyGetCodeParam): Promise { - // 生成核销码(对应业务调用) - const verifyCodeList: string[] = this.createVerifyCode(param.siteId(), param.memberId(), param.type, param.data); - const sysVerifyGetCodeVoList: SysVerifyGetCodeVo[] = []; - for (const verifyCode of verifyCodeList) { - const sysVerifyGetCodeVo: SysVerifyGetCodeVo = new SysVerifyGetCodeVo(); - sysVerifyGetCodeVo.code = verifyCode; - sysVerifyGetCodeVo.qrcode = QrcodeUtils.qrcode(param.siteId(, "h5", verifyCode, "", null)); - if (param.needBarcode == 1){ - const barcode: string = null; - try { - const qrcodeDir: string = this.appConfig.webRootDownResource + "upload/temp/"; - const barcodePath: string = BarcodeUtils.generateBarcode(verifyCode, qrcodeDir); - barcode = fs.readFileSync(barcodePath, 'base64'); - } catch (e) { - log.error("条形码生成失败:{}", e.message, e); - throw new BadRequestException("条形码生成失败"); - } - sysVerifyGetCodeVo.barcode = barcode; - } - sysVerifyGetCodeVoList.push(sysVerifyGetCodeVo); - } - return sysVerifyGetCodeVoList; + async getVerifyCode(param: SysVerifyGetCodeParamDto): Promise { + // TODO: 实现getVerifyCode业务逻辑 + return null; } /** * checkVerifier */ - async checkVerifier(param: SysVerifyCheckVerifierParam): Promise { - Lambdaany /* TODO: QueryWrapper */ queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(Verifier::getMemberId, this.requestContext.memberId); - queryWrapper.eq(Verifier::getSiteId, this.requestContext.siteId); - return verifierMapper.exists(queryWrapper); + async checkVerifier(param: SysVerifyCheckVerifierParamDto): Promise { + // TODO: 实现checkVerifier业务逻辑 + return null; } /** * records */ - async records(pageParam: PageParam, param: SysVerifyRecordsParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - const queryWrapper: QueryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", param.siteId()); - queryWrapper.eq("verifier_member_id", param.memberId()); - - if (StrUtil.isNotEmpty(param.code)) { - queryWrapper.eq("code", param.code); - } - if (StrUtil.isNotEmpty(param.type)) { - queryWrapper.eq("type", param.type); - } - if (CommonUtils.isNotEmpty(param.createTime)) { - QueryMapperUtils.buildByTime(queryWrapper, "create_time", param.createTime); - } - if (StrUtil.isNotEmpty(param.relateTag)) { - queryWrapper.eq("relate_tag", param.relateTag); - } - if (StrUtil.isNotEmpty(param.keyword)) { - queryWrapper.eq("keyword", param.keyword); - } - queryWrapper.orderByDesc(["create_time"]); - - [Verify[], number] iPage = this.this.verifyRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const dataList: SysVerifyRecordsVo[] = CollectUtils.convert(iPageRecords, SysVerifyRecordsVo.class); - - if (dataList.length > 0) { - // 以下代码块=====>用以填充SysVerifyRecordsVo类对象的:nickname, mobile, headimg属性 - // 根据集合ID主键索引查询到对象列表 - const withQueryWrapper: QueryWrapper = new QueryWrapper(); - withQueryWrapper.select("member_id, nickname, mobile, headimg"); - const memberIdList: number[] = CollectBuildUtils.getKeyValueList(dataList, "verifierMemberId"); - withQueryWrapper.in("member_id", memberIdList); - const memberList: Member[] = this.memberRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - // 先将数据分组,然后放入结果集 - const memberMap: Record = ObjectGroupUtils.group(memberList, "memberId"); - dataList.forEach(bean => { - const member: Member = memberMap.get(bean.verifierMemberId); - if (member != null) { - const membervo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(membervo, member); - bean.member = membervo; - } - }); - } - return PageResult.build(page, limit, iPageTotal).data = dataList; + async records(pageParam: PageParamDto, param: SysVerifyRecordsParamDto): Promise { + // TODO: 实现records业务逻辑 + return null; } /** * records2 */ - async records2(pageParam: PageParam, param: SysVerifyRecordsParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - MPJany /* TODO: QueryWrapper */ mpjQueryWrapper = new MPJQueryWrapper(); - mpjQueryWrapper.select("t.*"); - mpjQueryWrapper.alias = "t"; - mpjQueryWrapper.innerJoin("?_site_group nsg ON ns.group_id = nsg.group_id"); - mpjQueryWrapper.eq("site_id", param.siteId()); - mpjQueryWrapper.eq("verifier_member_id", param.memberId()); - [SysVerifyRecordsVo[], number] iPage = memberMapper.selectJoinPage(new Page<>(page, limit), SysVerifyRecordsVo.class, mpjQueryWrapper ); - return PageResult.build(page, limit, iPageTotal).data = iPageRecords; + async records2(pageParam: PageParamDto, param: SysVerifyRecordsParamDto): Promise { + // TODO: 实现records2业务逻辑 + return null; } /** * detail */ - async detail(param: SysVerifyDetailParam): Promise { - any /* TODO: QueryWrapper */ verifyQueryWrapper = new QueryWrapper(); - verifyQueryWrapper.eq("site_id", param.siteId()); - verifyQueryWrapper.eq("verifier_member_id", param.memberId()); - verifyQueryWrapper.eq("code", param.code); - const verify: Verify = this.this.verifyRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - const sysVerifyDetailVo: SysVerifyDetailVo = new SysVerifyDetailVo(); - if (verify != null) { - Object.assign(sysVerifyDetailVo, verify); - any /* TODO: QueryWrapper */ memberQueryWrapper = new QueryWrapper(); - memberQueryWrapper.select("member_id, nickname, mobile, headimg"); - memberQueryWrapper.eq("member_id", param.memberId()); - const member: Member = this.this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (member != null) { - const membervo: MemberBriefInfoVo = new MemberBriefInfoVo(); - Object.assign(membervo, member); - sysVerifyDetailVo.member = membervo; - } - } - - //处理时间的问题 解析JSON字符串 - const jsonObject: Record = JsonUtils.parseObject(sysVerifyDetailVo.value.toString()); - // 获取content下的diy数组 - const diyArray: JSONArray = jsonObject.getRecord("content").getJSONArray("diy"); - // 遍历diy数组 - for (const i of number = 0; i < diyArray.length; i++) { - const diyItem: Record = diyArray.getRecord(i); - const listArray: JSONArray = diyItem.getJSONArray("list"); - - // 遍历list数组 - for (const j of number = 0; j < listArray.length; j++) { - const listItem: Record = listArray.getRecord(j); - const title: string = listItem.getStr("title"); - - // 如果是支付时间,则转换格式 - if ("支付时间".equals(title)) { - const timestamp: number = listItem.getLong("value"); - const timeStr: string = DateUtils.timestampToString(timestamp); - listItem.put("value", timeStr); - } - } - } - sysVerifyDetailVo.value = JSONUtil.toJsonStr(jsonObject); - - return sysVerifyDetailVo; + async detail(param: SysVerifyDetailParamDto): Promise { + // TODO: 实现detail业务逻辑 + return null; } /** * verifyCode */ - async verifyCode(param: SysVerifyCodeParam): Promise { - // 1、获取核销码数据 - const verifyMap: Record = this.getCodeData(param.code); - // 检测站点数据 - if (verifyMap.get("site_id") == null || !verifyMap.get("site_id").equals(param.siteId())) { - // 核销码已过期 - throw new Error("当前核销码已核销或已失效"); - } - // 检测核销员身份 - Lambdaany /* TODO: QueryWrapper */ queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(Verifier::getMemberId, param.memberId()); - queryWrapper.eq(Verifier::getSiteId, param.siteId()); - const verifier: boolean = verifierMapper.exists(queryWrapper); - if (!verifier) { - throw new Error("核销员不存在"); - } - // 核销操作 - const verifyDataMap: Record = {}; - verifyDataMap.put("site_id", verifyMap.get("site_id")); - verifyDataMap.put("code", param.code); - verifyDataMap.put("body", verifyMap.get("body")); - verifyDataMap.put("data", verifyMap.get("data")); - verifyDataMap.put("value", verifyMap.get("value")); - verifyDataMap.put("type", verifyMap.get("type")); - verifyDataMap.put("relate_tag", verifyMap.get("relate_tag")); - verifyDataMap.put("create_time", DateUtils.currTime()); - verifyDataMap.put("verifier_member_id", param.memberId()); - // 核销 - VerifyEventDefiner.const verifyEvent: VerifyEvent = new VerifyEventDefiner.VerifyEvent(); - verifyEvent.siteId = param.siteId(); - verifyEvent.build(verifyDataMap); - EventAndSubscribeOfPublisher.publishAndCallback(verifyEvent); - - // 添加核销记录 - const model: Verify = new Verify(); - Object.assign(model, verifyEvent); - model.data = JsonUtils.parseObject(verifyEvent.data.toString()); - this.verifyRepository.save(model); - - // 核销码失效 - this.clearCode(param.code); - return true; + async verifyCode(param: SysVerifyCodeParamDto): Promise { + // TODO: 实现verifyCode业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/task-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/task-service-impl.service.ts index 52b239df..217d064e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/task-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/task-service-impl.service.ts @@ -1,12 +1,11 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; @Injectable() export class TaskServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -14,39 +13,15 @@ export class TaskServiceImplService { * getGrowthTask */ async getGrowthTask(): Promise { - const config: Record = this.coreMemberConfigService.getGrowthRuleConfig(this.requestContext.siteId); - if (config != null) { - config = this.coreMemberService.getGrowthRuleContent(this.requestContext.siteId, config, "task"); - - const filteredObject: Record = new Record(); - for (const key of config.keySet()) { - const value: Record = config.getRecord(key); - if (value.get("content") != null) { - filteredObject.set(key, value); - } - } - return filteredObject; - } - return null; + // TODO: 实现getGrowthTask业务逻辑 + return null; } /** * getPointTask */ async getPointTask(): Promise { - const config: Record = this.coreMemberConfigService.getPointRuleConfig(this.requestContext.siteId).getRecord("grant"); - if (config != null) { - config = this.coreMemberService.getPointGrantRuleContent(this.requestContext.siteId, config, "task"); - - const filteredObject: Record = new Record(); - for (const key of config.keySet()) { - const value: Record = config.getRecord(key); - if (value.get("content") != null) { - filteredObject.set(key, value); - } - } - return filteredObject; - } - return new Record(); + // TODO: 实现getPointTask业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/upload-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/upload-service-impl.service.ts index 82755286..9204ad3c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/upload-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/sys/impl/upload-service-impl.service.ts @@ -1,36 +1,29 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AttachmentUploadParamDto } from '../../../../dtos/admin/sys/param/attachment-upload-param.dto'; import { AttachmentUploadVoDto } from '../../../../dtos/admin/sys/vo/attachment-upload-vo.dto'; @Injectable() export class UploadServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * image */ - async image(param: AttachmentUploadParam): Promise { - param.siteId = this.requestContext.siteId; - param.isAttachment = 0; - param.attType = "image"; - param.dir = "attachment/image/" + param.siteId + "/" + DateFormatUtils.uploadFormat + "/"; - return this.coreUploadService.upload(param); + async image(param: AttachmentUploadParamDto): Promise { + // TODO: 实现image业务逻辑 + return null; } /** * video */ - async video(param: AttachmentUploadParam): Promise { - param.siteId = this.requestContext.siteId; - param.isAttachment = 0; - param.attType = "video"; - param.dir = "attachment/video/" + param.siteId + "/" + DateFormatUtils.uploadFormat + "/"; - return this.coreUploadService.upload(param); + async video(param: AttachmentUploadParamDto): Promise { + // TODO: 实现video业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/serve-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/serve-service-impl.service.ts index e84ea44e..c3f384d3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/serve-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/serve-service-impl.service.ts @@ -1,13 +1,12 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { WxMaMessageDto } from '../dtos/wx-ma-message.dto'; @Injectable() export class ServeServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -15,54 +14,7 @@ export class ServeServiceImplService { * service */ async service(request: HttpServletRequest, response: HttpServletResponse): Promise { - response.contentType = "text/html;charset=utf-8"; - response.status = HttpServletResponse.SC_OK; - - try { - const signature: string = request.getParameter("signature"); - const nonce: string = request.getParameter("nonce"); - const timestamp: string = request.getParameter("timestamp"); - - const wxMaService: WxMaService = WechatUtils.miniapp(this.requestContext.siteId); - if (!this.wxMaService.checkSignature(timestamp, nonce, signature)) { - response.writer.println("非法请求"); - return; - } - - // 说明是一个仅仅用来验证的请求,回显echostr - const echostr: string = request.getParameter("echostr"); - if (StringUtils.isNotBlank(echostr)) { - response.writer.println(echostr); - return; - } - - const encryptType: string = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type"); - - const inMessage: WxMaMessage = null; - - if ("raw".equals(encryptType)) { - // 明文传输的消息 - inMessage = inMessage.fromXml(request.inputStream); - } else if ("aes".equals(encryptType)) { - // 是aes加密的消息 - const msgSignature: string = request.getParameter("msg_signature"); - inMessage = WxMaMessage.fromEncryptedXml(request.inputStream, this.wxMaService.wxMaConfig, timestamp, nonce, msgSignature); - } else { - response.writer.println("不可识别的加密类型"); - return; - } - - const outMessage: WxMaXmlOutMessage = this.message(inMessage); - if (outMessage != null) { - if ("raw".equals(encryptType)) { - response.writer.write(outMessage.toXml()); - } else if ("aes".equals(encryptType)) { - response.getWriter().write(outMessage.toEncryptedXml(this.wxMaService.wxMaConfig)); - } - return; - } - } catch (e) { - console.error(e); - } + // TODO: 实现service业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/weapp-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/weapp-service-impl.service.ts index d70ab260..94fa5f1a 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/weapp-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/weapp/impl/weapp-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { WxMaOrderShippingIsTradeManagedResponseDto } from '../dtos/wx-ma-order-shipping-is-trade-managed-response.dto'; import { LoginConfigVoDto } from '../../../../dtos/admin/member/vo/login-config-vo.dto'; import { LoginVoDto } from '../../../../dtos/api/login/vo/login-vo.dto'; @@ -23,138 +23,33 @@ export class WeappServiceImplService { /** * loginByCode */ - async loginByCode(param: WechatAuthParam): Promise { - try { - const wxUser: WxMaJscode2SessionResult = WechatUtils.miniapp(this.requestContext.getSiteId()).getUserService().getSessionInfo(param.code); - - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(member)) { - const vo: LoginVo = this.loginService.login(member); - return vo; - } - if (CommonUtils.isNotEmpty(wxUser.unionid)) { - const unionidMember: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(unionidMember)) { - const vo: LoginVo = this.loginService.login(unionidMember); - return vo; - } - } - - const loginVo: LoginVo = new LoginVo(); - loginVo.openid = wxUser.openid; - loginVo.unionid = ObjectUtil.defaultIfNull(wxUser.unionid, ""); - - const config: LoginConfigVo = this.coreMemberConfigService.getLoginConfig(this.requestContext.siteId); - - const registerParam: AuthRegisterParam = new AuthRegisterParam(); - registerParam.openid = wxUser.openid; - registerParam.unionid = ObjectUtil.defaultIfNull(wxUser.unionid, ""); - registerParam.pid = param.pid; - registerParam.headimg = param.headimg; - registerParam.nickname = param.nickname; - registerParam.mobile = param.mobile; - registerParam.mobileCode = param.mobileCode; - - // 开启自动注册会员 - if (config.isAuthRegister == 1) { - if (config.isBindMobile == 1 && config.isForceAccessUserInfo == 1) { - if (CommonUtils.isNotEmpty(param.mobile) && CommonUtils.isNotEmpty(param.headimg) && CommonUtils.isNotEmpty(param.nickname)) { - return this.register(registerParam); - } - } else if (config.isForceAccessUserInfo == 1) { - if (CommonUtils.isNotEmpty(param.headimg) && CommonUtils.isNotEmpty(param.nickname)) { - return this.register(registerParam); - } - } else if (config.isBindMobile == 1) { - if (CommonUtils.isNotEmpty(param.mobile) || CommonUtils.isNotEmpty(param.mobileCode)) { - return this.register(registerParam); - } - } else { - return this.register(registerParam); - } - } else { - // 关闭自动注册,但是开启了强制绑定手机号,必须获取手机号才能进行注册 - if (config.isBindMobile == 1 || config.isMobile == 1) { - if (CommonUtils.isNotEmpty(param.mobile) || CommonUtils.isNotEmpty(param.mobileCode)) { - return this.register(registerParam); - } - } - } - - return loginVo; - } catch (e) { - throw new BadRequestException(e.message); - } + async loginByCode(param: WechatAuthParamDto): Promise { + // TODO: 实现loginByCode业务逻辑 + return null; } /** * register */ - async register(param: AuthRegisterParam): Promise { - if (param.openid.isEmpty()) throw new BadRequestException("openid不能为空"); - try { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在"); - - if (!param.unionid.isEmpty()) { - const unionidMember: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在"); - } - - const config: LoginConfigVo = this.coreMemberConfigService.getLoginConfig(this.requestContext.siteId); - if (config.isBindMobile == 1) { - if (!param.mobile.isEmpty() || !param.mobileCode.isEmpty()) { - if (!param.mobileCode.isEmpty()) { - const phoneInfo: WxMaPhoneNumberInfo = WechatUtils.miniapp(this.requestContext.getSiteId()).getUserService().getPhoneNoInfo(param.mobileCode); - param.mobile = phoneInfo.purePhoneNumber; - } - } else { - throw new BadRequestException("手机号不能为空"); - } - } - - const registerMember: Member = new Member(); - registerMember.weappOpenid = param.openid; - registerMember.mobile = param.mobile; - registerMember.wxUnionid = param.unionid; - registerMember.pid = param.pid; - registerMember.nickname = param.nickname; - registerMember.headimg = param.headimg; - return this.registerService.register(registerMember); - } catch (e) { - throw new BadRequestException(e.message); - } + async register(param: AuthRegisterParamDto): Promise { + // TODO: 实现register业务逻辑 + return null; } /** * updateOpenid */ - async updateOpenid(param: WechatAuthParam): Promise { - try { - const wxUser: WxMaJscode2SessionResult = WechatUtils.miniapp(this.requestContext.getSiteId()).getUserService().getSessionInfo(param.code); - - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在"); - - const updateMember: Member = new Member(); - updateMember.memberId = this.requestContext.memberId; - updateMember.wxOpenid = wxUser.openid; - this.memberMapper.updateById(updateMember); - } catch (e) { - throw new BadRequestException(e.message); - } + async updateOpenid(param: WechatAuthParamDto): Promise { + // TODO: 实现updateOpenid业务逻辑 + return null; } /** * subscribeMessage */ async subscribeMessage(keys: string): Promise { - return this.sysNoticeRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .in("`key`", keys.split(",")) - .eq("is_weapp", 1) - .eq("site_id", this.requestContext.siteId) - .ne("weapp_template_id", "") - ).stream().map(item => item.weappTemplateId); + // TODO: 实现subscribeMessage业务逻辑 + return null; } /** @@ -168,15 +63,7 @@ export class WeappServiceImplService { * getMsgJumpPath */ async getMsgJumpPath(outTradeNo: string): Promise { - const pay: Pay = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })); - if (pay == null) return null; - - WapOrderDetailPathDefiner.const event: WapOrderDetailPathEvent = new WapOrderDetailPathDefiner.WapOrderDetailPathEvent(pay); - const eventData: WapOrderDetailPathDefiner.WapOrderDetailPathResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event); - - if (CommonUtils.isNotEmpty(eventData)) { - return eventData.get(0); - } - return null; + // TODO: 实现getMsgJumpPath业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/serve-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/serve-service-impl.service.ts index de6f1552..c5477fbd 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/serve-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/serve-service-impl.service.ts @@ -1,13 +1,12 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { WxMpXmlMessageDto } from '../dtos/wx-mp-xml-message.dto'; @Injectable() export class ServeServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -15,55 +14,7 @@ export class ServeServiceImplService { * service */ async service(request: HttpServletRequest, response: HttpServletResponse): Promise { - response.contentType = "text/html;charset=utf-8"; - response.status = HttpServletResponse.SC_OK; - - try { - const signature: string = request.getParameter("signature"); - const nonce: string = request.getParameter("nonce"); - const timestamp: string = request.getParameter("timestamp"); - - // 消息签名不正确,说明不是公众平台发过来的消息 - const wxMpService: WxMpService = WechatUtils.mp(this.requestContext.siteId); - if (!this.wxMpService.checkSignature(timestamp, nonce, signature)) { - response.writer.println("非法请求"); - return; - } - - // 说明是一个仅仅用来验证的请求,回显echostr - const echostr: string = request.getParameter("echostr"); - if (StringUtils.isNotBlank(echostr)) { - response.writer.println(echostr); - return; - } - - const encryptType: string = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type"); - - const inMessage: WxMpXmlMessage = null; - - if ("raw".equals(encryptType)) { - // 明文传输的消息 - inMessage = WxMpXmlMessage.fromXml(request.inputStream); - } else if ("aes".equals(encryptType)) { - // 是aes加密的消息 - const msgSignature: string = request.getParameter("msg_signature"); - inMessage = WxMpXmlMessage.fromEncryptedXml(request.inputStream, this.wxMpService.wxMpConfigStorage, timestamp, nonce, msgSignature); - } else { - response.writer.println("不可识别的加密类型"); - return; - } - - const outMessage: WxMpXmlOutMessage = this.message(inMessage); - if (outMessage != null) { - if ("raw".equals(encryptType)) { - response.writer.write(outMessage.toXml()); - } else if ("aes".equals(encryptType)) { - response.getWriter().write(outMessage.toEncryptedXml(this.wxMpService.wxMpConfigStorage)); - } - return; - } - } catch (e) { - console.error(e); - } + // TODO: 实现service业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/wechat-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/wechat-service-impl.service.ts index aa11c3c9..d441e239 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/wechat-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/api/wechat/impl/wechat-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { LoginConfigVoDto } from '../../../../dtos/admin/member/vo/login-config-vo.dto'; import { LoginVoDto } from '../../../../dtos/api/login/vo/login-vo.dto'; import { WechatAuthDataLoginParamDto } from '../../../../dtos/api/wechat/param/wechat-auth-data-login-param.dto'; @@ -16,7 +16,6 @@ import { @LazyDto } from '../dtos/@-lazy.dto'; @Injectable() export class WechatServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -31,157 +30,63 @@ export class WechatServiceImplService { * getCodeUrl */ async getCodeUrl(url: string, scopes: string): Promise { - const authorizationUrl: string = WechatUtils.mp(this.requestContext.getSiteId()).oAuth2Service.buildAuthorizationUrl(url, scopes, ""); - const vo: WechatCodeUrlVo = new WechatCodeUrlVo(); - vo.url = authorizationUrl; - return vo; + // TODO: 实现getCodeUrl业务逻辑 + return null; } /** * loginByCode */ - async loginByCode(param: WechatAuthParam): Promise { - try { - const wxOAuth2AccessToken: WxOAuth2AccessToken = WechatUtils.mp(this.requestContext.getSiteId()).getOAuth2Service().getAccessToken(param.code); - const wxUser: WxOAuth2UserInfo = WechatUtils.mp(this.requestContext.getSiteId()).oAuth2Service.getUserInfo(wxOAuth2AccessToken, null); - - return this.login( - ObjectUtil.defaultIfNull(wxUser.openid, ""), - ObjectUtil.defaultIfNull(wxUser.unionId, ""), - ObjectUtil.defaultIfNull(wxUser.nickname, ""), - ObjectUtil.defaultIfNull(wxUser.headImgUrl, ""), - param.pid - ); - } catch (e) { - throw new BadRequestException(e.message); - } + async loginByCode(param: WechatAuthParamDto): Promise { + // TODO: 实现loginByCode业务逻辑 + return null; } /** * wechatLogin */ - async wechatLogin(param: WechatAuthDataLoginParam): Promise { - const data: Record = JsonUtils.parseObject(param.data); - - return this.login( - data.getStr("openid", ""), - data.getStr("unionid", ""), - data.getStr("nickname", ""), - data.getStr("avatar", ""), - param.pid - ); + async wechatLogin(param: WechatAuthDataLoginParamDto): Promise { + // TODO: 实现wechatLogin业务逻辑 + return null; } /** * register */ - async register(param: AuthRegisterParam): Promise { - if (param.openid.isEmpty()) throw new BadRequestException("openid不能为空"); - try { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在"); - - if (!param.unionid.isEmpty()) { - const unionidMember: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在"); - } - - const config: LoginConfigVo = this.coreMemberConfigService.getLoginConfig(this.requestContext.siteId); - if (config.isBindMobile == 1) { - if (param.mobile.isEmpty()) throw new BadRequestException("手机号不能为空"); - this.registerService.checkMobileCode(param.mobile, param.mobileKey, param.mobileCode); - } - - const registerMember: Member = new Member(); - registerMember.wxOpenid = param.openid; - registerMember.mobile = param.mobile; - registerMember.wxUnionid = param.unionid; - registerMember.pid = param.pid; - return this.registerService.register(registerMember); - } catch (e) { - throw new BadRequestException(e.message); - } + async register(param: AuthRegisterParamDto): Promise { + // TODO: 实现register业务逻辑 + return null; } /** * sync */ - async sync(param: WechatSyncParam): Promise { - try { - const wxOAuth2AccessToken: WxOAuth2AccessToken = WechatUtils.mp(this.requestContext.getSiteId()).getOAuth2Service().getAccessToken(param.code); - const wxUser: WxOAuth2UserInfo = WechatUtils.mp(this.requestContext.getSiteId()).oAuth2Service.getUserInfo(wxOAuth2AccessToken, null); - - const member: Member = new Member(); - member.memberId = this.requestContext.memberId; - member.nickname = ObjectUtil.defaultIfNull(wxUser.nickname, ""); - member.headimg = ObjectUtil.defaultIfNull(wxUser.headImgUrl, ""); - this.memberMapper.updateById(member); - } catch (e) { - throw new BadRequestException(e.message); - } + async sync(param: WechatSyncParamDto): Promise { + // TODO: 实现sync业务逻辑 + return null; } /** * getWechatUser */ - async getWechatUser(param: WechatAuthParam): Promise { - try { - const vo: WechatUserInfoVo = new WechatUserInfoVo(); - - const mp: WxMpService = WechatUtils.mp(this.requestContext.siteId); - - const wxOAuth2AccessToken: WxOAuth2AccessToken = mp.getOAuth2Service().getAccessToken(param.code); - if (wxOAuth2AccessToken.scope === "snsapi_base") { - vo.openid = ObjectUtil.defaultIfNull(wxOAuth2AccessToken.openId, ""); - } else { - const userInfo: WxOAuth2UserInfo = mp.oAuth2Service.getUserInfo(wxOAuth2AccessToken, null); - vo.openid = ObjectUtil.defaultIfNull(userInfo.openid, ""); - vo.unionid = ObjectUtil.defaultIfNull(userInfo.unionId, ""); - vo.nickname = ObjectUtil.defaultIfNull(userInfo.nickname, ""); - vo.avatar = ObjectUtil.defaultIfNull(userInfo.headImgUrl, ""); - } - return vo; - } catch (e) { - throw new BadRequestException(e.message); - } + async getWechatUser(param: WechatAuthParamDto): Promise { + // TODO: 实现getWechatUser业务逻辑 + return null; } /** * scanLogin */ async scanLogin(): Promise { - try { - const key: string = this.coreScanService.scan(this.requestContext.siteId, "wechat_login", new Record().set("channel", RequestUtils.channel()), 300); - const ticket: WxMpQrCodeTicket = WechatUtils.mp(this.requestContext.getSiteId()).qrcodeService.qrCodeCreateTmpTicket(key, 300); - const url: string = WechatUtils.mp(this.requestContext.getSiteId()).getQrcodeService().qrCodePictureUrl(ticket.ticket); - - const vo: WechatScanLoginVo = new WechatScanLoginVo(); - vo.key = key; - vo.url = url; - - return vo; - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现scanLogin业务逻辑 + return null; } /** * updateOpenid */ - async updateOpenid(param: WechatAuthParam): Promise { - try { - const wxOAuth2AccessToken: WxOAuth2AccessToken = WechatUtils.mp(this.requestContext.getSiteId()).getOAuth2Service().getAccessToken(param.code); - const wxUser: WxOAuth2UserInfo = WechatUtils.mp(this.requestContext.getSiteId()).oAuth2Service.getUserInfo(wxOAuth2AccessToken, null); - - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", this.requestContext.siteId)); - if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在"); - - const updateMember: Member = new Member(); - updateMember.memberId = this.requestContext.memberId; - updateMember.wxOpenid = wxUser.openid; - this.memberMapper.updateById(updateMember); - } catch (e) { - throw new BadRequestException(e.message); - } + async updateOpenid(param: WechatAuthParamDto): Promise { + // TODO: 实现updateOpenid业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/cached-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/cached-service-impl.service.ts index 26af52af..5ca6570d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/cached-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/cached-service-impl.service.ts @@ -20,14 +20,8 @@ export class CachedServiceImplService { * findUseCacheById */ async findUseCacheById(tClass: Class, id: number): Promise { - T target = (T) cached.tag(CacheTag.key(tClass)).get(String(id)); - if (target == null) { - target = super.getById(id); - if (target != null) { - cached.tag(CacheTag.key(tClass)).put(String(id), target); - } - } - return target; + // TODO: 实现findUseCacheById业务逻辑 + return null; } /** @@ -54,11 +48,7 @@ export class CachedServiceImplService { * removeCacheById */ async removeCacheById(tClass: Class, id: number): Promise { - T target = (T) cached.tag(CacheTag.key(tClass)).get(String(id)); - if (target != null) { - cached.tag(CacheTag.key(tClass)).remove(String(id)); - } - return target; + // TODO: 实现removeCacheById业务逻辑 } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-install-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-install-service-impl.service.ts index 71efea56..ce92eef9 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-install-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-install-service-impl.service.ts @@ -1,12 +1,11 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result, CommonUtils } from '@wwjBoot'; @Injectable() export class CoreAddonInstallServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -14,92 +13,16 @@ export class CoreAddonInstallServiceImplService { * installCheck */ async installCheck(addon: string): Promise { - this.installCheck = true; - const checkResult: Record = new Record(); - const rootPath: string = ""; - const runtimePath: string = ""; - const readableDir: JSONArray = new JSONArray(); - const writeDir: JSONArray = new JSONArray(); - - if (this.appConfig.envType === "dev") { - rootPath = this.appConfig.projectRoot + "/"; - runtimePath = rootPath; - - readableDir.put(new Record().set("dir", rootPath + "niucloud-addon").set("status", true)); - writeDir.put(new Record().set("dir", rootPath + "niucloud-addon").set("status", true)); - readableDir.put(new Record().set("dir", rootPath + "webroot").set("status", true)); - writeDir.put(new Record().set("dir", rootPath + "webroot").set("status", true)); - } else { - rootPath = this.appConfig.webRoot + "/"; - runtimePath = rootPath + "runtime/"; - - readableDir.put(new Record().set("dir", runtimePath).set("status", true)); - writeDir.put(new Record().set("dir", runtimePath).set("status", true)); - } - - readableDir.put(new Record().set("dir", runtimePath + "admin").set("status", true)); - readableDir.put(new Record().set("dir", runtimePath + "uni-app").set("status", true)); - readableDir.put(new Record().set("dir", runtimePath + "web").set("status", true)); - - writeDir.put(new Record().set("dir", runtimePath + "admin").set("status", true)); - writeDir.put(new Record().set("dir", runtimePath + "uni-app").set("status", true)); - writeDir.put(new Record().set("dir", runtimePath + "web").set("status", true)); - - for (const i of number = 0; i < readableDir.length; i++) { - const dir: Record = readableDir.getRecord(i); - dir.set("status", dir.getStr("dir").canRead()); - dir.set("dir", dir.getStr("dir").replace(rootPath, "")); - readableDir.set(i, dir); - if (!dir.getBool("status")) this.installCheck = false; - } - - for (const i of number = 0; i < writeDir.length; i++) { - const dir: Record = writeDir.getRecord(i); - dir.set("status", dir.getStr("dir").canWrite()); - dir.set("dir", dir.getStr("dir").replace(rootPath, "")); - writeDir.set(i, dir); - if (!dir.getBool("status")) this.installCheck = false; - } - - checkResult.put("is_pass", this.installCheck); - checkResult.put("dir", new Record().set("is_readable", readableDir).set("is_write", writeDir)); - return checkResult; + // TODO: 实现installCheck业务逻辑 + return null; } /** * install */ async install(addon: string, mode: string): Promise { - if (!this.installCheck) { - throw new BadRequestException("安装校验未通过"); - } - const addonObject: Addon = this.coreAddonService.getInfoByKey(addon); - if (CommonUtils.isNotEmpty(addonObject)) { - throw new BadRequestException("当前插件已安装,不能重复安装"); - } - if (CommonUtils.isNotEmpty(this.installTask)) { - throw new BadRequestException("有正在安装中的插件"); - } - this.installTask.put("mode", mode); - this.installTask.put("addon", addon); - this.installTask.put("status", "installing"); - - try { - this.installDir(); - this.installDepend(); - this.installUniapp(addon); - if (mode === "local") { - this.handleAddonInstall(); - } else { - this.cloudInstall(); - } - return installTask; - } catch (e) { - console.error(e); - this.installExceptionHandle(); - this.cancleInstall(); - throw new BadRequestException(e.message); - } + // TODO: 实现install业务逻辑 + return null; } /** @@ -122,37 +45,8 @@ export class CoreAddonInstallServiceImplService { * uninstall */ async uninstall(addon: string): Promise { - if (!CommonUtils.isNotEmpty(this.coreAddonService.getInfoByKey(addon))) { - throw new BadRequestException("当前插件未安装,不能进行卸载操作"); - } - - // 卸载前先打包 - if (this.appConfig.runActive.toLowerCase() === "dev".toLowerCase()) { - this.addonDevelopBuildService.build(addon); - } - - try { - // 卸载菜单 - this.coreMenuService.deleteMenu(addon, true); - // 执行卸载sql - this.uninstallSql(addon); - // 处理uniapp - addonInstallTools.uninstallUniapp(addon); - // 移除定时任务 - this.coreScheduleService.uninstallAddonSchedule(addon); - // 删除addon表插件 - this.addonRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); - // 执行卸载其它 - AddonInstallJavaTools.uninstallExec(this, addon); - // 是否需要重启服务 - const data: Record = new Record(); - if (!this.appConfig.runActive.toLowerCase() === "dev".toLowerCase()) { - data.put("is_need_restart", 1); - } - return data; - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现uninstall业务逻辑 + return null; } /** @@ -168,50 +62,15 @@ export class CoreAddonInstallServiceImplService { * installResult */ async installResult(result: boolean, addon: string, message: string): Promise { - this.installTask = new Record(); - this.installTask.put("mode", "local"); - this.installTask.put("addon", addon); - if (result) { - this.installTask.put("status", "success"); - const tips: string[] = AddonUpgradeHelper.addonInfo; - this.installTask.put("tips", tips); - this.installCheck = false; - log.warn("安装成功..........................................."); - } else { - this.installTask.put("status", "fail"); - this.installTask.put("failReason", "jar包加载错误."); - const tips: string[] = AddonUpgradeHelper.addonInfo; - this.installTask.put("tips", tips); - log.warn("执行回滚操作<---------------------begin--------------------->"); - if (!this.appConfig.runActive.toLowerCase() === "dev".toLowerCase()) { - // 生产环境进一步卸载 - this.rollback(addon); - this.installCheck = false; - } - log.warn("执行回滚操作<---------------------ended--------------------->"); - } + // TODO: 实现installResult业务逻辑 + return null; } /** * cloudInstallLog */ async cloudInstallLog(addon: string): Promise { - const log: Record = this.cloudBuildService.getBuildLog("install"); - if (log != null) { - const data: JSONArray = log.getByPath("data.0", JSONArray.class); - if (data.length > 0) { - const last: Record = data.getRecord(data.length - 1); - if (last.getInt("code", 0).equals(0)) { - this.installTask.put("status", "fail"); - this.installTask.put("failReason", last.getStr("msg")); - this.cloudBuildService.clearBuildTask(); - return log; - } - if (last.getInt("percent", 0).equals(100) && last.getStr("action", "").equals("build_success")) { - this.handleAddonInstall(); - } - } - } - return log; + // TODO: 实现cloudInstallLog业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-service-impl.service.ts index 13ec64d8..88e00c8f 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/addon/impl/core-addon-service-impl.service.ts @@ -1,17 +1,15 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService } from '@wwjBoot'; -import * as fs from 'fs'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AddonParamDto } from '../../../../dtos/admin/addon/param/addon-param.dto'; import { CoreAddonSearchParamDto } from '../../../../dtos/core/addon/param/core-addon-search-param.dto'; -import { InstallAddonListVoDto } from '../../../../entities/install-addon-list-vo.entity'; -import { AddonDto } from '../../../../entities/addon.entity'; +import { InstallAddonListVo } from '../../../../entities/install-addon-list-vo.entity'; +import { Addon } from '../../../../entities/addon.entity'; @Injectable() export class CoreAddonServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -19,52 +17,31 @@ export class CoreAddonServiceImplService { * getInfoByKey */ async getInfoByKey(key: string): Promise { - return this.addonRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).select("*").eq("`key`", key)); + // TODO: 实现getInfoByKey业务逻辑 + return null; } /** * getLocalAddonCount */ async getLocalAddonCount(): Promise { - const localAddonCount: number = 0; - try { - // 获取本地所有的插件 - const localAddons: string[] = fs.readdirSync(this.appConfig.webRootDownAddon) - .map(path => path) - .filter(file => fs.statSync(file).isDirectory()) - ; - - for (const file of localAddons) { - if (fs.existsSync(file, "info.json")) { - localAddonCount++; - } - } - } catch (e) { - } - return localAddonCount; + // TODO: 实现getLocalAddonCount业务逻辑 + return null; } /** * getAddonCountByCondition */ - async getAddonCountByCondition(coreAddonSearchParam: CoreAddonSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - const addonCount: number = this.addonRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }); - return addonCount.intValue(); + async getAddonCountByCondition(coreAddonSearchParam: CoreAddonSearchParamDto): Promise { + // TODO: 实现getAddonCountByCondition业务逻辑 + return null; } /** * set */ async set(addon: Addon): Promise { - const model: Addon = this.addonRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }))); - - if (model != null) { - addon.updateTime = Date.now( / 1000); - this.addonRepository.save(addon, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("`key`", addon.key)); - } else { - addon.installTime = Date.now( / 1000); - this.addonRepository.save(addon); - } + // TODO: 实现set业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/aliapp/impl/core-aliapp-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/aliapp/impl/core-aliapp-config-service-impl.service.ts index 39ab58c7..b706a1ec 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/aliapp/impl/core-aliapp-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/aliapp/impl/core-aliapp-config-service-impl.service.ts @@ -4,7 +4,7 @@ import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; import { AliappConfigParamDto } from '../../../../dtos/core/aliapp/param/aliapp-config-param.dto'; import { AliappConfigVoDto } from '../../../../dtos/core/aliapp/vo/aliapp-config-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class CoreAliappConfigServiceImplService { @@ -16,19 +16,14 @@ export class CoreAliappConfigServiceImplService { * getAliappConfig */ async getAliappConfig(siteId: number): Promise { - const coreSysConfigVo: CoreSysConfigVo = this.coreConfigService.getConfig(siteId, "aliapp"); - const vo: AliappConfigVo = new AliappConfigVo(); - if(ObjectUtil.isNotNull(coreSysConfigVo.valueJson)) - { - vo = Object.assign(new AliappConfigVo(), coreSysConfigVo.valueJson) /* TODO: 检查AliappConfigVo构造函数 */; - } - return vo; + // TODO: 实现getAliappConfig业务逻辑 + return null; } /** * setAliappConfig */ - async setAliappConfig(siteId: number, aliappConfigParam: AliappConfigParam): Promise { + async setAliappConfig(siteId: number, aliappConfigParam: AliappConfigParamDto): Promise { const json: Record = JsonUtils.parseObject(aliappConfigParam); this.coreConfigService.config = siteId, "aliapp", json; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-app-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-app-service-impl.service.ts index ec681938..7389f323 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-app-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-app-service-impl.service.ts @@ -14,12 +14,7 @@ export class CoreAppServiceImplService { * initAppBasic */ async initAppBasic(connection: Connection): Promise { - log.info("initAppBasic() begin"); - // 1、初始化系统数据库schema - - // 2、初始化系统菜单 - - // 3、初始化系统默认用户和角色 - log.info("initAppBasic() ended"); + // TODO: 实现initAppBasic业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-async-task-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-async-task-service-impl.service.ts index 351d3070..fa4b9d27 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-async-task-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-async-task-service-impl.service.ts @@ -13,28 +13,16 @@ export class CoreAsyncTaskServiceImplService { /** * executeAsyncTask */ - async executeAsyncTask(coreAsyncTaskParam: CoreAsyncTaskParam): Promise { - log.warn("我是异步执行的..............."); - try { - Thread.sleep(3 * 1000); - } catch (e) { - console.error(e); - } - log.warn("异步执行完成了..............."); - return Result.success(); + async executeAsyncTask(coreAsyncTaskParam: CoreAsyncTaskParamDto): Promise { + // TODO: 实现executeAsyncTask业务逻辑 + return null; } /** * execute */ - async execute(coreAsyncTaskParam: CoreAsyncTaskParam): Promise { - log.warn("我是同步执行的..............."); - try { - Thread.sleep(3 * 1000); - } catch (e) { - console.error(e); - } - log.warn("同步执行完成了..............."); - return Result.success(); + async execute(coreAsyncTaskParam: CoreAsyncTaskParamDto): Promise { + // TODO: 实现execute业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-queue-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-queue-service-impl.service.ts index 48fde995..91f2b71a 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-queue-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/app/impl/core-queue-service-impl.service.ts @@ -15,29 +15,15 @@ export class CoreQueueServiceImplService { * exec */ async exec(taskArgument: TaskArgument): Promise { - console.log("target bean => " + taskArgument.targetBean); - console.log("target method => " + taskArgument.targetMethod); - console.log("method argument => " + taskArgument); - console.log("execute time => " + Date.now()); - try { - Thread.sleep(10 * 1000); - } catch (e) { - console.error(e); - } - return Result.success(); + // TODO: 实现exec业务逻辑 + return null; } /** * execUseQueue */ - async execUseQueue(coreQueueExecParam: CoreQueueExecParam): Promise { - const asyncTask: AsyncTask = AsyncTaskManager.build(ICoreQueueService.class) - .setMethodName("exec").addMethodParameter("param", coreQueueExecParam); - // const result: boolean = AsyncTaskManager.delayExecute(asyncTask); - const result: boolean = AsyncTaskQueueManager.delayExecute(asyncTask); - if (result) { - return Result.success(); - } - return Result.fail("队列已满."); + async execUseQueue(coreQueueExecParam: CoreQueueExecParamDto): Promise { + // TODO: 实现execUseQueue业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/core-captcha-img-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/core-captcha-img-service-impl.service.ts index 69faceaa..4b81bfdb 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/core-captcha-img-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/core-captcha-img-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable, UnauthorizedException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { CoreCaptchaValiDateParamDto } from '../../../../dtos/core/captcha/param/core-captcha-vali-date-param.dto'; import { CoreCaptchaInfoVoDto } from '../../../../dtos/core/captcha/vo/core-captcha-info-vo.dto'; import { CaptchaVODto } from '../dtos/captcha-v-o.dto'; @@ -16,38 +16,16 @@ export class CoreCaptchaImgServiceImplService { * create */ async create(captchaType: string): Promise { - const captchaVO: CaptchaVO = new CaptchaVO(); - captchaVO.captchaType = captchaType; - const responseModel: ResponseModel = this.captchaService.get(captchaVO); - const coreCaptchaInfoVo: CoreCaptchaInfoVo = new CoreCaptchaInfoVo(); - if(responseModel.isSuccess()){ - const jsonObject: Record = JsonUtils.parseObject(responseModel.repData); - coreCaptchaInfoVo.token = jsonObject.getStr("token"); - coreCaptchaInfoVo.jigsawImageBase64 = jsonObject.getStr("jigsawImageBase64"); - coreCaptchaInfoVo.originalImageBase64 = jsonObject.getStr("originalImageBase64"); - coreCaptchaInfoVo.secretKey = jsonObject.getStr("secretKey"); - }else{ - throw new UnauthorizedException(responseModel.repMsg); - } - return coreCaptchaInfoVo; + // TODO: 实现create业务逻辑 + return null; } /** * check */ - async check(coreCaptchaValiDateParam: CoreCaptchaValiDateParam): Promise { - if(ObjectUtil.isNull(coreCaptchaValiDateParam.captchaType) || ObjectUtil.isNull(coreCaptchaValiDateParam.captchaCode) || ObjectUtil.isNull(coreCaptchaValiDateParam.captchaKey)){ - throw new UnauthorizedException("缺少参数"); - } - const captchaVO: CaptchaVO = new CaptchaVO(); - captchaVO.captchaType = coreCaptchaValiDateParam.captchaType; - captchaVO.token = coreCaptchaValiDateParam.captchaKey; - captchaVO.pointJson = coreCaptchaValiDateParam.captchaCode; - const responseModel: ResponseModel = this.captchaService.check(captchaVO); - if(!responseModel.isSuccess()){ - throw new UnauthorizedException(responseModel.repMsg); - } - return true; + async check(coreCaptchaValiDateParam: CoreCaptchaValiDateParamDto): Promise { + // TODO: 实现check业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/default-captcha-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/default-captcha-service-impl.service.ts index e30f2671..0fdc60ca 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/default-captcha-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/captcha/impl/default-captcha-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PropertiesDto } from '../dtos/properties.dto'; import { CaptchaVODto } from '../dtos/captcha-v-o.dto'; @@ -44,46 +44,23 @@ export class DefaultCaptchaServiceImplService { * get */ async get(captchaVO: CaptchaVO): Promise { - if (captchaVO == null) { - return RepCodeEnum.NULL_ERROR.parseError("captchaVO"); - } else { - return StringUtils.isEmpty(captchaVO.captchaType) ? RepCodeEnum.NULL_ERROR.parseError("类型") : this.getService(captchaVO.captchaType).get(captchaVO); - } + // TODO: 实现get业务逻辑 + return null; } /** * check */ async check(captchaVO: CaptchaVO): Promise { - if (captchaVO == null) { - return RepCodeEnum.NULL_ERROR.parseError("captchaVO"); - } else if (StringUtils.isEmpty(captchaVO.captchaType)) { - return RepCodeEnum.NULL_ERROR.parseError("类型"); - } else { - return StringUtils.isEmpty(captchaVO.token) ? RepCodeEnum.NULL_ERROR.parseError("token") : this.getService(captchaVO.captchaType).check(captchaVO); - } + // TODO: 实现check业务逻辑 + return null; } /** * verification */ async verification(captchaVO: CaptchaVO): Promise { - if (captchaVO == null) { - return RepCodeEnum.NULL_ERROR.parseError("captchaVO"); - } else if (StringUtils.isEmpty(captchaVO.captchaVerification)) { - return RepCodeEnum.NULL_ERROR.parseError("二次校验参数"); - } else { - try { - const codeKey: string = String.format(REDIS_SECOND_CAPTCHA_KEY, captchaVO.captchaVerification); - if (!CaptchaServiceFactory.getCache(cacheType).exists(codeKey)) { - return ResponseModel.errorMsg(RepCodeEnum.API_CAPTCHA_INVALID); - } - CaptchaServiceFactory.getCache(cacheType).delete(codeKey); - } catch (var3) { - this.logger.error("验证码坐标解析失败", var3); - return ResponseModel.errorMsg(var3.message); - } - return ResponseModel.success(); - } + // TODO: 实现verification业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-cloud-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-cloud-service-impl.service.ts index b90b28f6..6a435d2f 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-cloud-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-cloud-service-impl.service.ts @@ -1,9 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils } from '@wwjBoot'; -import * as fs from 'fs'; -import { HttpResponseDto } from '../dtos/http-response.dto'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AppVersionAddParamDto } from '../../../../dtos/admin/channel/param/app-version-add-param.dto'; import { SysMapVoDto } from '../../../../dtos/admin/sys/vo/sys-map-vo.dto'; import { GenerateSignCertParamDto } from '../../../../dtos/core/channel/param/generate-sign-cert-param.dto'; @@ -14,167 +12,30 @@ import { WeappUploadParamDto } from '../../../../dtos/core/weapp/param/weapp-upl @Injectable() export class CoreAppCloudServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * appCloudBuid */ - async appCloudBuid(param: AppVersionAddParam): Promise { - const appConfig: AppConfigVo = this.coreAppService.getConfig(param.siteId); - - if (CommonUtils.isEmpty(appConfig.appName)) throw new BadRequestException("请先配置应用名称"); - if (CommonUtils.isEmpty(appConfig.uniAppId)) throw new BadRequestException("请先配置应用ID"); - if (CommonUtils.isEmpty(appConfig.androidAppKey)) throw new BadRequestException("请先配置应用密钥"); - if (CommonUtils.isEmpty(appConfig.applicationId)) throw new BadRequestException("请先配置应用包名"); - - const taskKey: string = String(Date.now() / 1000); - - const tempDir: string = this.appConfig.webRootDownRuntime + "app_build/" + taskKey + "/"; - const packageDir: string = tempDir + "package/"; - FileTools.createDirs(packageDir); - - handleUniapp(packageDir + "uni-app/", param, appConfig); - - const wapUrl: string = this.coreSysConfigService.getSceneDomain(param.getSiteId()).wapUrl; - - const mapConfig: SysMapVo = this.coreSysConfigService.getMap(param.siteId); - - const build: Record = new Record(); - build.set("app_name", appConfig.appName); - build.set("uni_app_id", appConfig.uniAppId); - build.set("wechat_app_id", ObjectUtil.defaultIfNull(appConfig.wechatAppId, "")); - build.set("wechat_app_secret", ObjectUtil.defaultIfNull(appConfig.wechatAppSecret, "")); - build.set("android_app_key", appConfig.androidAppKey); - build.set("application_id", appConfig.applicationId); - build.set("privacy_agreement", wapUrl + "/app/pages/auth/agreement?key=privacy&="); - build.set("service_agreement", wapUrl + "/app/pages/auth/agreement?key=service&="); - build.set("qq_map_key", mapConfig.key); - build.set("amap_key", ""); - build.set("version_name", param.versionName); - build.set("version_code", param.versionCode); - build.putByPath("cert.type", param.getCert().type); - build.putByPath("cert.file", param.getCert().file); - build.putByPath("cert.key_alias", param.getCert().keyAlias); - build.putByPath("cert.key_password", param.getCert().keyPassword); - build.putByPath("cert.store_password", param.getCert().storePassword); - - try { - // 写入build.json文件 - fs.writeFileSync(packageDir, "build.json", build.toString(), "UTF-8"); - - // 拷贝证书文件 - if (param.getCert().type === "private"){ - const certFile: string = this.appConfig.webRootDownResource, param.getCert(.file); - if (!fs.existsSync(certFile)) throw new BadRequestException("证书文件不存在"); - - fs.copyFileSync(certFile, packageDir, "cert.jks"); - } - - // 拷贝icon文件 - const iconFile: string = this.appConfig.webRootDownResource, param.getBuild(.icon); - if (!fs.existsSync(iconFile)) throw new BadRequestException("icon文件不存在"); - fs.copyFileSync(iconFile, packageDir, "drawable.zip"); - - // 将临时目录下文件生成压缩包 - const zipFile: string = ZipUtil.zip(packageDir, tempDir + "app.zip"); - - const instance: NiucloudUtils = NiucloudUtils.instance; - - const actionQuery: Record = new const query: Record<>(); - actionQuery.put("data[product_key]", instance.productKey); - const actionToken: Record = this.niucloudService.getActionToken("appbuild", actionQuery); - - Record = {}; - query.put("authorize_code", instance.code); - query.put("timestamp", taskKey); - query.put("token", actionToken == null ? "" : actionToken.getStr("token")); - - const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/appbuild").query(query) - .func(i => { - i.form("file", zipFile, "app.zip"); - }) - .method(Method.POST).execute(); - - const res: Record = JsonUtils.parseObject(response.body()); - - if (!res.getInt("code", 0).equals(1)) throw new BadRequestException(res.getStr("msg")); - - return taskKey; - } catch (e) { - throw new BadRequestException(e.message); - } + async appCloudBuid(param: AppVersionAddParamDto): Promise { + // TODO: 实现appCloudBuid业务逻辑 + return null; } /** * getAppCompileLog */ async getAppCompileLog(key: string): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("authorize_code", instance.code); - query.put("timestamp", key); - - const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/get_appbuild_logs").query(query).method(Method.GET).execute(); - try { - const vo: AppCompileLogVo = new AppCompileLogVo(); - const log: Record = JsonUtils.parseObject(response.body()); - vo.buildLog = log; - - if (log != null) { - const data: JSONArray = ObjectUtil.defaultIfNull(log.getByPath("data.0", JSONArray.class), new JSONArray()); - if (data.length > 0) { - const last: Record = data.getRecord(data.length - 1); - if (last.getInt("code", -1).equals(0)) { - vo.status = "fail"; - vo.failReason = last.getStr("msg", ""); - return vo; - } - if (last.getInt("percent", 0).equals(100)) { - buildSuccess(key, vo); - } - } - } - - return vo; - } catch (e) { - return null; - } + // TODO: 实现getAppCompileLog业务逻辑 + return null; } /** * generateSignCert */ - async generateSignCert(param: GenerateSignCertParam): Promise { - const query: Record = {}; - query.put("key_alias", param.keyAlias); - query.put("key_password", param.keyPassword); - query.put("store_password", param.storePassword); - query.put("limit", param.limit); - query.put("dname", "CN=" + param.cn + ", OU=" + param.ou + ", O=" + param.o + ", L=" + param.l + ", ST=" + param.st + ", C=" + param.c); - - const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/getcert").query(query).method(Method.GET).execute(); - - if (response.header("Content-Type").equals("application/json")) { - const content: Record = JsonUtils.parseObject(response.body()); - if (content.getInt("code", -1) == 0) { - throw new BadRequestException(ObjectUtil.defaultIfBlank(content.getStr("msg", ""), "获取证书失败")); - } - } - - const tempDir: string = this.appConfig.webRootDownResource + "upload/download/cert/"; - FileTools.createDirs(tempDir); - - try { - const file: string = tempDir + param.getKeyAlias( + ".zip"); - const fos: FileOutputStream = new FileOutputStream(file, true); - fos.write(response.bodyBytes()); - return "upload/download/cert/" + param.keyAlias + ".zip"; - } catch (e) { - console.error(e); - throw new BadRequestException(e.message); - } + async generateSignCert(param: GenerateSignCertParamDto): Promise { + // TODO: 实现generateSignCert业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-service-impl.service.ts index 83876d9f..eaba5b52 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-app-service-impl.service.ts @@ -4,7 +4,7 @@ import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; import { SetAppParamDto } from '../../../../dtos/core/channel/param/set-app-param.dto'; import { AppConfigVoDto } from '../../../../dtos/core/channel/vo/app-config-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class CoreAppServiceImplService { @@ -16,17 +16,14 @@ export class CoreAppServiceImplService { * getConfig */ async getConfig(siteId: number): Promise { - const config: CoreSysConfigVo = this.coreConfigService.getConfig(siteId, ConfigKeyEnum.basename(APP)); - if (config == null || config.valueJson == null) { - return new AppConfigVo(); - } - return Object.assign(new AppConfigVo(), config.valueJson) /* TODO: 检查AppConfigVo构造函数 */; + // TODO: 实现getConfig业务逻辑 + return null; } /** * setConfig */ - async setConfig(siteId: number, param: SetAppParam): Promise { + async setConfig(siteId: number, param: SetAppParamDto): Promise { this.coreConfigService.config = siteId, ConfigKeyEnum.basename(APP, JsonUtils.parseObject(param)); } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-h5-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-h5-service-impl.service.ts index 5569edc7..6f9548f8 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-h5-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-h5-service-impl.service.ts @@ -4,7 +4,7 @@ import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, JsonUtils, RequestContextService } from '@wwjBoot'; import { SetH5ParamDto } from '../../../../dtos/core/channel/param/set-h5-param.dto'; import { H5ConfigVoDto } from '../../../../dtos/core/channel/vo/h5-config-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class CoreH5ServiceImplService { @@ -17,19 +17,14 @@ export class CoreH5ServiceImplService { * getH5 */ async getH5(siteId: number): Promise { - const coreSysConfigVo: CoreSysConfigVo = this.coreConfigService.getConfig(siteId, "h5"); - const vo: H5ConfigVo = new H5ConfigVo(); - if(ObjectUtil.isNotNull(coreSysConfigVo.valueJson)) - { - vo = Object.assign(new H5ConfigVo(), coreSysConfigVo.valueJson) /* TODO: 检查H5ConfigVo构造函数 */; - } - return vo; + // TODO: 实现getH5业务逻辑 + return null; } /** * setH5 */ - async setH5(param: SetH5Param): Promise { + async setH5(param: SetH5ParamDto): Promise { const json: Record = JsonUtils.parseObject(param); this.coreConfigService.config = this.requestContext.siteId, "h5", json; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-pc-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-pc-service-impl.service.ts index d64a8103..2c268892 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-pc-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/channel/impl/core-pc-service-impl.service.ts @@ -6,7 +6,7 @@ import { AliappConfigParamDto } from '../../../../dtos/core/aliapp/param/aliapp- import { AliappConfigVoDto } from '../../../../dtos/core/aliapp/vo/aliapp-config-vo.dto'; import { SetPcParamDto } from '../../../../dtos/core/channel/param/set-pc-param.dto'; import { PcConfigVoDto } from '../../../../dtos/core/channel/vo/pc-config-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; @Injectable() export class CorePcServiceImplService { @@ -19,19 +19,14 @@ export class CorePcServiceImplService { * getPc */ async getPc(siteId: number): Promise { - const coreSysConfigVo: CoreSysConfigVo = this.coreConfigService.getConfig(siteId, "pc"); - const vo: PcConfigVo = new PcConfigVo(); - if(ObjectUtil.isNotNull(coreSysConfigVo.valueJson)) - { - vo = Object.assign(new PcConfigVo(), coreSysConfigVo.valueJson) /* TODO: 检查PcConfigVo构造函数 */; - } - return vo; + // TODO: 实现getPc业务逻辑 + return null; } /** * setPc */ - async setPc(param: SetPcParam): Promise { + async setPc(param: SetPcParamDto): Promise { const json: Record = JsonUtils.parseObject(param); this.coreConfigService.config = this.requestContext.siteId, "pc", json; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy/impl/core-diy-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy/impl/core-diy-service-impl.service.ts index bff933c2..d31b843e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy/impl/core-diy-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy/impl/core-diy-service-impl.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, JsonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; -import { InstallAddonListVoDto } from '../../../../entities/install-addon-list-vo.entity'; -import { DiyThemeDto } from '../../../../entities/diy-theme.entity'; +import { InstallAddonListVo } from '../../../../entities/install-addon-list-vo.entity'; +import { DiyTheme } from '../../../../entities/diy-theme.entity'; @Injectable() export class CoreDiyServiceImplService { @@ -30,50 +30,7 @@ export class CoreDiyServiceImplService { * initDefaultDiyTheme */ async initDefaultDiyTheme(siteId: number): Promise { - const siteCache: SiteInfoVo = this.coreSiteService.getSiteCache(siteId); - const themeColorList: JSONArray = ThemeColorEnum.themeColor; - - if (themeColorList == null || (!themeColorList || themeColorList.length === 0)) { - return; - } - - const diyThemes: DiyTheme[] = []; - - // 处理主题配置 - themeColorList.forEach(item => { - const themeColor: Record = JsonUtils.parseObject(item); - const themeType: string = themeColor.getStr("theme_type"); - const colors: JSONArray = themeColor.getJSONArray("theme_color"); - - if (colors == null || (!colors || colors.length === 0)) { - return; - } - - // 处理应用主题 - if ("app_theme".equals(themeType)) { - addAppThemes(diyThemes, siteId, "app", "app", colors); - return; - } - - // 处理其他应用和插件主题 - siteCache.apps.stream() - .filter(app => (themeType + "_theme").equals(app.key)) - .forEach(app => { - // 添加应用主题 - addAppThemes(diyThemes, siteId, "app", app.key, colors); - - // 添加关联插件主题 - const addons: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq(Addon::getSupportApp, app.key)); - - if (StringUtils.isNotEmptyArray(addons)) { - addons.forEach(addon => addAppThemes(diyThemes, siteId, "addon", addon.key, colors)); - } - }); - }); - - if (StringUtils.isNotEmptyArray(diyThemes)) { - insertNewThemes(diyThemes, siteId); - } + // TODO: 实现initDefaultDiyTheme业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-config-service-impl.service.ts index 83e74d7d..c1d30b75 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-config-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { DiyFormSubmitConfigParamDto } from '../../../../dtos/core/diy_form/param/diy-form-submit-config-param.dto'; import { DiyFormWriteConfigParamDto } from '../../../../dtos/core/diy_form/param/diy-form-write-config-param.dto'; import { DiyFormSubmitConfigInfoVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-submit-config-info-vo.dto'; @@ -17,151 +17,47 @@ export class CoreDiyFormConfigServiceImplService { * getWriteConfig */ async getWriteConfig(siteId: number, formId: number): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", siteId).eq("form_id", formId); - const writeConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isEmpty(writeConfig)) { - return null; - } - const infoVo: DiyFormWriteConfigInfoVo = new DiyFormWriteConfigInfoVo(); - BeanUtil.copyProperties(writeConfig, infoVo); - infoVo.timeLimitRule = writeConfig.timeLimitRule; - const timeLimitRule: Record = JsonUtils.parseObject(infoVo.timeLimitRule); - if(timeLimitRule.containsKey("specify_time") && timeLimitRule.getJSONArray("specify_time").size() > 0) - { - const specifyTime: JSONArray = timeLimitRule.getJSONArray("specify_time"); - const specifyTimeVo: JSONArray = new JSONArray(); - specifyTimeVo.push(DateUtils.timestampToString(specifyTime.getLong(0))); - specifyTimeVo.push(DateUtils.timestampToString(specifyTime.getLong(1))); - timeLimitRule.put("specify_time", specifyTimeVo); - } - - if(timeLimitRule.containsKey("open_day_time") && timeLimitRule.getJSONArray("open_day_time").size() > 0) - { - const beginOfDay: number = DateUtil.beginOfDay(DateUtil.date()).time / 1000; - const openDayTime: JSONArray = timeLimitRule.getJSONArray("open_day_time"); - const openDayTimeVo: JSONArray = new JSONArray(); - openDayTimeVo.push(DateUtils.timestampToString( (beginOfDay + openDayTime.getLong(0)), "yyyy-MM-dd")); - openDayTimeVo.push(DateUtils.timestampToString((beginOfDay + openDayTime.getLong(1)), "yyyy-MM-dd")); - timeLimitRule.put("specify_time", openDayTimeVo); - } - return infoVo; + // TODO: 实现getWriteConfig业务逻辑 + return null; } /** * addWriteConfig */ - async addWriteConfig(addParam: DiyFormWriteConfigParam): Promise { - if (addParam.formId == null) { - throw new BadRequestException("缺少表单id"); - } - const writeConfig: DiyFormWriteConfig = new DiyFormWriteConfig(); - - BeanUtil.copyProperties(addParam, writeConfig); - writeConfig.createTime = Date.now( / 1000); - writeConfig.updateTime = Date.now( / 1000); - this.diyFormWriteConfigRepository.save(writeConfig); + async addWriteConfig(addParam: DiyFormWriteConfigParamDto): Promise { + // TODO: 实现addWriteConfig业务逻辑 + return null; } /** * editWriteConfig */ - async editWriteConfig(editParam: DiyFormWriteConfigParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("id", editParam.id).eq("form_id", editParam.formId).eq("site_id", editParam.siteId); - const existingConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isEmpty(existingConfig)) { - throw new BadRequestException("表单填写配置不存在"); - } - BeanUtil.copyProperties(editParam, existingConfig); - existingConfig.labelIds = editParam.labelIds.toString(); - existingConfig.formWriteRule = editParam.formWriteRule.toString(); - existingConfig.memberWriteRule = editParam.memberWriteRule.toString(); - existingConfig.levelIds = editParam.levelIds.toString(); - - - const timeLimitRule: Record = editParam.timeLimitRule; - if(timeLimitRule.containsKey("specify_time") && timeLimitRule.getJSONArray("specify_time").size() > 0) - { - const specifyTime: JSONArray = timeLimitRule.getJSONArray("specify_time"); - const specifyTimeVo: JSONArray = new JSONArray(); - specifyTimeVo.push(DateUtils.StringToTimestamp(specifyTime.getStr(0))); - specifyTimeVo.push(DateUtils.StringToTimestamp(specifyTime.getStr(1))); - timeLimitRule.put("specify_time", specifyTimeVo); - } - - if(timeLimitRule.containsKey("open_day_time") && timeLimitRule.getJSONArray("open_day_time").size() > 0) - { - const beginOfDay: number = DateUtil.beginOfDay(DateUtil.date()).time / 1000; - const openDayTime: JSONArray = timeLimitRule.getJSONArray("open_day_time"); - const openDayTimeVo: JSONArray = new JSONArray(); - const startTimeStr: string = DateUtil.format(DateUtil.date(), "yyyy-MM-dd") + " " + openDayTime.getStr(0) + ":00"; - const endTimeStr: string = DateUtil.format(DateUtil.date(), "yyyy-MM-dd") + " " + openDayTime.getStr(1) + ":00"; - openDayTimeVo.push(DateUtils.StringToTimestamp(startTimeStr) - beginOfDay); - openDayTimeVo.push(DateUtils.StringToTimestamp(endTimeStr) - beginOfDay); - timeLimitRule.put("specify_time", openDayTimeVo); - } - existingConfig.timeLimitRule = timeLimitRule.toString(); - existingConfig.updateTime = Date.now( / 1000); - diyFormWriteConfigMapper.updateById(existingConfig); + async editWriteConfig(editParam: DiyFormWriteConfigParamDto): Promise { + // TODO: 实现editWriteConfig业务逻辑 + return null; } /** * getSubmitConfig */ async getSubmitConfig(siteId: number, formId: number): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", siteId).eq("form_id", formId).last("limit 1"); - const submitConfig: DiyFormSubmitConfig = this.diyFormSubmitConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - const infoVo: DiyFormSubmitConfigInfoVo = new DiyFormSubmitConfigInfoVo(); - BeanUtil.copyProperties(submitConfig, infoVo); - return infoVo; + // TODO: 实现getSubmitConfig业务逻辑 + return null; } /** * addSubmitConfig */ - async addSubmitConfig(addParam: DiyFormSubmitConfigParam): Promise { - if (addParam.formId == null) { - throw new BadRequestException("缺少表单id"); - } - const submitConfig: DiyFormSubmitConfig = new DiyFormSubmitConfig(); - submitConfig.submitAfterAction = addParam.submitAfterAction; - submitConfig.successAfterAction = addParam.successAfterAction.toString(); - submitConfig.timeLimitRule = addParam.timeLimitRule.toString(); - submitConfig.timeLimitType = addParam.timeLimitType; - submitConfig.siteId = addParam.siteId; - submitConfig.voucherContentRule = addParam.voucherContentRule.toString(); - submitConfig.tipsText = addParam.tipsText; - submitConfig.tipsType = addParam.tipsType; - submitConfig.formId = addParam.formId; - submitConfig.createTime = Date.now( / 1000); - submitConfig.updateTime = Date.now( / 1000); - this.diyFormSubmitConfigRepository.save(submitConfig); + async addSubmitConfig(addParam: DiyFormSubmitConfigParamDto): Promise { + // TODO: 实现addSubmitConfig业务逻辑 + return null; } /** * editSubmitConfig */ - async editSubmitConfig(editParam: DiyFormSubmitConfigParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("id", editParam.id).eq("site_id", editParam.siteId).eq("form_id", editParam.formId); - const existingConfig: DiyFormSubmitConfig = this.diyFormSubmitConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isEmpty(existingConfig)) { - throw new BadRequestException("表单提交成功页配置不存在"); - } - existingConfig.submitAfterAction = editParam.submitAfterAction; - existingConfig.successAfterAction = editParam.successAfterAction.toString(); - existingConfig.timeLimitRule = editParam.timeLimitRule.toString(); - existingConfig.timeLimitType = editParam.timeLimitType; - - existingConfig.voucherContentRule = editParam.voucherContentRule.toString(); - existingConfig.tipsText = editParam.tipsText; - existingConfig.tipsType = editParam.tipsType; - - - existingConfig.updateTime = Date.now( / 1000); - diyFormSubmitConfigMapper.updateById(existingConfig); + async editSubmitConfig(editParam: DiyFormSubmitConfigParamDto): Promise { + // TODO: 实现editSubmitConfig业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-records-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-records-service-impl.service.ts index 31d071a6..daf02de6 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-records-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/diy_form/impl/core-diy-form-records-service-impl.service.ts @@ -1,276 +1,58 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, JsonUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { DiyFormRecordsListVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-records-list-vo.dto'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { DiyFormRecordsParamDto } from '../../../../dtos/core/diy_form/param/diy-form-records-param.dto'; import { DiyFormRecordsSearchParamDto } from '../../../../dtos/core/diy_form/param/diy-form-records-search-param.dto'; import { DiyFormRecordsFieldsListVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-records-fields-list-vo.dto'; import { DiyFormRecordsInfoVoDto } from '../../../../dtos/core/diy_form/vo/diy-form-records-info-vo.dto'; -import { DiyFormRecordsFieldsDto } from '../../../../entities/diy-form-records-fields.entity'; +import { DiyFormRecordsFields } from '../../../../entities/diy-form-records-fields.entity'; @Injectable() export class CoreDiyFormRecordsServiceImplService { constructor( - private readonly appConfig: AppConfigService, - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * page */ - async page(pageParam: PageParam, searchParam: DiyFormRecordsSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - MPJany /* TODO: QueryWrapper */ queryWrapper = new MPJQueryWrapper(); - - //sql语句 - queryWrapper.select("ndfr.record_id, ndfr.site_id, ndfr.form_id, ndfr.value, ndfr.member_id, ndfr.relate_id, ndfr.create_time, nm.username, nm.member_no, nm.mobile, nm.nickname, nm.headimg") - .setAlias("ndfr") - .leftJoin("?_member nm ON ndfr.member_id = nm.member_id".replace("?_", this.appConfig.tablePrefix)); - - queryWrapper.eq("ndfr.site_id", searchParam.siteId); - if (CommonUtils.isNotEmpty(searchParam.formId)) { - queryWrapper.eq("ndfr.form_id", searchParam.formId); - } - if (CommonUtils.isNotEmpty(searchParam.keyword)) { - queryWrapper.and(i => i.or(j => j.like("nm.nickname", searchParam.keyword)) - .or(j => j.like("nm.username", searchParam.keyword)) - .or(j => j.like("nm.member_no", searchParam.keyword)) - .or(j => j.like("nm.mobile", searchParam.keyword)) - ); - } - - queryWrapper.orderByDesc("ndfr.create_time"); - [DiyFormRecordsListVo[], number] iPage = diyFormRecordsMapper.selectJoinPage(new Page<>(page, limit), DiyFormRecordsListVo.class, queryWrapper); - - for (const vo of iPageRecords) { - const list: DiyFormRecordsFields[] = this.diyFormRecordsFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }))); - - const memberVo: Member = new Member(); - Object.assign(memberVo, vo); - vo.member = memberVo; - if (CommonUtils.isNotEmpty(list)) { - const map: Record = {}; - for (const item of list) { - const diyFormRecordsFieldsListVo: DiyFormRecordsFieldsListVo = new DiyFormRecordsFieldsListVo(); - Object.assign(diyFormRecordsFieldsListVo, item); - map.put(item.fieldKey, diyFormRecordsFieldsListVo); - } - vo.recordsFieldList = map; - } - } - return PageResult.build(iPage); + async page(pageParam: PageParamDto, searchParam: DiyFormRecordsSearchParamDto): Promise { + // TODO: 实现page业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: DiyFormRecords = this.diyFormRecordsRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", this.requestContext.siteId)); - - - if (!model) throw new BadRequestException("万能表单填写记录不存在"); - - const vo: DiyFormRecordsInfoVo = new DiyFormRecordsInfoVo(); - Object.assign(vo, model); - const list: DiyFormRecordsFields[] = this.diyFormRecordsFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }))); - if (CommonUtils.isNotEmpty(list)) { - const map: Record = {}; - for (const item of list) { - const diyFormRecordsFieldsListVo: DiyFormRecordsFieldsListVo = new DiyFormRecordsFieldsListVo(); - Object.assign(diyFormRecordsFieldsListVo, item); - map.put(item.fieldKey, diyFormRecordsFieldsListVo); - } - vo.recordsFieldList = map; - } - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: DiyFormRecordsParam): Promise { - const diyForm: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("form_id", addParam.formId)); - if (diyForm == null) return null; - - if (diyForm.status == 0) return null; - - const model: DiyFormRecords = new DiyFormRecords(); - Object.assign(model, addParam); - model.createTime = Date.now( / 1000); - model.value = JSONUtil.toJsonStr(addParam.value); - this.diyFormRecordsRepository.save(model); - const list: DiyFormFields[] = this.diyFormFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("site_id", addParam.siteId)); - const fieldList: Record = {}; - if (CommonUtils.isNotEmpty(list)) { - - for (const item of list) { - fieldList.put(item.fieldKey, item); - } - } - const recordsFieldsList: DiyFormRecordsFields[] = []; - - if (CommonUtils.isNotEmpty(addParam.value)) { - const components: JSONArray = JSONUtil.parseArray(addParam.value); - for (const componentObj of components) { - const component: Record = JsonUtils.parseObject(componentObj); - // 过滤非表单组件和表单提交按钮组件 - if (!"diy_form".equals(component.getStr("componentType")) || "FormSubmit".equals(component.getStr("componentName")) || component.getBool("isHidden")) { - continue; - } - - const field: Record = component.getRecord("field"); - const fieldValue: Object = field.get("value"); - const checkFieldValue: Object = fieldValue; - if (fieldValue instanceof List) { - // 这里假设 DiyFormRecordsFieldsMapper 有对应的方法,需要根据实际情况修改 - // checkFieldValue = diyFormRecordsFieldsMapper.getRenderValueAttr("", (List) fieldValue, component.get("componentName")); - checkFieldValue = ""; - } - - const formFieldInfo: DiyFormFields = fieldList.get(component.getStr("id")); - if (formFieldInfo != null) { - if (formFieldInfo.fieldRequired == 1 && fieldValue == null) { - throw new BadRequestException(field.getOrDefault("name", component.get("componentTitle")) + "不能为空"); - } else if (checkFieldValue == null) { - // 过滤空数据 - continue; - } - - // 检测字段是否重复 - any /* TODO: QueryWrapper */ uniqueQuery = new QueryWrapper(); - uniqueQuery.eq("site_id", addParam.siteId) - .eq("form_id", addParam.formId) - .eq("field_key", component.get("id")) - .eq("field_type", component.get("componentName")); - const fieldValues: Object[] = diyFormRecordsFieldsMapper.selectObjs(uniqueQuery); - if (formFieldInfo.fieldUnique == 1 && fieldValues.includes(fieldValue)) { - throw new BadRequestException(field.getOrDefault("name", component.get("componentTitle")) + "不能重复"); - } - } else if (checkFieldValue == null) { - // 过滤空数据 - continue; - } - - if (fieldValue instanceof List) { - // 这里假设使用 JSON 工具类,需要根据实际情况引入 - fieldValue = JSONUtil.parseArray(fieldValue).toString(); - } - - const recordsField: DiyFormRecordsFields = new DiyFormRecordsFields(); - recordsField.siteId = addParam.siteId; - recordsField.formId = addParam.formId; - recordsField.recordId = model.recordId; - recordsField.memberId = addParam.memberId; - recordsField.fieldKey = component.get("id"); - recordsField.fieldType = component.get("componentName"); - recordsField.fieldName = field.getOrDefault("name", ""); - recordsField.fieldValue = fieldValue.toString(); - recordsField.fieldRequired = (boolean field.get("required") ? 1 : 0); - recordsField.fieldHidden = (boolean component.get("isHidden") ? 1 : 0); - recordsField.fieldUnique = component.containsKey("unique" && (boolean) component.get("unique") ? 1 : 0); - recordsField.privacyProtection = component.containsKey("privacyProtection" && (boolean) component.get("privacyProtection") ? 1 : 0); - recordsField.createTime = Date.now( / 1000); - recordsField.updateTime = Date.now( / 1000); - recordsFieldsList.push(recordsField); - } - } - - if ((recordsFieldsList && recordsFieldsList.length > 0)) { - this.diyFormRecordsFieldsRepository.save(recordsFieldsList); - - // 累计填写数量 - this.diyFormRepository.save(new UpdateWrapper().eq("form_id", addParam.formId).sql = " write_num = write_num + 1"); - - for (const field of recordsFieldsList) { - // 字段累计填写数量 - this.diyFormFieldsRepository.save(new UpdateWrapper().eq("form_id", addParam.formId).eq("field_key", field.fieldKey).eq("site_id", addParam.siteId).sql = " write_num = write_num + 1"); - } - } - return model.recordId; + async add(addParam: DiyFormRecordsParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * del */ async del(siteId: number, id: number): Promise { - this.diyFormRecordsRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId)); + // TODO: 实现del业务逻辑 + return null; } /** * edit */ - async edit(param: DiyFormRecordsParam): Promise { - // 验证表单状态 - const formInfo: DiyForm = this.diyFormRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .select(DiyForm::getFormId, DiyForm::getStatus) - .eq(DiyForm::getFormId, param.formId) - .last("LIMIT 1")); - - if (formInfo == null) { - return; - } - if (formInfo.status == 0) { - return; - } - - // 更新主记录 - this.diyFormRecordsRepository.save(null, new LambdaUpdateWrapper() - .eq(DiyFormRecords::getRecordId, param.recordId) - .set(DiyFormRecords::getValue, JSONUtil.toJsonStr(param.value))); - - // 获取字段配置 - const formFieldMap: Record = this.diyFormFieldsRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .select(DiyFormFields::getFieldKey, - DiyFormFields::getFieldRequired, - DiyFormFields::getFieldUnique) - .eq(DiyFormFields::getFormId, param.formId)) - .stream() - .collect(/* Collectors已删除 */.toMap(DiyFormFields::getFieldKey, Function.identity())); - - // 处理字段数据 - const recordsFields: DiyFormRecordsFields[] = []; - if (StringUtils.isNotEmptyArray(param.value)) { - for (const comp of param.value) { - if (!(comp instanceof Record)) continue; - const component: Record = (Record) comp; - - // 过滤无效组件 - const componentType: string = component.getStr("componentType"); - const componentName: string = component.getStr("componentName"); - const isHidden: boolean = component.getBool("isHidden", false); - - if (!"diy_form".equals(componentType) || - "FormSubmit".equals(componentName) || - boolean.TRUE === isHidden) { - continue; - } - - // 获取字段值 - const field: Record = component.getRecord("field"); - const fieldValue: Object = field != null ? field.get("value") : null; - const fieldKey: string = component.getStr("id"); - - // 字段验证 - const fieldConfig: DiyFormFields = formFieldMap.get(fieldKey); - if (fieldConfig != null) { - validateField(fieldConfig, fieldValue, component, param); - } else if (fieldValue == null || - (fieldValue instanceof String && StrUtil.isBlank(fieldValue))) { - continue; - } - - // 构建字段记录 - recordsFields.push(buildRecordField(param, component, fieldValue)); - } - } - - // 更新字段记录 - updateRecordFields(param, recordsFields); + async edit(param: DiyFormRecordsParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-account-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-account-service-impl.service.ts index 646c4423..777f7cfe 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-account-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-account-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; @Injectable() export class CoreMemberAccountServiceImplService { @@ -13,50 +13,7 @@ export class CoreMemberAccountServiceImplService { * addLog */ async addLog(siteId: number, memberId: number, accountType: string, data: number, fromType: string, memo: string, relatedId: string): Promise { - const memberQuery: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("site_id", siteId).eq("member_id", memberId); - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (!member) throw new BadRequestException("会员不存在"); - - const accountData: BigDecimal = new BigDecimal(data); - const memberWrapper: BeanWrapper = new BeanWrapperImpl(member); - const originalData: BigDecimal = new BigDecimal(new number(memberWrapper.getPropertyValue(StringUtils.toCamelCase(accountType)).toString())); - - const accountNewData: BigDecimal = originalData.push(accountData); - if (accountNewData.signum() < 0) throw new BadRequestException("账户余额不足"); - - // 添加账户变更记录 - const model: MemberAccountLog = new MemberAccountLog(); - model.siteId = siteId; - model.memberId = memberId; - model.accountType = accountType; - model.accountData = accountData; - model.accountSum = accountNewData; - model.fromType = fromType; - model.memo = memo; - model.relatedId = relatedId; - model.createTime = Date.now( / 1000); - this.memberAccountLogRepository.save(model); - - // 修改会员账户 - const memberModel: Member = new Member(); - memberModel.memberId = memberId; - const updateMemberWrapper: BeanWrapper = new BeanWrapperImpl(memberModel); - updateMemberWrapper.propertyValue = StringUtils.toCamelCase(accountType, accountNewData); - if (accountData.signum() > 0) { - const originalGetData: BigDecimal = new BigDecimal(new number(memberWrapper.getPropertyValue(StringUtils.toCamelCase(accountType + "_get")).toString())); - updateMemberWrapper.propertyValue = StringUtils.toCamelCase(accountType + "_get", originalGetData.push(accountData)); - } - memberMapper.updateById(memberModel); - - // 账户变更事件 - const accountEvent: MemberAccountEvent = new MemberAccountEvent(); - accountEvent.siteId = siteId; - accountEvent.addAppSign("core"); - accountEvent.name = "MemberAccountEvent"; - accountEvent.accountType = accountType; - accountEvent.accountData = accountData; - accountEvent.accountNewData = accountNewData; - accountEvent.memberId = memberId; - EventAndSubscribeOfPublisher.publishAll(accountEvent); + // TODO: 实现addLog业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-cash-out-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-cash-out-service-impl.service.ts index 36d055e2..0fa16d0a 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-cash-out-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-cash-out-service-impl.service.ts @@ -1,13 +1,13 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { CashOutTransferParamDto } from '../../../../dtos/admin/member/param/cash-out-transfer-param.dto'; import { MemberCashOutAuditParamDto } from '../../../../dtos/admin/member/param/member-cash-out-audit-param.dto'; import { CashOutConfigVoDto } from '../../../../dtos/admin/member/vo/cash-out-config-vo.dto'; import { MemberCashOutApplyParamDto } from '../../../../dtos/core/member/param/member-cash-out-apply-param.dto'; -import { MemberCashOutDto } from '../../../../entities/member-cash-out.entity'; -import { MemberDto } from '../../../../entities/member.entity'; +import { MemberCashOut } from '../../../../entities/member-cash-out.entity'; +import { Member } from '../../../../entities/member.entity'; @Injectable() export class CoreMemberCashOutServiceImplService { @@ -18,80 +18,23 @@ export class CoreMemberCashOutServiceImplService { /** * apply */ - async apply(param: MemberCashOutApplyParam): Promise { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", param.siteId)); - if (CommonUtils.isEmpty(member)) throw new BadRequestException("会员不存在"); - - const config: CashOutConfigVo = this.coreMemberConfigService.getCashOutConfig(param.siteId); - if (config.isOpen === "0") throw new BadRequestException("会员提现业务未开启"); - - const applyMoney: BigDecimal = param.applyMoney; - if (applyMoney.compareTo(BigDecimal.ZERO) <= 0) throw new BadRequestException("提现金额必须大于0"); - if (param.accountType == AccountTypeEnum.MONEY.type && applyMoney.compareTo(member.money) > 0) throw new BadRequestException("提现金额不能大于账户余额"); - if (param.accountType == AccountTypeEnum.COMMISSION.type && applyMoney.compareTo(member.commission) > 0) throw new BadRequestException("提现金额不能大于账户可提现金额"); - if (applyMoney.compareTo(config.min) < 0) throw new BadRequestException("提现金额不能小于最低提现金额"); - if (!config.getTransferType().includes(param.transferType)) throw new BadRequestException("当前会员提现方式未启用"); - - const cashoutAccount: MemberCashOutAccount = new MemberCashOutAccount(); - if (!param.transferType === TransferTypeEnum.WECHATPAY.key) { - cashoutAccount = this.memberCashOutAccountRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", param.siteId) - .eq("account_id", param.accountId)); - if (CommonUtils.isEmpty(cashoutAccount)) throw new BadRequestException("提现账户不存在"); - } - - const serviceMoney: BigDecimal = applyMoney.multiply(config.rate).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP); - - const model: MemberCashOut = new MemberCashOut(); - model.memberId = param.memberId; - model.siteId = param.siteId; - model.cashOutNo = CommonUtils.createNo(); - model.accountType = param.accountType; - model.applyMoney = applyMoney; - model.serviceMoney = serviceMoney; - model.money = applyMoney.subtract(serviceMoney); - model.transferType = param.transferType; - model.transferRealname = ObjectUtil.defaultIfNull(cashoutAccount.realname, ""); - model.transferMobile = member.mobile; - model.transferBank = ObjectUtil.defaultIfNull(cashoutAccount.bankName, ""); - model.transferAccount = ObjectUtil.defaultIfNull(cashoutAccount.accountNo, ""); - model.rate = config.rate; - model.transferPaymentCode = ObjectUtil.defaultIfNull(cashoutAccount.transferPaymentCode, ""); - model.transferPayee = ObjectUtil.isNull(param.transferPayee ? "" : JsonUtils.parseObject(param.transferPayee).toString()); - - this.addCashOutRecord(model, member, config); - return model.id; + async apply(param: MemberCashOutApplyParamDto): Promise { + // TODO: 实现apply业务逻辑 + return null; } /** * audit */ - async audit(siteId: number, id: number, action: string, param: MemberCashOutAuditParam): Promise { - const cashOut: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId) - .last("limit 1")); - - if (!cashOut) throw new BadRequestException("提现记录不存在"); - - if (!cashOut.status === MemberCashOutStatusEnum.WAIT_AUDIT.status) { - throw new BadRequestException("当前提现申请未处于待审核状态"); - } - - switch (action) { - case "agree": - this.agree(siteId, cashOut, param); - break; - case "refuse": - this.refuse(siteId, cashOut, param); - break; - } + async audit(siteId: number, id: number, action: string, param: MemberCashOutAuditParamDto): Promise { + // TODO: 实现audit业务逻辑 + return null; } /** * agree */ - async agree(siteId: number, cashOut: MemberCashOut, param: MemberCashOutAuditParam): Promise { + async agree(siteId: number, cashOut: MemberCashOut, param: MemberCashOutAuditParamDto): Promise { cashOut.auditTime = Date.now( / 1000); cashOut.status = MemberCashOutStatusEnum.WAIT_TRANSFER.status; memberCashOutMapper.updateById(cashOut); @@ -100,149 +43,56 @@ export class CoreMemberCashOutServiceImplService { /** * transfer */ - async transfer(cashOut: MemberCashOut, param: CashOutTransferParam): Promise { - if (!cashOut) throw new BadRequestException("提现记录不存在"); - if (!cashOut.status === MemberCashOutStatusEnum.WAIT_TRANSFER.status && !cashOut.status === MemberCashOutStatusEnum.TRANSFER_ING.status) throw new BadRequestException("当前提现申请未处于待转账状态"); - - if (CommonUtils.isEmpty(cashOut.transferNo)) { - const transfer: PayTransfer = new PayTransfer(); - transfer.siteId = cashOut.siteId; - transfer.mainType = PayMainType.MEMBER.type; - transfer.mainId = cashOut.memberId; - transfer.money = cashOut.money; - transfer.tradeType = "member_cash_out"; - transfer.remark = ""; - transfer.extra = ""; - cashOut.transferNo = this.coreTransferService.create(transfer); - cashOut.status = MemberCashOutStatusEnum.TRANSFER_ING.status; - memberCashOutMapper.updateById(cashOut); - } - - const data: Record = {}; - data.put("transfer_voucher", ObjectUtil.defaultIfEmpty(param.transferVoucher, "")); - data.put("transfer_remark", ObjectUtil.defaultIfEmpty(param.transferRemark, "")); - - const transferType: string = ObjectUtil.defaultIfNull(param.transferType, cashOut.transferType); - - if (transferType !== "offline") { - data.put("transfer_type", cashOut.transferType); - data.put("transfer_realname", cashOut.transferRealname); - data.put("transfer_mobile", cashOut.transferMobile); - data.put("transfer_bank", cashOut.transferBank); - data.put("transfer_account", cashOut.transferAccount); - data.put("transfer_payment_code", cashOut.transferPaymentCode); - - if (cashOut.transferType === TransferTypeEnum.WECHATPAY.key) { - const transferPayee: Record = new Record(); - transferPayee.put("open_id", param.openId); - transferPayee.put("channel", param.channel); - data.put("transfer_payee", transferPayee.toString()); - } - } else { - transferType = cashOut.transferType; - } - - return this.coreTransferService.transfer(cashOut.siteId, cashOut.transferNo, transferType, data); + async transfer(cashOut: MemberCashOut, param: CashOutTransferParamDto): Promise { + // TODO: 实现transfer业务逻辑 + return null; } /** * transferFinish */ async transferFinish(transferNo: string): Promise { - const cashOut: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })); - if (!cashOut) throw new BadRequestException("提现记录不存在"); - if (!cashOut.status === MemberCashOutStatusEnum.WAIT_TRANSFER.status && !cashOut.status === MemberCashOutStatusEnum.TRANSFER_ING.status) throw new BadRequestException("当前提现申请未处于待转账状态"); - - cashOut.transferTime = Date.now( / 1000); - cashOut.status = MemberCashOutStatusEnum.TRANSFERED.status; - memberCashOutMapper.updateById(cashOut); - - this.give(cashOut); + // TODO: 实现transferFinish业务逻辑 + return null; } /** * refuse */ - async refuse(siteId: number, cashOut: MemberCashOut, param: MemberCashOutAuditParam): Promise { - cashOut.auditTime = Date.now( / 1000); - cashOut.status = MemberCashOutStatusEnum.REFUSE.status; - cashOut.refuseReason = param.refuseReason == null ? "": param.refuseReason; - memberCashOutMapper.updateById(cashOut); - - this.giveback(cashOut); + async refuse(siteId: number, cashOut: MemberCashOut, param: MemberCashOutAuditParamDto): Promise { + // TODO: 实现refuse业务逻辑 + return null; } /** * give */ async give(cashOut: MemberCashOut): Promise { - const member: Member = memberMapper.selectById(cashOut.memberId); - - const updateMember: Member = new Member(); - updateMember.memberId = member.memberId; - if (cashOut.accountType === AccountTypeEnum.MONEY.type) { - updateMember.moneyCashOuting = member.getMoneyCashOuting(.subtract(cashOut.applyMoney)); - } - if (cashOut.accountType === AccountTypeEnum.COMMISSION.type) { - updateMember.commissionCashOuting = member.getCommissionCashOuting(.subtract(cashOut.applyMoney)); - } - memberMapper.updateById(updateMember); + // TODO: 实现give业务逻辑 + return null; } /** * giveback */ async giveback(cashOut: MemberCashOut): Promise { - const member: Member = memberMapper.selectById(cashOut.memberId); - - // 扣除对应账户金额 - this.coreMemberAccountService.addLog(cashOut.siteId, cashOut.memberId, cashOut.accountType, cashOut.applyMoney.doubleValue(), "cash_out", "提现被拒绝,返还零钱", cashOut.id.toString()); - - const updateMember: Member = new Member(); - updateMember.memberId = member.memberId; - if (cashOut.accountType === AccountTypeEnum.MONEY.type) { - updateMember.moneyCashOuting = member.getMoneyCashOuting(.subtract(cashOut.applyMoney)); - } - if (cashOut.accountType === AccountTypeEnum.COMMISSION.type) { - updateMember.commissionCashOuting = member.getCommissionCashOuting(.subtract(cashOut.applyMoney)); - } - memberMapper.updateById(updateMember); + // TODO: 实现giveback业务逻辑 + return null; } /** * cancel */ async cancel(siteId: number, id: number): Promise { - const cashOut: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId)); - if (!cashOut) throw new BadRequestException("提现记录不存在"); - - const status: number[] = new number[]{ - MemberCashOutStatusEnum.WAIT_AUDIT.status, - MemberCashOutStatusEnum.WAIT_TRANSFER.status, - MemberCashOutStatusEnum.TRANSFER_ING.status - }; - if (!ObjectUtil.includes(status, cashOut.status)) { - throw new BadRequestException("当前提现申请不支持撤销"); - } - - if (cashOut.transferType === TransferTypeEnum.WECHATPAY.key && cashOut.status === MemberCashOutStatusEnum.TRANSFER_ING.status) { - // 微信提现撤销 - this.coreTransferService.cancel(cashOut.siteId, cashOut.transferNo); - } - - cashOut.status = MemberCashOutStatusEnum.CANCEL.status; - memberCashOutMapper.updateById(cashOut); - - giveback(cashOut); + // TODO: 实现cancel业务逻辑 + return null; } /** * checkTransferStatus */ async checkTransferStatus(siteId: number, id: number): Promise { - const cashOut: MemberCashOut = this.memberCashOutRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId)); - if (!cashOut) throw new BadRequestException("提现记录不存在"); - - this.coreTransferService.check(cashOut.siteId, cashOut.transferNo); + // TODO: 实现checkTransferStatus业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-config-service-impl.service.ts index a2244af1..457a49f7 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-config-service-impl.service.ts @@ -34,7 +34,7 @@ export class CoreMemberConfigServiceImplService { /** * setLoginConfig */ - async setLoginConfig(siteId: number, configParam: LoginConfigParam): Promise { + async setLoginConfig(siteId: number, configParam: LoginConfigParamDto): Promise { this.coreConfigService.config = siteId, "LOGIN", JsonUtils.parseObject(configParam); } @@ -49,7 +49,7 @@ export class CoreMemberConfigServiceImplService { /** * setCashOutConfig */ - async setCashOutConfig(siteId: number, configParam: CashOutConfigParam): Promise { + async setCashOutConfig(siteId: number, configParam: CashOutConfigParamDto): Promise { this.coreConfigService.config = siteId, "member_cash_out", JsonUtils.parseObject(configParam); } @@ -64,7 +64,7 @@ export class CoreMemberConfigServiceImplService { /** * setMemberConfig */ - async setMemberConfig(siteId: number, configParam: MemberConfigParam): Promise { + async setMemberConfig(siteId: number, configParam: MemberConfigParamDto): Promise { this.coreConfigService.config = siteId, "MEMBER", JsonUtils.parseObject(configParam); } @@ -72,9 +72,8 @@ export class CoreMemberConfigServiceImplService { * getGrowthRuleConfig */ async getGrowthRuleConfig(siteId: number): Promise { - const config: Record = this.coreConfigService.getConfigValue(siteId, "GROWTH_RULE"); - if (config != null) config = this.coreMemberService.getGrowthRuleContent(siteId, config, "admin"); - return config; + // TODO: 实现getGrowthRuleConfig业务逻辑 + return null; } /** @@ -88,14 +87,8 @@ export class CoreMemberConfigServiceImplService { * getPointRuleConfig */ async getPointRuleConfig(siteId: number): Promise { - const config: Record = this.coreConfigService.getConfigValue(siteId, "POINT_RULE"); - if (config != null) { - const grant: Record = config.get("consume") instanceof Record ? config.getRecord("grant") : new Record(); - if (grant != null && grant.length > 0) config.set("grant", this.coreMemberService.getPointGrantRuleContent(siteId, grant, "admin")); - const consume: Record = config.get("consume") instanceof Record ? config.getRecord("consume") : new Record(); - if (consume != null && consume.length > 0) config.set("consume", this.coreMemberService.getPointConsumeRuleContent(siteId, consume, "admin")); - } - return config; + // TODO: 实现getPointRuleConfig业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-level-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-level-service-impl.service.ts index f130c042..33a05fe0 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-level-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-level-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; @Injectable() export class CoreMemberLevelServiceImplService { @@ -13,41 +13,7 @@ export class CoreMemberLevelServiceImplService { * checkLevelUpgrade */ async checkLevelUpgrade(siteId: number, memberId: number): Promise { - try { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("member_id", memberId).eq("site_id", siteId)); - if (member == null) return; - - // 查询达到的等级 - const upgradeQuery: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */; - upgradeQuery.eq("site_id", siteId); - upgradeQuery.le("growth", member.growth); - if (member.memberLevel > 0) { - const memberLevel: MemberLevel = this.memberLevelRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("level_id", member.memberLevel)); - if (memberLevel != null) { - upgradeQuery.gt("growth", memberLevel.growth); - } - } - upgradeQuery.orderByAsc("growth"); - const upgrade: MemberLevel[] = this.memberLevelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - - if (CommonUtils.isNotEmpty(upgrade)) { - const vars: Record = new HashRecord(); - vars.put("from_type", "level_upgrade"); - vars.put("memo", "会员升级奖励"); - - for (const level of upgrade) { - if (CommonUtils.isNotEmpty(level.levelGifts) && JSONUtil.isJson(level.levelGifts)) { - this.coreMemberService.memberGiftGrant(siteId, memberId, JsonUtils.parseObject(level.levelGifts), vars); - } - } - - const end: MemberLevel = upgrade.get(upgrade.length - 1); - member.memberLevel = end.levelId; - memberMapper.updateById(member); - } - } catch (e) { - log.info("会员检测升级异常"); - console.error(e); - } + // TODO: 实现checkLevelUpgrade业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-service-impl.service.ts index 4b2f2f2f..076adaa5 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/member/impl/core-member-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, StringUtils, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { MemberConfigVoDto } from '../../../../dtos/admin/member/vo/member-config-vo.dto'; import { MemberLabelInfoVoDto } from '../../../../dtos/admin/member/vo/member-label-info-vo.dto'; import { MemberLevelInfoVoDto } from '../../../../dtos/api/member/vo/member-level-info-vo.dto'; @@ -19,329 +19,103 @@ export class CoreMemberServiceImplService { * getMember */ async getMember(siteId: number, memberId: number): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", siteId); - queryWrapper.eq("member_id", memberId); - return this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现getMember业务逻辑 + return null; } /** * createMemberNo */ async createMemberNo(siteId: number): Promise { - const site: Site = siteMapper.selectById(siteId); - const memberConfig: MemberConfigVo = this.coreMemberConfigService.getMemberConfig(siteId); - - const no: string = (site.memberNo + 1) + ""; - const memberNo: string = memberConfig.prefix + (memberConfig.prefix.length() > memberConfig.length ? no : StringUtils.leftPad(no, memberConfig.length - memberConfig.prefix.length(), "0")); - - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("member_no", memberNo).last("limit 1")); - - if (member == null) { - return memberNo; - } - - site.memberNo = number.parseInt(no); - siteMapper.updateById(site); - - return this.createMemberNo(siteId); + // TODO: 实现createMemberNo业务逻辑 + return null; } /** * getMemberCount */ - async getMemberCount(memberStatSearchParam: MemberStatSearchParam): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - if (CommonUtils.isNotEmpty(memberStatSearchParam.siteId)) { - queryWrapper.eq("site_id", memberStatSearchParam.siteId); - } - if (ObjectUtil.isNotNull(memberStatSearchParam.createTime)) { - const createTime: string[] = memberStatSearchParam.createTime; - const startTime: number = (createTime[0] == "") ? 0 : DateUtils.StringToTimestamp(createTime[0]); - const endTime: number = (createTime[1] == "") ? 0 : DateUtils.StringToTimestamp(createTime[1]); - if (startTime > 0 && endTime > 0) { - queryWrapper.between("create_time", startTime, endTime); - } else if (startTime > 0 && endTime == 0) { - queryWrapper.ge("create_time", startTime); - } else if (startTime == 0 && endTime > 0) { - queryWrapper.le("create_time", endTime); - } - } - if (ObjectUtil.isNotNull(memberStatSearchParam.sex)) { - queryWrapper.eq("sex", memberStatSearchParam.sex); - } - if (ObjectUtil.isNotNull(memberStatSearchParam.lastVisitTime)) { - const lastVisitTime: string[] = memberStatSearchParam.lastVisitTime; - const startLastVisitTime: number = (lastVisitTime[0] == "") ? 0 : DateUtils.StringToTimestamp(lastVisitTime[0]); - const endLastVisitTime: number = (lastVisitTime[1] == "") ? 0 : DateUtils.StringToTimestamp(lastVisitTime[1]); - if (startLastVisitTime > 0 && endLastVisitTime > 0) { - queryWrapper.between("last_visit_time", startLastVisitTime, endLastVisitTime); - } else if (startLastVisitTime > 0 && endLastVisitTime == 0) { - queryWrapper.ge("last_visit_time", startLastVisitTime); - } else if (startLastVisitTime == 0 && endLastVisitTime > 0) { - queryWrapper.le("last_visit_time", endLastVisitTime); - } - } - const memberCount: number = this.memberRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }); - return memberCount.intValue(); + async getMemberCount(memberStatSearchParam: MemberStatSearchParamDto): Promise { + // TODO: 实现getMemberCount业务逻辑 + return null; } /** * getGiftContent */ async getGiftContent(siteId: number, gifts: JSONObject, scene: string): Promise { - if (gifts == null) gifts = new Record(); - - const giftEnum: Record = GiftEnum.type; - - for (const key of gifts.keySet()) { - try { - const config: Record = gifts.getRecord(key); - const driver: string = giftEnum.getByPath(key + ".content." + scene + ".driver"); - if (config.getInt("is_use") != null && config.getInt("is_use") > 0 && driver != null && (driver && driver.length > 0)) { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("content", number.class, Record.class, String.class); - const params: Object[] = {siteId, config, scene}; - const content: Object = method.invoke(obj, params); - gifts.putByPath(key + ".content", content); - } - } catch (e) { - console.error(e); - } - } - - return gifts; + // TODO: 实现getGiftContent业务逻辑 + return null; } /** * getBenefitsContent */ async getBenefitsContent(siteId: number, benefits: JSONObject, scene: string): Promise { - if (benefits == null) benefits = new Record(); - const benefitsEnum: Record = BenefitsEnum.type; - - for (const key of benefits.keySet()) { - try { - const config: Record = benefits.getRecord(key); - const driver: string = benefitsEnum.getByPath(key + ".content." + scene + ".driver"); - if (config.getInt("is_use") != null && config.getInt("is_use") > 0 && driver != null && (driver && driver.length > 0)) { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("content", number.class, Record.class, String.class); - const params: Object[] = {siteId, config, scene}; - const content: Object = method.invoke(obj, params); - benefits.putByPath(key + ".content", content); - } - } catch (e) { - console.error(e); - } - } - - return benefits; + // TODO: 实现getBenefitsContent业务逻辑 + return null; } /** * getGrowthRuleContent */ async getGrowthRuleContent(siteId: number, rules: JSONObject, scene: string): Promise { - const growthRuleEnum: Record = GrowthRuleEnum.type; - - for (const key of rules.keySet()) { - try { - const config: Record = rules.getRecord(key); - const driver: string = growthRuleEnum.getByPath(key + ".content." + scene + ".driver"); - if (config.getInt("is_use") != null && config.getInt("is_use") > 0 && driver != null && (driver && driver.length > 0)) { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("content", number.class, Record.class, String.class); - const params: Object[] = {siteId, config, scene}; - const content: Object = method.invoke(obj, params); - rules.putByPath(key + ".content", content); - } - } catch (e) { - console.error(e); - } - } - - return rules; + // TODO: 实现getGrowthRuleContent业务逻辑 + return null; } /** * getPointGrantRuleContent */ async getPointGrantRuleContent(siteId: number, rules: JSONObject, scene: string): Promise { - const pointRuleEnum: Record = PointRuleEnum.type.getRecord("grant"); - - for (const key of rules.keySet()) { - try { - const config: Record = rules.getRecord(key); - const driver: string = pointRuleEnum.getByPath(key + ".content." + scene + ".driver"); - if (config.getInt("is_use") != null && config.getInt("is_use") > 0 && driver != null && (driver && driver.length > 0)) { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("content", number.class, Record.class, String.class); - const params: Object[] = {siteId, config, scene}; - const content: Object = method.invoke(obj, params); - rules.putByPath(key + ".content", content); - } - } catch (e) { - console.error(e); - } - } - - return rules; + // TODO: 实现getPointGrantRuleContent业务逻辑 + return null; } /** * getPointConsumeRuleContent */ async getPointConsumeRuleContent(siteId: number, rules: JSONObject, scene: string): Promise { - const pointRuleEnum: Record = PointRuleEnum.type.getRecord("consume"); - - for (const key of rules.keySet()) { - try { - const config: Record = rules.getRecord(key); - const driver: string = pointRuleEnum.getByPath(key + ".content." + scene + ".driver"); - if (config.getInt("is_use") != null && config.getInt("is_use") > 0 && driver != null && (driver && driver.length > 0)) { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("content", number.class, Record.class, String.class); - const params: Object[] = {siteId, config, scene}; - const content: Object = method.invoke(obj, params); - rules.putByPath(key + ".content", content); - } - } catch (e) { - console.error(e); - } - } - - return rules; + // TODO: 实现getPointConsumeRuleContent业务逻辑 + return null; } /** * sendGrowth */ async sendGrowth(siteId: number, memberId: number, key: string, param: Map): Promise { - const ruleConfig: Record = this.coreMemberConfigService.getGrowthRuleConfig(siteId); - if (ruleConfig == null) return; - - const config: Record = ruleConfig.getRecord(key); - if (config == null || config.getInt("is_use", 0).equals(0)) return; - - const rule: Record = GrowthRuleEnum.type.getRecord(key); - if (rule == null) return; - - const driver: string = ObjectUtil.defaultIfNull(rule.getByPath("calculate.driver", String.class), ""); - if ((!driver || driver.length === 0)) return; - - try { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("calculate", number.class, String.class, Record.class, Map.class); - const params: Object[] = {siteId, key, config, data}; - const growth: Object = method.invoke(obj, params); - - if (growth instanceof number && growth > 0) { - const accountData: number = number.parseDouble(growth.toString()); - this.coreMemberAccountService.addLog(siteId, memberId, AccountTypeEnum.GROWTH.type, accountData, String(ObjectUtil.defaultIfNull(data.get("from_type"), "")), String(ObjectUtil.defaultIfNull(data.get("memo"), "")), String(ObjectUtil.defaultIfNull(data.get("related_id"), ""))); - } - } catch (e) { - console.log("成长值发放异常"); - console.error(e); - } + // TODO: 实现sendGrowth业务逻辑 + return null; } /** * sendPoint */ async sendPoint(siteId: number, memberId: number, key: string, param: Map): Promise { - const ruleConfig: Record = this.coreMemberConfigService.getPointRuleConfig(siteId).getRecord("grant"); - if (ruleConfig == null) return; - - const config: Record = ruleConfig.getRecord(key); - if (config == null || config.getInt("is_use", 0).equals(0)) return; - - const rule: Record = PointRuleEnum.type.getRecord("grant"); - if (rule == null) return; - - const driver: string = ObjectUtil.defaultIfNull(rule.getByPath(key + ".calculate.driver", String.class), ""); - if ((!driver || driver.length === 0)) return; - - try { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("calculate", number.class, String.class, Record.class, Map.class); - const params: Object[] = {siteId, key, config, data}; - const growth: Object = method.invoke(obj, params); - - if (growth instanceof number && growth > 0) { - const accountData: number = number.parseDouble(growth.toString()); - this.coreMemberAccountService.addLog(siteId, memberId, AccountTypeEnum.POINT.type, accountData, String(ObjectUtil.defaultIfNull(data.get("from_type"), "")), String(ObjectUtil.defaultIfNull(data.get("memo"), "")), String(ObjectUtil.defaultIfNull(data.get("related_id"), ""))); - } - } catch (e) { - console.log("积分发放异常"); - console.error(e); - } + // TODO: 实现sendPoint业务逻辑 + return null; } /** * memberGiftGrant */ async memberGiftGrant(siteId: number, memberId: number, gifts: JSONObject, param: Map): Promise { - if (gifts == null) return; - - const giftEnum: Record = GiftEnum.type; - - try { - for (const key of gifts.keySet()) { - const config: Record = gifts.getRecord(key); - const driver: string = giftEnum.getByPath(key + ".grant.driver"); - if (config.getInt("is_use") != null && config.getInt("is_use") > 0 && driver != null && (driver && driver.length > 0)) { - Class clazz = ClassLoaderUtil.loadClass(driver); - const obj: Object = clazz.declaredConstructor.newInstance(); - const method: Method = clazz.getMethod("grant", number.class, number.class, Record.class, Map.class); - const params: Object[] = {siteId, memberId, config, vars}; - method.invoke(obj, params); - } - } - } catch (e) { - console.error(e); - console.log("会员礼包发放失败"); - } + // TODO: 实现memberGiftGrant业务逻辑 + return null; } /** * getInfoByMemberId */ async getInfoByMemberId(siteId: number, memberId: number): Promise { - const member: Member = this.memberRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("member_id", memberId)); - return member; + // TODO: 实现getInfoByMemberId业务逻辑 + return null; } /** * getMemberInfo */ async getMemberInfo(memberId: number): Promise { - const member: Member = memberMapper.selectById(memberId); - const result: MemberInfoDto = new MemberInfoDto(); - Object.assign(result, member); - if(StringUtils.isNotEmpty(member.headimg)){ - result.headimgSmall = CommonUtils.thumbImageSmall(member.siteId, member.headimg); - result.headimgMiddle = CommonUtils.thumbImageMiddle(member.siteId, member.headimg); - result.headimgBig = CommonUtils.thumbImageBig(member.siteId, member.headimg); - } - const label: MemberLabelInfoVo = new MemberLabelInfoVo(); - const level: MemberLevelInfoVo = new MemberLevelInfoVo(); - try { - label = this.memberLabelService.info(memberId); - level = this.memberLevelService.info(memberId); - } catch (e) { - log.error("获取会员标签或会员等级失败:{}", e.message); - } finally { - result.labelInfo = label; - result.levelInfo = level; - } - return result; + // TODO: 实现getMemberInfo业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-service-impl.service.ts index 37e91311..59a91d7e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-service-impl.service.ts @@ -1,7 +1,7 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { NoticeEnumListVoDto } from '../../../../dtos/notice/vo/notice-enum-list-vo.dto'; import { AddonNoticeListVoDto } from '../../../../dtos/core/notice/vo/addon-notice-list-vo.dto'; import { NoticeInfoVoDto } from '../../../../dtos/core/notice/vo/notice-info-vo.dto'; @@ -25,154 +25,55 @@ export class CoreNoticeServiceImplService { * find */ async find(siteId: number, key: string): Promise { - const queryWrapper: QueryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", siteId); - queryWrapper.eq("`key`", key); - const sysNotice: SysNotice = this.sysNoticeRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - return sysNotice; + // TODO: 实现find业务逻辑 + return null; } /** * getAddonList */ async getAddonList(siteId: number): Promise { - const list: SysNotice[] = this.sysNoticeRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ })); - const map: Record = new const notice: Record<>(); - if (ObjectUtil.isNotNull(list)) { - for (const item of list) { - map.put(item.key, item); - } - } - Record = {}; - for (Map.Entry noticeMap : NoticeEnum.notice.entrySet()) { - - const vo: NoticeInfoVo = new NoticeInfoVo(); - BeanUtil.copyProperties(noticeMap.value, vo); - if (map.containsKey(noticeMap.key)) { - BeanUtil.copyProperties(map.get(noticeMap.key), vo); - } - - //针对短信,微信公众号,小程序配置 - if (CommonUtils.isNotEmpty(noticeMap.getValue().support_type_map)) { - for (Map.Entry> supportTypeMap : noticeMap.getValue().support_type_map.entrySet()) { - if (supportTypeMap.key === "sms") { - vo.sms = supportTypeMap.value; - } - if (supportTypeMap.key === "wechat") { - vo.wechat = supportTypeMap.value; - } - if (supportTypeMap.key === "weapp") { - vo.weapp = supportTypeMap.value; - } - - } - } - notice.put(noticeMap.key, vo); - } - - const addonList: Addon[] = this.coreSiteService.getSiteAddons(siteId); - const adminAddon: Addon = new Addon(); - adminAddon.key = "system"; - adminAddon.title = "系统"; - addonList.push(0, adminAddon); - const noticeAddonList: AddonNoticeListVo[] = []; - for (const addon of addonList) { - const noticeListVo: AddonNoticeListVo = new AddonNoticeListVo(); - noticeListVo.key = addon.key; - noticeListVo.title = addon.title; - noticeListVo.notice = []; - for (Map.Entry noticeMap : notice.entrySet()) { - if (noticeListVo.key === noticeMap.getValue(.addon)) { - noticeListVo.getNotice().add(noticeMap.value); - } - } - noticeAddonList.push(noticeListVo); - } - return noticeAddonList; + // TODO: 实现getAddonList业务逻辑 + return null; } /** * getInfo */ async getInfo(siteId: number, key: string): Promise { - if (!NoticeEnum.notice.containsKey(key)) throw new BadRequestException("消息类型不存在"); - - const vo: NoticeInfoVo = new NoticeInfoVo(); - const notice: NoticeEnumListVo = NoticeEnum.notice.get(key); - BeanUtil.copyProperties(notice, vo); - - for (const type of notice.support_type_map.keySet()) { - ReflectCallField.forInstance = vo, type, notice.support_type_map.get(type); - } - - const model: SysNotice = this.sysNoticeRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("`key`", key)); - if (model != null) { - BeanUtil.copyProperties(model, vo); - } - - return vo; + // TODO: 实现getInfo业务逻辑 + return null; } /** * edit */ async edit(siteId: number, key: string, data: JSONObject): Promise { - const queryWrapper: QueryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */; - queryWrapper.eq("`key`", key); - queryWrapper.eq("site_id", siteId); - - const model: SysNotice = this.sysNoticeRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - if (CommonUtils.isNotEmpty(model)) { - const sysNotice: SysNotice = Object.assign(new SysNotice(), data) /* TODO: 检查SysNotice构造函数 */; - this.sysNoticeRepository.save(sysNotice, queryWrapper); - } else { - const sysNotice: SysNotice = Object.assign(new SysNotice(), data) /* TODO: 检查SysNotice构造函数 */; - sysNotice.siteId = siteId; - const noticeEnum: NoticeEnumListVo = NoticeEnum.notice.get(key); - BeanUtil.copyProperties(noticeEnum, sysNotice); - this.sysNoticeRepository.save(sysNotice); - } + // TODO: 实现edit业务逻辑 + return null; } /** * send */ async send(siteId: number, key: string, param: Map): Promise { - const notice: NoticeInfoVo = getInfo(siteId, key); - if (notice == null) return; - - if (notice.async) { - this.coreNoticeService.asyncSend(siteId, notice, data); - } else { - syncSend(siteId, notice, data); - } + // TODO: 实现send业务逻辑 + return null; } /** * syncSend */ - async syncSend(siteId: number, notice: NoticeInfoVo, param: Map): Promise { - SendNoticeEventDefiner.const event: SendNoticeEvent = new SendNoticeEventDefiner.SendNoticeEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.name = "SendNoticeEvent"; - event.key = notice.key; - event.noticeData = NoticeLoader.getDriver(notice.key.noticeData(data)); - event.notice = notice; - EventAndSubscribeOfPublisher.publishAndCallback(event); + async syncSend(siteId: number, notice: NoticeInfoVoDto, param: Map): Promise { + // TODO: 实现syncSend业务逻辑 + return null; } /** * asyncSend */ - async asyncSend(siteId: number, notice: NoticeInfoVo, param: Map): Promise { - SendNoticeEventDefiner.const event: SendNoticeEvent = new SendNoticeEventDefiner.SendNoticeEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.name = "SendNoticeEvent"; - event.key = notice.key; - event.noticeData = NoticeLoader.getDriver(notice.key.noticeData(data)); - event.notice = notice; - EventAndSubscribeOfPublisher.publishAndCallback(event); + async asyncSend(siteId: number, notice: NoticeInfoVoDto, param: Map): Promise { + // TODO: 实现asyncSend业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-sms-log-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-sms-log-service-impl.service.ts index 36420c11..4ca8e243 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-sms-log-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/notice/impl/core-notice-sms-log-service-impl.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; -import { SysNoticeSmsLogDto } from '../../../../entities/sys-notice-sms-log.entity'; +import { SysNoticeSmsLog } from '../../../../entities/sys-notice-sms-log.entity'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysNoticeSmsLogSearchParamDto } from '../../../../dtos/core/notice/param/sys-notice-sms-log-search-param.dto'; @@ -15,23 +15,17 @@ export class CoreNoticeSmsLogServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: SysNoticeSmsLogSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - - [SysNoticeSmsLog[], number] iPage = this.sysNoticeSmsLogRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - return PageResult.build(page, limit, iPageTotal).data = iPageRecords; + async list(pageParam: PageParamDto, searchParam: SysNoticeSmsLogSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: SysNoticeSmsLog = this.sysNoticeSmsLogRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })); - return model; + // TODO: 实现info业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-channel-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-channel-service-impl.service.ts index 8265a182..032c92c1 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-channel-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-channel-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PayChannelSearchParamDto } from '../../../../dtos/core/pay/param/pay-channel-search-param.dto'; import { PayTypeVoDto } from '../../../../dtos/core/pay/vo/pay-type-vo.dto'; import { WeappConfigVoDto } from '../../../../dtos/core/weapp/vo/weapp-config-vo.dto'; @@ -25,60 +25,23 @@ export class CorePayChannelServiceImplService { * find */ async find(siteId: number, type: string, channel: string): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.select("config"); - queryWrapper.eq("site_id", siteId); - queryWrapper.eq("type", type); - queryWrapper.eq("channel", channel); - queryWrapper.eq("status", 1); - return this.payChannelRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现find业务逻辑 + return null; } /** * getAllowPayTypeByChannel */ async getAllowPayTypeByChannel(siteId: number, channel: string, tradeType: string): Promise { - const list: PayTypeVo[] = []; - - const payChannelList: PayChannel[] = this.payChannelRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId) - .eq("status", 1) - .eq("channel", channel)); - - for (const item of payChannelList) { - if (item.config.isEmpty()) continue; - const type: PayTypeVo = this.corePayService.driver(siteId, channel, item.type).filterPayTypeByTradeType(tradeType); - if (type != null) { - type.config = item.config; - list.push(type); - } - } - - return list; + // TODO: 实现getAllowPayTypeByChannel业务逻辑 + return null; } /** * getConfigByChannelAndType */ async getConfigByChannelAndType(siteId: number, channel: string, type: string): Promise { - const payChannel: PayChannel = this.payChannelRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId) - .eq("channel", channel) - .eq("status", 1) - .eq("type", type)); - - if (payChannel == null || payChannel.config.isEmpty()) return null; - - const config: Record = JsonUtils.parseObject(payChannel.config); - - if (type === "wechatpay") { - const wechatConfig: WechatConfigVo = this.coreWechatConfigService.getWechatConfig(siteId); - const weappConfig: WeappConfigVo = this.coreWeappConfigService.getWeappConfig(siteId); - config.set("mp_app_id", ObjectUtil.defaultIfNull(wechatConfig.appId, "")); - config.set("mini_app_id", ObjectUtil.defaultIfNull(weappConfig.appId, "")); - config.set("app_id", ""); - } - - return config; + // TODO: 实现getConfigByChannelAndType业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-event-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-event-service-impl.service.ts index 31cb5304..e4fcfd61 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-event-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-event-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -17,103 +17,40 @@ export class CorePayEventServiceImplService { /** * list */ - async list(pageParam: PageParam, searchParam: PayRefundSearchParam): Promise { - const page: number = pageParam.page; - const limit: number = pageParam.limit; - - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.orderByDesc("id"); - - [PayRefund[], number] iPage = this.payRefundRepository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ }), queryWrapper); - const list: PayRefundListVo[] = []; - for (const item of iPageRecords) { - const vo: PayRefundListVo = new PayRefundListVo(); - Object.assign(vo, item); - list.push(vo); - } - return PageResult.build(page, limit, iPageTotal).data = list; + async list(pageParam: PageParamDto, searchParam: PayRefundSearchParamDto): Promise { + // TODO: 实现list业务逻辑 + return []; } /** * info */ async info(id: number): Promise { - const model: PayRefund = this.payRefundRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在"); - - const vo: PayRefundInfoVo = new PayRefundInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现info业务逻辑 + return null; } /** * add */ - async add(addParam: PayRefundParam): Promise { - const model: PayRefund = new PayRefund(); - model.siteId = addParam.siteId; - model.refundNo = addParam.refundNo; - model.outTradeNo = addParam.outTradeNo; - model.type = addParam.type; - model.channel = addParam.channel; - model.money = addParam.money; - model.reason = addParam.reason; - model.status = addParam.status; - model.createTime = Date.now( / 1000); - model.refundTime = addParam.refundTime; - model.closeTime = addParam.closeTime; - model.failReason = addParam.failReason; - model.voucher = addParam.voucher; - model.tradeType = addParam.tradeType; - model.tradeId = addParam.tradeId; - model.refundType = addParam.refundType; - model.mainType = addParam.mainType; - model.mainId = addParam.mainId; - model.payRefundNo = addParam.payRefundNo; - this.payRefundRepository.save(model); + async add(addParam: PayRefundParamDto): Promise { + // TODO: 实现add业务逻辑 + return null; } /** * edit */ - async edit(id: number, editParam: PayRefundParam): Promise { - const model: PayRefund = this.payRefundRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - model.id = id; - model.siteId = editParam.siteId; - model.refundNo = editParam.refundNo; - model.outTradeNo = editParam.outTradeNo; - model.type = editParam.type; - model.channel = editParam.channel; - model.money = editParam.money; - model.reason = editParam.reason; - model.status = editParam.status; - model.refundTime = editParam.refundTime; - model.closeTime = editParam.closeTime; - model.failReason = editParam.failReason; - model.voucher = editParam.voucher; - model.tradeType = editParam.tradeType; - model.tradeId = editParam.tradeId; - model.refundType = editParam.refundType; - model.mainType = editParam.mainType; - model.mainId = editParam.mainId; - model.payRefundNo = editParam.payRefundNo; - payRefundMapper.updateById(model); + async edit(id: number, editParam: PayRefundParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * del */ async del(id: number): Promise { - const model: PayRefund = this.payRefundRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .last("limit 1")); - - if (!model) throw new BadRequestException("数据不存在!"); - - this.payRefundRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现del业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-service-impl.service.ts index 141e5502..8b6b0a31 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-pay-service-impl.service.ts @@ -1,16 +1,15 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PayAsyncNotifyParamDto } from '../../../../dtos/common/loader/pay/param/pay-async-notify-param.dto'; import { PayNotifyParamDto } from '../../../../dtos/common/loader/pay/param/pay-notify-param.dto'; import { PayParamDto } from '../../../../dtos/admin/pay/param/pay-param.dto'; import { GetInfoByTradeVoDto } from '../../../../dtos/core/pay/vo/get-info-by-trade-vo.dto'; import { PayTypeVoDto } from '../../../../dtos/core/pay/vo/pay-type-vo.dto'; import { SysPrinterPrintTicketParamDto } from '../../../../dtos/core/sys/param/sys-printer-print-ticket-param.dto'; -import { PayDto } from '../../../../entities/pay.entity'; +import { Pay } from '../../../../entities/pay.entity'; import { ChannelEnumDto } from '../../../../enums/channel.enum'; -import { BigDecimalDto } from '../dtos/big-decimal.dto'; @Injectable() export class CorePayServiceImplService { @@ -21,83 +20,40 @@ export class CorePayServiceImplService { /** * pay */ - async pay(param: PayParam): Promise { - const pay: Pay = this.checkOrCreate(param.siteId, param.tradeType, param.tradeId); - if (pay.body.length() > 15) { - pay.body = pay.body.substring(0, 15 + "..."); - } - param.pay = pay; - param.notifyUrl = buildNotifyUrl(param.siteId, param.channel, param.type, "pay"); - - const driver: BasePay = this.driver(param.siteId, param.channel, param.type); - - const json: Record = {}; - json.put("openid", param.openid); - pay.json = JSONUtil.toJsonStr(json); - this.payMapper.updateById(pay); - - return driver.pay(param); + async pay(param: PayParamDto): Promise { + // TODO: 实现pay业务逻辑 + return null; } /** * asyncNotify */ - async asyncNotify(param: PayAsyncNotifyParam, request: HttpServletRequest, response: HttpServletResponse): Promise { + async asyncNotify(param: PayAsyncNotifyParamDto, request: HttpServletRequest, response: HttpServletResponse): Promise { return this.driver(param.siteId, param.channel, param.type).asyncNotify(param, request, response); } /** * payNotify */ - async payNotify(param: PayNotifyParam): Promise { - const pay: Pay = this.findPayInfoByOutTradeNo(param.siteId, param.outTradeNo); - if (pay == null) throw new BadRequestException("未获取到支付单据"); - if (pay.status === PayStatusEnum.STATUS_FINISH.code) throw new BadRequestException("单据已支付"); - if (pay.status === PayStatusEnum.STATUS_CANCLE.code) throw new BadRequestException("当前支付已取消"); - - // 支付成功 - if (param.getPayStatus().status === OnliepayStatusEnum.SUCCESS.status) { - this.paySuccess(pay, param); - } - // 支付关闭 - if (param.getPayStatus().status === OnliepayStatusEnum.CLOSED.status) { - this.payClose(param.siteId, pay); - } + async payNotify(param: PayNotifyParamDto): Promise { + // TODO: 实现payNotify业务逻辑 + return null; } /** * buildNotifyUrl */ async buildNotifyUrl(siteId: number, channel: string, type: string, action: string): Promise { - const param: string[] = {siteId.toString(), channel, type, action}; - const baseUrl: string = ""; - if (RequestUtils.handler() != null) { - baseUrl = RequestUtils.getDomain(true); - cached.put("payBaseurl", baseUrl); - } else if (cached.get("payBaseurl") != null) { - baseUrl = cached.get("payBaseurl"); - } else { - throw new BadRequestException("build notify url error"); - } - return baseUrl + "/api/pay/notify/" + String.join("/", param); + // TODO: 实现buildNotifyUrl业务逻辑 + return null; } /** * checkOrCreate */ async checkOrCreate(siteId: number, tradeType: string, tradeId: number): Promise { - const pay: Pay = this.findPayInfoByTrade(siteId, tradeType, tradeId); - if (pay == null) { - return this.createByTrade(siteId, tradeType, tradeId); - } - if (pay.status === PayStatusEnum.STATUS_FINISH.code) throw new BadRequestException("当前支付已完成"); - if (pay.status === PayStatusEnum.STATUS_ING.code || pay.status === PayStatusEnum.STATUS_CANCLE.code) { - if (pay.status === PayStatusEnum.STATUS_ING.code) { - this.close(siteId, pay); - } - return this.createByTrade(siteId, tradeType, tradeId); - } - return pay; + // TODO: 实现checkOrCreate业务逻辑 + return null; } /** @@ -112,157 +68,70 @@ export class CorePayServiceImplService { * getInfoByTrade */ async getInfoByTrade(siteId: number, tradeType: string, tradeId: number, channel: string, scene: string): Promise { - const pay: Pay = findPayInfoByTrade(siteId, tradeType, tradeId); - - if (pay == null) { - pay = createByTrade(siteId, tradeType, tradeId); - } - - const vo: GetInfoByTradeVo = new GetInfoByTradeVo(); - BeanUtil.copyProperties(pay, vo); - - const payTypeList: PayTypeVo[] = this.corePayChannelService.getAllowPayTypeByChannel(siteId, channel, tradeType); - vo.payTypeList = payTypeList; - - if (CommonUtils.isNotEmpty(payTypeList) && ObjectUtil === scene, "friendspay") { - payTypeList - .filter(pt => pt.key === "friendspay") - .findFirst() - .ifPresent(payTypeVo => vo.config = JsonUtils.parseObject(payTypeVo.config)); - vo.payTypeList = payTypeList.filter(pt => !pt.key === "friendspay"); - } - - return vo; + // TODO: 实现getInfoByTrade业务逻辑 + return null; } /** * findPayInfoByTrade */ async findPayInfoByTrade(siteId: number, tradeType: string, tradeId: number): Promise { - return this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("trade_type", tradeType) - .eq("trade_id", tradeId) - .ne("status", PayStatusEnum.STATUS_CANCLE.code) - ); + // TODO: 实现findPayInfoByTrade业务逻辑 + return null; } /** * findPayInfoByOutTradeNo */ async findPayInfoByOutTradeNo(siteId: number, outTradeNo: string): Promise { - return this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("out_trade_no", outTradeNo) - ); + // TODO: 实现findPayInfoByOutTradeNo业务逻辑 + return null; } /** * createByTrade */ async createByTrade(siteId: number, tradeType: string, tradeId: number): Promise { - PayCreateEventDefiner.const event: PayCreateEvent = new PayCreateEventDefiner.PayCreateEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.name = "PayCreateEvent"; - event.tradeType = tradeType; - event.tradeId = tradeId; - const eventData: PayCreateEventDefiner.PayCreateEventResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event); - - if (eventData.length == 0) throw new BadRequestException("无效的交易类型"); - PayCreateEventDefiner.const data: PayCreateEventResult = eventData.get(0); - - const model: Pay = new Pay(); - BeanUtil.copyProperties(data, model); - model.siteId = siteId; - model.tradeType = tradeType; - model.tradeId = tradeId; - model.outTradeNo = createOutTradeNo(); - model.createTime = Date.now( / 1000); - model.channel = RequestUtils.channel(); - this.payRepository.save(model); - - return this.findPayInfoByOutTradeNo(siteId, model.outTradeNo); + // TODO: 实现createByTrade业务逻辑 + return null; } /** * paySuccess */ - async paySuccess(pay: Pay, param: PayNotifyParam): Promise { - BeanUtil.copyProperties(param, pay); - pay.status = PayStatusEnum.STATUS_FINISH.code; - pay.payTime = Date.now( / 1000); - - payMapper.updateById(pay); - - const event: PaySuccessEvent = new PaySuccessEvent(); - event.siteId = param.siteId; - event.addAppSign("core"); - event.name = "PaySuccessEvent"; - event.tradeType = pay.tradeType; - event.tradeId = pay.tradeId; - event.pay = pay; - EventAndSubscribeOfPublisher.publishAll(event); - - const printParam: SysPrinterPrintTicketParam = new SysPrinterPrintTicketParam(); - printParam.siteId = pay.siteId; - printParam.type = "shopGoodsOrder"; - printParam.trigger = "pay_after"; - SysPrinterPrintTicketParam.const business: Business = new SysPrinterPrintTicketParam.Business(); - business.orderId = pay.tradeId; - printParam.business = business; - this.corePrinterService.printTicket(printParam); + async paySuccess(pay: Pay, param: PayNotifyParamDto): Promise { + // TODO: 实现paySuccess业务逻辑 + return null; } /** * payClose */ async payClose(siteId: number, pay: Pay): Promise { - pay.status = PayStatusEnum.STATUS_CANCLE.code; - pay.cancelTime = Date.now( / 1000); - payMapper.updateById(pay); - - const event: PayCloseEvent = new PayCloseEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.name = "PayCloseEvent"; - event.tradeType = pay.tradeType; - event.tradeId = pay.tradeId; - EventAndSubscribeOfPublisher.publishAll(event); + // TODO: 实现payClose业务逻辑 + return null; } /** * close */ async close(siteId: number, outTradeNo: string): Promise { - const pay: Pay = this.findPayInfoByOutTradeNo(siteId, outTradeNo); - if (pay == null) throw new BadRequestException("无效的支付交易号"); - if (pay.status === PayStatusEnum.STATUS_CANCLE.code) return; - if (!pay.status === PayStatusEnum.STATUS_ING.code && !pay.status === PayStatusEnum.STATUS_WAIT.code) { - throw new BadRequestException("只有待支付时可以关闭"); - } - - if (pay.status === PayStatusEnum.STATUS_ING.code && !pay.type.isEmpty()) { - this.driver(siteId, pay.channel, pay.type).close(pay); - } - - this.payClose(siteId, pay); + // TODO: 实现close业务逻辑 + return null; } /** * closeByTrade */ async closeByTrade(siteId: number, tradeType: string, tradeId: number): Promise { - const pay: Pay = findPayInfoByTrade(siteId, tradeType, tradeId); - if (pay == null) return; - - if (pay.status === PayStatusEnum.STATUS_ING.code || pay.status === PayStatusEnum.STATUS_WAIT.code) { - this.close(siteId, pay); - } + // TODO: 实现closeByTrade业务逻辑 + return null; } /** * getPayTypeByTrade */ - async getPayTypeByTrade(siteId: number, tradeType: string, channel: ChannelEnum): Promise { + async getPayTypeByTrade(siteId: number, tradeType: string, channel: ChannelEnumDto): Promise { return this.corePayChannelService.getAllowPayTypeByChannel(siteId, channel.code, tradeType); } @@ -270,23 +139,7 @@ export class CorePayServiceImplService { * create */ async create(siteId: number, mainType: string, mainId: number, money: BigDecimal, tradeType: string, tradeId: number, body: string): Promise { - // 生成订单号 - const outTradeNo: string = com.niu.core.common.utils.CommonUtils.createNo(); - // 创建支付对象 - const pay: Pay = new Pay(); - pay.siteId = siteId; - pay.money = money; - pay.tradeType = tradeType; - pay.tradeId = tradeId; - pay.body = body; - pay.outTradeNo = outTradeNo; - pay.mainId = mainId; - pay.fromMainId = mainId; - pay.mainType = mainType; - - // 保存到数据库 - this.payRepository.save(pay); - - return pay; + // TODO: 实现create业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-refund-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-refund-service-impl.service.ts index 05ed1088..d0a0c12d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-refund-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-refund-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -12,7 +12,7 @@ import { PayTransferSearchParamDto } from '../../../../dtos/core/pay/param/pay-t import { PayTransferInfoVoDto } from '../../../../dtos/core/pay/vo/pay-transfer-info-vo.dto'; import { PayTransferListVoDto } from '../../../../dtos/core/pay/vo/pay-transfer-list-vo.dto'; import { @ValidatedDto } from '../dtos/@-validated.dto'; -import { PayRefundDto } from '../../../../entities/pay-refund.entity'; +import { PayRefund } from '../../../../entities/pay-refund.entity'; @Injectable() export class CoreRefundServiceImplService { @@ -24,122 +24,47 @@ export class CoreRefundServiceImplService { * create */ async create(PayRefundCreateParam: @Validated): Promise { - const pay: Pay = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("out_trade_no", param.outTradeNo)); - if (pay == null) throw new BadRequestException("无效的支付交易号"); - if (param.money.compareTo(new BigDecimal(0)) <= 0) throw new BadRequestException("退款金额需大于0元"); - - const model: PayRefund = new PayRefund(); - model.siteId = param.siteId; - model.money = param.money; - model.type = pay.type; - model.channel = pay.channel; - model.outTradeNo = pay.outTradeNo; - model.refundNo = createRefundNo(); - model.reason = param.reason; - model.tradeType = param.tradeType; - model.tradeId = param.tradeId; - model.status = RefundStatusEnum.WAIT.status; - model.createTime = Date.now( / 1000); - - this.payRefundRepository.save(model); - return model.refundNo; + // TODO: 实现create业务逻辑 + return null; } /** * refund */ - async refund(param: PayRefundTransferParam): Promise { - const refund: PayRefund = this.findPayInfoByOutTradeNo(param.siteId, param.refundNo); - if (refund == null) throw new BadRequestException("无效的退款单据"); - - const pay: Pay = this.payRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })).eq("out_trade_no", refund.outTradeNo)); - if (pay == null) throw new BadRequestException("无效的支付交易号"); - - if (param.refundType === RefundTypeEnum.BACK.key) { - const refundParam: RefundParam = new RefundParam(); - refundParam.siteId = param.siteId; - refundParam.refundNo = param.refundNo; - refundParam.outTradeNo = refund.outTradeNo; - refundParam.money = refund.money; - refundParam.total = pay.money; - refundParam.notifyUrl = this.corePayService.buildNotifyUrl(param.siteId, refund.channel, refund.type, "refund"); - this.corePayService.driver(param.siteId, refund.channel, refund.type).refund(refundParam); - } else if (param.refundType === RefundTypeEnum.OFFLINE.key) { - refund.voucher = param.voucher; - this.payRefundMapper.updateById(refund); - const notifyParam: RefundNotifyParam = new RefundNotifyParam(); - notifyParam.refundNo = param.refundNo; - notifyParam.siteId = param.siteId; - notifyParam.outTradeNo = refund.outTradeNo; - notifyParam.type = param.refundType; - notifyParam.refundStatus = RefundTransferStatusEnum.SUCCESS; - refundNotify(notifyParam); - } + async refund(param: PayRefundTransferParamDto): Promise { + // TODO: 实现refund业务逻辑 + return null; } /** * findPayInfoByOutTradeNo */ async findPayInfoByOutTradeNo(siteId: number, refundNo: string): Promise { - return this.payRefundRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("refund_no", refundNo) - ); + // TODO: 实现findPayInfoByOutTradeNo业务逻辑 + return null; } /** * refundNotify */ - async refundNotify(param: RefundNotifyParam): Promise { - const refund: PayRefund = findPayInfoByOutTradeNo(param.siteId, param.refundNo); - if (refund == null) throw new BadRequestException("退款单据不存在"); - if (!refund.status === RefundStatusEnum.WAIT.status && !refund.status === RefundStatusEnum.DEALING.status) { - throw new BadRequestException("退款状态已发生变化"); - } - - refund.refundType = param.type; - - // 退款成功 - if (param.getRefundStatus().status === RefundTransferStatusEnum.SUCCESS.status) { - this.refundSuccess(param.siteId, refund); - } - // 退款失败 - if (param.getRefundStatus().status === RefundTransferStatusEnum.ABNORMAL.status) { - this.refundFail(param.siteId, refund); - } + async refundNotify(param: RefundNotifyParamDto): Promise { + // TODO: 实现refundNotify业务逻辑 + return null; } /** * refundSuccess */ async refundSuccess(siteId: number, refund: PayRefund): Promise { - refund.status = RefundStatusEnum.SUCCESS.status; - refund.refundTime = Date.now( / 1000); - payRefundMapper.updateById(refund); - - const event: RefundSuccessEvent = new RefundSuccessEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.tradeType = refund.tradeType; - event.tradeId = refund.tradeId; - event.refund = refund; - event.name = "RefundSuccessEvent"; - EventAndSubscribeOfPublisher.publishAll(event); + // TODO: 实现refundSuccess业务逻辑 + return null; } /** * refundFail */ async refundFail(siteId: number, refund: PayRefund): Promise { - refund.status = RefundStatusEnum.FAIL.status; - payRefundMapper.updateById(refund); - - const event: RefundFailEvent = new RefundFailEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.tradeType = refund.tradeType; - event.tradeId = refund.tradeId; - event.refund = refund; - event.name = "RefundFailEvent"; - EventAndSubscribeOfPublisher.publishAll(event); + // TODO: 实现refundFail业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-scene-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-scene-service-impl.service.ts index e4b7972f..f596e639 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-scene-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-scene-service-impl.service.ts @@ -1,14 +1,13 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SetTradeSceneParamDto } from '../../../../dtos/core/pay/param/set-trade-scene-param.dto'; import { WechatTransferSceneListVoDto } from '../../../../dtos/core/pay/vo/wechat-transfer-scene-list-vo.dto'; @Injectable() export class CoreTransferSceneServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -16,9 +15,8 @@ export class CoreTransferSceneServiceImplService { * getWechatTransferSceneConfig */ async getWechatTransferSceneConfig(siteId: number): Promise { - const config: Record = this.coreConfigService.getConfigValue(siteId, ConfigKeyEnum.basename(WECHAT_TRANSFER_SCENE_CONFIG)); - if (ObjectUtil.isNull(config)) return new Record(); - return config; + // TODO: 实现getWechatTransferSceneConfig业务逻辑 + return null; } /** @@ -31,42 +29,16 @@ export class CoreTransferSceneServiceImplService { /** * setTradeScene */ - async setTradeScene(siteId: number, type: string, param: SetTradeSceneParam): Promise { - const tradeScene: PayTransferScene = this.payTransferSceneRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("type", type)); - - const model: PayTransferScene = new PayTransferScene(); - model.siteId = siteId; - model.type = type; - model.perception = param.perception; - model.scene = param.scene; - model.infos = param.infos.toString(); - - if (tradeScene == null) { - model.createTime = Date.now( / 1000); - this.payTransferSceneRepository.save(model); - } else { - model.id = tradeScene.id; - payTransferSceneMapper.updateById(model); - } + async setTradeScene(siteId: number, type: string, param: SetTradeSceneParamDto): Promise { + // TODO: 实现setTradeScene业务逻辑 + return null; } /** * getSceneInfoByType */ async getSceneInfoByType(siteId: number, type: string): Promise { - const tradeScene: PayTransferScene = this.payTransferSceneRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("type", type)); - - const vo: TransferSceneInfo = new TransferSceneInfo(); - if (tradeScene == null) { - const transferScene: Record = JsonModuleLoader.build().mergeResultElement(this.requestContext.siteId, "pay/wechat_transfer_scene.json"); - vo = Object.assign(new TransferSceneInfo(), transferScene.getRecord(type)) /* TODO: 检查TransferSceneInfo构造函数 */; - } else { - BeanUtil.copyProperties(tradeScene, vo); - } - - const config: Record = getWechatTransferSceneConfig(siteId); - vo.sceneId = config.getStr(vo.scene, ""); - - return vo; + // TODO: 实现getSceneInfoByType业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-service-impl.service.ts index 1b536549..a73b7694 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/pay/impl/core-transfer-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -10,7 +10,7 @@ import { PayTransferSearchParamDto } from '../../../../dtos/core/pay/param/pay-t import { PayTransferInfoVoDto } from '../../../../dtos/core/pay/vo/pay-transfer-info-vo.dto'; import { PayTransferListVoDto } from '../../../../dtos/core/pay/vo/pay-transfer-list-vo.dto'; import { TransferQueryVoDto } from '../../../../dtos/core/pay/vo/transfer-query-vo.dto'; -import { PayTransferDto } from '../../../../entities/pay-transfer.entity'; +import { PayTransfer } from '../../../../entities/pay-transfer.entity'; import { Object>Dto } from '../dtos/object>.dto'; @Injectable() @@ -23,127 +23,47 @@ export class CoreTransferServiceImplService { * create */ async create(model: PayTransfer): Promise { - model.transferNo = createTransferNo(); - model.transferStatus = TransferStatusEnum.WAIT.status; - model.createTime = Date.now( / 1000); - this.payTransferRepository.save(model); - return model.transferNo; + // TODO: 实现create业务逻辑 + return null; } /** * findTransferByTransferNo */ async findTransferByTransferNo(siteId: number, transferNo: string): Promise { - return this.payTransferRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("transfer_no", transferNo)); + // TODO: 实现findTransferByTransferNo业务逻辑 + return null; } /** * transfer */ async transfer(siteId: number, transferNo: string, transferType: string, param: Map): Promise { - const transfer: PayTransfer = findTransferByTransferNo(siteId, transferNo); - if (transfer == null) throw new BadRequestException("无效的转账单据"); - if (!transfer.transferStatus === TransferStatusEnum.WAIT.status && !transfer.transferStatus === TransferStatusEnum.FAIL.status) { - throw new BadRequestException("当前转账未处于待转账状态"); - } - - transfer.transferType = transferType; - transfer.transferRemark = data.getOrDefault("transfer_remark", ""); - transfer.transferVoucher = data.getOrDefault("transfer_voucher", ""); - transfer.transferRealname = data.getOrDefault("transfer_realname", ""); - transfer.transferBank = data.getOrDefault("transfer_bank", ""); - transfer.transferMobile = data.getOrDefault("transfer_mobile", ""); - transfer.transferAccount = data.getOrDefault("transfer_account", ""); - transfer.openid = data.getOrDefault("openid", ""); - transfer.transferPayee = data.getOrDefault("transfer_payee", ""); - transfer.transferPaymentCode = data.getOrDefault("transfer_payment_code", ""); - payTransferMapper.updateById(transfer); - - const transferTypeEnum: Map = TransferTypeEnum.map.get(transferType); - if (transferTypeEnum == null) throw new BadRequestException("不支持的转账方式"); - - if ((boolean) transferTypeEnum.get("is_online")) { - const param: TransferParam = new TransferParam(); - param.transfer = transfer; - param.notifyUrl = this.corePayService.buildNotifyUrl(siteId, "transfer", transferType, "transfer"); - return this.corePayService.driver(siteId, "transfer", transferType).transfer(param); - } - this.success(transfer); - return null; + // TODO: 实现transfer业务逻辑 + return null; } /** * transferNotify */ - async transferNotify(param: TransferNotifyParam): Promise { - const transfer: PayTransfer = findTransferByTransferNo(param.siteId, param.transferNo); - if (transfer == null) throw new BadRequestException("无效的转账单据"); - if (!transfer.transferStatus === TransferStatusEnum.WAIT.status && !transfer.transferStatus === TransferStatusEnum.FAIL.status) { - throw new BadRequestException("当前转账未处于待转账状态"); - } - - if (param.getTransferStatus().status === TransferStatusEnum.SUCCESS.status) { - this.success(transfer); - } else if (param.getTransferStatus().status === TransferStatusEnum.FAIL.status) { - transfer.transferFailReason = param.failReason; - this.fail(transfer); - } else { - transfer.transferStatus = param.getTransferStatus(.status); - this.dealing(transfer); - } + async transferNotify(param: TransferNotifyParamDto): Promise { + // TODO: 实现transferNotify业务逻辑 + return null; } /** * cancel */ async cancel(siteId: number, transferNo: string): Promise { - const transfer: PayTransfer = findTransferByTransferNo(siteId, transferNo); - if (transfer == null) throw new BadRequestException("无效的转账单据"); - - const status: string[] = new String[]{ - TransferStatusEnum.WAIT.status, - TransferStatusEnum.DEALING.status, - TransferStatusEnum.FAIL.status, - TransferStatusEnum.WAIT_USER.status, - TransferStatusEnum.WAIT_USER_ING.status, - TransferStatusEnum.FAIL_ING.status - }; - if (!ObjectUtil.includes(status, transfer.transferStatus)) { - throw new BadRequestException("转账状态已发生变化"); - } - - this.corePayService.driver(siteId, "transfer", transfer.transferType).transferCancel(transferNo); + // TODO: 实现cancel业务逻辑 + return null; } /** * check */ async check(siteId: number, transferNo: string): Promise { - const transfer: PayTransfer = findTransferByTransferNo(siteId, transferNo); - if (transfer == null) throw new BadRequestException("无效的转账单据"); - - const status: string[] = new String[]{ - TransferStatusEnum.WAIT.status, - TransferStatusEnum.DEALING.status, - TransferStatusEnum.FAIL.status, - TransferStatusEnum.WAIT_USER.status, - TransferStatusEnum.WAIT_USER_ING.status, - TransferStatusEnum.FAIL_ING.status - }; - if (!ObjectUtil.includes(status, transfer.transferStatus)) { - throw new BadRequestException("只有待转账和转账中的订单可以校验"); - } - - const transferResult: TransferQueryVo = this.corePayService.driver(siteId, "transfer", transfer.transferType).transferQuery(transferNo); - if (transferResult == null) throw new BadRequestException("查询不到转账信息"); - - const param: TransferNotifyParam = new TransferNotifyParam(); - param.siteId = siteId; - param.transferNo = transferNo; - param.transferStatus = transferResult.transferSatus; - param.failReason = ObjectUtil.defaultIfNull(transferResult.failReason, ""); - - transferNotify(param); + // TODO: 实现check业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/poster/impl/core-poster-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/poster/impl/core-poster-service-impl.service.ts index f8645d73..5ff15cce 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/poster/impl/core-poster-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/poster/impl/core-poster-service-impl.service.ts @@ -1,107 +1,36 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils } from '@wwjBoot'; -import * as fs from 'fs'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AddPosterParamDto } from '../../../../dtos/core/poster/param/add-poster-param.dto'; import { GetPosterParamDto } from '../../../../dtos/core/poster/param/get-poster-param.dto'; @Injectable() export class CorePosterServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * get */ - async get(param: GetPosterParam): Promise { - const query: QueryWrapper = new QueryWrapper(); - query.eq("site_id", param.siteId); - query.eq("type", param.type); - query.eq("status", 1); - query.last("limit 1"); - if (CommonUtils.isNotEmpty(param.id) && param.id > 0) { - query.eq("id", param.id); - } else { - query.eq("is_default", 1); - } - const model: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - - try { - // 海报模板 - const poster: Record = new Record(); - if (model == null) { - const template: JSONArray = template("", param.type); - if (template.length > 0) { - poster = template.getRecord(0).getRecord("data"); - } - } else { - poster = JsonUtils.parseObject(model.value); - } - - // 获取海报数据 - GetPosterDataEventDefiner.const event: GetPosterDataEvent = new GetPosterDataEventDefiner.GetPosterDataEvent(); - event.siteId = param.siteId; - event.addAppSign("core"); - event.name = "GetPosterDataEvent"; - event.type = param.type; - event.param = param.param; - event.channel = param.channel; - const eventData: GetPosterDataEventDefiner.GetPosterDataResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event); - if (eventData.length == 0) throw new BadRequestException("未获取到海报数据"); - - GetPosterDataEventDefiner.const posterData: GetPosterDataResult = eventData.get(0); - - const dir: string = "upload/poster/" + param.siteId + "/"; - const posterName: string = "poster_" + SecureUtil.md5(poster.toString()) + "_" + SecureUtil.md5(JsonUtils.parseObject(posterData).toString()) + "_" + param.channel + ".png"; - - if (fs.existsSync(this.appConfig.webRootDownResource, dir + posterName)) { - return dir + posterName; - } - - // 绘制海报 - create(param.siteId, poster, posterData.data, dir, posterName); - return dir + posterName; - } catch (e) { - console.log("海报生成错误"); - console.error(e); - if (param.isThrowException) throw new BadRequestException(e.message); - return ""; - } + async get(param: GetPosterParamDto): Promise { + // TODO: 实现get业务逻辑 + return null; } /** * template */ async template(addon: string, type: string): Promise { - final const template: JSONArray = new JSONArray(); - if (CommonUtils.isNotEmpty(addon)) { - const coreTemplate: JSONArray = JsonModuleLoader.build().findResultSet("code", "poster/template.json"); - coreTemplate.forEach(e => template.push(e)); - - const addonTemplate: JSONArray = JsonModuleLoader.build().findResultSet(addon, "poster/template.json"); - addonTemplate.forEach(e => template.push(e)); - } else { - const all: JSONArray = JsonModuleLoader.build().mergeResultSet("poster/template.json"); - all.forEach(e => template.push(e)); - } - - if (CommonUtils.isNotEmpty(type) && template.length > 0) { - return CollUtil.filter(template, i => { - const item: Record = (Record) i; - return item.getStr("type", "").equals(type); - }); - } - - return template; + // TODO: 实现template业务逻辑 + return null; } /** * add */ - async add(param: AddPosterParam): Promise { + async add(param: AddPosterParamDto): Promise { const sysPoster: SysPoster = new SysPoster(); Object.assign(sysPoster, param); this.sysPosterRepository.save(sysPoster); @@ -111,14 +40,7 @@ export class CorePosterServiceImplService { * getDefaultPosterIdByType */ async getDefaultPosterIdByType(siteId: number, type: string, addon: string): Promise { - any /* TODO: QueryWrapper */ queryWrapper = new QueryWrapper(); - queryWrapper.eq("site_id", siteId) - .eq("type", type) - .eq("addon", addon) - .eq("is_default", 1) - .eq("status", 1); - - const poster: SysPoster = this.sysPosterRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }); - return poster != null ? poster.id : 0; + // TODO: 实现getDefaultPosterIdByType业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/schedule/impl/core-schedule-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/schedule/impl/core-schedule-service-impl.service.ts index 2d2d6c9e..da45fd2e 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/schedule/impl/core-schedule-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/schedule/impl/core-schedule-service-impl.service.ts @@ -1,13 +1,11 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils } from '@wwjBoot'; -import * as fs from 'fs'; +import { QueueService, EventBus, Result } from '@wwjBoot'; @Injectable() export class CoreScheduleServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -15,118 +13,39 @@ export class CoreScheduleServiceImplService { * installSystemSchedule */ async installSystemSchedule(): Promise { - const jsonModuleLoader: JsonModuleLoader = new JsonModuleLoader(); - const schedule: JSONArray = jsonModuleLoader.getResultSet("core", "schedule.json"); - - if (CommonUtils.isNotEmpty(schedule)) { - const scheduleList: SysSchedule[] = this.sysScheduleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).select("id,`key`")); - const scheduleMap: Record = scheduleList.collect(/* Collectors已删除 */.toMap(SysSchedule::getKey, i => i)); - - const list: SysSchedule[] = []; - - for (const i of number = 0; i < schedule.length; i++) { - const item: Record = schedule.getRecord(i); - const key: string = item.getStr("key"); - if (scheduleMap.get(key) == null) { - const sysScheduleVo: SysSchedule = Object.assign(new SysSchedule(), item) /* TODO: 检查SysSchedule构造函数 */; - sysScheduleVo.addon = ""; - sysScheduleVo.status = 1; - list.push(sysScheduleVo); - } - } - - if (list.length > 0) { - for (const sysScheduleVo of list) { - try { - QuartzJobManager.stopJob(sysScheduleVo.key); - QuartzJobManager.startJob(sysScheduleVo); - } catch (e) { - } - } - super.saveBatch(list); - } - } + // TODO: 实现installSystemSchedule业务逻辑 + return null; } /** * uninstallSystemSchedule */ async uninstallSystemSchedule(): Promise { - this.sysScheduleRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现uninstallSystemSchedule业务逻辑 + return null; } /** * installAddonSchedule */ async installAddonSchedule(addon: string): Promise { - Map> addonModule = AddonModuleContext.addonModuleMap; - const schedule: JSONArray = null; - if (addonModule.get(addon) != null) { - const jsonModuleLoader: JsonModuleLoader = new JsonModuleLoader(); - schedule = jsonModuleLoader.getResultSet(addon, "schedule.json"); - } else { - const file: string = this.appConfig.webRootDownAddon + addon + "/java/src/main/resources/"+ addon +"/loader/schedule.json"; - if (fs.existsSync(file)) { - try { - const content: string = fs.readFileSync(file); - if (CommonUtils.isNotEmpty(content)) { - schedule = JSONUtil.parseArray(content); - } - } catch (e) { - } - } - } - - if (CommonUtils.isNotEmpty(schedule)) { - const scheduleList: SysSchedule[] = this.sysScheduleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).select("id,`key`")); - const scheduleMap: Record = scheduleList.collect(/* Collectors已删除 */.toMap(SysSchedule::getKey, i => i)); - - const list: SysSchedule[] = []; - - for (const i of number = 0; i < schedule.length; i++) { - const item: Record = schedule.getRecord(i); - const key: string = item.getStr("key"); - if (scheduleMap.get(key) == null) { - const sysScheduleVo: SysSchedule = Object.assign(new SysSchedule(), item) /* TODO: 检查SysSchedule构造函数 */; - sysScheduleVo.addon = addon; - sysScheduleVo.status = 1; - list.push(sysScheduleVo); - } - } - - if (list.length > 0) { - for (const sysScheduleVo of list) { - try { - QuartzJobManager.stopJob(sysScheduleVo.key); - QuartzJobManager.startJob(sysScheduleVo); - } catch (e) { - } - } - super.saveBatch(list); - } - } + // TODO: 实现installAddonSchedule业务逻辑 + return null; } /** * uninstallAddonSchedule */ async uninstallAddonSchedule(addon: string): Promise { - this.sysScheduleRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })); + // TODO: 实现uninstallAddonSchedule业务逻辑 + return null; } /** * resetSchedule */ async resetSchedule(): Promise { - try { - this.sysScheduleRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - installSystemSchedule(); - const addonList: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).eq(Addon::getStatus, 1)); - addonList.forEach(addon => { - installAddonSchedule(addon.key); - }); - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现resetSchedule业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-account-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-account-service-impl.service.ts index 2bfcf6a1..23fe5a79 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-account-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-account-service-impl.service.ts @@ -2,9 +2,9 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; -import { PayDto } from '../../../../entities/pay.entity'; -import { PayRefundDto } from '../../../../entities/pay-refund.entity'; -import { PayTransferDto } from '../../../../entities/pay-transfer.entity'; +import { Pay } from '../../../../entities/pay.entity'; +import { PayRefund } from '../../../../entities/pay-refund.entity'; +import { PayTransfer } from '../../../../entities/pay-transfer.entity'; @Injectable() export class CoreSiteAccountServiceImplService { @@ -16,41 +16,23 @@ export class CoreSiteAccountServiceImplService { * addPayLog */ async addPayLog(pay: Pay): Promise { - const model: SiteAccountLog = new SiteAccountLog(); - model.siteId = pay.siteId; - model.type = "pay"; - model.money = pay.money; - model.tradeNo = pay.outTradeNo; - model.createTime = Date.now( / 1000); - this.siteAccountLogRepository.save(model); - return model.id; + // TODO: 实现addPayLog业务逻辑 + return null; } /** * addRefundLog */ async addRefundLog(refund: PayRefund): Promise { - const model: SiteAccountLog = new SiteAccountLog(); - model.siteId = refund.siteId; - model.type = "refund"; - model.money = refund.money.multiply(new BigDecimal("-1")); - model.tradeNo = refund.refundNo; - model.createTime = Date.now( / 1000); - this.siteAccountLogRepository.save(model); - return model.id; + // TODO: 实现addRefundLog业务逻辑 + return null; } /** * addTransferLog */ async addTransferLog(transfer: PayTransfer): Promise { - const model: SiteAccountLog = new SiteAccountLog(); - model.siteId = transfer.siteId; - model.type = "transfer"; - model.money = transfer.money.multiply(new BigDecimal("-1")); - model.tradeNo = transfer.transferNo; - model.createTime = Date.now( / 1000); - this.siteAccountLogRepository.save(model); - return model.id; + // TODO: 实现addTransferLog业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-service-impl.service.ts index 312dee4e..773a0e6d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/site/impl/core-site-service-impl.service.ts @@ -1,14 +1,13 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; import { SiteInfoCacheVoDto } from '../../../../dtos/core/site/vo/site-info-cache-vo.dto'; @Injectable() export class CoreSiteServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -16,85 +15,32 @@ export class CoreSiteServiceImplService { * getAddonKeysBySiteId */ async getAddonKeysBySiteId(siteId: number): Promise { - return cached.rememberObject(useCache, cacheTagName + "_" + siteId, ["getAddonKeysBySiteId", siteId], uniqueKey => { - - const siteInfo: Site = siteMapper.selectById(siteId); - if (ObjectUtil.isNull(siteInfo)) { - return new ArrayString[](); - } - //查询站点分组 - const siteGroup: SiteGroup = siteGroupMapper.selectById(siteInfo.groupId); - const siteAddonJson: JSONArray = new JSONArray(); - if (!siteInfo.addons === "") { - const addonJson: JSONArray = JSONUtil.parseArray(siteInfo.addons); - siteAddonJson.addAll(addonJson); - } - if (!siteInfo.app === "") { - const appJson: JSONArray = JSONUtil.parseArray(siteInfo.app); - siteAddonJson.addAll(appJson); - } - if (ObjectUtil.isNotNull(siteGroup)) { - if (!siteGroup.app === "") { - const groupAppJson: JSONArray = JSONUtil.parseArray(siteGroup.app); - siteAddonJson.addAll(groupAppJson); - } - if (!siteGroup.addon === "") { - const groupAddonJson: JSONArray = JSONUtil.parseArray(siteGroup.addon); - siteAddonJson.addAll(groupAddonJson); - } - } - //去重 - const list: string[] = JSONUtil.toList(siteAddonJson, String.class); - return CollectionUtil.distinct(list); - }); + // TODO: 实现getAddonKeysBySiteId业务逻辑 + return null; } /** * getSiteCache */ async getSiteCache(siteId: number): Promise { - const siteCache: SiteInfoCacheVo = cached.rememberObject(useCache, cacheTagName + "_" + siteId, ["getSiteCache", siteId], uniqueKey => { - MPJany /* TODO: QueryWrapper */ siteMPJQueryWrapper = new MPJQueryWrapper(); - siteMPJQueryWrapper.select("ns.site_id, ns.site_name, ns.group_id, ns.keywords, ns.app_type, ns.logo, ns.`desc`, ns.status, ns.latitude, ns.longitude, ns.province_id, ns.city_id, ns.district_id, ns.address, ns.full_address, ns.phone, ns.business_hours, ns.create_time, ns.expire_time, ns.front_end_name, ns.front_end_logo, ns.front_end_icon, ns.icon, ns.member_no, ns.app, ns.addons, ns.initalled_addon, ns.site_domain, nsg.group_name") - .setAlias("ns") - .leftJoin("?_site_group nsg ON ns.group_id = nsg.group_id".replace("?_", this.appConfig.tablePrefix)); - siteMPJQueryWrapper.eq("ns.site_id", siteId); - - return siteMapper.selectJoinOne(SiteInfoCacheVo.class, siteMPJQueryWrapper); - - }); - const siteInfoVo: SiteInfoVo = new SiteInfoVo(); - if (CommonUtils.isNotEmpty(siteCache)) { - BeanUtil.copyProperties(siteCache, siteInfoVo); - siteInfoVo.addonKeys = getAddonKeysBySiteId(siteInfoVo.siteId); - if (siteInfoVo.addonKeys.size() != 0) { - siteInfoVo.siteAddons = this.addonService.getAddonListByKeys(siteInfoVo.addonKeys, ""); - siteInfoVo.apps = this.addonService.getAddonListByKeys(siteInfoVo.addonKeys, AddonActionEnum.APP.code); - }else{ - siteInfoVo.siteAddons = []; - siteInfoVo.apps = []; - } - const sysUserRole: SysUserRole = this.sysUserRoleRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId).eq("is_admin", 1)); - if (CommonUtils.isNotEmpty(sysUserRole)) { - siteInfoVo.uid = sysUserRole.uid; - } - } - return siteInfoVo; + // TODO: 实现getSiteCache业务逻辑 + return null; } /** * getSiteAddons */ async getSiteAddons(siteId: number): Promise { - return this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }))); + // TODO: 实现getSiteAddons业务逻辑 + return null; } /** * siteAddonIsInit */ async siteAddonIsInit(siteId: number, addon: string): Promise { - const count: number = this.siteAddonInitRecordRepository.count({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("addon", addon)); - return count == 1 ? true : false; + // TODO: 实现siteAddonIsInit业务逻辑 + return null; } /** @@ -111,13 +57,8 @@ export class CoreSiteServiceImplService { * siteExpireClose */ async siteExpireClose(): Promise { - const model: Site = new Site(); - model.status = SiteStatusEnum.EXPIRE.code; - this.siteRepository.save(model, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .gt("expire_time", 0) - .lt("expire_time", Date.now() / 1000) - .ne("status", SiteStatusEnum.EXPIRE.code) - ); + // TODO: 实现siteExpireClose业务逻辑 + return null; } /** @@ -131,53 +72,7 @@ export class CoreSiteServiceImplService { * siteInitBySiteId */ async siteInitBySiteId(siteId: number, tables: List): Promise { - const userIds: number[] = []; - try { - for (const table of tables) { - if (!isTableExists(table)) { - continue; - } - - if ("nc_sys_user_role".equals(table)) { - Lambdaany /* TODO: QueryWrapper */ queryWrapper = new Lambdaany /* TODO: QueryWrapper */() - .eq(SysUserRole::getSiteId, siteId) - .eq(SysUserRole::getIsAdmin, 0) - .select(SysUserRole::getUid); - - userIds = this.sysUserRoleRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }).stream() - .map(SysUserRole::getUid) - ; - - if ((userIds && userIds.length > 0)) { - this.sysUserRoleRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); - } - } - else if ("nc_sys_user".equals(table)) { - if ((userIds && userIds.length > 0)) { - sysUserMapper.deleteByIds(userIds); - } - } - else { - jdbcTemplate.update("DELETE FROM " + table + " const site_id: WHERE = ?", siteId); - } - } - - const site: Site = siteMapper.selectById(siteId); - const siteGroup: SiteGroup = siteGroupMapper.selectById(site.groupId); - - const event: SiteAddAfterEvent = new SiteAddAfterEvent(); - event.siteId = siteId; - event.addAppSign("core"); - event.name = "SiteAddAfterEvent"; - event.site = site; - event.siteGroup = siteGroup; - EventAndSubscribeOfPublisher.publishAll(event); - - // 清除缓存 - cached.allKeys.stream().forEach(key => cached.remove(key)); - return true; - } catch (e) { - throw new BadRequestException("站点初始化失败: " + e.message); - } + // TODO: 实现siteInitBySiteId业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sms/impl/core-sms-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sms/impl/core-sms-service-impl.service.ts index 6d2e91cd..cf9ee940 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sms/impl/core-sms-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sms/impl/core-sms-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -15,31 +15,8 @@ export class CoreSmsServiceImplService { /** * send */ - async send(siteId: number, notice: NoticeInfoVo, noticeData: NoticeDataVo): Promise { - const config: Record = this.getDefaultSmsConfig(siteId); - - const model: SysNoticeSmsLog = new SysNoticeSmsLog(); - model.siteId = siteId; - model.mobile = noticeData.mobile; - model.smsType = config.getStr("sms_type"); - model.key = notice.key; - model.content = notice.sms.getStr("content", ""); - model.status = SmsStatusEnum.SENDING.status; - model.createTime = Date.now( / 1000); - model.params = JSONUtil.parse(noticeData.vars.toString()); - this.sysNoticeSmsLogRepository.save(model); - - const smsDriver: BaseSms = SmsLoader.getDriver(config.getStr("sms_type"), config); - const result: SendResultVo = smsDriver.send(notice, noticeData); - - const updateModel: SysNoticeSmsLog = new SysNoticeSmsLog(); - updateModel.id = model.id; - updateModel.status = result.getStatus(.status); - updateModel.result = ObjectUtil.defaultIfNull(result.failReason, ""); - sysNoticeSmsLogMapper.updateById(updateModel); - - if (result.getStatus().status === SmsStatusEnum.FAIL.status) { - throw new BadRequestException(updateModel.result); - } + async send(siteId: number, notice: NoticeInfoVoDto, noticeData: NoticeDataVoDto): Promise { + // TODO: 实现send业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-agreement-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-agreement-service-impl.service.ts index 769b1f6f..f4fc1993 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-agreement-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-agreement-service-impl.service.ts @@ -13,39 +13,15 @@ export class CoreAgreementServiceImplService { * getAgreement */ async getAgreement(siteId: number, key: string): Promise { - const model: SysAgreement = this.sysAgreementRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId).last(" limit 1")); - if(ObjectUtil.isNull(model)) - { - const defaultModel: SysAgreement = new SysAgreement(); - defaultModel.siteId = siteId; - defaultModel.agreementKey = key; - defaultModel.content = ""; - defaultModel.title = ""; - return defaultModel; - } - return model; + // TODO: 实现getAgreement业务逻辑 + return null; } /** * setAgreement */ async setAgreement(siteId: number, key: string, title: string, content: string): Promise { - const model: SysAgreement = this.sysAgreementRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId).last(" limit 1")); - if(ObjectUtil.isNull(model)){ - const addModel: SysAgreement = new SysAgreement(); - addModel.siteId = siteId; - addModel.agreementKey = key; - addModel.title = title; - addModel.content = content; - addModel.createTime = Date.now( / 1000); - addModel.updateTime = Date.now( / 1000); - this.sysAgreementRepository.save(addModel); - }else{ - model.updateTime = Date.now( / 1000); - model.title = title; - model.content = content; - sysAgreementMapper.updateById(model); - - } + // TODO: 实现setAgreement业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-config-service-impl.service.ts index 3209d3e5..cf030345 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-config-service-impl.service.ts @@ -1,8 +1,8 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils } from '@wwjBoot'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { QueueService, EventBus, Result } from '@wwjBoot'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; import { JSONDto } from '../dtos/j-s-o-n.dto'; @Injectable() @@ -15,88 +15,32 @@ export class CoreConfigServiceImplService { * getConfig */ async getConfig(siteId: number, key: string): Promise { - const model: SysConfig = this.sysConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId).last(" limit 1")); - const vo: CoreSysConfigVo = new CoreSysConfigVo(); - if (ObjectUtil.isNotNull(model)) { - Object.assign(vo, model); - if (!model.value === "") { - vo.valueJson = JSONUtil.parse(model.value); - } - } - return vo; + // TODO: 实现getConfig业务逻辑 + return null; } /** * getConfigValue */ async getConfigValue(siteId: number, key: string): Promise { - const jsonObject: Object = cached.rememberObject(useCache, cacheTagName, ["getConfigValue", siteId, key], uniqueKey => { - - const model: SysConfig = this.sysConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId).last(" limit 1")); - if (ObjectUtil.isNotNull(model)) { - if (!model.value === "") { - return model.value; - }else{ - return ""; - } - } - return ""; - }); - if(CommonUtils.isNotEmpty(jsonObject)){ - return JsonUtils.parseObject(jsonObject); - }else{ - return new Record(); - } + // TODO: 实现getConfigValue业务逻辑 + return null; } /** * getConfigArrayValue */ async getConfigArrayValue(siteId: number, key: string): Promise { - const jsonObject: Object = cached.rememberObject(useCache, cacheTagName, ["getConfigArrayValue", siteId, key], uniqueKey => { - const model: SysConfig = this.sysConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).eq("site_id", siteId).last(" limit 1")); - if (ObjectUtil.isNotNull(model)) { - if (!model.value === "") { - return model.value; - }else{ - return ""; - } - } - return ""; - }); - - if(CommonUtils.isNotEmpty(jsonObject)){ - return JSONUtil.parseArray(jsonObject.toString()); - }else{ - return new JSONArray(); - } + // TODO: 实现getConfigArrayValue业务逻辑 + return null; } /** * setConfig */ async setConfig(siteId: number, key: string, valueJson: JSON): Promise { - const model: SysConfig = this.sysConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq("site_id", siteId) - .last("limit 1")); - if (ObjectUtil.isNull(model)) { - const addModel: SysConfig = new SysConfig(); - //添加数据 - addModel.siteId = siteId; - addModel.configKey = key; - addModel.status = 1; - addModel.updateTime = Date.now( / 1000); - addModel.addon = ""; - addModel.value = valueJson.toString(); - addModel.createTime = Date.now( / 1000); - this.sysConfigRepository.save(addModel); - cached.tag(cacheTagName).clear(); - } else { - cached.tag(cacheTagName).clear(); - model.updateTime = Date.now( / 1000); - model.value = valueJson.toString(); - this.sysConfigRepository.save(model, /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */.eq("config_key", key).eq("site_id", siteId)); - } + // TODO: 实现setConfig业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-export-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-export-service-impl.service.ts index 5ef3e915..2769f387 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-export-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-export-service-impl.service.ts @@ -1,15 +1,14 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, AppConfigService, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { PageParamDto } from '../../../../dtos/page-param.dto'; import { SysExportParamDto } from '../../../../dtos/core/sys/param/sys-export-param.dto'; -import { SysExportDto } from '../../../../entities/sys-export.entity'; +import { SysExport } from '../../../../entities/sys-export.entity'; @Injectable() export class CoreExportServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -23,109 +22,39 @@ export class CoreExportServiceImplService { /** * edit */ - async edit(exportId: number, sysExportParam: SysExportParam): Promise { - const sysExport: SysExport = sysExportMapper.selectById(exportId); - - if (!sysExport) throw new BadRequestException("数据不存在"); - - sysExport.exportKey = sysExportParam.exportKey; - sysExport.exportNum = sysExportParam.exportNum; - sysExport.failReason = sysExportParam.failReason; - sysExport.filePath = sysExportParam.filePath; - sysExport.failReason = sysExportParam.failReason; - sysExportMapper.updateById(sysExport); + async edit(exportId: number, sysExportParam: SysExportParamDto): Promise { + // TODO: 实现edit业务逻辑 + return null; } /** * getExportDataColumn */ async getExportDataColumn(type: string): Promise { - const exportDataColumn: JSONArray = JsonModuleLoader.build().mergeResultSet("export/ExportType.json"); - if (ObjectUtil.isNotNull(type) && CommonUtils.isNotEmpty(type)) { - const typeColumn: JSONArray = new JSONArray(); - for (const obj of exportDataColumn) { - const jsonObject: Record = (Record) obj; - const setString: string[] = jsonObject.keySet(); - for (const key of setString) { - if (key === type) { - const values: Record = jsonObject.getRecord(key); - typeColumn = values.getJSONArray("column"); - } - } - } - return typeColumn; - } - return exportDataColumn; + // TODO: 实现getExportDataColumn业务逻辑 + return null; } /** * getExportData */ - async getExportData(siteId: number, type: string, where: JSONObject, pageParam: PageParam): Promise { - ExportDataEventDefiner.const exportDataEvent: ExportDataEvent = new ExportDataEventDefiner.ExportDataEvent(); - exportDataEvent.siteId = siteId; - exportDataEvent.type = type; - exportDataEvent.where = where; - exportDataEvent.pageParam = pageParam; - const resultList: ExportDataEventDefiner.ExportDataEventResult[] = EventAndSubscribeOfPublisher.publishAndCallback(exportDataEvent); - const exportResult: JSONArray = new JSONArray(); - for (ExportDataEventDefiner.ExportDataEventResult itemResult : resultList) { - if (CommonUtils.isNotEmpty(itemResult.resultData)) { - exportResult.addAll(itemResult.resultData); - } - } - return exportResult; + async getExportData(siteId: number, type: string, where: JSONObject, pageParam: PageParamDto): Promise { + // TODO: 实现getExportData业务逻辑 + return null; } /** * export */ async export(siteId: number, exportId: number, dataType: string, headColumn: JSONArray, valueData: JSONArray): Promise { - const exportDynamic: ExportDynamic = new ExportDynamic(); - const fileName: string = dataType + "_" + DateUtils.currTime() + ".xlsx"; - const relativePath: string = "upload/export/"; - exportDynamic.fileName = fileName; - const filePath: string = this.appConfig.webRootDownResource + relativePath; - exportDynamic.filePath = filePath; - const headsList: ExportHeads[] = new ArrayList<>(CollectionUtil.size(headColumn)); - const keyList: string[] = new ArrayList<>(CollectionUtil.size(headColumn)); - for (const headObj of headColumn) { - const itemObject: Record = (Record) headObj; - const itemKey: string = itemObject.keySet().stream().iterator().next(); - const itemValue: Record = itemObject.getRecord(itemKey); - const titleHead: string = itemValue.getStr("name"); - const exportHeads: ExportHeads = new ExportHeads(); - exportHeads.label = titleHead; - headsList.push(exportHeads); - keyList.push(itemKey); - } - exportDynamic.heads = headsList; - List datas = new ArrayList<>(CollectionUtil.size(valueData)); - for (const itemObj of valueData) { - const itemJsonObject: Record = (Record) itemObj; - const itemDatas: Object[] = []; - for (const itemKey of keyList) { - itemDatas.push(itemJsonObject.getStr(itemKey, "")); - } - datas.push(itemDatas); - } - exportDynamic.datas = datas; - exportDynamic.relativePath = relativePath; - BusinessExcelUtil.exportBusinessExcel(exportId, exportDynamic); + // TODO: 实现export业务逻辑 + return null; } /** * deleteExportFile */ async deleteExportFile(filePath: string): Promise { - const path: string = this.appConfig.webRootDownResource + filePath; - if (!FileUtil.exist(path)) { - return; - } - - const del: boolean = FileUtil.del(path); - if (!del && log.isInfoEnabled()) { - log.info("报表删除失败"); - } + // TODO: 实现deleteExportFile业务逻辑 } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-menu-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-menu-service-impl.service.ts index 736bdcb7..8cec91f6 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-menu-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-menu-service-impl.service.ts @@ -1,14 +1,11 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils } from '@wwjBoot'; -import * as fs from 'fs'; -import * as path from 'path'; +import { QueueService, EventBus, Result } from '@wwjBoot'; @Injectable() export class CoreMenuServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -16,73 +13,30 @@ export class CoreMenuServiceImplService { * refreshAddonMenu */ async refreshAddonMenu(addon: string): Promise { - this.deleteMenu(addon, false); - - const adminMenu: Record = JsonModuleLoader.build().getResultElement(addon, "menu/admin.json"); - if(CommonUtils.isNotEmpty(adminMenu)){ - if (adminMenu.getJSONArray("menu") != null) { - const adminMenuBeanList: SysMenu[] = this.menuTreeToList(TreeUtils.treeToList(adminMenu.getJSONArray("menu"), "parent_key", "", "menu_key", "children"), addon, "admin"); - super.saveBatch(adminMenuBeanList); - } - } - const siteMenu: Record = JsonModuleLoader.build().getResultElement(addon, "menu/site.json"); - if(CommonUtils.isNotEmpty(siteMenu)){ - if (siteMenu.getJSONArray("menu") != null) { - const siteMenuBeanList: SysMenu[] = this.menuTreeToList(TreeUtils.treeToList(siteMenu.getJSONArray("menu"), "parent_key", "", "menu_key", "children"), addon, "site"); - super.saveBatch(siteMenuBeanList); - } - } - - //清理缓存 - cached.tag(CacheTagEnum.MENU_CACHE.tagName).clear(); + // TODO: 实现refreshAddonMenu业务逻辑 + return null; } /** * installAddonMenu */ async installAddonMenu(addon: string): Promise { - this.deleteMenu(addon, false); - - const menuDir: string = this.appConfig.webRootDownAddon + addon + "/menu/"; - const adminMenu: string = menuDir + "admin.json"; - const siteMenu: string = menuDir + "site.json"; - - if (fs.existsSync(adminMenu)) { - const jsonString: string = JsonUtils.parseObject(fs.readFileSync(path.join(adminMenu); - const menuList: Record[] = TreeUtils.treeToList(JsonUtils.parseObject(jsonString), 'utf-8')).getJSONArray("menu"), "parent_key", "", "menu_key", "children"); - const adminMenuBeanList: SysMenu[] = this.menuTreeToList(menuList, addon, "admin"); - super.saveBatch(adminMenuBeanList); - } - if (fs.existsSync(siteMenu)) { - const jsonString: string = JsonUtils.parseObject(fs.readFileSync(path.join(siteMenu); - const menuList: Record[] = TreeUtils.treeToList(JsonUtils.parseObject(jsonString), 'utf-8')).getJSONArray("menu"), "parent_key", "", "menu_key", "children"); - const siteMenuBeanList: SysMenu[] = this.menuTreeToList(menuList, addon, "site"); - super.saveBatch(siteMenuBeanList); - } - - //清理缓存 - cached.tag(CacheTagEnum.MENU_CACHE.tagName).clear(); + // TODO: 实现installAddonMenu业务逻辑 + return null; } /** * deleteMenu */ async deleteMenu(addon: string, isAll: boolean): Promise { - any /* TODO: QueryWrapper */ queryWrapper = /* TODO: any /* TODO: QueryWrapper */需改写为TypeORM的where条件对象 */ - .eq("addon", addon); - if (!isAll) queryWrapper.eq("source", "system"); - - this.sysMenuRepository.delete({ /* TODO: 将QueryWrapper改为where条件 */ }); + // TODO: 实现deleteMenu业务逻辑 } /** * refreshAllAddonMenu */ async refreshAllAddonMenu(): Promise { - //查询所有的插件 - const addonList: Addon[] = this.addonRepository.find({ /* TODO: 将QueryWrapper改为where条件 */ }); - for (const addon of addonList) { - this.refreshAddonMenu(addon.key); - } + // TODO: 实现refreshAllAddonMenu业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-printer-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-printer-service-impl.service.ts index eeaca9da..99866072 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-printer-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-printer-service-impl.service.ts @@ -1,13 +1,13 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; import { SysPrinterAddPrinterYlyParamDto } from '../../../../dtos/core/sys/param/sys-printer-add-printer-yly-param.dto'; import { SysPrinterPrintTicketParamDto } from '../../../../dtos/core/sys/param/sys-printer-print-ticket-param.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; import { SysPrinterPrintTicketVoDto } from '../../../../dtos/core/sys/vo/sys-printer-print-ticket-vo.dto'; import { JSONDto } from '../dtos/j-s-o-n.dto'; -import { SysPrinterDto } from '../../../../entities/sys-printer.entity'; +import { SysPrinter } from '../../../../entities/sys-printer.entity'; @Injectable() export class CorePrinterServiceImplService { @@ -27,15 +27,8 @@ export class CorePrinterServiceImplService { * getYlyTokenConfig */ async getYlyTokenConfig(): Promise { - const config: CoreSysConfigVo = this.coreConfigService.getConfig(this.requestContext.siteId, "PRINTER_YLY_TOKEN"); - if (CommonUtils.isEmpty(config)) { - const valueJsonObject: Record = new Record(); - valueJsonObject.set("access_token", "") - .set("end_time", "0"); - return valueJsonObject; - } - - return JsonUtils.parseObject(config.valueJson); + // TODO: 实现getYlyTokenConfig业务逻辑 + return null; } /** @@ -48,7 +41,7 @@ export class CorePrinterServiceImplService { /** * addPrinterYly */ - async addPrinterYly(param: SysPrinterAddPrinterYlyParam): Promise { + async addPrinterYly(param: SysPrinterAddPrinterYlyParamDto): Promise { getSdk(param.openId, param.apikey) .addPrinter(param.printerCode, param.printerKey); } @@ -64,57 +57,9 @@ export class CorePrinterServiceImplService { /** * printTicket */ - async printTicket(param: SysPrinterPrintTicketParam): Promise { - const event: SysPrinterPrintTicketEvent = new SysPrinterPrintTicketEvent(); - event.siteId = param.siteId; - event.param = param; - event.authority = false; - const results: SysPrinterPrintTicketResult[] = CallbackPublisher.publishReturnList(event) - .stream() - .map(result => (SysPrinterPrintTicketResult) result) - ; - - const vo: SysPrinterPrintTicketVo = new SysPrinterPrintTicketVo(); - Optional error = results.filter(result => result.code != 0).findFirst(); - if (error.isPresent()) { - const result: SysPrinterPrintTicketResult = error.get(); - vo.code = result.code; - vo.message = result.message; - return vo; - } - - const items: SysPrinterPrintTicketResult.Item[] = results - .flatMap(result => result.data.stream()) - ; - if (CommonUtils.isEmpty(items)) { - vo.code = -1; - vo.message = "未找到小票模板内容"; - return vo; - } - - try { - for (SysPrinterPrintTicketResult.Item item : items) { - if (CommonUtils.isEmpty(item.printerInfo)) { - continue; - } - - const printer: SysPrinter = item.printerInfo; - if (printer == null) { - continue; - } - - if (Objects.requireNonNull(SysPrinterBrandEnum.getEnumByBrand(printer.brand)) == SysPrinterBrandEnum.YI_LIAN_YUN) { - const sdk: YlyPrinterSdk = getSdk(printer.openId, printer.apikey); - sdk.printIndex(printer.printerCode, item.content, String(item.originId)); - } - } - } catch (e) { - log.error(e.message); - vo.code = -1; - vo.message = e.message; - } - - return vo; + async printTicket(param: SysPrinterPrintTicketParamDto): Promise { + // TODO: 实现printTicket业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-scan-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-scan-service-impl.service.ts index 827fa863..059f9f71 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-scan-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-scan-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; @Injectable() export class CoreScanServiceImplService { @@ -13,25 +13,15 @@ export class CoreScanServiceImplService { * scan */ async scan(siteId: number, action: string, data: JSONObject, expire: number): Promise { - const key: string = RandomUtil.randomString(32); - data.set("status", "wait"); - data.set("is_scan", false); - data.set("action", action); - data.set("expire", DateUtils.timestampToString(Date.now() / 1000 + expire)); - cached.put("scan_" + key, data.toString(), expire); - return key; + // TODO: 实现scan业务逻辑 + return null; } /** * actionByScan */ async actionByScan(siteId: number, key: string, data: JSONObject): Promise { - const cache: string = cached.get("scan_" + key); - if (ObjectUtil.isNotNull(cache) && (cache && cache.length > 0)) { - const cacheData: Record = JsonUtils.parseObject(cache); - cacheData.set("is_scan", true); - cacheData = JsonModuleLoader.deepMerge(cacheData, data); - cached.put("scan_" + key, cacheData.toString()); - } + // TODO: 实现actionByScan业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-sys-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-sys-config-service-impl.service.ts index 30c67670..c802230f 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-sys-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-sys-config-service-impl.service.ts @@ -1,9 +1,9 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService, CommonUtils, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result, JsonUtils, RequestContextService } from '@wwjBoot'; import { SiteInfoVoDto } from '../../../../dtos/core/site/vo/site-info-vo.dto'; -import { SceneDomainVoDto } from '../../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../../entities/scene-domain-vo.entity'; import { SysWebsiteVoDto } from '../../../../dtos/admin/sys/vo/sys-website-vo.dto'; import { SysServiceVoDto } from '../../../../dtos/admin/sys/vo/sys-service-vo.dto'; import { SysWebsiteParamDto } from '../../../../dtos/admin/sys/param/sys-website-param.dto'; @@ -19,7 +19,6 @@ import { SysLoginConfigParamDto } from '../../../../dtos/admin/sys/param/sys-log @Injectable() export class CoreSysConfigServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, @@ -28,35 +27,16 @@ export class CoreSysConfigServiceImplService { * getWebSite */ async getWebSite(siteId: number): Promise { - const model: Site = this.siteRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).last("limit 1")); - if (!model) throw new BadRequestException("站点不存在"); - - const vo: SysWebsiteVo = new SysWebsiteVo(); - Object.assign(vo, model); - - const sysService: SysServiceVo = getService(siteId); - if (sysService != null) Object.assign(vo, sysService); - - return vo; + // TODO: 实现getWebSite业务逻辑 + return null; } /** * setWebSite */ - async setWebSite(siteId: number, configParam: SysWebsiteParam): Promise { - const model: Site = new Site(); - model.siteId = siteId; - Object.assign(model, configParam); - siteMapper.updateById(model); - this.coreSiteService.clearSiteCache(siteId); - - const service: Record = new Record(); - service.set("wechat_code", configParam.wechatCode); - service.set("enterprise_wechat", configParam.enterpriseWechat); - service.set("tel", configParam.tel); - service.set("site_login_logo", configParam.siteLoginLogo); - service.set("site_login_bg_img", configParam.siteLoginBgImg); - this.coreConfigService.config = siteId, "SERVICE_INFO", service; + async setWebSite(siteId: number, configParam: SysWebsiteParamDto): Promise { + // TODO: 实现setWebSite业务逻辑 + return null; } /** @@ -78,7 +58,7 @@ export class CoreSysConfigServiceImplService { /** * setCopyRight */ - async setCopyRight(siteId: number, configParam: SysCopyRightParam): Promise { + async setCopyRight(siteId: number, configParam: SysCopyRightParamDto): Promise { const json: Record = JsonUtils.parseObject(configParam); this.coreConfigService.config = this.requestContext.siteId, "COPYRIGHT", json; } @@ -94,25 +74,16 @@ export class CoreSysConfigServiceImplService { /** * setMap */ - async setMap(siteId: number, configParam: SysMapParam): Promise { - const json: Record = JsonUtils.parseObject(configParam); - this.coreConfigService.config = this.requestContext.siteId, "MAPKEY", json; - - if (RequestUtils.defaultSiteId() === siteId) { - this.mapKeyChange(configParam.key); - } + async setMap(siteId: number, configParam: SysMapParamDto): Promise { + // TODO: 实现setMap业务逻辑 + return null; } /** * removeComments */ async removeComments(json: string): Promise { - // 匹配多行注释的正则表达式 - const pattern: Pattern = Pattern.compile("/\\*.*?\\*/", Pattern.DOTALL); - const matcher: Matcher = pattern.matcher(json); - // 将匹配到的注释替换为空字符串 - const result: string = matcher.replaceAll(""); - return result; + // TODO: 实现removeComments业务逻辑 } /** @@ -126,7 +97,7 @@ export class CoreSysConfigServiceImplService { /** * setDeveloperToken */ - async setDeveloperToken(configParam: SysDeveloperTokenParam): Promise { + async setDeveloperToken(configParam: SysDeveloperTokenParamDto): Promise { const json: Record = JsonUtils.parseObject(configParam); this.coreConfigService.config = RequestUtils.defaultSiteId(, "DEVELOPER_TOKEN", json); } @@ -143,9 +114,8 @@ export class CoreSysConfigServiceImplService { * setLayout */ async setLayout(siteId: number, configParam: JSONObject): Promise { - const config: Record = this.getLayout(siteId); - config.set(configParam.getStr("key"), configParam.getStr("value")); - this.coreConfigService.config = siteId, "LAYOUT_SETTING", config; + // TODO: 实现setLayout业务逻辑 + return null; } /** @@ -160,9 +130,8 @@ export class CoreSysConfigServiceImplService { * setThemeColor */ async setThemeColor(siteId: number, configParam: JSONObject): Promise { - const config: Record = this.getThemeColor(siteId); - config.set(configParam.getStr("key"), configParam.getStr("value")); - this.coreConfigService.config = siteId, "THEMECOLOR_SETTING", config; + // TODO: 实现setThemeColor业务逻辑 + return null; } /** @@ -176,7 +145,7 @@ export class CoreSysConfigServiceImplService { /** * setLogin */ - async setLogin(siteId: number, configParam: SysLoginConfigParam): Promise { + async setLogin(siteId: number, configParam: SysLoginConfigParamDto): Promise { const json: Record = JsonUtils.parseObject(configParam); this.coreConfigService.config = this.requestContext.siteId, "admin_login", json; } @@ -185,16 +154,7 @@ export class CoreSysConfigServiceImplService { * getSceneDomain */ async getSceneDomain(siteId: number): Promise { - const wapDomain: string = CommonUtils.isNotEmpty(this.appConfig.wapDomain) ? this.appConfig.wapDomain.replace("#/$#", "") : RequestUtils.requestSecure + "://" + RequestUtils.requestDomain; - - const siteInfoVo: SiteInfoVo = this.coreSiteService.getSiteCache(siteId); - const siteDomain: string = siteInfoVo.siteDomain; - if ((siteDomain && siteDomain.length > 0)) siteDomain = RequestUtils.requestSecure + "://" + siteDomain; - - const sceneDomainVo: SceneDomainVo = new SceneDomainVo(); - sceneDomainVo.wapDomain = wapDomain; - sceneDomainVo.wapUrl = CommonUtils.isNotEmpty(siteDomain ? siteDomain + "/wap" : wapDomain + "/wap/" + siteId); - sceneDomainVo.webUrl = CommonUtils.isNotEmpty(siteDomain ? siteDomain + "/web" : wapDomain + "/web/" + siteId); - return sceneDomainVo; + // TODO: 实现getSceneDomain业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-upload-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-upload-service-impl.service.ts index 05c18d59..fd4af4ad 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-upload-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/sys/impl/core-upload-service-impl.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { AttachmentUploadParamDto } from '../../../../dtos/admin/sys/param/attachment-upload-param.dto'; import { AttachmentUploadVoDto } from '../../../../dtos/admin/sys/vo/attachment-upload-vo.dto'; -import { UploadModelResultDto } from '../../../../entities/upload-model-result.entity'; +import { UploadModelResult } from '../../../../entities/upload-model-result.entity'; @Injectable() export class CoreUploadServiceImplService { @@ -15,84 +15,23 @@ export class CoreUploadServiceImplService { /** * upload */ - async upload(attachmentUploadParam: AttachmentUploadParam): Promise { - // 上传相对目录 - attachmentUploadParam.dir = this.rootPath + "/" + attachmentUploadParam.dir; - // 校验上传文件 - this.validate(attachmentUploadParam); - // 生成新的文件名 - this.generateNewName(attachmentUploadParam); - - const configObject: Record = null; - // 获取站点的上传配置 - if (CommonUtils.isNotEmpty(attachmentUploadParam.storageType)) { - configObject = this.coreStorageService.getStorageByType(attachmentUploadParam.siteId, attachmentUploadParam.storageType); - } else { - configObject = this.coreStorageService.getDefaultStorage(attachmentUploadParam.siteId); - if (configObject == null || StringUtil.isEmpty(configObject.getStr("storage_type"))){ - configObject = this.coreStorageService.getDefaultStorage(RequestUtils.defaultSiteId()); - } - } - - // 根据配置初始化 - const uploadProvider: IUploadProvider = UploadProviderFactory.createAndInit(configObject.getStr("storage_type", StorageEnum.LOCAL.code), configObject.getRecord("config_params")); - // 构建上传参数 - const uploadModel: UploadModel = new UploadModel(); - uploadModel.uploadFile = attachmentUploadParam.file; - uploadModel.uploadType = attachmentUploadParam.attType; - uploadModel.uploadFilePath = attachmentUploadParam.dir; - uploadModel.uploadFileName = attachmentUploadParam.newFilename; - // 上传操作 - const uploadModelResult: UploadModelResult = uploadProvider.upload(uploadModel); - // Service返回结果 - const attachmentUploadVo: AttachmentUploadVo = new AttachmentUploadVo(); - // 是否上传到相册 - if (attachmentUploadParam.isAttachment === 1) { - const newSysAttachment: SysAttachment = this.buildSysAttachment(attachmentUploadParam, uploadModelResult); - newSysAttachment.url = uploadProvider.getAccessUrl(uploadModelResult.accessUrl); - this.sysAttachmentRepository.save(newSysAttachment); - attachmentUploadVo.url = uploadProvider.getAccessUrl(uploadModelResult.accessUrl); - attachmentUploadVo.attId = newSysAttachment.attId; - } else { - attachmentUploadVo.url = uploadProvider.getAccessUrl(uploadModelResult.accessUrl); - } - return attachmentUploadVo; + async upload(attachmentUploadParam: AttachmentUploadParamDto): Promise { + // TODO: 实现upload业务逻辑 + return null; } /** * delete */ async delete(siteId: number, storageType: string, path: string): Promise { - // 获取站点的上传配置 - const coreConfigService: ICoreConfigService = SpringContext.bean(ICoreConfigService.class); - const rootRecord: Record = this.coreConfigService.getConfigValue(siteId, "STORAGE"); - const defaultValue: string = storageType; - const configObject: Record = rootRecord.getRecord(defaultValue); - // 根据配置初始化 - const uploadProvider: IUploadProvider = UploadProviderFactory.createAndInit(defaultValue, configObject); - const deleteModel: DeleteModel = new DeleteModel(); - deleteModel.filePath = path; - const deleteModelResult: DeleteModelResult = uploadProvider.delete(deleteModel); - if (deleteModelResult.isResult()) { - // 删除成功 -> 忽略 - } + // TODO: 实现delete业务逻辑 } /** * thumb */ async thumb(siteId: number, path: string, type: string): Promise { - // 获取站点的上传配置 - const coreConfigService: ICoreConfigService = SpringContext.bean(ICoreConfigService.class); - const rootRecord: Record = this.coreConfigService.getConfigValue(siteId, "STORAGE"); - const defaultValue: string = rootRecord.getStr("default", StorageEnum.LOCAL.code); - const configObject: Record = rootRecord.getRecord(defaultValue); - // 根据配置初始化 - const uploadProvider: IUploadProvider = UploadProviderFactory.createAndInit(defaultValue, configObject); - - const model: ThumbModel = new ThumbModel(); - model.type = type; - model.filePath = path; - return uploadProvider.thumb(model); + // TODO: 实现thumb业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-base64-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-base64-service-impl.service.ts index 4fc2c4c3..426c02d4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-base64-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-base64-service-impl.service.ts @@ -13,18 +13,7 @@ export class CoreBase64ServiceImplService { * image */ async image(content: string, siteId: number): Promise { - // 获取站点的上传配置 - const coreConfigService: ICoreConfigService = SpringContext.bean(ICoreConfigService.class); - const rootRecord: Record = this.coreConfigService.getConfigValue(siteId, "STORAGE"); - const defaultValue: string = rootRecord.getStr("default", StorageEnum.LOCAL.code); - const configObject: Record = rootRecord.getRecord(defaultValue); - // 根据配置初始化 - const uploadProvider: IUploadProvider = UploadProviderFactory.createAndInit(defaultValue, configObject); - - const base64Model: Base64Model = new Base64Model(); - base64Model.content = content; - base64Model.uploadFilePath = "attachment/image/" + siteId + "/" + DateFormatUtils.uploadFormat + "/"; - base64Model.uploadFileName = SecureUtil.md5(content + ".jpg"); - return uploadProvider.getAccessUrl(uploadProvider.base64(base64Model)); + // TODO: 实现image业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-fetch-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-fetch-service-impl.service.ts index 195af10b..845a9d34 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-fetch-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-fetch-service-impl.service.ts @@ -13,21 +13,7 @@ export class CoreFetchServiceImplService { * image */ async image(url: string, siteId: number): Promise { - // 获取站点的上传配置 - const coreConfigService: ICoreConfigService = SpringContext.bean(ICoreConfigService.class); - const rootRecord: Record = this.coreConfigService.getConfigValue(siteId, "STORAGE"); - const defaultValue: string = rootRecord.getStr("default", StorageEnum.LOCAL.code); - const configObject: Record = rootRecord.getRecord(defaultValue); - // 根据配置初始化 - const uploadProvider: IUploadProvider = UploadProviderFactory.createAndInit(defaultValue, configObject); - - const ext: string = ObjectUtil.defaultIfEmpty(url.split("\\.")[1], "jpg"); - - const fetchModel: FetchModel = new FetchModel(); - fetchModel.url = url; - fetchModel.uploadFilePath = "attachment/image/" + siteId + "/" + DateFormatUtils.uploadFormat + "/"; - fetchModel.uploadFileName = SecureUtil.md5(url + "." + ext); - - return uploadProvider.getAccessUrl(uploadProvider.fetch(fetchModel)); + // TODO: 实现image业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-storage-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-storage-service-impl.service.ts index 212ed226..2e035dc9 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-storage-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/upload/impl/core-storage-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { CoreStorAgeConfigVoDto } from '../../../../dtos/core/upload/vo/core-stor-age-config-vo.dto'; @Injectable() @@ -14,81 +14,31 @@ export class CoreStorageServiceImplService { * getStorageList */ async getStorageList(siteId: number): Promise { - /** - * 获取配置 - */ - const storageConfig: Record = getStorageConfig(siteId); - - const storageTypeList: Record = UploadLoader.type; - const coreStorAgeConfigVoList: CoreStorAgeConfigVo[] = []; - for (const key of storageTypeList.keySet()) { - const storageValues: Record = JsonUtils.parseObject(storageTypeList.get(key)); - const coreStorAgeConfigVo: CoreStorAgeConfigVo = new CoreStorAgeConfigVo(); - coreStorAgeConfigVo.storageType = key; - coreStorAgeConfigVo.isUse = key === storageConfig.get("default" ? StorageEnum.ON.code : StorageEnum.OFF.code); - coreStorAgeConfigVo.name = storageValues.get("name".toString()); - coreStorAgeConfigVo.component = storageValues.get("component".toString()); - const params: Record = new Record(); - if (ObjectUtil.isNotNull(storageValues.get("params"))) { - const valuesParams: Record = JsonUtils.parseObject(storageValues.get("params")); - const configParams: Record = new Record(); - if (ObjectUtil.isNotNull(storageConfig.get(key))) { - configParams = JsonUtils.parseObject(storageConfig.get(key)); - } - for (const paramsKey of valuesParams.keySet()) { - const itemParam: Record = new Record(); - const paramsValues: string = valuesParams.get(paramsKey).toString(); - itemParam.set("name", paramsValues); - itemParam.set("value", configParams.get(paramsKey)); - params.set(paramsKey, itemParam); - } - params.set("config_params", configParams); - } - coreStorAgeConfigVo.params = params; - coreStorAgeConfigVoList.push(coreStorAgeConfigVo); - } - return coreStorAgeConfigVoList; + // TODO: 实现getStorageList业务逻辑 + return null; } /** * getStorageConfig */ async getStorageConfig(siteId: number): Promise { - const jsonObject: Record = this.coreConfigService.getConfigValue(siteId, "STORAGE"); - if (ObjectUtil.isNull(jsonObject) || CommonUtils.isEmpty(jsonObject)) { - jsonObject = new Record(); - jsonObject.set("default", FileEnum.LOCAL.code); - } - return jsonObject; + // TODO: 实现getStorageConfig业务逻辑 + return null; } /** * getDefaultStorage */ async getDefaultStorage(siteId: number): Promise { - const storageList: CoreStorAgeConfigVo[] = this.getStorageList(siteId); - const config: Record = new Record(); - for (const item of storageList) { - if (item.isUse === StorageEnum.ON.code) { - config = item.params; - config.put("storage_type", item.storageType); - } - } - return config; + // TODO: 实现getDefaultStorage业务逻辑 + return null; } /** * getStorageByType */ async getStorageByType(siteId: number, StorageType: string): Promise { - const storageList: CoreStorAgeConfigVo[] = this.getStorageList(siteId); - const config: Record = new Record(); - for (const item of storageList) { - if (item.isUse === StorageEnum.ON.code && item.storageType === StorageType) { - config = item.params; - config.put("storage_type", item.storageType); - } - } - return config; + // TODO: 实现getStorageByType业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/user/impl/core-user-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/user/impl/core-user-service-impl.service.ts index cf8c2dcc..3aefb53d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/user/impl/core-user-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/user/impl/core-user-service-impl.service.ts @@ -1,13 +1,12 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, RequestContextService } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { UserInfoDtoDto } from '../../../../dtos/core/user/dto/user-info.dto'; @Injectable() export class CoreUserServiceImplService { constructor( - private readonly requestContext: RequestContextService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} @@ -15,10 +14,7 @@ export class CoreUserServiceImplService { * getUserInfo */ async getUserInfo(uid: number): Promise { - const sysUser: SysUser = sysUserMapper.selectById(uid); - const result: UserInfoDto = new UserInfoDto(); - Object.assign(result, sysUser); - result.role = this.userRoleService.getUserRole(this.requestContext.siteId, uid); - return result; + // TODO: 实现getUserInfo业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-cloud-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-cloud-service-impl.service.ts index f0705deb..ddac9e03 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-cloud-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-cloud-service-impl.service.ts @@ -1,109 +1,36 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, AppConfigService } from '@wwjBoot'; -import * as fs from 'fs'; -import { HttpResponseDto } from '../dtos/http-response.dto'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { WeappUploadParamDto } from '../../../../dtos/core/weapp/param/weapp-upload-param.dto'; -import { InputStreamDto } from '../dtos/input-stream.dto'; @Injectable() export class CoreWeappCloudServiceImplService { constructor( - private readonly appConfig: AppConfigService, private readonly eventBus: EventBus, private readonly queueService: QueueService, ) {} /** * uploadWeapp */ - async uploadWeapp(param: WeappUploadParam): Promise { - const taskKey: string = String(Date.now() / 1000); - - const tempDir: string = this.appConfig.webRootDownRuntime + "weapp_build/" + taskKey + "/"; - const packageDir: string = tempDir + "package/"; - FileTools.createDirs(packageDir); - - // 整理编译文件 - const compileAddon: Addon = this.addonRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).like("compile", "weapp").last("limit 1")); - if (compileAddon == null) { - handleUniapp(packageDir + "uni-app/", param); - } else { - handleCompileWeapp(packageDir + "uni-app/", compileAddon.key, param); - } - - try { - fs.copyFileSync(this.appConfig.webRootDownResource + param.uploadPrivateKey, packageDir + "private.key"); - } catch (e) { - throw new BadRequestException(e.message); - } - - const zipFile: string = ZipUtil.zip(packageDir, tempDir + "build.zip"); - - const instance: NiucloudUtils = NiucloudUtils.instance; - - const actionQuery: Record = new const query: Record<>(); - actionQuery.put("data[product_key]", instance.productKey); - const actionToken: Record = this.niucloudService.getActionToken("weappbuild", actionQuery); - - Record = {}; - query.put("authorize_code", instance.code); - query.put("compile", compileAddon != null ? 1 : 0); - query.put("appid", param.appId); - query.put("version", param.version); - query.put("desc", param.desc); - query.put("do", 1); - query.put("timestamp", taskKey); - query.put("token", actionToken == null ? "" : actionToken.getStr("token")); - - const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/weapp").query(query) - .func(i => { - i.form("file", zipFile, "build.zip"); - }) - .method(Method.POST).execute(); - - const res: Record = JsonUtils.parseObject(response.body()); - - if (!res.getInt("code", 0).equals(1)) throw new BadRequestException(res.getStr("msg")); - - return taskKey; + async uploadWeapp(param: WeappUploadParamDto): Promise { + // TODO: 实现uploadWeapp业务逻辑 + return null; } /** * getWeappCompileLog */ async getWeappCompileLog(key: string): Promise { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("authorize_code", instance.code); - query.put("timestamp", key); - - const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/get_weapp_logs").query(query).method(Method.GET).execute(); - try { - const res: Record = JsonUtils.parseObject(response.body()); - return res; - } catch (e) { - return null; - } + // TODO: 实现getWeappCompileLog业务逻辑 + return null; } /** * getWeappPreviewImage */ async getWeappPreviewImage(): Promise { - try { - const instance: NiucloudUtils = NiucloudUtils.instance; - - const query: Record = {}; - query.put("authorize_code", instance.code); - - const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/get_weapp_preview").query(query).execute(); - if (JSONUtil.isJson(response.body()) && JsonUtils.parseObject(response.body()).getInt("code").equals("0")) return ""; - if (checkImageType(response.bodyStream()) === "unknown") return ""; - return "data:image/"+ checkImageType(response.bodyStream()) +";base64," + Base64.encoder.encodeToString(response.bodyBytes()); - } catch (e) { - return ""; - } + // TODO: 实现getWeappPreviewImage业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-config-service-impl.service.ts index 29270517..46139a04 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-config-service-impl.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; import { WeappConfigParamDto } from '../../../../dtos/core/weapp/param/weapp-config-param.dto'; import { WeappConfigVoDto } from '../../../../dtos/core/weapp/vo/weapp-config-vo.dto'; import { WechatConfigParamDto } from '../../../../dtos/core/wechat/param/wechat-config-param.dto'; @@ -19,19 +19,14 @@ export class CoreWeappConfigServiceImplService { * getWeappConfig */ async getWeappConfig(siteId: number): Promise { - const coreSysConfigVo: CoreSysConfigVo = this.coreConfigService.getConfig(siteId, ConfigKeyEnum.basename(WEAPP)); - const vo: WeappConfigVo = new WeappConfigVo(); - if(ObjectUtil.isNotNull(coreSysConfigVo.valueJson)) - { - vo = Object.assign(new WeappConfigVo(), coreSysConfigVo.valueJson) /* TODO: 检查WeappConfigVo构造函数 */; - } - return vo; + // TODO: 实现getWeappConfig业务逻辑 + return null; } /** * setWeappConfig */ - async setWeappConfig(siteId: number, weappConfigParam: WeappConfigParam): Promise { + async setWeappConfig(siteId: number, weappConfigParam: WeappConfigParamDto): Promise { this.coreConfigService.config = siteId, ConfigKeyEnum.basename(WEAPP, JsonUtils.parseObject(weappConfigParam)); } @@ -39,9 +34,8 @@ export class CoreWeappConfigServiceImplService { * getWeappAuthorizationInfo */ async getWeappAuthorizationInfo(siteId: number): Promise { - const config: Record = this.coreConfigService.getConfigValue(siteId, ConfigKeyEnum.basename(WEAPP_AUTHORIZATION_INFO)); - if (config == null) return null; - return Object.assign(new WxOpenAuthorizerInfoResult(), config) /* TODO: 检查WxOpenAuthorizerInfoResult构造函数 */; + // TODO: 实现getWeappAuthorizationInfo业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-delivery-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-delivery-service-impl.service.ts index 6dc95903..fd496794 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-delivery-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-delivery-service-impl.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, JsonUtils, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { WxMaOrderShippingInfoBaseResponseDto } from '../dtos/wx-ma-order-shipping-info-base-response.dto'; import { WxMaOrderShippingIsTradeManagedResponseDto } from '../dtos/wx-ma-order-shipping-is-trade-managed-response.dto'; import { WeappUploadShippingParamDto } from '../../../../dtos/core/weapp/param/weapp-upload-shipping-param.dto'; @@ -18,137 +18,24 @@ export class CoreWeappDeliveryServiceImplService { * getIsTradeManaged */ async getIsTradeManaged(siteId: number): Promise { - const vo: IsTradeManagedVo = new IsTradeManagedVo(); - try { - const miniapp: WxMaService = WechatUtils.miniapp(siteId); - const appid: string = miniapp.getWxMaConfig().appid; - const res: WxMaOrderShippingIsTradeManagedResponse = miniapp.wxMaOrderShippingService.isTradeManaged(appid); - if (!res.tradeManaged) { - console.log("小程序未开通发货信息管理服务" + res.errMsg); - } - vo.isTradeManaged = res.tradeManaged; - } catch (e) { - } - return vo; + // TODO: 实现getIsTradeManaged业务逻辑 + return null; } /** * setMsgJumpPath */ async setMsgJumpPath(siteId: number, type: string): Promise { - try { - const config: Record = getConfig(siteId, type); - if (CommonUtils.isEmpty(config)) { - const path: string = "app/pages/weapp/order_shipping"; - const response: WxMaOrderShippingInfoBaseResponse = WechatUtils.miniapp(siteId).wxMaOrderShippingService.msgJumpPath = path; - if (response.errCode == 0) { - setConfig(siteId, type, path); - } - return response; - } - - const response: WxMaOrderShippingInfoBaseResponse = new WxMaOrderShippingInfoBaseResponse(); - response.errCode = 0; - return response; - } catch (e) { - const response: WxMaOrderShippingInfoBaseResponse = new WxMaOrderShippingInfoBaseResponse(); - response.errCode = 1; - response.errMsg = e.message; - return response; - } + // TODO: 实现setMsgJumpPath业务逻辑 + return null; } /** * uploadShippingInfo */ - async uploadShippingInfo(siteId: number, shippingData: WeappUploadShippingParam): Promise { - try { - log.info("PINTUAN-开始上传微信发货信息 - siteId: {}, data: {}", siteId, shippingData); - - // 获取微信支付配置 - const payChannel: PayChannel = this.payChannelRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }) - .eq(PayChannel::getSiteId, siteId) - .eq(PayChannel::getType, CertEnum.WECHATPAY.code) - .eq(PayChannel::getChannel, CertEnum.WEAPP.code)); - - const mchId: string = ""; - if (payChannel != null && !CommonUtils.isEmpty(payChannel.config)) { - const config: string = payChannel.config; - const jsonObject: Record = JsonUtils.parseObject(config); - mchId = jsonObject.getStr("mch_id"); - } - - // 构建微信发货信息对象 - const shippingInfo: WxMaOrderShippingInfoUploadRequest = new WxMaOrderShippingInfoUploadRequest(); - - // 订单信息 - const orderKey: OrderKeyBean = new OrderKeyBean(); - orderKey.orderNumberType = 1; - orderKey.mchId = mchId; - orderKey.outTradeNo = shippingData.outTradeNo; - shippingInfo.orderKey = orderKey; - - // 物流信息 - shippingInfo.logisticsType = shippingData.logisticsType; - shippingInfo.deliveryMode = shippingData.deliveryMode; - - // 处理发货列表 - const wxShippingList: ShippingListBean[] = []; - - for (WeappUploadShippingParam.UploadShippingParam item : shippingData.shippingList) { - const shipping: ShippingListBean = new ShippingListBean(); - Object.assign(shipping, item); - - WeappUploadShippingParam.const contact: ContactInfo = item.contact; - if (contact != null) { - const wxContact: ContactBean = new ContactBean(); - Object.assign(wxContact, contact); - shipping.contact = wxContact; - } - - wxShippingList.push(shipping); - } - shippingInfo.shippingList = wxShippingList; - - // 上传时间 - shippingInfo.uploadTime = OffsetDateTime.now(.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)); - - // 付款人信息 - const payer: PayerBean = new PayerBean(); - payer.openid = shippingData.weappOpenid; - shippingInfo.payer = payer; - - // 发货完成标识 - shippingInfo.isAllDelivered = shippingData.isAllDelivered; - - log.info("PINTUAN-发货信息录入接口参数: {}", JSONUtil.toJsonStr(shippingInfo)); - - // 微信订单录入有时差,延时3秒执行 - try { - Thread.sleep(3000); - } catch (e) { - Thread.currentThread().interrupt(); - } - - // 使用微信SDK调用API - const response: WxMaOrderShippingInfoBaseResponse = WechatUtils.miniapp(siteId) - .getWxMaOrderShippingService() - .upload(shippingInfo); - - log.info("PINTUAN-发货信息录入接口返回结果: {}", JSONUtil.toJsonStr(response)); - - return response; - - } catch (e) { - const errorMsg: string = String.format("uploadShippingInfo报错: %s, File: %s, line: %d", - e.message, e.stackTrace[0].getFileName(), e.stackTrace[0].getLineNumber()); - log.error(errorMsg, e); - - const errorResult: WxMaOrderShippingInfoBaseResponse = new WxMaOrderShippingInfoBaseResponse(); - errorResult.errCode = 1; - errorResult.errMsg = errorMsg; - return errorResult; - } + async uploadShippingInfo(siteId: number, shippingData: WeappUploadShippingParamDto): Promise { + // TODO: 实现uploadShippingInfo业务逻辑 + return null; } /** diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-service-impl.service.ts index 87f1f3df..3b00dfb3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/weapp/impl/core-weapp-service-impl.service.ts @@ -1,4 +1,4 @@ -import { Injectable, BadRequestException } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; @@ -14,50 +14,15 @@ export class CoreWeappServiceImplService { * qrcodeBytes */ async qrcodeBytes(siteId: number, page: string, param: Map, width: number): Promise { - try { - const scene: string[] = []; - for (const key of data.keySet()) { - scene.push(key + "-" + data.get(key).toString()); - } - - return WechatUtils.miniapp(siteId).qrcodeService.createWxaCodeUnlimitBytes( - String.join("&", scene), - page, - false, - "release", - width, - false, - null, - false - ); - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现qrcodeBytes业务逻辑 + return null; } /** * qrcodeFile */ async qrcodeFile(siteId: number, filePath: string, page: string, param: Map, width: number): Promise { - try { - const scene: string[] = []; - for (const key of data.keySet()) { - scene.push(key + "-" + data.get(key).toString()); - } - - return WechatUtils.miniapp(siteId).qrcodeService.createWxaCodeUnlimit( - String.join("&", scene), - page, - filePath, - false, - "release", - width, - false, - null, - false - ); - } catch (e) { - throw new BadRequestException(e.message); - } + // TODO: 实现qrcodeFile业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-config-service-impl.service.ts index 2511738f..447524ce 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-config-service-impl.service.ts @@ -3,7 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result, JsonUtils } from '@wwjBoot'; import { SysCopyRightVoDto } from '../../../../dtos/admin/sys/vo/sys-copy-right-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; import { WechatConfigParamDto } from '../../../../dtos/core/wechat/param/wechat-config-param.dto'; import { WechatConfigVoDto } from '../../../../dtos/core/wechat/vo/wechat-config-vo.dto'; import { WxOpenAuthorizerInfoResultDto } from '../dtos/wx-open-authorizer-info-result.dto'; @@ -18,19 +18,14 @@ export class CoreWechatConfigServiceImplService { * getWechatConfig */ async getWechatConfig(siteId: number): Promise { - const coreSysConfigVo: CoreSysConfigVo = this.coreConfigService.getConfig(siteId, ConfigKeyEnum.basename(WECHAT)); - const vo: WechatConfigVo = new WechatConfigVo(); - if(ObjectUtil.isNotNull(coreSysConfigVo.valueJson)) - { - vo = Object.assign(new WechatConfigVo(), coreSysConfigVo.valueJson) /* TODO: 检查WechatConfigVo构造函数 */; - } - return vo; + // TODO: 实现getWechatConfig业务逻辑 + return null; } /** * setWechatConfig */ - async setWechatConfig(siteId: number, wechatConfigParam: WechatConfigParam): Promise { + async setWechatConfig(siteId: number, wechatConfigParam: WechatConfigParamDto): Promise { this.coreConfigService.config = siteId, ConfigKeyEnum.basename(WECHAT, JsonUtils.parseObject(wechatConfigParam)); } @@ -45,8 +40,7 @@ export class CoreWechatConfigServiceImplService { * getWechatAuthorizationInfo */ async getWechatAuthorizationInfo(siteId: number): Promise { - const config: Record = this.coreConfigService.getConfigValue(siteId, ConfigKeyEnum.basename(WECHAT_AUTHORIZATION_INFO)); - if (config == null) return null; - return Object.assign(new WxOpenAuthorizerInfoResult(), config) /* TODO: 检查WxOpenAuthorizerInfoResult构造函数 */; + // TODO: 实现getWechatAuthorizationInfo业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-reply-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-reply-service-impl.service.ts index facb80b5..06e1e8f0 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-reply-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wechat/impl/core-wechat-reply-service-impl.service.ts @@ -3,7 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { QueueService, EventBus, Result } from '@wwjBoot'; import { WechatReplyInfoVoDto } from '../../../../dtos/admin/wechat/vo/wechat-reply-info-vo.dto'; -import { CoreSysConfigVoDto } from '../../../../entities/core-sys-config-vo.entity'; +import { CoreSysConfigVo } from '../../../../entities/core-sys-config-vo.entity'; import { WechatConfigParamDto } from '../../../../dtos/core/wechat/param/wechat-config-param.dto'; import { WechatConfigVoDto } from '../../../../dtos/core/wechat/vo/wechat-config-vo.dto'; @@ -17,27 +17,15 @@ export class CoreWechatReplyServiceImplService { * getDefault */ async getDefault(siteId: number): Promise { - const model: WechatReply = this.wechatReplyRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", siteId)); - - if (!ObjectUtil.isNotNull(model)) return null; - - const vo: WechatReplyInfoVo = new WechatReplyInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现getDefault业务逻辑 + return null; } /** * getSubscribe */ async getSubscribe(siteId: number): Promise { - const model: WechatReply = this.wechatReplyRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })) - .eq("site_id", siteId)); - - if (!ObjectUtil.isNotNull(model)) return null; - - const vo: WechatReplyInfoVo = new WechatReplyInfoVo(); - Object.assign(vo, model); - return vo; + // TODO: 实现getSubscribe业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-service-impl.service.ts index a869a236..a3e1c85c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-service-impl.service.ts @@ -13,8 +13,7 @@ export class CoreOplatformServiceImplService { * getSiteIdByAuthorizerAppid */ async getSiteIdByAuthorizerAppid(appid: string): Promise { - const configKey: string[] = new String[]{ ConfigKeyEnum.basename(WECHAT), ConfigKeyEnum.basename(WEAPP), ConfigKeyEnum.basename(WEAPP_AUTHORIZATION_INFO), ConfigKeyEnum.basename(WECHAT_AUTHORIZATION_INFO)}; - const config: SysConfig = this.sysConfigRepository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ }).in("config_key", configKey).last("limit 1")); - return config == null ? 0 : config.siteId; + // TODO: 实现getSiteIdByAuthorizerAppid业务逻辑 + return null; } } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-static-config-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-static-config-service-impl.service.ts index a5a5fc78..94a42373 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-static-config-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/core/wxoplatform/impl/core-oplatform-static-config-service-impl.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { QueueService, EventBus, Result, CommonUtils } from '@wwjBoot'; +import { QueueService, EventBus, Result } from '@wwjBoot'; import { OplatformConfigParamDto } from '../../../../dtos/admin/wxoplatform/param/oplatform-config-param.dto'; import { OplatformConfigVoDto } from '../../../../dtos/admin/wxoplatform/vo/oplatform-config-vo.dto'; -import { SceneDomainVoDto } from '../../../../entities/scene-domain-vo.entity'; +import { SceneDomainVo } from '../../../../entities/scene-domain-vo.entity'; import { CoreOplatformStaticConfigVoDto } from '../../../../dtos/core/wxoplatform/vo/core-oplatform-static-config-vo.dto'; @Injectable() @@ -17,40 +17,23 @@ export class CoreOplatformStaticConfigServiceImplService { * getOplatformStaticInfo */ async getOplatformStaticInfo(): Promise { - const coreOplatformStaticConfigVo: CoreOplatformStaticConfigVo = new CoreOplatformStaticConfigVo(); - coreOplatformStaticConfigVo.authServeUrl = RequestUtils.getDomain(true + "/adminapi/wxoplatform/server"); - coreOplatformStaticConfigVo.messageServeUrl = RequestUtils.getDomain(true + "/adminapi/wxoplatform/message/$APPID$"); - coreOplatformStaticConfigVo.authLaunchDomain = RequestUtils.getDomain(false); - coreOplatformStaticConfigVo.wechatAuthDomain = RequestUtils.getDomain(false); - try { - coreOplatformStaticConfigVo.uploadIp = InetAddress.getByName("java.oss.niucloud.com".hostAddress); - } catch (e) { - coreOplatformStaticConfigVo.uploadIp = ""; - } - return coreOplatformStaticConfigVo; + // TODO: 实现getOplatformStaticInfo业务逻辑 + return null; } /** * setOplatformConfig */ - async setOplatformConfig(oplatformConfigParam: OplatformConfigParam): Promise { - const jsonObject: Record = new Record(); - jsonObject.set("app_id", oplatformConfigParam.appId); - jsonObject.set("app_secret", oplatformConfigParam.appSecret); - jsonObject.set("token", oplatformConfigParam.token); - jsonObject.set("aes_key", oplatformConfigParam.aesKey); - jsonObject.set("develop_app_id", oplatformConfigParam.developAppId); - jsonObject.set("develop_upload_private_key", oplatformConfigParam.developUploadPrivateKey); - this.coreConfigService.config = RequestUtils.defaultSiteId(, ConfigKeyEnum.basename(WXOPLATFORM), jsonObject); + async setOplatformConfig(oplatformConfigParam: OplatformConfigParamDto): Promise { + // TODO: 实现setOplatformConfig业务逻辑 + return null; } /** * getWxOplatformConfig */ async getWxOplatformConfig(): Promise { - const vo: OplatformConfigVo = new OplatformConfigVo(); - const config: Record = this.coreConfigService.getConfigValue(RequestUtils.defaultSiteId(), ConfigKeyEnum.basename(WXOPLATFORM)); - if (CommonUtils.isNotEmpty(config)) vo = Object.assign(new OplatformConfigVo(), config) /* TODO: 检查OplatformConfigVo构造函数 */; - return vo; + // TODO: 实现getWxOplatformConfig业务逻辑 + return null; } }