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()
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)) {

View File

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

View File

@ -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]));

View File

@ -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([