From 952d7e35a61146d9178f845992790338ee263886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AD=90=E9=93=AD?= Date: Thu, 21 Nov 2024 10:10:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/zltx_card_v1/go.mod | 2 +- plugins/zltx_card_v1/go.sum | 2 ++ plugins/zltx_v1/go.mod | 2 +- plugins/zltx_v1/go.sum | 2 ++ plugins/zltx_v1/internal/transform.go | 23 +++++++++++++++++++---- plugins/zltx_v1/internal/zltx_v1.go | 6 +++++- plugins/zltx_v1/internal/zltx_v1_test.go | 2 +- utils/helper/common.go | 15 +++++++++++---- 8 files changed, 42 insertions(+), 12 deletions(-) diff --git a/plugins/zltx_card_v1/go.mod b/plugins/zltx_card_v1/go.mod index ef7bab1..ae7d8fc 100644 --- a/plugins/zltx_card_v1/go.mod +++ b/plugins/zltx_card_v1/go.mod @@ -3,7 +3,7 @@ module plugins/zltx_card_v1 go 1.22.2 require ( - gitea.cdlsxd.cn/sdk/plugin v1.0.12 + gitea.cdlsxd.cn/sdk/plugin v1.0.13 github.com/go-playground/validator/v10 v10.22.0 github.com/hashicorp/go-plugin v1.6.1 github.com/stretchr/testify v1.9.0 diff --git a/plugins/zltx_card_v1/go.sum b/plugins/zltx_card_v1/go.sum index ffb3855..105db9f 100644 --- a/plugins/zltx_card_v1/go.sum +++ b/plugins/zltx_card_v1/go.sum @@ -1,5 +1,7 @@ gitea.cdlsxd.cn/sdk/plugin v1.0.12 h1:gA7zRagOro38rbRVIfFgGRuGOr+Wig8EjeqQkYedFXc= gitea.cdlsxd.cn/sdk/plugin v1.0.12/go.mod h1:FLuWLP2QP2aBzI2HCdZ7tvl1ieMuMOpTWvItmNGCeGA= +gitea.cdlsxd.cn/sdk/plugin v1.0.13 h1:v9YUJci9Npb6svojARQkkbWpdsm74/X9g/uAECtrCJg= +gitea.cdlsxd.cn/sdk/plugin v1.0.13/go.mod h1:FLuWLP2QP2aBzI2HCdZ7tvl1ieMuMOpTWvItmNGCeGA= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/plugins/zltx_v1/go.mod b/plugins/zltx_v1/go.mod index 4346206..3e61826 100644 --- a/plugins/zltx_v1/go.mod +++ b/plugins/zltx_v1/go.mod @@ -3,7 +3,7 @@ module plugins/zltx_v1 go 1.22.2 require ( - gitea.cdlsxd.cn/sdk/plugin v1.0.12 + gitea.cdlsxd.cn/sdk/plugin v1.0.13 github.com/go-playground/validator/v10 v10.22.0 github.com/hashicorp/go-plugin v1.6.1 github.com/stretchr/testify v1.9.0 diff --git a/plugins/zltx_v1/go.sum b/plugins/zltx_v1/go.sum index 867f9a8..82add4e 100644 --- a/plugins/zltx_v1/go.sum +++ b/plugins/zltx_v1/go.sum @@ -2,6 +2,8 @@ gitea.cdlsxd.cn/sdk/plugin v1.0.11 h1:NMMgw2p7ZF7EbWjkSO7ttM62BLhsG0bGmPdGGS1gpJ gitea.cdlsxd.cn/sdk/plugin v1.0.11/go.mod h1:FLuWLP2QP2aBzI2HCdZ7tvl1ieMuMOpTWvItmNGCeGA= gitea.cdlsxd.cn/sdk/plugin v1.0.12 h1:gA7zRagOro38rbRVIfFgGRuGOr+Wig8EjeqQkYedFXc= gitea.cdlsxd.cn/sdk/plugin v1.0.12/go.mod h1:FLuWLP2QP2aBzI2HCdZ7tvl1ieMuMOpTWvItmNGCeGA= +gitea.cdlsxd.cn/sdk/plugin v1.0.13 h1:v9YUJci9Npb6svojARQkkbWpdsm74/X9g/uAECtrCJg= +gitea.cdlsxd.cn/sdk/plugin v1.0.13/go.mod h1:FLuWLP2QP2aBzI2HCdZ7tvl1ieMuMOpTWvItmNGCeGA= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/plugins/zltx_v1/internal/transform.go b/plugins/zltx_v1/internal/transform.go index ba89a8d..007fde2 100644 --- a/plugins/zltx_v1/internal/transform.go +++ b/plugins/zltx_v1/internal/transform.go @@ -6,7 +6,9 @@ import ( "gitea.cdlsxd.cn/sdk/plugin/dctw/v1/api/direct" "gitea.cdlsxd.cn/sdk/plugin/dctw/v1/core" "gitea.cdlsxd.cn/sdk/plugin/proto" + "gitea.cdlsxd.cn/sdk/plugin/utils" "github.com/go-playground/validator/v10" + "regexp" ) type Config struct { @@ -50,18 +52,31 @@ func (c *Config) server() (*core.DctWServer, error) { ) } -func (c *Config) orderReq(in *proto.OrderRequest) *direct.Order { - var a direct.AccountType +func (c *Config) orderReq(in *proto.OrderRequest) (*direct.Order, error) { + // 账号类型(1:手机号 2:QQ号 其他:0) + accountType := int8(0) + if utils.IsPhoneNumber(in.Order.Account) { + accountType = 1 + } else { + qqPattern := `^[1-9][0-9]{4,11}$` + qqRegex, err := regexp.Compile(qqPattern) + if err != nil { + return nil, fmt.Errorf("正则表达式编译失败: %v", err) + } + if qqRegex.MatchString(in.Order.Account) { + accountType = 2 + } + } return &direct.Order{ Number: in.Order.Quantity, MerchantId: c.MerchantId, OutTradeNo: in.Order.OrderNo, ProductId: in.Product.ProductNo, - AccountType: a.AccountType(in.Order.Account), + AccountType: accountType, RechargeAccount: in.Order.Account, NotifyUrl: c.NotifyUrl, Version: "1.0", - } + }, nil } func orderResp(request *proto.OrderRequest, resp *direct.OrderResp) *proto.OrderResponse { diff --git a/plugins/zltx_v1/internal/zltx_v1.go b/plugins/zltx_v1/internal/zltx_v1.go index 25be73b..a6e1a05 100644 --- a/plugins/zltx_v1/internal/zltx_v1.go +++ b/plugins/zltx_v1/internal/zltx_v1.go @@ -32,8 +32,12 @@ func (p *ZLTXV1Service) Order(ctx context.Context, request *proto.OrderRequest) return nil, err } + req, err := c.orderReq(request) + if err != nil { + return nil, err + } a := &direct.Direct{DctWServer: server} - resp, err := a.Order(ctx, c.orderReq(request)) + resp, err := a.Order(ctx, req) if err != nil { return nil, err } diff --git a/plugins/zltx_v1/internal/zltx_v1_test.go b/plugins/zltx_v1/internal/zltx_v1_test.go index b742323..ecaed64 100644 --- a/plugins/zltx_v1/internal/zltx_v1_test.go +++ b/plugins/zltx_v1/internal/zltx_v1_test.go @@ -36,7 +36,7 @@ func TestOrder(t *testing.T) { Config: config(), Order: &proto.OrderRequest_Order{ OrderNo: "test_plugin_zltx_v1_direct_1", - Account: "18666666666", + Account: "583989020@qq.com", Quantity: 1, Extra: nil, }, diff --git a/utils/helper/common.go b/utils/helper/common.go index 9301fc1..5165323 100644 --- a/utils/helper/common.go +++ b/utils/helper/common.go @@ -21,12 +21,19 @@ func ToChinese(s string) string { // IsPhoneNumber 检查给定的字符串是否为有效的手机号码 func IsPhoneNumber(phoneNumber string) bool { - phoneRegex := `^1[34578]\d{9}$` - return regexp.MustCompile(phoneRegex).MatchString(phoneNumber) + regex := `^1[0-9]{10}$` + return regexp.MustCompile(regex).MatchString(phoneNumber) } // IsEmail 检查给定的字符串是否为有效的电子邮箱地址 func IsEmail(email string) bool { - var emailRegex = regexp.MustCompile(`[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`) - return emailRegex.MatchString(email) + regex := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` + return regexp.MustCompile(regex).MatchString(email) +} + +// IsValidQQ 检查给定的字符串是否为有效的 QQ 号 +func IsValidQQ(qq string) bool { + // QQ号正则表达式:5到11位数字,且开头不为0的情况 + re := regexp.MustCompile(`^(?!0)[0-9]{5,11}$`) + return re.MatchString(qq) }