forked from yoone/API
feat(webhook): 添加对shoppy平台webhook的支持
- 在site.entity.ts中添加webhookUrl字段 - 在auth.middleware.ts中添加/shoppy路由到白名单 - 在webhook.controller.ts中实现shoppy平台webhook处理逻辑 fix(webhook): 更新webhook控制器中的密钥值 refactor(entity): 将可选字段明确标记为可选类型 feat(adapter): 公开映射方法以支持统一接口调用 将各适配器中的私有映射方法改为公开,并在接口中定义统一方法签名 修改webhook控制器以使用适配器映射方法处理订单数据 feat: 添加订单支付日期字段并支持国家筛选 - 在ShopyyOrder接口中添加date_paid字段 - 在OrderStatisticsParams中添加country数组字段用于国家筛选 - 修改统计服务以支持按国家筛选订单数据 - 更新数据库配置和同步设置 - 优化订单服务中的类型定义和查询条件 refactor(webhook): 移除未使用的shoppy webhook处理逻辑 fix(订单服务): 修复订单内容括号处理并添加同步日志 添加订单同步过程的调试日志 修复订单内容中括号内容的处理逻辑 修正控制器方法名拼写错误
This commit is contained in:
parent
fbbb86ae37
commit
0f79b7536a
|
|
@ -391,7 +391,6 @@ export class ShopyyAdapter implements ISiteAdapter {
|
|||
tracking_number: f.tracking_number || '',
|
||||
shipping_provider: f.tracking_company || '',
|
||||
shipping_method: f.tracking_company || '',
|
||||
|
||||
date_created: typeof f.created_at === 'number'
|
||||
? new Date(f.created_at * 1000).toISOString()
|
||||
: f.created_at || '',
|
||||
|
|
|
|||
|
|
@ -15,11 +15,12 @@ export default {
|
|||
typeorm: {
|
||||
dataSource: {
|
||||
default: {
|
||||
host: 'localhost',
|
||||
port: "23306",
|
||||
host: '13.212.62.127',
|
||||
port: "3306",
|
||||
username: 'root',
|
||||
password: '12345678',
|
||||
password: 'Yoone!@.2025',
|
||||
database: 'inventory_v2',
|
||||
synchronize: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ export class OrderService {
|
|||
updated: 0,
|
||||
errors: []
|
||||
};
|
||||
|
||||
console.log('开始进入循环同步订单', result.length, '个订单')
|
||||
// 遍历每个订单进行同步
|
||||
for (const order of result) {
|
||||
try {
|
||||
|
|
@ -165,6 +165,7 @@ export class OrderService {
|
|||
} else {
|
||||
syncResult.created++;
|
||||
}
|
||||
// console.log('updated', syncResult.updated, 'created:', syncResult.created)
|
||||
} catch (error) {
|
||||
// 记录错误但不中断整个同步过程
|
||||
syncResult.errors.push({
|
||||
|
|
@ -174,6 +175,8 @@ export class OrderService {
|
|||
syncResult.processed++;
|
||||
}
|
||||
}
|
||||
console.log('同步完成', syncResult.updated, 'created:', syncResult.created)
|
||||
|
||||
this.logger.debug('syncOrders result', syncResult)
|
||||
return syncResult;
|
||||
}
|
||||
|
|
@ -350,7 +353,7 @@ export class OrderService {
|
|||
await this.saveOrderItems({
|
||||
siteId,
|
||||
orderId,
|
||||
externalOrderId,
|
||||
externalOrderId: String(externalOrderId),
|
||||
orderItems: line_items,
|
||||
});
|
||||
// 保存退款信息
|
||||
|
|
@ -1229,13 +1232,13 @@ export class OrderService {
|
|||
parameters.push(siteId);
|
||||
}
|
||||
if (startDate) {
|
||||
sqlQuery += ` AND o.date_created >= ?`;
|
||||
totalQuery += ` AND o.date_created >= ?`;
|
||||
sqlQuery += ` AND o.date_paid >= ?`;
|
||||
totalQuery += ` AND o.date_paid >= ?`;
|
||||
parameters.push(startDate);
|
||||
}
|
||||
if (endDate) {
|
||||
sqlQuery += ` AND o.date_created <= ?`;
|
||||
totalQuery += ` AND o.date_created <= ?`;
|
||||
sqlQuery += ` AND o.date_paid <= ?`;
|
||||
totalQuery += ` AND o.date_paid <= ?`;
|
||||
parameters.push(endDate);
|
||||
}
|
||||
// 支付方式筛选(使用参数化,避免SQL注入)
|
||||
|
|
@ -1323,7 +1326,7 @@ export class OrderService {
|
|||
// 添加分页到主查询
|
||||
sqlQuery += `
|
||||
GROUP BY o.id
|
||||
ORDER BY o.date_created DESC
|
||||
ORDER BY o.date_paid DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`;
|
||||
parameters.push(pageSize, (current - 1) * pageSize);
|
||||
|
|
@ -2541,7 +2544,7 @@ export class OrderService {
|
|||
'姓名地址': nameAddress,
|
||||
'邮箱': order.customer_email || '',
|
||||
'号码': phone,
|
||||
'订单内容': orderContent,
|
||||
'订单内容': this.removeLastParenthesesContent(orderContent),
|
||||
'盒数': boxCount,
|
||||
'换盒数': exchangeBoxCount,
|
||||
'换货内容': exchangeContent,
|
||||
|
|
|
|||
Loading…
Reference in New Issue