zksu
/
API
forked from yoone/API
1
0
Fork 0

refactor: 统一从数据库获取站点信息替代硬编码配置

This commit is contained in:
tikkhun 2025-11-24 10:08:49 +08:00
parent a59d5a7b75
commit 927857a795
5 changed files with 10 additions and 10 deletions

View File

@ -33,7 +33,7 @@ export class WebhookController {
@Inject() @Inject()
private readonly siteService: SiteService; private readonly siteService: SiteService;
// 中文注释:移除配置中的站点数组,来源统一改为数据库 // 移除配置中的站点数组,来源统一改为数据库
@Get('/') @Get('/')
async test() { async test() {
@ -49,7 +49,7 @@ export class WebhookController {
const signature = header['x-wc-webhook-signature']; const signature = header['x-wc-webhook-signature'];
const topic = header['x-wc-webhook-topic']; const topic = header['x-wc-webhook-topic'];
const source = header['x-wc-webhook-source']; const source = header['x-wc-webhook-source'];
// 中文注释:从数据库获取站点配置 // 从数据库获取站点配置
const site = await this.siteService.get(Number(siteId), true); const site = await this.siteService.get(Number(siteId), true);
if (!site || !source.includes(site.apiUrl)) { if (!site || !source.includes(site.apiUrl)) {

View File

@ -25,7 +25,7 @@ import {
} from '../dto/reponse.dto'; } from '../dto/reponse.dto';
@Controller('/wp_product') @Controller('/wp_product')
export class WpProductController { export class WpProductController {
// 中文注释:移除控制器内的配置站点引用,统一由服务层处理站点数据 // 移除控制器内的配置站点引用,统一由服务层处理站点数据
@Inject() @Inject()
private readonly wpProductService: WpProductService; private readonly wpProductService: WpProductService;

View File

@ -558,7 +558,7 @@ export class LogisticsService {
}, },
}); });
// 中文注释:从数据库批量获取站点信息,构建映射以避免 N+1 查询 // 从数据库批量获取站点信息,构建映射以避免 N+1 查询
const siteIds = Array.from(new Set(orders.map(o => o.siteId).filter(Boolean))); const siteIds = Array.from(new Set(orders.map(o => o.siteId).filter(Boolean)));
const { items: sites } = await this.siteService.list({ current: 1, pageSize: 1000, ids: siteIds.join(',') }, false); const { items: sites } = await this.siteService.list({ current: 1, pageSize: 1000, ids: siteIds.join(',') }, false);
const siteMap = new Map(sites.map((s: any) => [String(s.id), s.siteName])); const siteMap = new Map(sites.map((s: any) => [String(s.id), s.siteName]));

View File

@ -130,7 +130,7 @@ export class OrderService {
} }
try { try {
const site = await this.siteService.get(siteId); const site = await this.siteService.get(siteId);
// 中文注释:将订单状态同步到 WooCommerce然后切换至下一状态 // 将订单状态同步到 WooCommerce然后切换至下一状态
await this.wpService.updateOrder(site, String(order.id), { status: order.status }); await this.wpService.updateOrder(site, String(order.id), { status: order.status });
order.status = this.orderAutoNextStatusMap[originStatus]; order.status = this.orderAutoNextStatusMap[originStatus];
} catch (error) { } catch (error) {
@ -1351,7 +1351,7 @@ export class OrderService {
return { return {
...order, ...order,
siteName: site?.siteName, siteName: site?.siteName,
// 中文注释:Site 实体无邮箱字段,这里返回空字符串保持兼容 // Site 实体无邮箱字段,这里返回空字符串保持兼容
email: '', email: '',
items, items,
sales, sales,
@ -1415,7 +1415,7 @@ export class OrderService {
]), ]),
}, },
}); });
// 中文注释:批量获取订单涉及的站点名称,避免使用配置文件 // 批量获取订单涉及的站点名称,避免使用配置文件
const siteIds = Array.from(new Set(orders.map(o => o.siteId).filter(Boolean))); const siteIds = Array.from(new Set(orders.map(o => o.siteId).filter(Boolean)));
const { items: sites } = await this.siteService.list({ current: 1, pageSize: 1000, ids: siteIds.join(',') }, false); const { items: sites } = await this.siteService.list({ current: 1, pageSize: 1000, ids: siteIds.join(',') }, false);
const siteMap = new Map(sites.map((s: any) => [String(s.id), s.siteName])); const siteMap = new Map(sites.map((s: any) => [String(s.id), s.siteName]));

View File

@ -15,7 +15,7 @@ import { SiteService } from './site.service';
@Provide() @Provide()
export class WpProductService { export class WpProductService {
// 中文注释:移除配置中的站点数组,统一从数据库获取站点信息 // 移除配置中的站点数组,统一从数据库获取站点信息
@Inject() @Inject()
private readonly wpApiService: WPService; private readonly wpApiService: WPService;
@ -31,7 +31,7 @@ export class WpProductService {
async syncAllSites() { async syncAllSites() {
// 中文注释:从数据库获取所有启用的站点,并逐站点同步产品与变体 // 从数据库获取所有启用的站点,并逐站点同步产品与变体
const { items: sites } = await this.siteService.list({ current: 1, pageSize: Infinity, isDisabled: false }, true); const { items: sites } = await this.siteService.list({ current: 1, pageSize: Infinity, isDisabled: false }, true);
for (const site of sites) { for (const site of sites) {
const products = await this.wpApiService.getProducts(site); const products = await this.wpApiService.getProducts(site);
@ -46,7 +46,7 @@ export class WpProductService {
} }
// 同步一个网站 // 同步一个网站
async syncSite(siteId: string) { async syncSite(siteId: string) {
// 中文注释:通过数据库获取站点并转换为 WpSite用于后续 WooCommerce 同步 // 通过数据库获取站点并转换为 WpSite用于后续 WooCommerce 同步
const site = await this.siteService.get(Number(siteId), true); const site = await this.siteService.get(Number(siteId), true);
const externalProductIds = this.wpProductModel.createQueryBuilder('wp_product') const externalProductIds = this.wpProductModel.createQueryBuilder('wp_product')
.select([ .select([