diff --git a/app/main/api/internal/logic/query/queryservicelogic.go b/app/main/api/internal/logic/query/queryservicelogic.go index 01436c6..4eddda5 100644 --- a/app/main/api/internal/logic/query/queryservicelogic.go +++ b/app/main/api/internal/logic/query/queryservicelogic.go @@ -12,6 +12,7 @@ import ( "xingfucha-server/app/main/model" "xingfucha-server/common/ctxdata" "xingfucha-server/common/xerr" + "xingfucha-server/pkg/captcha" "xingfucha-server/pkg/lzkit/crypto" "xingfucha-server/pkg/lzkit/validator" @@ -84,10 +85,12 @@ func (l *QueryServiceLogic) ProcessMarriageLogic(req *types.QueryServiceReq) (*t return nil, errors.Wrapf(xerr.NewErrCodeMsg(xerr.PARAM_VERIFICATION_ERROR, validatorErr.Error()), "查询服务, 参数不正确: %+v", validatorErr) } - // 校验验证码 - verifyCodeErr := l.VerifyCode(data.Mobile, data.Code) - if verifyCodeErr != nil { - return nil, verifyCodeErr + // 校验拼图验证码(marriage 产品使用拼图验证,不使用短信验证码;captcha_verify_param 为必传) + if data.CaptchaVerifyParam == "" { + return nil, errors.Wrapf(xerr.NewErrMsg("请完成拼图验证"), "marriage 查询缺少拼图验证参数") + } + if err := l.VerifyCaptcha(data.CaptchaVerifyParam); err != nil { + return nil, err } // 校验三要素 @@ -586,6 +589,20 @@ func (l *QueryServiceLogic) VerifyCode(mobile string, code string) error { return nil } +// 校验拼图验证码 +func (l *QueryServiceLogic) VerifyCaptcha(captchaVerifyParam string) error { + cfg := l.svcCtx.Config.Captcha + if err := captcha.Verify(captcha.Config{ + AccessKeyID: cfg.AccessKeyID, + AccessKeySecret: cfg.AccessKeySecret, + EndpointURL: cfg.EndpointURL, + SceneID: cfg.SceneID, + }, captchaVerifyParam); err != nil { + return err + } + return nil +} + // 二、三要素验证 func (l *QueryServiceLogic) Verify(Name string, IDCard string, Mobile string) error { // 开发环境下跳过二/三要素验证(避免未授权IP调用天元API失败) diff --git a/app/main/api/internal/types/query.go b/app/main/api/internal/types/query.go index c5e81bd..b5fc9f3 100644 --- a/app/main/api/internal/types/query.go +++ b/app/main/api/internal/types/query.go @@ -1,10 +1,10 @@ package types type MarriageReq struct { - Name string `json:"name" validate:"required,name"` - IDCard string `json:"id_card" validate:"required,idCard"` - Mobile string `json:"mobile" validate:"required,mobile"` - Code string `json:"code" validate:"required"` + Name string `json:"name" validate:"required,name"` + IDCard string `json:"id_card" validate:"required,idCard"` + Mobile string `json:"mobile" validate:"required,mobile"` + CaptchaVerifyParam string `json:"captcha_verify_param"` } type HomeServiceReq struct { Name string `json:"name" validate:"required,name"`