This commit is contained in:
李子铭 2025-03-06 17:25:06 +08:00
parent f04ad17edb
commit 1800084933
4 changed files with 40 additions and 18 deletions

View File

@ -119,7 +119,7 @@ func (v *Cmb) NotifyConsume(ctx context.Context, order *bo.OrderBo, orderOutRequ
return err return err
} }
request, err := v.CmbMixRepo.GetRequest(ctx, &bo.CmbRequestBo{ request, err := v.CmbMixRepo.GetCmbRequest(ctx, &bo.CmbRequestBo{
FuncName: vo.CmbNotifyFuncName, FuncName: vo.CmbNotifyFuncName,
BizContent: string(bizJsonBytes), BizContent: string(bizJsonBytes),
}) })

View File

@ -10,6 +10,7 @@ import (
type CmbMixRepo interface { type CmbMixRepo interface {
OrderVerify(ctx context.Context, req *v1.CmbRequest, funcName vo.CmbFuncName) (*v1.CmbOrderRequest, error) OrderVerify(ctx context.Context, req *v1.CmbRequest, funcName vo.CmbFuncName) (*v1.CmbOrderRequest, error)
ProductQueryVerify(ctx context.Context, req *v1.CmbRequest, funcName vo.CmbFuncName) (*v1.CmbQueryProductRequest, error) ProductQueryVerify(ctx context.Context, req *v1.CmbRequest, funcName vo.CmbFuncName) (*v1.CmbQueryProductRequest, error)
GetRequest(ctx context.Context, reqBo *bo.CmbRequestBo) (*v1.CmbRequest, error) GetRequest(ctx context.Context, bizContent string) (*v1.CmbRequest, error)
GetCmbRequest(_ context.Context, reqBo *bo.CmbRequestBo) (*v1.CmbRequest, error)
GetResponse(ctx context.Context, reqBo *bo.CmbResponseBo) (*v1.CmbReply, error) GetResponse(ctx context.Context, reqBo *bo.CmbResponseBo) (*v1.CmbReply, error)
} }

View File

@ -70,7 +70,7 @@ func (s *CmbMixRepoImpl) Verify(_ context.Context, req *v1.CmbRequest, funcName
return bizStr, nil return bizStr, nil
} }
func (s *CmbMixRepoImpl) GetRequest(_ context.Context, reqBo *bo.CmbRequestBo) (*v1.CmbRequest, error) { func (s *CmbMixRepoImpl) GetCmbRequest(_ context.Context, reqBo *bo.CmbRequestBo) (*v1.CmbRequest, error) {
encryptBody, err := cmb.Encrypt(s.bc.Cmb.Sm2Puk, reqBo.BizContent) encryptBody, err := cmb.Encrypt(s.bc.Cmb.Sm2Puk, reqBo.BizContent)
if err != nil { if err != nil {
@ -88,11 +88,7 @@ func (s *CmbMixRepoImpl) GetRequest(_ context.Context, reqBo *bo.CmbRequestBo) (
Sign: "", Sign: "",
} }
str := cmb.SortStructStr(req) str := fmt.Sprintf("%s?%s", reqBo.FuncName, cmb.SortStructStr(req))
if len(reqBo.FuncName) > 0 {
str = fmt.Sprintf("%s?%s", reqBo.FuncName, str)
}
sing, err := cmb.Sign(s.bc.Cmb.CmbSm2Pik, str) sing, err := cmb.Sign(s.bc.Cmb.CmbSm2Pik, str)
if err != nil { if err != nil {
@ -104,6 +100,36 @@ func (s *CmbMixRepoImpl) GetRequest(_ context.Context, reqBo *bo.CmbRequestBo) (
return req, nil return req, nil
} }
func (s *CmbMixRepoImpl) GetRequest(_ context.Context, bizContent string) (*v1.CmbRequest, error) {
encryptBody, err := cmb.Encrypt(s.bc.Cmb.Sm2Puk, bizContent)
if err != nil {
return nil, err
}
req := &v1.CmbRequest{
Mid: s.bc.Cmb.Mid,
Aid: s.bc.Cmb.Aid,
Date: time.Now().Format("20060102150405"),
Random: string(cmb.RandomBytes(16)),
KeyAlias: s.bc.Cmb.KeyAlias,
CmbKeyAlias: s.bc.Cmb.CmbKeyAlias,
EncryptBody: encryptBody,
Sign: "",
}
str := cmb.SortStructStr(req)
sign, err := cmb.Sign(s.bc.Cmb.CmbSm2Pik, str)
if err != nil {
return nil, err
}
req.Sign = sign
return req, nil
}
func (s *CmbMixRepoImpl) GetResponse(_ context.Context, reqBo *bo.CmbResponseBo) (*v1.CmbReply, error) { func (s *CmbMixRepoImpl) GetResponse(_ context.Context, reqBo *bo.CmbResponseBo) (*v1.CmbReply, error) {
reply := &v1.CmbReply{ reply := &v1.CmbReply{

View File

@ -4,8 +4,6 @@ import (
"encoding/json" "encoding/json"
"github.com/go-kratos/kratos/v2/transport/http" "github.com/go-kratos/kratos/v2/transport/http"
v1 "voucher/api/v1" v1 "voucher/api/v1"
"voucher/internal/biz/bo"
"voucher/internal/biz/vo"
) )
func (s *VoucherService) CmbOrderMock(ctx http.Context) error { func (s *VoucherService) CmbOrderMock(ctx http.Context) error {
@ -20,10 +18,7 @@ func (s *VoucherService) CmbOrderMock(ctx http.Context) error {
return err return err
} }
reply, err := s.CmbMixRepo.GetRequest(ctx, &bo.CmbRequestBo{ reply, err := s.CmbMixRepo.GetRequest(ctx, string(bizJsonBytes))
FuncName: vo.CmbOrderFuncName,
BizContent: string(bizJsonBytes),
})
if err != nil { if err != nil {
return err return err
} }
@ -43,10 +38,10 @@ func (s *VoucherService) CmbProductQueryMock(ctx http.Context) error {
return err return err
} }
reply, err := s.CmbMixRepo.GetRequest(ctx, &bo.CmbRequestBo{ reply, err := s.CmbMixRepo.GetRequest(ctx, string(bizJsonBytes))
FuncName: vo.CmbProductQueryFuncName, if err != nil {
BizContent: string(bizJsonBytes), return err
}) }
if err != nil { if err != nil {
return err return err
} }