forked from yoone/API
refactor: 统一从数据库获取站点信息替代硬编码配置
This commit is contained in:
parent
a59d5a7b75
commit
927857a795
|
|
@ -33,7 +33,7 @@ export class WebhookController {
|
|||
@Inject()
|
||||
private readonly siteService: SiteService;
|
||||
|
||||
// 中文注释:移除配置中的站点数组,来源统一改为数据库
|
||||
// 移除配置中的站点数组,来源统一改为数据库
|
||||
|
||||
@Get('/')
|
||||
async test() {
|
||||
|
|
@ -49,7 +49,7 @@ export class WebhookController {
|
|||
const signature = header['x-wc-webhook-signature'];
|
||||
const topic = header['x-wc-webhook-topic'];
|
||||
const source = header['x-wc-webhook-source'];
|
||||
// 中文注释:从数据库获取站点配置
|
||||
// 从数据库获取站点配置
|
||||
const site = await this.siteService.get(Number(siteId), true);
|
||||
|
||||
if (!site || !source.includes(site.apiUrl)) {
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import {
|
|||
} from '../dto/reponse.dto';
|
||||
@Controller('/wp_product')
|
||||
export class WpProductController {
|
||||
// 中文注释:移除控制器内的配置站点引用,统一由服务层处理站点数据
|
||||
// 移除控制器内的配置站点引用,统一由服务层处理站点数据
|
||||
|
||||
@Inject()
|
||||
private readonly wpProductService: WpProductService;
|
||||
|
|
|
|||
|
|
@ -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 { 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]));
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ export class OrderService {
|
|||
}
|
||||
try {
|
||||
const site = await this.siteService.get(siteId);
|
||||
// 中文注释:将订单状态同步到 WooCommerce,然后切换至下一状态
|
||||
// 将订单状态同步到 WooCommerce,然后切换至下一状态
|
||||
await this.wpService.updateOrder(site, String(order.id), { status: order.status });
|
||||
order.status = this.orderAutoNextStatusMap[originStatus];
|
||||
} catch (error) {
|
||||
|
|
@ -1351,7 +1351,7 @@ export class OrderService {
|
|||
return {
|
||||
...order,
|
||||
siteName: site?.siteName,
|
||||
// 中文注释:Site 实体无邮箱字段,这里返回空字符串保持兼容
|
||||
// Site 实体无邮箱字段,这里返回空字符串保持兼容
|
||||
email: '',
|
||||
items,
|
||||
sales,
|
||||
|
|
@ -1415,7 +1415,7 @@ export class OrderService {
|
|||
]),
|
||||
},
|
||||
});
|
||||
// 中文注释:批量获取订单涉及的站点名称,避免使用配置文件
|
||||
// 批量获取订单涉及的站点名称,避免使用配置文件
|
||||
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 siteMap = new Map(sites.map((s: any) => [String(s.id), s.siteName]));
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import { SiteService } from './site.service';
|
|||
|
||||
@Provide()
|
||||
export class WpProductService {
|
||||
// 中文注释:移除配置中的站点数组,统一从数据库获取站点信息
|
||||
// 移除配置中的站点数组,统一从数据库获取站点信息
|
||||
|
||||
@Inject()
|
||||
private readonly wpApiService: WPService;
|
||||
|
|
@ -31,7 +31,7 @@ export class WpProductService {
|
|||
|
||||
|
||||
async syncAllSites() {
|
||||
// 中文注释:从数据库获取所有启用的站点,并逐站点同步产品与变体
|
||||
// 从数据库获取所有启用的站点,并逐站点同步产品与变体
|
||||
const { items: sites } = await this.siteService.list({ current: 1, pageSize: Infinity, isDisabled: false }, true);
|
||||
for (const site of sites) {
|
||||
const products = await this.wpApiService.getProducts(site);
|
||||
|
|
@ -46,7 +46,7 @@ export class WpProductService {
|
|||
}
|
||||
// 同步一个网站
|
||||
async syncSite(siteId: string) {
|
||||
// 中文注释:通过数据库获取站点并转换为 WpSite,用于后续 WooCommerce 同步
|
||||
// 通过数据库获取站点并转换为 WpSite,用于后续 WooCommerce 同步
|
||||
const site = await this.siteService.get(Number(siteId), true);
|
||||
const externalProductIds = this.wpProductModel.createQueryBuilder('wp_product')
|
||||
.select([
|
||||
|
|
|
|||
Loading…
Reference in New Issue