From d4b267106e1970094ef1e20d9b96acd579d997c2 Mon Sep 17 00:00:00 2001 From: tikkhun Date: Thu, 29 Jan 2026 15:16:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5):?= =?UTF-8?q?=20=E6=94=B9=E8=BF=9B=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=92=8C=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在订单控制器中增强错误信息显示,包含具体错误消息 调整订单服务中日志记录的顺序,使其在循环前执行 --- src/controller/order.controller.ts | 3 +-- src/service/order.service.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/controller/order.controller.ts b/src/controller/order.controller.ts index a11cf6d..dedc87f 100644 --- a/src/controller/order.controller.ts +++ b/src/controller/order.controller.ts @@ -42,8 +42,7 @@ export class OrderController { const result = await this.orderService.syncOrders(siteId, params); return successResponse(result); } catch (error) { - console.log(error); - return errorResponse('同步失败'); + return errorResponse(`同步失败,${error?.message || '未知错误'}`); } } diff --git a/src/service/order.service.ts b/src/service/order.service.ts index 477b004..7f3bc0d 100644 --- a/src/service/order.service.ts +++ b/src/service/order.service.ts @@ -133,7 +133,7 @@ export class OrderService { async syncOrders(siteId: number, params: Record = {}): Promise { // 调用 WooCommerce API 获取订单 const result = await (await this.siteApiService.getAdapter(siteId)).getAllOrders(params); - + this.logger.info('开始进入循环同步订单', result.length, '个订单') // 初始化同步结果对象 const syncResult: SyncOperationResult = { total: result.length, @@ -143,7 +143,6 @@ export class OrderService { updated: 0, errors: [] }; - this.logger.info('开始进入循环同步订单', result.length, '个订单') // 遍历每个订单进行同步 for (const order of result) { try { -- 2.40.1 From e94805c640b379b25f8037e859f0473b626238e8 Mon Sep 17 00:00:00 2001 From: tikkhun Date: Thu, 29 Jan 2026 15:41:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=97=A5=E5=BF=97=E5=B9=B6=E4=BC=98=E5=8C=96=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 清理产品变体映射中的调试日志 优化产品查询中的条件语法 --- src/adapter/shopyy.adapter.ts | 1 - src/service/product.service.ts | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/adapter/shopyy.adapter.ts b/src/adapter/shopyy.adapter.ts index 6b373c9..74f4a12 100644 --- a/src/adapter/shopyy.adapter.ts +++ b/src/adapter/shopyy.adapter.ts @@ -1126,7 +1126,6 @@ export class ShopyyAdapter implements ISiteAdapter { // ========== 产品变体映射方法 ========== mapPlatformToUnifiedVariation(variant: ShopyyVariant): UnifiedProductVariationDTO { // 映射变体 - console.log('ivarianttem', variant) return { id: variant.id, name: variant.title || '', diff --git a/src/service/product.service.ts b/src/service/product.service.ts index c81959b..d894f18 100644 --- a/src/service/product.service.ts +++ b/src/service/product.service.ts @@ -2138,7 +2138,6 @@ export class ProductService { return product; } - // 根据站点SKU查询产品 async getProductBySiteSku(siteSku: string, site?: Site): Promise { // 使用查询构建器来正确查询关联表 @@ -2150,7 +2149,7 @@ export class ProductService { .leftJoinAndSelect('product.components', 'components') .leftJoinAndSelect('product.siteSkus', 'siteSku') .where('siteSku.sku LIKE :siteSku', { siteSku: `%${siteSku}%` }) - .orWhere('product.sku = :siteSku', { siteSku }); + .orWhere('product.sku = :siteSku', { siteSku }) if (site) { queryBuilder.orWhere('product.sku = :processedSku', { -- 2.40.1 From 6b782a9d6eb62fa1287382cb0ec492e2a64a198b Mon Sep 17 00:00:00 2001 From: tikkhun Date: Thu, 29 Jan 2026 17:57:07 +0800 Subject: [PATCH 3/3] =?UTF-8?q?refactor(service):=20=E5=B0=86=20console.lo?= =?UTF-8?q?g=20=E6=9B=BF=E6=8D=A2=E4=B8=BA=20logger=20=E5=B9=B6=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E6=97=A5=E5=BF=97=E7=BA=A7=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用 logger 替代 console.log 以统一日志管理 将批量导入结果的日志级别从 debug 调整为 info --- src/adapter/shopyy.adapter.ts | 1 - src/controller/area.controller.ts | 6 ------ src/controller/order.controller.ts | 1 - src/service/product.service.ts | 7 ++++--- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/adapter/shopyy.adapter.ts b/src/adapter/shopyy.adapter.ts index 74f4a12..e3e0bda 100644 --- a/src/adapter/shopyy.adapter.ts +++ b/src/adapter/shopyy.adapter.ts @@ -996,7 +996,6 @@ export class ShopyyAdapter implements ISiteAdapter { private async getProductBySku(sku: string): Promise { // 使用Shopyy API的搜索功能通过sku查询产品 const response = await this.getAllProducts({ where: { sku } }); - console.log('getProductBySku', response) const product = response?.[0] if (!product) { throw new Error(`未找到sku为${sku}的产品`); diff --git a/src/controller/area.controller.ts b/src/controller/area.controller.ts index 4c28193..5ca8b10 100644 --- a/src/controller/area.controller.ts +++ b/src/controller/area.controller.ts @@ -40,7 +40,6 @@ export class AreaController { })); return successResponse(countryList, '查询成功'); } catch (error) { - console.log(error); return errorResponse(error?.message || error); } } @@ -54,7 +53,6 @@ export class AreaController { const newArea = await this.areaService.createArea(area); return successResponse(newArea, '创建成功'); } catch (error) { - console.log(error); return errorResponse(error?.message || error); } } @@ -68,7 +66,6 @@ export class AreaController { const updatedArea = await this.areaService.updateArea(id, area); return successResponse(updatedArea, '更新成功'); } catch (error) { - console.log(error); return errorResponse(error?.message || error); } } @@ -81,7 +78,6 @@ export class AreaController { await this.areaService.deleteArea(id); return successResponse(null, '删除成功'); } catch (error) { - console.log(error); return errorResponse(error?.message || error); } } @@ -95,7 +91,6 @@ export class AreaController { const { list, total } = await this.areaService.getAreaList(query); return successResponse({ list, total }, '查询成功'); } catch (error) { - console.log(error); return errorResponse(error?.message || error); } } @@ -111,7 +106,6 @@ export class AreaController { } return successResponse(area, '查询成功'); } catch (error) { - console.log(error); return errorResponse(error?.message || error); } } diff --git a/src/controller/order.controller.ts b/src/controller/order.controller.ts index dedc87f..fa46cac 100644 --- a/src/controller/order.controller.ts +++ b/src/controller/order.controller.ts @@ -58,7 +58,6 @@ export class OrderController { const result = await this.orderService.syncOrderById(siteId, orderId); return successResponse(result); } catch (error) { - console.log(error); return errorResponse('同步失败'); } } diff --git a/src/service/product.service.ts b/src/service/product.service.ts index d894f18..7c14d37 100644 --- a/src/service/product.service.ts +++ b/src/service/product.service.ts @@ -2032,9 +2032,9 @@ export class ProductService { // 将工作表转换为 JSON 数组 records = xlsx.utils.sheet_to_json(worksheet); - console.log('Parsed records count:', records.length); + this.logger.debug('Parsed records count:', records.length); if (records.length > 0) { - console.log('First record keys:', Object.keys(records[0])); + this.logger.debug('First record keys:', Object.keys(records[0])); } return records; } catch (e: any) { @@ -2048,6 +2048,7 @@ export class ProductService { let updated = 0; const errors: BatchErrorItem[] = []; const records = await this.getRecordsFromTable(file); + this.logger.debug('Total records count:', records.length); // 逐条处理记录 for (const rec of records) { try { @@ -2076,7 +2077,7 @@ export class ProductService { errors.push({ identifier: '' + rec.sku, error: `产品${rec?.sku}导入失败:${e?.message || String(e)}` }); } } - this.logger.debug(`导入 ${records.length} 条记录,成功创建 ${created} 条,更新 ${updated} 条,失败 ${errors.length} 条,错误详情:${JSON.stringify(errors)}`); + this.logger.info(`导入 ${records.length} 条记录,成功创建 ${created} 条,更新 ${updated} 条,失败 ${errors.length} 条,错误详情:${JSON.stringify(errors)}`); return { total: records.length, processed: records.length - errors.length, created, updated, errors }; } -- 2.40.1