This commit is contained in:
2026-01-14 16:22:02 +08:00
parent 6b902f68f1
commit 21fae5c486
2 changed files with 2 additions and 74 deletions

View File

@@ -313,12 +313,6 @@ func (s *ComponentReportOrderService) CreatePaymentOrder(ctx context.Context, re
)
}
}
// 检查价格是否为0
if finalPrice.IsZero() {
return s.createFreeOrder(ctx, req, &product, nil, nil, finalPrice)
}
// 准备子产品信息列表(仅用于展示)
var subProductCodes []string
var subProductIDs []string
@@ -528,67 +522,6 @@ func (s *ComponentReportOrderService) CreatePaymentOrder(ctx context.Context, re
return response, nil
}
// createFreeOrder 创建免费订单
func (s *ComponentReportOrderService) createFreeOrder(
ctx context.Context,
req *CreatePaymentOrderRequest,
product *productEntities.Product,
subProductCodes []string,
subProductIDs []string,
finalPrice decimal.Decimal,
) (*CreatePaymentOrderResponse, error) {
// 序列化子产品列表
// 简化后的实体不再需要序列化子产品列表
// 创建免费订单
purchaseOrder := entities.NewPurchaseOrder(
req.UserID,
req.ProductID,
product.Code,
product.Name,
fmt.Sprintf("组件报告下载-%s", product.Name),
finalPrice,
"app",
"free",
"free",
)
// 设置为已支付状态
purchaseOrder.Status = entities.PurchaseOrderStatusPaid
now := time.Now()
purchaseOrder.PayTime = &now
createdPurchaseOrder, err := s.purchaseOrderRepo.Create(ctx, purchaseOrder)
if err != nil {
return nil, fmt.Errorf("创建免费订单失败: %w", err)
}
// 创建下载记录
download := &productEntities.ComponentReportDownload{
UserID: req.UserID,
ProductID: req.ProductID,
ProductCode: product.Code,
ProductName: product.Name,
OrderID: &createdPurchaseOrder.ID, // 关联购买订单ID
OrderNumber: &createdPurchaseOrder.OrderNo, // 外部订单号
DownloadPrice: finalPrice, // 设置下载价格
ExpiresAt: calculateExpiryTime(), // 30天后过期
}
err = s.componentReportRepo.Create(ctx, download)
if err != nil {
s.logger.Error("创建下载记录失败", zap.Error(err))
// 不中断流程,即使创建下载记录失败也继续返回订单信息
}
return &CreatePaymentOrderResponse{
OrderID: createdPurchaseOrder.ID, // 修改为购买订单ID
OrderNo: createdPurchaseOrder.OrderNo,
PaymentType: "free",
Amount: "0.00",
}, nil
}
// generateReportFile 生成报告文件
func (s *ComponentReportOrderService) generateReportFile(ctx context.Context, download *productEntities.ComponentReportDownload) (string, error) {
// 解析子产品编号列表
@@ -870,12 +803,7 @@ func (s *ComponentReportOrderService) GetUserOrders(ctx context.Context, userID
}
paymentType = purchaseOrder.PayChannel
}
} else if download.OrderNumber != nil {
// 兼容旧的支付订单逻辑
purchaseStatus = "paid" // 简化处理,有支付订单号就认为已支付
paymentType = "unknown"
}
result = append(result, &UserOrderResponse{
ID: download.ID,
OrderNo: "",
@@ -883,7 +811,7 @@ func (s *ComponentReportOrderService) GetUserOrders(ctx context.Context, userID
ProductCode: download.ProductCode,
PaymentType: paymentType,
PurchaseStatus: purchaseStatus,
Price: "0.00", // 下载记录不存储价格信息
Price: download.DownloadPrice.String(),
CreatedAt: download.CreatedAt,
PaymentTime: paymentTime,
})