fix(order): 修复订单处理流程中的状态判断和响应逻辑

- 调整订单状态处理分支,优化标记和返回流程,避免继续执行
- 统一成功失败响应写入,确保逻辑清晰明确
- 删除无用的中断运行调用,简化控制流

fix(otelTrace): 修正span添加链接的方法调用错误

- 修复链路追踪中向span添加上游span信息的方法调用
- 使追踪链路信息更加准确,增强监控追踪能力

test(order): 更新订单请求测试用例数据和验证逻辑

- 修改CreatedOrder测试结构体字段数据
- 更新签名验证调用参数,提高测试准确性
- 添加测试结果日志输出,方便调试和验证
This commit is contained in:
danial
2025-11-30 14:24:37 +08:00
parent 4ab785a7da
commit db1ba53ccf
3 changed files with 40 additions and 38 deletions

View File

@@ -133,36 +133,37 @@ func (c *OrderController) OrderUpdate() {
if orderInfo.BankOrderId == "" {
otelTrace.Logger.WithContext(ctx).Error(fmt.Sprintf("该订单不存在, bankOrderId = %s", bankOrderId), zap.String("bankOrderId", bankOrderId))
} else {
switch solveType {
case config.SUCCESS:
flag = service.SolvePaySuccess(ctx, bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId, "手动修正至成功")
case config.FAIL:
flag = service.SolvePayFail(ctx, bankOrderId, orderInfo.BankTransId, "手动修正至失败")
case config.FREEZE_AMOUNT:
// 将这笔订单进行冻结
flag = service.SolveOrderFreeze(ctx, bankOrderId)
case config.UNFREEZE_AMOUNT:
// 将这笔订单金额解冻
flag = service.SolveOrderUnfreeze(ctx, bankOrderId)
case config.REFUND:
if orderInfo.Status == config.SUCCESS {
flag = service.SolveRefund(ctx, bankOrderId)
}
case config.ORDERROLL:
if orderInfo.Status == config.SUCCESS {
flag = service.SolveOrderRoll(ctx, bankOrderId)
}
default:
otelTrace.Logger.WithContext(ctx).Error("不存在这样的处理类型")
}
if flag {
c.Ctx.WriteString(config.SUCCESS)
} else {
c.Ctx.WriteString(config.FAIL)
}
c.Ctx.WriteString(config.FAIL)
return
}
c.StopRun()
switch solveType {
case config.SUCCESS:
flag = service.SolvePaySuccess(ctx, bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId, "手动修正至成功")
case config.FAIL:
flag = service.SolvePayFail(ctx, bankOrderId, orderInfo.BankTransId, "手动修正至失败")
case config.FREEZE_AMOUNT:
// 将这笔订单进行冻结
flag = service.SolveOrderFreeze(ctx, bankOrderId)
case config.UNFREEZE_AMOUNT:
// 将这笔订单金额解冻
flag = service.SolveOrderUnfreeze(ctx, bankOrderId)
case config.REFUND:
if orderInfo.Status == config.SUCCESS {
flag = service.SolveRefund(ctx, bankOrderId)
}
case config.ORDERROLL:
if orderInfo.Status == config.SUCCESS {
flag = service.SolveOrderRoll(ctx, bankOrderId)
}
default:
otelTrace.Logger.WithContext(ctx).Error("不存在这样的处理类型")
}
if flag {
c.Ctx.WriteString(config.SUCCESS)
return
}
c.Ctx.WriteString(config.SUCCESS)
}
func (c *OrderController) MerchantQuery() {

View File

@@ -52,12 +52,12 @@ func Middleware(ctx *beecontext.Context, next web.FilterFunc) {
attribute.String("peer.hostname", req.Host),
attribute.String("net.peer.ip", getClientIP(req)),
),
trace.WithSpanKind(trace.SpanKindServer),
trace.WithNewRoot(),
trace.WithSpanKind(trace.SpanKindServer),
)
if parentSpan.IsRecording() && parentSpan.SpanContext().IsSampled() {
// 添加上游span信息
trace.WithLinks(trace.LinkFromContext(parentCtx))
span.AddLink(trace.LinkFromContext(parentCtx))
}
return nil

View File

@@ -8,15 +8,16 @@ import (
func TestCreatedOrder_ToMap(t *testing.T) {
createdOrder := CreatedOrder{
PayKey: "kkkkd3n2pdl6if8s73ade640",
OrderNo: "20251024195014818049",
PayKey: "kkkkd4im37aj2ddc73993b1g",
OrderNo: "JQ20251125225222357563",
OrderPrice: 100.00,
OrderPeriod: 24,
NotifyUrl: "http://www.baidu.com",
Sign: "6cf522a960f72b7e15abca0944e66aee",
ProductCode: "2001",
Timestamp: 1761306614,
NotifyUrl: "https://api.risepayment888.com/pay/force/notify/code/JQ109",
Sign: "fc2276d4d469680834646a5a5770ed0f",
ProductCode: "8546",
Timestamp: 1764082342045,
}
createdOrder.ToMap()
utils.Md5MFVerify(context.Background(), createdOrder.ToMap(), "ssssd3n2pdl6if8s73ade64g")
result := utils.Md5MFVerify(context.Background(), createdOrder.ToMap(), "ssssd4im37aj2ddc73993b20")
t.Log(result)
}