|
@@ -9,6 +9,7 @@ import { PaymentMtService } from '@d8d/mini-payment-mt';
|
|
|
import { CreditBalanceService } from '@d8d/credit-balance-module-mt';
|
|
import { CreditBalanceService } from '@d8d/credit-balance-module-mt';
|
|
|
import { PaymentMtEntity, PaymentStatus } from '@d8d/mini-payment-mt';
|
|
import { PaymentMtEntity, PaymentStatus } from '@d8d/mini-payment-mt';
|
|
|
import type { CreateOrderRequest } from '../schemas/create-order.schema';
|
|
import type { CreateOrderRequest } from '../schemas/create-order.schema';
|
|
|
|
|
+import { createServiceLogger } from '@d8d/shared-utils';
|
|
|
|
|
|
|
|
export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
private orderGoodsRepository: Repository<OrderGoodsMt>;
|
|
private orderGoodsRepository: Repository<OrderGoodsMt>;
|
|
@@ -17,6 +18,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
private orderRefundRepository: Repository<OrderRefundMt>;
|
|
private orderRefundRepository: Repository<OrderRefundMt>;
|
|
|
private paymentMtService: PaymentMtService;
|
|
private paymentMtService: PaymentMtService;
|
|
|
private creditBalanceService: CreditBalanceService;
|
|
private creditBalanceService: CreditBalanceService;
|
|
|
|
|
+ private logger: ReturnType<typeof createServiceLogger>;
|
|
|
|
|
|
|
|
constructor(dataSource: DataSource) {
|
|
constructor(dataSource: DataSource) {
|
|
|
super(dataSource, OrderMt, {
|
|
super(dataSource, OrderMt, {
|
|
@@ -28,6 +30,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
this.orderRefundRepository = dataSource.getRepository(OrderRefundMt);
|
|
this.orderRefundRepository = dataSource.getRepository(OrderRefundMt);
|
|
|
this.paymentMtService = new PaymentMtService(dataSource);
|
|
this.paymentMtService = new PaymentMtService(dataSource);
|
|
|
this.creditBalanceService = new CreditBalanceService(dataSource);
|
|
this.creditBalanceService = new CreditBalanceService(dataSource);
|
|
|
|
|
+ this.logger = createServiceLogger('order-mt-service');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -52,6 +55,9 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
try {
|
|
try {
|
|
|
const { addressId, productOwn, consumeFrom, products, remark } = data;
|
|
const { addressId, productOwn, consumeFrom, products, remark } = data;
|
|
|
|
|
|
|
|
|
|
+ // 记录开始创建订单
|
|
|
|
|
+ this.logger.info('开始创建订单', { tenantId, userId, productCount: products.length, addressId });
|
|
|
|
|
+
|
|
|
// 验证商品信息并计算总价
|
|
// 验证商品信息并计算总价
|
|
|
let totalAmount = 0;
|
|
let totalAmount = 0;
|
|
|
let totalCostAmount = 0;
|
|
let totalCostAmount = 0;
|
|
@@ -121,7 +127,8 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
const expireTime = new Date();
|
|
const expireTime = new Date();
|
|
|
expireTime.setHours(expireTime.getHours() + 24);
|
|
expireTime.setHours(expireTime.getHours() + 24);
|
|
|
|
|
|
|
|
- const order = this.repository.create({
|
|
|
|
|
|
|
+
|
|
|
|
|
+ const createData ={
|
|
|
tenantId,
|
|
tenantId,
|
|
|
orderNo,
|
|
orderNo,
|
|
|
userId,
|
|
userId,
|
|
@@ -149,7 +156,14 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
recevierTown: deliveryAddress.receiverTown,
|
|
recevierTown: deliveryAddress.receiverTown,
|
|
|
address: deliveryAddress.address
|
|
address: deliveryAddress.address
|
|
|
})
|
|
})
|
|
|
- });
|
|
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ this.logger.info('createData:',createData);
|
|
|
|
|
+
|
|
|
|
|
+ const order = this.repository.create(createData);
|
|
|
|
|
+
|
|
|
|
|
+ this.logger.info('order:',order);
|
|
|
|
|
+ this.logger.info('订单创建成功', { tenantId, userId, orderNo: order.orderNo, amount: order.amount, payAmount: order.payAmount });
|
|
|
|
|
|
|
|
const savedOrder = await queryRunner.manager.save(order);
|
|
const savedOrder = await queryRunner.manager.save(order);
|
|
|
|
|
|
|
@@ -184,6 +198,9 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
};
|
|
};
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ this.logger.info('orderGoodsList:',orderGoodsList);
|
|
|
|
|
+ this.logger.info('订单商品明细创建成功', { tenantId, orderId: savedOrder.id, goodsCount: orderGoodsList.length });
|
|
|
|
|
+
|
|
|
await queryRunner.manager.save(OrderGoodsMt, orderGoodsList);
|
|
await queryRunner.manager.save(OrderGoodsMt, orderGoodsList);
|
|
|
|
|
|
|
|
// 更新商品库存
|
|
// 更新商品库存
|
|
@@ -196,6 +213,8 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
|
|
|
|
|
await queryRunner.commitTransaction();
|
|
await queryRunner.commitTransaction();
|
|
|
|
|
|
|
|
|
|
+ this.logger.info('订单创建流程完成', { tenantId, userId, orderId: savedOrder.id, orderNo: savedOrder.orderNo, totalAmount: savedOrder.amount });
|
|
|
|
|
+
|
|
|
return {
|
|
return {
|
|
|
success: true,
|
|
success: true,
|
|
|
orderId: savedOrder.id,
|
|
orderId: savedOrder.id,
|
|
@@ -207,6 +226,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
|
|
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
await queryRunner.rollbackTransaction();
|
|
await queryRunner.rollbackTransaction();
|
|
|
|
|
+ this.logger.error('订单创建失败', { tenantId, userId, error: error instanceof Error ? error.message : String(error) });
|
|
|
throw error;
|
|
throw error;
|
|
|
} finally {
|
|
} finally {
|
|
|
await queryRunner.release();
|
|
await queryRunner.release();
|
|
@@ -248,7 +268,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
|
|
|
|
|
// 对于已支付订单(支付状态=2),需要触发退款流程
|
|
// 对于已支付订单(支付状态=2),需要触发退款流程
|
|
|
if (order.payState === 2) {
|
|
if (order.payState === 2) {
|
|
|
- console.debug(`[租户${tenantId}] 订单 ${orderId} 已支付,开始触发退款流程`);
|
|
|
|
|
|
|
+ this.logger.debug('订单已支付,开始触发退款流程', { tenantId, orderId, orderNo: order.orderNo });
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
// 调用支付模块的退款功能
|
|
// 调用支付模块的退款功能
|
|
@@ -259,13 +279,13 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
`订单取消:${reason}`
|
|
`订单取消:${reason}`
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
- console.debug(`[租户${tenantId}] 退款处理成功,退款流水号: ${refundResult.refundId}`);
|
|
|
|
|
|
|
+ this.logger.debug('退款处理成功', { tenantId, orderId, orderNo: order.orderNo, refundId: refundResult.refundId });
|
|
|
|
|
|
|
|
// 创建退款记录
|
|
// 创建退款记录
|
|
|
await this.createRefundRecord(tenantId, order, refundResult, userId);
|
|
await this.createRefundRecord(tenantId, order, refundResult, userId);
|
|
|
|
|
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- console.debug(`[租户${tenantId}] 退款处理失败,订单ID: ${orderId}, 错误:`, error);
|
|
|
|
|
|
|
+ this.logger.warn('退款处理失败', { tenantId, orderId, orderNo: order.orderNo, error: error instanceof Error ? error.message : String(error) });
|
|
|
// 退款失败不影响订单取消,但记录错误信息
|
|
// 退款失败不影响订单取消,但记录错误信息
|
|
|
// 可以在这里添加重试机制或通知管理员
|
|
// 可以在这里添加重试机制或通知管理员
|
|
|
}
|
|
}
|
|
@@ -282,7 +302,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
|
|
|
|
|
// 如果是额度支付订单(payType === 3),需要恢复额度
|
|
// 如果是额度支付订单(payType === 3),需要恢复额度
|
|
|
if (order.payType === 3) {
|
|
if (order.payType === 3) {
|
|
|
- console.debug(`[租户${tenantId}] 额度支付订单 ${orderId} 取消,开始恢复额度`);
|
|
|
|
|
|
|
+ this.logger.debug('额度支付订单取消,开始恢复额度', { tenantId, orderId, orderNo: order.orderNo });
|
|
|
try {
|
|
try {
|
|
|
await this.creditBalanceService.restoreBalanceForCancelOrder(
|
|
await this.creditBalanceService.restoreBalanceForCancelOrder(
|
|
|
tenantId,
|
|
tenantId,
|
|
@@ -291,9 +311,9 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
order.payAmount,
|
|
order.payAmount,
|
|
|
userId
|
|
userId
|
|
|
);
|
|
);
|
|
|
- console.debug(`[租户${tenantId}] 额度恢复成功,订单号: ${order.orderNo}`);
|
|
|
|
|
|
|
+ this.logger.debug('额度恢复成功', { tenantId, orderId, orderNo: order.orderNo });
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- console.debug(`[租户${tenantId}] 额度恢复失败,订单ID: ${orderId}, 错误:`, error);
|
|
|
|
|
|
|
+ this.logger.warn('额度恢复失败', { tenantId, orderId, orderNo: order.orderNo, error: error instanceof Error ? error.message : String(error) });
|
|
|
// 额度恢复失败不影响订单取消,但记录错误信息
|
|
// 额度恢复失败不影响订单取消,但记录错误信息
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -429,7 +449,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
refundRecord.updatedBy = userId;
|
|
refundRecord.updatedBy = userId;
|
|
|
|
|
|
|
|
await this.orderRefundRepository.save(refundRecord);
|
|
await this.orderRefundRepository.save(refundRecord);
|
|
|
- console.debug(`[租户${tenantId}] 退款记录创建成功,退款订单号: ${refundResult.outRefundNo}`);
|
|
|
|
|
|
|
+ this.logger.debug('退款记录创建成功', { tenantId, orderNo: order.orderNo, refundOrderNo: refundResult.outRefundNo });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -466,11 +486,13 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
if (!paymentRecord) {
|
|
if (!paymentRecord) {
|
|
|
- console.debug(`[租户${tenantId}] 未找到订单ID ${orderId} 的支付记录`);
|
|
|
|
|
|
|
+ this.logger.debug('未找到订单的支付记录', { tenantId, orderId, userId });
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- console.debug(`[租户${tenantId}] 找到订单ID ${orderId} 的支付记录:`, {
|
|
|
|
|
|
|
+ this.logger.debug('找到订单的支付记录', {
|
|
|
|
|
+ tenantId,
|
|
|
|
|
+ orderId,
|
|
|
paymentId: paymentRecord.id,
|
|
paymentId: paymentRecord.id,
|
|
|
outTradeNo: paymentRecord.outTradeNo,
|
|
outTradeNo: paymentRecord.outTradeNo,
|
|
|
wechatTransactionId: paymentRecord.wechatTransactionId,
|
|
wechatTransactionId: paymentRecord.wechatTransactionId,
|
|
@@ -480,7 +502,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
|
|
|
|
|
return paymentRecord;
|
|
return paymentRecord;
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- console.error(`[租户${tenantId}] 查询订单ID ${orderId} 的支付记录失败:`, error);
|
|
|
|
|
|
|
+ this.logger.error('查询订单支付记录失败', { tenantId, orderId, error: error instanceof Error ? error.message : String(error) });
|
|
|
throw new Error(`查询支付记录失败: ${error instanceof Error ? error.message : '未知错误'}`);
|
|
throw new Error(`查询支付记录失败: ${error instanceof Error ? error.message : '未知错误'}`);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -547,7 +569,7 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
|
|
|
paymentStatusDetail
|
|
paymentStatusDetail
|
|
|
};
|
|
};
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- console.error(`[租户${tenantId}] 获取订单ID ${orderId} 的支付信息失败:`, error);
|
|
|
|
|
|
|
+ this.logger.error('获取订单支付信息失败', { tenantId, orderId, error: error instanceof Error ? error.message : String(error) });
|
|
|
return {
|
|
return {
|
|
|
outTradeNo: null,
|
|
outTradeNo: null,
|
|
|
wechatTransactionId: null,
|
|
wechatTransactionId: null,
|