diff --git a/app/main/api/internal/logic/pay/paymentlogic.go b/app/main/api/internal/logic/pay/paymentlogic.go index 1377d07..09f47fb 100644 --- a/app/main/api/internal/logic/pay/paymentlogic.go +++ b/app/main/api/internal/logic/pay/paymentlogic.go @@ -7,6 +7,7 @@ import ( "tyc-server/app/main/api/internal/service" "tyc-server/app/main/api/internal/svc" "tyc-server/app/main/api/internal/types" + "tyc-server/app/main/model" "tyc-server/common/ctxdata" "tyc-server/common/xerr" @@ -70,6 +71,26 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp, return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成订单失败: %+v", err) } + promoteKey, ok := l.ctx.Value("promoteKey").(string) + if ok && promoteKey != "" { + url := fmt.Sprintf("%s/%s", l.svcCtx.Config.AdminPromotion.URLDomain, promoteKey) + promoteLink, err := l.svcCtx.AdminPromotionLinkModel.FindOneByUrl(l.ctx, url) + if err != nil && !errors.Is(err, model.ErrNotFound) { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成订单, 查找推广链接失败: %+v", err) + } + if promoteLink != nil { + promoteOrder := &model.AdminPromotionOrder{ + OrderId: orderResp.OrderID, + LinkId: promoteLink.Id, + UserId: userID, + AdminUserId: promoteLink.AdminUserId, + } + _, insertPromoteOrderErr := l.svcCtx.AdminPromotionOrderModel.Insert(l.ctx, nil, promoteOrder) + if insertPromoteOrderErr != nil { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成订单, 保存推广订单失败: %+v", insertPromoteOrderErr) + } + } + } return &types.PaymentResp{ PrepayData: orderResp.PayData, PrepayId: orderResp.OrderNo, diff --git a/app/main/api/internal/service/payService.go b/app/main/api/internal/service/payService.go index e0f2572..15c7818 100644 --- a/app/main/api/internal/service/payService.go +++ b/app/main/api/internal/service/payService.go @@ -366,7 +366,7 @@ func (p *PayService) Refund(ctx context.Context, req *RefundRequest) (*RefundRes refundAmount: resp.RefundAmount, platformRefundId: sql.NullString{String: resp.RefundID, Valid: true}, } - order.Status = model.OrderRefundStatusSuccess + order.Status = model.OrderStatusRefund default: return fmt.Errorf("不支持的支付平台退款: %s", order.PaymentPlatform) } @@ -389,7 +389,7 @@ func (p *PayService) Refund(ctx context.Context, req *RefundRequest) (*RefundRes } // 更新订单状态 - order.Status = model.OrderStatusRefunding + order.Status = model.OrderStatusRefund order.RefundTime = sql.NullTime{Time: result.refundTime, Valid: !result.refundTime.IsZero()} if _, err := p.orderModel.Update(ctx, session, order); err != nil { return fmt.Errorf("更新订单状态失败: %v", err) diff --git a/pkg/lzkit/crypto/ecb_test.go b/pkg/lzkit/crypto/ecb_test.go index a497495..21eb69f 100644 --- a/pkg/lzkit/crypto/ecb_test.go +++ b/pkg/lzkit/crypto/ecb_test.go @@ -9,29 +9,26 @@ import ( func TestAesEcbMobileEncryption(t *testing.T) { // 测试手机号加密 - mobile := "13800138000" - key := []byte("1234567890abcdef") // 16字节AES-128密钥 - - keyStr := hex.EncodeToString(key) + mobile := "13380082033" // 测试加密 - encrypted, err := EncryptMobile(mobile, keyStr) + encrypted, err := EncryptMobile(mobile, "ff83609b2b24fc73196aac3d3dfb874f") if err != nil { t.Fatalf("手机号加密失败: %v", err) } - fmt.Println(encrypted) + fmt.Printf("encrypted: %s\n", encrypted) // 测试解密 - decrypted, err := DecryptMobile(encrypted, keyStr) + decrypted, err := DecryptMobile("oEpLcrIpDPN63rOlESXTDg==", "ff83609b2b24fc73196aac3d3dfb874f") if err != nil { t.Fatalf("手机号解密失败: %v", err) } - fmt.Println(decrypted) + fmt.Printf("decrypted: %s\n", decrypted) // 验证结果 if decrypted != mobile { t.Errorf("解密结果不匹配,期望: %s, 实际: %s", mobile, decrypted) } // 测试相同输入产生相同输出(确定性) - encrypted2, _ := EncryptMobile(mobile, keyStr) + encrypted2, _ := EncryptMobile(mobile, "ff83609b2b24fc73196aac3d3dfb874f") if encrypted != encrypted2 { t.Errorf("AES-ECB不是确定性的,两次加密结果不同: %s vs %s", encrypted, encrypted2) }