feat:取消掉链路跟踪

This commit is contained in:
danial
2025-02-24 15:42:19 +08:00
parent 9ab463a51e
commit 70de293138
18 changed files with 201 additions and 149 deletions

View File

@@ -1,6 +1,7 @@
package gateway
import (
"context"
"fmt"
"gateway/internal/config"
"gateway/internal/models/merchant"
@@ -24,45 +25,47 @@ type OrderController struct {
}
func (c *OrderController) OrderQuery() {
ctx := context.Background()
bankOrderId := c.GetString("bankOrderId")
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info(fmt.Sprintf("获取订单信息:%s", bankOrderId), zap.String("bankOrderId", bankOrderId))
qy := query.SupplierOrderQueryResult(c.Ctx.Request.Context(), bankOrderId)
otelTrace.Logger.WithContext(ctx).Info(fmt.Sprintf("获取订单信息:%s", bankOrderId), zap.String("bankOrderId", bankOrderId))
qy := query.SupplierOrderQueryResult(ctx, bankOrderId)
c.Ctx.WriteString(qy)
return
}
func (c *OrderController) OrderUpdate() {
ctx := context.Background()
bankOrderId := c.GetString("bankOrderId")
solveType := c.GetString("solveType")
orderInfo := order.GetOrderByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
orderInfo := order.GetOrderByBankOrderId(ctx, bankOrderId)
orderInfo.Operator = c.GetString("operator")
flag := false
if orderInfo.BankOrderId == "" {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error(fmt.Sprintf("该订单不存在, bankOrderId", bankOrderId), zap.String("bankOrderId", bankOrderId))
otelTrace.Logger.WithContext(ctx).Error(fmt.Sprintf("该订单不存在, bankOrderId", bankOrderId), zap.String("bankOrderId", bankOrderId))
} else {
switch solveType {
case config.SUCCESS:
flag = service.SolvePaySuccess(c.Ctx.Request.Context(), bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId, "手动修正至成功")
flag = service.SolvePaySuccess(ctx, bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId, "手动修正至成功")
case config.FAIL:
flag = service.SolvePayFail(c.Ctx.Request.Context(), bankOrderId, orderInfo.BankTransId, "手动修正至失败")
flag = service.SolvePayFail(ctx, bankOrderId, orderInfo.BankTransId, "手动修正至失败")
case config.FREEZE_AMOUNT:
// 将这笔订单进行冻结
flag = service.SolveOrderFreeze(c.Ctx.Request.Context(), bankOrderId)
flag = service.SolveOrderFreeze(ctx, bankOrderId)
case config.UNFREEZE_AMOUNT:
// 将这笔订单金额解冻
flag = service.SolveOrderUnfreeze(c.Ctx.Request.Context(), bankOrderId)
flag = service.SolveOrderUnfreeze(ctx, bankOrderId)
case config.REFUND:
if orderInfo.Status == config.SUCCESS {
flag = service.SolveRefund(c.Ctx.Request.Context(), bankOrderId)
flag = service.SolveRefund(ctx, bankOrderId)
}
case config.ORDERROLL:
if orderInfo.Status == config.SUCCESS {
flag = service.SolveOrderRoll(c.Ctx.Request.Context(), bankOrderId)
flag = service.SolveOrderRoll(ctx, bankOrderId)
}
default:
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("不存在这样的处理类型")
otelTrace.Logger.WithContext(ctx).Error("不存在这样的处理类型")
}
if flag {
c.Ctx.WriteString(config.SUCCESS)
@@ -74,6 +77,7 @@ func (c *OrderController) OrderUpdate() {
}
func (c *OrderController) MerchantQuery() {
ctx := context.Background()
appKey := strings.TrimSpace(c.GetString("appKey"))
orderNo := strings.TrimSpace(c.GetString("orderNo"))
timestamp := strings.TrimSpace(c.GetString("timestamp"))
@@ -87,7 +91,7 @@ func (c *OrderController) MerchantQuery() {
_ = c.ServeJSON()
return
}
merchantInfo := merchant.GetMerchantByPasskey(c.Ctx.Request.Context(), appKey)
merchantInfo := merchant.GetMerchantByPasskey(ctx, appKey)
if merchantInfo.Id == 0 {
resp := response.Resp{
Code: -1,
@@ -116,7 +120,7 @@ func (c *OrderController) MerchantQuery() {
_ = c.ServeJSON()
return
}
orderInfo := order.GetOrderByMerchantOrderId(c.Ctx.Request.Context(), orderNo)
orderInfo := order.GetOrderByMerchantOrderId(ctx, orderNo)
if orderInfo.Id == 0 {
resp := response.Resp{
Code: -1,

View File

@@ -1,6 +1,7 @@
package gateway
import (
"context"
"fmt"
"gateway/internal/config"
"gateway/internal/models/order"
@@ -23,6 +24,7 @@ type PayForGateway struct {
// PayFor 接受下游商户的代付请求
func (c *PayForGateway) PayFor() {
ctx := context.Background()
params := map[string]any{
"merchantKey": strings.TrimSpace(c.GetString("merchantKey")),
"realname": strings.TrimSpace(c.GetString("realname")),
@@ -38,7 +40,7 @@ func (c *PayForGateway) PayFor() {
payForResponse.ResultCode = "01"
payForResponse.ResultMsg = msg
} else {
payForResponse = pay_for.AutoPayFor(c.Ctx.Request.Context(), params, config.SELF_API)
payForResponse = pay_for.AutoPayFor(ctx, params, config.SELF_API)
}
c.Data["json"] = payForResponse
_ = c.ServeJSON()
@@ -46,34 +48,36 @@ func (c *PayForGateway) PayFor() {
// PayForQuery 代付结果查询,
func (c *PayForGateway) PayForQuery() {
ctx := context.Background()
params := map[string]any{
"merchantKey": strings.TrimSpace(c.GetString("merchantKey")),
"timestamp": strings.TrimSpace(c.GetString("timestamp")),
"merchantOrderId": strings.TrimSpace(c.GetString("merchantOrderId")),
"sign": strings.TrimSpace(c.GetString("sign")),
}
c.Data["json"] = pay_for.PayForResultQuery(c.Ctx.Request.Context(), params)
c.Data["json"] = pay_for.PayForResultQuery(ctx, params)
_ = c.ServeJSON()
}
// QuerySupplierPayForResult 查询上游的代付结果
func (c *PayForGateway) QuerySupplierPayForResult() {
ctx := context.Background()
bankOrderId := strings.TrimSpace(c.GetString("bankOrderId"))
p := payfor.GetPayForByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
p := payfor.GetPayForByBankOrderId(ctx, bankOrderId)
if p.RoadUid == "" {
// 向上游查询订单结果
orderInfo := order.GetOrderByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
orderInfo := order.GetOrderByBankOrderId(ctx, bankOrderId)
if orderInfo.BankOrderId == "" {
c.Ctx.WriteString("fail")
return
}
roadInfo := road.GetRoadInfoByRoadUid(c.Ctx.Request.Context(), p.RoadUid)
roadInfo := road.GetRoadInfoByRoadUid(ctx, p.RoadUid)
supplier := third_party.GetPaySupplierByCode(roadInfo.ProductUid)
supplier.PayQuery(orderInfo, roadInfo)
} else {
roadInfo := road.GetRoadInfoByRoadUid(c.Ctx.Request.Context(), p.RoadUid)
roadInfo := road.GetRoadInfoByRoadUid(ctx, p.RoadUid)
supplier := third_party.GetPaySupplierByCode(roadInfo.ProductUid)
res := supplier.PayFor(p)
logs.Debug("代付查询结果:", res)
@@ -83,18 +87,19 @@ func (c *PayForGateway) QuerySupplierPayForResult() {
// SolvePayForResult 接收boss发送过来的代付手动处理结果
func (c *PayForGateway) SolvePayForResult() {
ctx := context.Background()
resultType := strings.TrimSpace(c.GetString("resultType"))
bankOrderId := strings.TrimSpace(c.GetString("bankOrderId"))
p := payfor.GetPayForByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
p := payfor.GetPayForByBankOrderId(ctx, bankOrderId)
if p.BankOrderId == "" {
c.Ctx.WriteString(config.FAIL)
}
if resultType == config.PAYFOR_FAIL {
pay_for.PayForFail(c.Ctx.Request.Context(), p)
pay_for.PayForFail(ctx, p)
} else if resultType == config.PAYFOR_SUCCESS {
pay_for.PayForSuccess(c.Ctx.Request.Context(), p)
pay_for.PayForSuccess(ctx, p)
}
c.Ctx.WriteString(config.SUCCESS)
@@ -102,6 +107,7 @@ func (c *PayForGateway) SolvePayForResult() {
// Balance 商户查找余额
func (c *PayForGateway) Balance() {
ctx := context.Background()
params := map[string]any{
"merchantKey": strings.TrimSpace(c.GetString("merchantKey")),
"timestamp": strings.TrimSpace(c.GetString("timestamp")),
@@ -114,7 +120,7 @@ func (c *PayForGateway) Balance() {
balanceResponse.ResultMsg = msg
c.Data["json"] = balanceResponse
} else {
c.Data["json"] = pay_for.BalanceQuery(c.Ctx.Request.Context(), params)
c.Data["json"] = pay_for.BalanceQuery(ctx, params)
}
_ = c.ServeJSON()
}

View File

@@ -50,9 +50,10 @@ type ScanController struct {
// Scan 处理扫码的请求
func (c *ScanController) Scan() {
ctx := context.Background()
// 获取所有请求参数
// 获取客户端的ip
p := service.GetMerchantInfo(c.Ctx.Request.Context(), map[string]any{
p := service.GetMerchantInfo(ctx, map[string]any{
"exValue": strings.TrimSpace(c.GetString("exValue")),
"orderNo": strings.TrimSpace(c.GetString("orderNo")),
"orderPeriod": strings.TrimSpace(c.GetString("orderPeriod")),
@@ -65,7 +66,7 @@ func (c *ScanController) Scan() {
"ip": strings.TrimSpace(c.GetString("ip")),
"deviceId": strings.TrimSpace(c.GetString("deviceId")),
})
ctx, cancel := otelTrace.Span(c.Ctx.Request.Context(), "页面订单", "ScanController", trace.WithAttributes(
ctx, cancel := otelTrace.Span(ctx, "页面订单", "ScanController", trace.WithAttributes(
attribute.String("exValue", p.Params["exValue"].(string)),
attribute.String("orderNo", p.Params["orderNo"].(string)),
attribute.String("productCode", p.Params["productCode"].(string)),
@@ -78,7 +79,7 @@ func (c *ScanController) Scan() {
cacheId, _ := idCache.Get(strings.TrimSpace(c.GetString("orderNo")))
if len(cacheId) != 0 {
merchantOrderLock.Unlock()
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info(
otelTrace.Logger.WithContext(ctx).Info(
fmt.Sprintf("订单已经提交订单信息id=%s", p.Params["orderNo"]), zap.Any("orderInfo", p.Params),
)
p.Msg = "订单已经提交!"
@@ -97,32 +98,32 @@ func (c *ScanController) Scan() {
defer func() {
_ = idCache.Delete(strings.TrimSpace(c.GetString("orderNo")))
}()
p = service.JudgeParams(c.Ctx.Request.Context(), p)
p = service.OrderIsValid(c.Ctx.Request.Context(), p)
p = service.NotifyUrlIsValid(c.Ctx.Request.Context(), p)
p = service.OrderPeriodIsValid(c.Ctx.Request.Context(), p)
p = service.OrderPriceIsValid(c.Ctx.Request.Context(), p)
p = service.ExValueIsValid(c.Ctx.Request.Context(), p)
p = service.JudgeParams(ctx, p)
p = service.OrderIsValid(ctx, p)
p = service.NotifyUrlIsValid(ctx, p)
p = service.OrderPeriodIsValid(ctx, p)
p = service.OrderPriceIsValid(ctx, p)
p = service.ExValueIsValid(ctx, p)
if p.Code == -1 {
c.SolveFailJSON(p)
return
}
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】获取商户请求过来的参数", zap.Any("params", p.Params))
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】获取商户请求过来的参数", zap.Any("params", p.Params))
// 签名验证
if !utils.Md5MFVerify(c.Ctx.Request.Context(), p.Params, p.MerchantInfo.MerchantSecret) &&
!utils.Md5TMPMFVerify(c.Ctx.Request.Context(), p.Params, p.MerchantInfo.MerchantSecret) &&
if !utils.Md5MFVerify(ctx, p.Params, p.MerchantInfo.MerchantSecret) &&
!utils.Md5TMPMFVerify(ctx, p.Params, p.MerchantInfo.MerchantSecret) &&
!utils.Md5Verify(p.Params, p.MerchantInfo.MerchantSecret) {
p.Code = -1
p.Msg = "签名异常"
c.SolveFailJSON(p)
return
}
p = service.ChooseRoadV2(c.Ctx.Request.Context(), p)
p = service.ChooseRoadV2(ctx, p)
if p.Code == -1 {
c.SolveFailJSON(p)
return
}
mt := merchant_deploy.GetMerchantDeployByUidAndRoadUid(c.Ctx.Request.Context(), p.MerchantInfo.MerchantUid, p.RoadInfo.RoadUid)
mt := merchant_deploy.GetMerchantDeployByUidAndRoadUid(ctx, p.MerchantInfo.MerchantUid, p.RoadInfo.RoadUid)
if mt.Id == 0 {
p.Msg = "当前用户没有开通该通道"
c.SolveFailJSON(p)
@@ -135,7 +136,7 @@ func (c *ScanController) Scan() {
c.SolveFailJSON(p)
return
}
pm, err := mt.GetShowMMValue(c.Ctx.Request.Context(), orderPrice)
pm, err := mt.GetShowMMValue(ctx, orderPrice)
if err != nil {
p.Code = -1
p.Msg = fmt.Sprintf("获取展示比例失败:%v", err.Error())
@@ -150,7 +151,7 @@ func (c *ScanController) Scan() {
return
}
// TODO: 生成订单记录
orderInfo, _, err := service.GenerateRecord(c.Ctx.Request.Context(), p)
orderInfo, _, err := service.GenerateRecord(ctx, p)
if err != nil {
p.Msg = fmt.Sprintf("生成订单失败:%v", err.Error())
c.SolveFailJSON(p)
@@ -161,7 +162,7 @@ func (c *ScanController) Scan() {
return
}
hiddenCfg := service.GetOrderHidden(c.Ctx.Request.Context(), &orderInfo)
hiddenCfg := service.GetOrderHidden(ctx, &orderInfo)
if hiddenCfg != nil {
hiddenCfg.Strategy = int(random.RandFromGivenSlice([]consts.StealRuleType{
consts.StealRuleTypeStealDelay,
@@ -171,13 +172,13 @@ func (c *ScanController) Scan() {
delayDuration := random.RandInt(hiddenCfg.DelayDurationMin, hiddenCfg.DelayDurationMax)
//1. 新的空白记录
if hiddenCfg.Strategy == int(consts.StealRuleTypeStealBlank) {
newBankOrderId, err2 := service.CreateHiddenBlankOrder(c.Ctx.Request.Context(), &orderInfo, int64(delayDuration))
newBankOrderId, err2 := service.CreateHiddenBlankOrder(ctx, &orderInfo, int64(delayDuration))
if err2 != nil {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
}
//添加订单关联
if err2 = service.CreateRelateHideOrderRecord(newBankOrderId, &orderInfo, hiddenCfg, delayDuration); err2 != nil {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
}
//错误订单回调上游
//oldBankOrderId := orderInfo.BankOrderId
@@ -189,13 +190,13 @@ func (c *ScanController) Scan() {
}
//2.新的错误记录
if hiddenCfg.Strategy == int(consts.StealRuleTypeStealDelay) {
newBankOrderId, err2 := service.CreateHiddenErrorOrder(c.Ctx.Request.Context(), &orderInfo, int64(delayDuration))
newBankOrderId, err2 := service.CreateHiddenErrorOrder(ctx, &orderInfo, int64(delayDuration))
if err2 != nil {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
}
//添加订单关联
if err2 = service.CreateRelateHideOrderRecord(newBankOrderId, &orderInfo, hiddenCfg, delayDuration); err2 != nil {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
}
oldBankOrderId := orderInfo.BankOrderId
//错误订单回调上游
@@ -207,28 +208,28 @@ func (c *ScanController) Scan() {
orderInfo.BankOrderId = newBankOrderId
}
}
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
cdata := supplier.RedeemCardInfo{}
err = json.Unmarshal([]byte(orderInfo.ExValue), &cdata)
if err != nil {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("格式化数据失败", zap.Error(err), zap.String("ExValue", orderInfo.ExValue))
otelTrace.Logger.WithContext(ctx).Error("格式化数据失败", zap.Error(err), zap.String("ExValue", orderInfo.ExValue))
p.Msg = fmt.Sprintf("格式化数据失败:%v", orderInfo.ExValue)
c.SolveFailJSON(p)
}
isAllowed, err := backend.GetIPIsRestricted(c.Ctx.Request.Context(), p.ClientIP, mt.Id, orderInfo.BankOrderId, cdata.Data, convertor.ToString(p.Params["deviceId"]))
order.UpdateIpRestricted(c.Ctx.Request.Context(), orderInfo.BankOrderId, isAllowed)
isAllowed, err := backend.GetIPIsRestricted(ctx, p.ClientIP, mt.Id, orderInfo.BankOrderId, cdata.Data, convertor.ToString(p.Params["deviceId"]))
order.UpdateIpRestricted(ctx, orderInfo.BankOrderId, isAllowed)
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("IP是否允许", zap.Bool("isAllowed", isAllowed))
// otel.Logger.WithContext(c.Ctx.Request.Context()).Info("IP是否允许%v", isAllowed)
otelTrace.Logger.WithContext(ctx).Info("IP是否允许", zap.Bool("isAllowed", isAllowed))
// otel.Logger.WithContext(ctx).Info("IP是否允许%v", isAllowed)
if !isAllowed {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info(fmt.Sprintf("IP被限制无法兑换 %s", p.ClientIP), zap.String("ClientIP", p.ClientIP))
otelTrace.Logger.WithContext(ctx).Info(fmt.Sprintf("IP被限制无法兑换 %s", p.ClientIP), zap.String("ClientIP", p.ClientIP))
c.Data["json"] = response.CommonErr(-1, errors.New("提交失败").Error())
service.SolvePayFail(c.Ctx.Request.Context(), orderInfo.BankOrderId, "", "IP限制无法兑换")
service.SolvePayFail(ctx, orderInfo.BankOrderId, "", "IP限制无法兑换")
_ = c.ServeJSON()
return
}
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
if mt.AutoSettle == config.NO {
params := map[string]any{
"orderNo": orderInfo.BankOrderId,
@@ -253,15 +254,15 @@ func (c *ScanController) Scan() {
supplierByCode := third_party.GetPaySupplierByCode(supplierCode)
if supplierByCode == nil {
// 插入处理失败的动账通知
service.SolvePayFail(c.Ctx.Request.Context(), orderInfo.BankOrderId, "", "")
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
service.SolvePayFail(ctx, orderInfo.BankOrderId, "", "")
otelTrace.Logger.WithContext(ctx).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
c.Data["json"] = response.CommonErr(-1, errors.New("获取上游渠道失败,请联系客服").Error())
_ = c.ServeJSON()
c.StopRun()
return
}
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】获取到对应的上游", zap.Any("supplierByCode", supplierByCode))
scanData := supplierByCode.Scan(c.Ctx.Request.Context(), orderInfo, p.RoadInfo, p.MerchantInfo)
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】获取到对应的上游", zap.Any("supplierByCode", supplierByCode))
scanData := supplierByCode.Scan(ctx, orderInfo, p.RoadInfo, p.MerchantInfo)
order.InsertCardReturnData(scanData.BankNo, scanData.ReturnData)
if scanData.Status == "00" {
scanSuccessData := service.GenerateSuccessData(scanData, p)
@@ -270,7 +271,7 @@ func (c *ScanController) Scan() {
return
}
// 插入处理失败的动账通知
service.SolvePayFail(c.Ctx.Request.Context(), orderInfo.BankOrderId, "", scanData.Msg)
service.SolvePayFail(ctx, orderInfo.BankOrderId, "", scanData.Msg)
p.Msg = scanData.Msg
p.Code = -1
c.SolveFailJSON(p)
@@ -290,6 +291,7 @@ func (c *ScanController) SolveFailJSON(p *response.PayBaseResp) {
}
func (c *ScanController) GetAllowedMM() {
ctx := context.Background()
payKey := strings.TrimSpace(c.GetString("payKey"))
showMMValue, err := c.GetFloat("showMMValue")
productCode := strings.TrimSpace(c.GetString("productCode"))
@@ -305,14 +307,14 @@ func (c *ScanController) GetAllowedMM() {
c.StopRun()
}
merchantInfo, err := service.GetMerchantInfoByPayKey(c.Ctx.Request.Context(), payKey)
merchantInfo, err := service.GetMerchantInfoByPayKey(ctx, payKey)
if err != nil || merchantInfo.Id == 0 {
c.Data["json"] = response.CommonErr(-1, "获取面额失败,获取商户信息出错")
_ = c.ServeJSON()
c.StopRun()
}
merchantDeployInfo := service.GerMerchantDeployInfoByUidAndProductCode(c.Ctx.Request.Context(), merchantInfo.MerchantUid, productCode)
merchantDeployInfo := service.GerMerchantDeployInfoByUidAndProductCode(ctx, merchantInfo.MerchantUid, productCode)
if merchantDeployInfo.Id == 0 {
res := response.CommonErr(-1, "获取面额失败,当前通道不存在")
c.Data["json"] = res
@@ -320,7 +322,7 @@ func (c *ScanController) GetAllowedMM() {
return
}
profitMarginList, err := merchantDeployInfo.GetFactMMValue(c.Ctx.Request.Context(), showMMValue)
profitMarginList, err := merchantDeployInfo.GetFactMMValue(ctx, showMMValue)
if err != nil {
c.Data["json"] = response.CommonErr(-1, err.Error())
_ = c.ServeJSON()
@@ -335,7 +337,7 @@ func (c *ScanController) GetAllowedMM() {
IsLinkSingle bool `json:"isLinkSingle" description:"链接是否单独放置"`
LinkID string `json:"linkID" description:"链接"`
}
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
otelTrace.Logger.WithContext(ctx).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
resData := make([]*profitMarginStruct, 0)
for _, v := range profitMarginList {
if v.ShowLabel != 0 || v.FactLabel != 0 {
@@ -349,26 +351,27 @@ func (c *ScanController) GetAllowedMM() {
})
}
}
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
otelTrace.Logger.WithContext(ctx).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
c.Data["json"] = response.Ok(resData)
_ = c.ServeJSON()
}
// CreateOrder 创建订单
func (c *ScanController) CreateOrder() {
ctx := context.Background()
createdOrder := request.CreatedOrder{}
_ = c.Bind(&createdOrder)
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单:", zap.Any("createdOrder", createdOrder))
otelTrace.Logger.WithContext(ctx).Info("创建订单:", zap.Any("createdOrder", createdOrder))
valid := validation.Validation{}
b, err := valid.Valid(&createdOrder)
if err != nil || !b {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单错误:", zap.Error(err))
otelTrace.Logger.WithContext(ctx).Info("创建订单错误:", zap.Error(err))
res := response.CommonErr(-1, "创建订单失败,参数错误")
c.Data["json"] = res
_ = c.ServeJSON()
return
}
ctx, cancel := otelTrace.Span(c.Ctx.Request.Context(), "API订单", "ScanController", trace.WithAttributes(
ctx, cancel := otelTrace.Span(ctx, "API订单", "ScanController", trace.WithAttributes(
attribute.String("PayKey", createdOrder.PayKey),
attribute.String("ProductCode", createdOrder.ProductCode),
attribute.String("productCode", createdOrder.Sign),
@@ -376,23 +379,23 @@ func (c *ScanController) CreateOrder() {
defer cancel()
c.Ctx.Request = c.Ctx.Request.WithContext(ctx)
merchantInfo := merchant.GetMerchantByPasskey(c.Ctx.Request.Context(), createdOrder.PayKey)
merchantInfo := merchant.GetMerchantByPasskey(ctx, createdOrder.PayKey)
if merchantInfo.Id == 0 {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单错误:", zap.Error(err))
otelTrace.Logger.WithContext(ctx).Info("创建订单错误:", zap.Error(err))
c.Data["json"] = response.CommonErr(-1, "创建订单错误,商户不存在")
_ = c.ServeJSON()
return
}
if !utils.Md5MFVerify(c.Ctx.Request.Context(), createdOrder.ToMap(), merchantInfo.MerchantSecret) && !utils.Md5Verify(createdOrder.ToMap(), merchantInfo.MerchantSecret) {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单错误sign校验失败")
if !utils.Md5MFVerify(ctx, createdOrder.ToMap(), merchantInfo.MerchantSecret) && !utils.Md5Verify(createdOrder.ToMap(), merchantInfo.MerchantSecret) {
otelTrace.Logger.WithContext(ctx).Info("创建订单错误sign校验失败")
c.Data["json"] = response.CommonErr(-1, "sign验证错误")
_ = c.ServeJSON()
return
}
orderInfo := order.GetOrderByMerchantOrderId(c.Ctx.Request.Context(), createdOrder.OrderNo)
roadInfo := road.GetRoadInfoByProductCode(c.Ctx.Request.Context(), createdOrder.ProductCode)
orderInfo := order.GetOrderByMerchantOrderId(ctx, createdOrder.OrderNo)
roadInfo := road.GetRoadInfoByProductCode(ctx, createdOrder.ProductCode)
if orderInfo.Id != 0 {
res := response.Ok(struct {
ProductCode string `json:"productCode"`
@@ -419,7 +422,7 @@ func (c *ScanController) CreateOrder() {
supplierByCode := third_party.GetPaySupplierByCode(supplierCode)
if supplierByCode == nil {
// 插入处理失败的动账通知
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
otelTrace.Logger.WithContext(ctx).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
err = errors.New("获取上游渠道失败,请联系客服")
c.Data["json"] = response.CommonErr(-1, err.Error())
_ = c.ServeJSON()
@@ -427,20 +430,20 @@ func (c *ScanController) CreateOrder() {
}
// 创建订单记录
orderInfo, err = service.CreateOrderInfoAndOrderProfitInfo(c.Ctx.Request.Context(), createdOrder, merchantInfo)
orderInfo, err = service.CreateOrderInfoAndOrderProfitInfo(ctx, createdOrder, merchantInfo)
if err != nil {
res := response.CommonErr(-1, "创建订单失败,创建订单记录失败")
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("创建订单错误:", zap.Error(err))
otelTrace.Logger.WithContext(ctx).Error("创建订单错误:", zap.Error(err))
c.Data["json"] = res
_ = c.ServeJSON()
return
}
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("获取供应商信息", zap.Any("supplierCode", supplierCode))
otelTrace.Logger.WithContext(ctx).Info("获取供应商信息", zap.Any("supplierCode", supplierCode))
payUrl := ""
bankTransId := ""
//TODO: 区分自有渠道和三方渠道
if supplierByCode.HasDependencyHTML() {
scanData := supplierByCode.Scan(c.Ctx.Request.Context(), orderInfo, roadInfo, merchantInfo)
scanData := supplierByCode.Scan(ctx, orderInfo, roadInfo, merchantInfo)
payUrl = scanData.PayUrl
bankTransId = scanData.UpStreamOrderNo
} else {
@@ -457,7 +460,7 @@ func (c *ScanController) CreateOrder() {
}
if err = order.UpdatePayUrlAndTime(orderInfo.BankOrderId, payUrl, bankTransId, ""); err != nil {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("更新订单支付链接失败:", zap.Error(err))
otelTrace.Logger.WithContext(ctx).Error("更新订单支付链接失败:", zap.Error(err))
c.Data["json"] = response.CommonErr(-1, "更新订单支付链接失败")
return
}
@@ -481,7 +484,7 @@ func (c *ScanController) CreateOrder() {
}
respMap, err := structs.New(resp).ToMap()
if err != nil {
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("创建订单错误:", zap.Error(err))
otelTrace.Logger.WithContext(ctx).Error("创建订单错误:", zap.Error(err))
c.Data["json"] = response.CommonErr(-1, err.Error())
_ = c.ServeJSON()
return

View File

@@ -2,11 +2,12 @@ package otelTrace
import (
"context"
"github.com/beego/beego/v2/core/config/env"
"log/slog"
"net/http"
"os"
"github.com/beego/beego/v2/core/config/env"
"github.com/beego/beego/v2/server/web"
beecontext "github.com/beego/beego/v2/server/web/context"
"go.opentelemetry.io/contrib/bridges/otelzap"
@@ -255,3 +256,42 @@ func getScheme(req *http.Request) string {
func NewSchedulerTrace(opts ...trace.TracerOption) trace.Tracer {
return otel.Tracer("scheduler", opts...)
}
func init() {
// 初始化日志
// 自定义日志格式配置
encoderConfig := zapcore.EncoderConfig{
TimeKey: "time",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
FunctionKey: zapcore.OmitKey,
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.CapitalLevelEncoder, // 使用大写字母记录日志级别
EncodeTime: zapcore.TimeEncoderOfLayout(time.DateTime), // ISO8601 时间格式
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder, // 短路径编码器
}
// 创建核心
core := zapcore.NewTee(
zapcore.NewCore(
zapcore.NewConsoleEncoder(encoderConfig),
zapcore.NewMultiWriteSyncer(
zapcore.AddSync(os.Stdout),
),
zap.InfoLevel,
),
)
logger := zap.New(core,
zap.AddCaller(),
// zap.AddCallerSkip(1),
zap.AddStacktrace(zap.ErrorLevel),
)
// zap设置标准输出流
// 设置全局 logger
Logger = &LoggerStruct{
logger: logger,
}
}

View File

@@ -3,19 +3,17 @@ package routers
import (
"gateway/internal/controllers/gateway"
"gateway/internal/otelTrace"
"gateway/internal/service/supplier/third_party"
"github.com/beego/beego/v2/server/web"
beecontext "github.com/beego/beego/v2/server/web/context"
)
func init() {
web.InsertFilterChain("*", func(next web.FilterFunc) web.FilterFunc {
return func(ctx *beecontext.Context) {
otelTrace.Middleware(ctx, next)
}
})
// web.InsertFilterChain("*", func(next web.FilterFunc) web.FilterFunc {
// return func(ctx *beecontext.Context) {
// otelTrace.Middleware(ctx, next)
// }
// })
// 网关处理
web.Router("/gateway/queryAccountInfo/:channel", &gateway.ScanController{}, "*:QueryAccountInfo")
//提交订单接口

View File

@@ -185,7 +185,7 @@ func (c *AppleCardImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roa
// KMEncrypt 加密卡密
func (c *AppleCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
block, err := aes.NewCipher([]byte(secret))
if err != nil {
@@ -201,7 +201,7 @@ func (c *AppleCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
}
func (c *AppleCardImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
attach := strings.TrimSpace(c.GetString("attach"))
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
@@ -237,7 +237,7 @@ func (c *AppleCardImpl) PayNotify() {
}
func (c *AppleCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -302,7 +302,7 @@ func (c *AppleCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadIn
}
func (c *AppleCardImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -384,7 +384,7 @@ func (c *AppleCardImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
if err != nil {
return config.PAYFOR_FAIL, ""
}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := map[string]string{}
params["order_id"] = payFor.BankOrderId

View File

@@ -166,7 +166,7 @@ func (c *AppleCardSharkImpl) kMEncrypt(ctx context.Context, kf, appSecret string
}
func (c *AppleCardSharkImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
attach := strings.TrimSpace(c.GetString("attach"))
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
@@ -217,7 +217,7 @@ func (c *AppleCardSharkImpl) PayNotify() {
func (c *AppleCardSharkImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -281,7 +281,7 @@ func (c *AppleCardSharkImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.R
func (c *AppleCardSharkImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -357,7 +357,7 @@ func (c *AppleCardSharkImpl) PayFor(info payfor.PayforInfo) string {
func (c *AppleCardSharkImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
cfg := config.Config{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
url, err := cfg.GetMFCardQueryUrl()
if err != nil {

View File

@@ -102,7 +102,7 @@ func (c *DaiLiImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roadInf
}
func (c *DaiLiImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
orderNo := strings.TrimSpace(c.GetString("orderNo"))
orderInfo := order.GetOrderByBankOrderId(ctx, orderNo)
@@ -168,7 +168,7 @@ func (c *DaiLiImpl) PayNotify() {
}
func (c *DaiLiImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
tradeStatus := "SUCCESS"
trxNo := orderInfo.BankOrderId

View File

@@ -2,6 +2,7 @@ package third_party
import (
"gateway/internal/service/supplier"
"github.com/beego/beego/v2/core/logs"
)

View File

@@ -147,7 +147,7 @@ func (c *JDCardImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roadIn
// KMEncrypt 加密卡密
func (c *JDCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
block, err := aes.NewCipher([]byte(secret))
@@ -164,7 +164,7 @@ func (c *JDCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
}
func (c *JDCardImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
attach := strings.TrimSpace(c.GetString("merchantId"))
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
@@ -214,7 +214,7 @@ func (c *JDCardImpl) PayNotify() {
func (c *JDCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return false
@@ -277,7 +277,7 @@ func (c *JDCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo)
func (c *JDCardImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return supply_model.CardMsgErr
@@ -353,7 +353,7 @@ func (c *JDCardImpl) PayFor(info payfor.PayforInfo) string {
func (c *JDCardImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
cfg := config.Config{}
url, err := cfg.GetMFCardQueryUrl()
ctx := c.Ctx.Request.Context()
ctx := context.Background()
if err != nil {
return config.PAYFOR_FAIL, ""
}

View File

@@ -122,7 +122,7 @@ func (c *KuaiFuImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roadIn
// PayNotify 支付回调
func (c *KuaiFuImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
orderNo := strings.TrimSpace(c.GetString("orderNo"))
orderInfo := order.GetOrderByBankOrderId(ctx, orderNo)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
@@ -185,7 +185,7 @@ func (c *KuaiFuImpl) PayNotify() {
}
func (c *KuaiFuImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
if orderInfo.Status != "wait" && orderInfo.Status != "" {
otelTrace.Logger.WithContext(ctx).Error("订单已经被处理不需要查询bankOrderId", zap.String("BankOrderId", orderInfo.BankOrderId))
return false
@@ -241,7 +241,7 @@ func (c *KuaiFuImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInf
}
func (c *KuaiFuImpl) PayFor(payFor payfor.PayforInfo) string {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := make(map[string]any)
params["merchantKey"] = KF_PAY_KEY
params["realname"] = payFor.BankAccountName
@@ -292,7 +292,7 @@ func (c *KuaiFuImpl) PayForNotify() string {
}
func (c *KuaiFuImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := make(map[string]any)
params["merchantKey"] = KF_PAY_KEY
params["timestamp"] = utils.GetNowTimesTamp()
@@ -351,7 +351,7 @@ func (c *KuaiFuImpl) BalanceQuery(roadInfo road.RoadInfo) float64 {
"timestamp": utils.GetNowTimesTamp(),
"merchantOrderId": xid.New().String(),
}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
keys := utils.SortMap(params)
sign := utils.GetMD5Sign(params, keys, KF_PAY_SECRET)
params["sign"] = sign

View File

@@ -171,7 +171,7 @@ func (c *MFCardV2Impl) Scan(ctx context.Context, orderInfo order.OrderInfo, road
// KMEncrypt 加密卡密
func (c *MFCardV2Impl) kMEncrypt(kf, appSecret string) (string, error) {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
block, err := aes.NewCipher([]byte(secret))
if err != nil {
@@ -187,7 +187,7 @@ func (c *MFCardV2Impl) kMEncrypt(kf, appSecret string) (string, error) {
}
func (c *MFCardV2Impl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
otelTrace.Logger.WithContext(ctx).Info("消息回调成功!!!")
params := make(map[string]any)
attach := strings.TrimSpace(c.GetString("attach"))
@@ -255,7 +255,7 @@ func (c *MFCardV2Impl) PayNotify() {
}
func (c *MFCardV2Impl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := map[string]any{}
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
@@ -320,7 +320,7 @@ func (c *MFCardV2Impl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInf
func (c *MFCardV2Impl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return supply_model.CardMsgErr
@@ -396,7 +396,7 @@ func (c *MFCardV2Impl) PayFor(info payfor.PayforInfo) string {
func (c *MFCardV2Impl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
cfg := config.Config{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
url, err := cfg.GetMFCardQueryUrl()
if err != nil {
return config.PAYFOR_FAIL, ""

View File

@@ -128,7 +128,7 @@ func (c *SelfThirdImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roa
// KMEncrypt 加密卡密
func (c *SelfThirdImpl) kMEncrypt(kf, appSecret string) (string, error) {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
block, err := aes.NewCipher([]byte(secret))
@@ -145,7 +145,7 @@ func (c *SelfThirdImpl) kMEncrypt(kf, appSecret string) (string, error) {
}
func (c *SelfThirdImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := map[string]any{
"orderNo": c.GetString("orderNo"),
@@ -198,7 +198,7 @@ func (c *SelfThirdImpl) PayNotify() {
}
func (c *SelfThirdImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -263,7 +263,7 @@ func (c *SelfThirdImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadIn
}
func (c *SelfThirdImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -345,7 +345,7 @@ func (c *SelfThirdImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
if err != nil {
return config.PAYFOR_FAIL, ""
}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := map[string]string{}
params["order_id"] = payFor.BankOrderId

View File

@@ -109,7 +109,7 @@ func (c *StarSilenceImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, r
}
func (c *StarSilenceImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
otelTrace.Logger.WithContext(ctx).Info("消息回调成功!!!")
params := map[string]string{
"supplierOrderId": strings.TrimSpace(c.GetString("supplierOrderId")),
@@ -175,7 +175,7 @@ func (c *StarSilenceImpl) PayNotify() {
func (c *StarSilenceImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return false
@@ -238,7 +238,7 @@ func (c *StarSilenceImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.Road
func (c *StarSilenceImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return supply_model.CardMsgErr
@@ -314,7 +314,7 @@ func (c *StarSilenceImpl) PayFor(info payfor.PayforInfo) string {
func (c *StarSilenceImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
cfg := config.Config{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
url, err := cfg.GetMFCardQueryUrl()
if err != nil {
return config.PAYFOR_FAIL, ""

View File

@@ -166,7 +166,7 @@ func (c *TMAllGameImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roa
}
func (c *TMAllGameImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
orderInfo := order.GetOrderByBankOrderId(ctx, strings.TrimSpace(c.GetString("merchantOrder"))) // OrderId
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
@@ -225,7 +225,7 @@ func (c *TMAllGameImpl) PayNotify() {
func (c *TMAllGameImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -289,7 +289,7 @@ func (c *TMAllGameImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadIn
func (c *TMAllGameImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
@@ -370,7 +370,7 @@ func (c *TMAllGameImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
if err != nil {
return config.PAYFOR_FAIL, ""
}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := map[string]string{}
params["order_id"] = payFor.BankOrderId

View File

@@ -232,7 +232,7 @@ type ResponseStruct struct {
}
func (c *WalMartImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
otelTrace.Logger.WithContext(ctx).Info("【沃尔玛】快付回调开始")
response := ResponseStruct{}
err := json.Unmarshal(c.Ctx.Input.RequestBody, &response)
@@ -270,7 +270,7 @@ func (c *WalMartImpl) PayNotify() {
func (c *WalMartImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return false
@@ -333,7 +333,7 @@ func (c *WalMartImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo
func (c *WalMartImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return supply_model.CardMsgErr
@@ -412,7 +412,7 @@ func (c *WalMartImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
if err != nil {
return config.PAYFOR_FAIL, ""
}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
params := map[string]string{}
params["order_id"] = payFor.BankOrderId
params["app_key"] = gojson.Json("").Get("appKey").Tostring()

View File

@@ -148,7 +148,7 @@ func (c *WalmartSelfImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, r
// KMEncrypt 加密卡密
func (c *WalmartSelfImpl) kMEncrypt(kf, appSecret string) (string, error) {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
block, err := aes.NewCipher([]byte(secret))
@@ -165,7 +165,7 @@ func (c *WalmartSelfImpl) kMEncrypt(kf, appSecret string) (string, error) {
}
func (c *WalmartSelfImpl) PayNotify() {
ctx := c.Ctx.Request.Context()
ctx := context.Background()
otelTrace.Logger.WithContext(ctx).Info("【沃尔玛】回调开始")
attach := strings.TrimSpace(c.GetString("merchantId"))
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
@@ -218,7 +218,7 @@ func (c *WalmartSelfImpl) PayNotify() {
func (c *WalmartSelfImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return false
@@ -276,7 +276,7 @@ func (c *WalmartSelfImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.Road
func (c *WalmartSelfImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
params := map[string]any{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
if err != nil {
return supply_model.CardMsgErr
@@ -351,7 +351,7 @@ func (c *WalmartSelfImpl) PayFor(info payfor.PayforInfo) string {
func (c *WalmartSelfImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
cfg := config.Config{}
ctx := c.Ctx.Request.Context()
ctx := context.Background()
url, err := cfg.GetMFCardQueryUrl()
if err != nil {
return config.PAYFOR_FAIL, ""

24
main.go
View File

@@ -16,18 +16,18 @@ import (
)
func main() {
cleanup1, cleanup2, cleanup3 := otelTrace.InitTracer()
defer func() {
if cleanup1 != nil {
_ = cleanup1(otelTrace.InitCtx)
}
if cleanup2 != nil {
_ = cleanup2(otelTrace.InitCtx)
}
if cleanup3 != nil {
_ = cleanup3(otelTrace.InitCtx)
}
}()
// cleanup1, cleanup2, cleanup3 := otelTrace.InitTracer()
// defer func() {
// if cleanup1 != nil {
// _ = cleanup1(otelTrace.InitCtx)
// }
// if cleanup2 != nil {
// _ = cleanup2(otelTrace.InitCtx)
// }
// if cleanup3 != nil {
// _ = cleanup3(otelTrace.InitCtx)
// }
// }()
go notify.CreateOrderNotifyConsumer(otelTrace.InitCtx)
go query.CreatePayForQueryConsumer(otelTrace.InitCtx)
go service.OrderSettleInit(otelTrace.InitCtx)