v1.2.4z template (clean feature not done)
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package query
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"qnc-server/app/user/cmd/api/internal/logic/query"
|
||||
"qnc-server/app/user/cmd/api/internal/svc"
|
||||
"qnc-server/app/user/cmd/api/internal/types"
|
||||
"qnc-server/common/result"
|
||||
"qnc-server/pkg/lzkit/validator"
|
||||
)
|
||||
|
||||
func QuerySingleTestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.QuerySingleTestReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
result.ParamErrorResult(r, w, err)
|
||||
return
|
||||
}
|
||||
if err := validator.Validate(req); err != nil {
|
||||
result.ParamValidateErrorResult(r, w, err)
|
||||
return
|
||||
}
|
||||
l := query.NewQuerySingleTestLogic(r.Context(), svcCtx)
|
||||
resp, err := l.QuerySingleTest(&req)
|
||||
result.HttpResult(r, w, resp, err)
|
||||
}
|
||||
}
|
||||
@@ -196,6 +196,17 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||
rest.WithPrefix("/api/v1"),
|
||||
)
|
||||
|
||||
server.AddRoutes(
|
||||
[]rest.Route{
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/query/single/test",
|
||||
Handler: query.QuerySingleTestHandler(serverCtx),
|
||||
},
|
||||
},
|
||||
rest.WithPrefix("/api/v1"),
|
||||
)
|
||||
|
||||
server.AddRoutes(
|
||||
[]rest.Route{
|
||||
{
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package query
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"github.com/pkg/errors"
|
||||
"qnc-server/common/xerr"
|
||||
|
||||
"qnc-server/app/user/cmd/api/internal/svc"
|
||||
"qnc-server/app/user/cmd/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type QuerySingleTestLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewQuerySingleTestLogic(ctx context.Context, svcCtx *svc.ServiceContext) *QuerySingleTestLogic {
|
||||
return &QuerySingleTestLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *QuerySingleTestLogic) QuerySingleTest(req *types.QuerySingleTestReq) (resp *types.QuerySingleTestResp, err error) {
|
||||
//featrueModel, err := l.svcCtx.FeatureModel.FindOneByApiId(l.ctx, req.Api)
|
||||
//if err != nil {
|
||||
// return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "单查测试, 获取接口失败 : %d", err)
|
||||
//}
|
||||
marshalParams, err := json.Marshal(req.Params)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "单查测试, 序列化参数失败 : %d", err)
|
||||
}
|
||||
apiResp, err := l.svcCtx.ApiRequestService.PreprocessRequestApi(marshalParams, req.Api)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "单查测试, 获取接口失败 : %d", err)
|
||||
}
|
||||
var respData interface{}
|
||||
err = json.Unmarshal(apiResp, &respData)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "单查测试, 反序列化接口失败 : %d", err)
|
||||
}
|
||||
return &types.QuerySingleTestResp{
|
||||
Data: respData,
|
||||
Api: req.Api,
|
||||
}, nil
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/Masterminds/squirrel"
|
||||
"github.com/bytedance/sonic"
|
||||
"github.com/tidwall/gjson"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"io"
|
||||
@@ -14,6 +15,7 @@ import (
|
||||
"qnc-server/app/user/cmd/api/internal/config"
|
||||
"qnc-server/app/user/model"
|
||||
"qnc-server/pkg/lzkit/crypto"
|
||||
"qnc-server/pkg/lzkit/lzUtils"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
@@ -195,6 +197,10 @@ var requestProcessors = map[string]func(*ApiRequestService, []byte) ([]byte, err
|
||||
"CAR079": (*ApiRequestService).ProcessCAR079Request,
|
||||
"CAR066": (*ApiRequestService).ProcessCAR066Request,
|
||||
"CAR100": (*ApiRequestService).ProcessCAR100Request,
|
||||
"G37SC01": (*ApiRequestService).ProcessG37SC01Request,
|
||||
"G36SC01": (*ApiRequestService).ProcessG36SC01Request,
|
||||
"G22SC01": (*ApiRequestService).ProcessG22SC01Request,
|
||||
"Q03SC01": (*ApiRequestService).ProcessQ03SC01Request,
|
||||
}
|
||||
|
||||
// PreprocessRequestApi 调用指定的请求处理函数
|
||||
@@ -1056,3 +1062,145 @@ func (a *ApiRequestService) ProcessG20GZ01Request(params []byte) ([]byte, error)
|
||||
|
||||
return resultBytes, nil
|
||||
}
|
||||
|
||||
// G37SC01 自然人失信信息
|
||||
func (a *ApiRequestService) ProcessG37SC01Request(params []byte) ([]byte, error) {
|
||||
name := gjson.GetBytes(params, "name")
|
||||
idCard := gjson.GetBytes(params, "id_card")
|
||||
|
||||
if !name.Exists() || !idCard.Exists() {
|
||||
return nil, errors.New("api请求, G37SC01, 获取相关参数失败")
|
||||
}
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"name": a.westDexService.Encrypt(name.String()),
|
||||
"idcard": a.westDexService.Encrypt(idCard.String()),
|
||||
},
|
||||
}
|
||||
resp, callApiErr := a.westDexService.CallAPI("G37SC01", request)
|
||||
if callApiErr != nil {
|
||||
return nil, callApiErr
|
||||
}
|
||||
// 第一步:提取外层的 data 字段
|
||||
dataResult := gjson.GetBytes(resp, "data")
|
||||
if !dataResult.Exists() {
|
||||
return nil, fmt.Errorf("外层 data 字段不存在")
|
||||
}
|
||||
|
||||
// 解析 data 字符串为 JSON 对象
|
||||
parsedData := gjson.Parse(dataResult.String())
|
||||
sxbzxr := parsedData.Get("sxbzxr")
|
||||
if !sxbzxr.Exists() {
|
||||
return nil, fmt.Errorf("内层 sxbzxr 字段不存在")
|
||||
}
|
||||
return []byte(sxbzxr.Raw), nil
|
||||
}
|
||||
|
||||
// G36SC01 自然人限高信息
|
||||
func (a *ApiRequestService) ProcessG36SC01Request(params []byte) ([]byte, error) {
|
||||
name := gjson.GetBytes(params, "name")
|
||||
idCard := gjson.GetBytes(params, "id_card")
|
||||
|
||||
if !name.Exists() || !idCard.Exists() {
|
||||
return nil, errors.New("api请求, G36SC01, 获取相关参数失败")
|
||||
}
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"name": a.westDexService.Encrypt(name.String()),
|
||||
"idcard": a.westDexService.Encrypt(idCard.String()),
|
||||
},
|
||||
}
|
||||
resp, callApiErr := a.westDexService.CallAPI("G36SC01", request)
|
||||
if callApiErr != nil {
|
||||
return nil, callApiErr
|
||||
}
|
||||
// 第一步:提取外层的 data 字段
|
||||
dataResult := gjson.GetBytes(resp, "data")
|
||||
if !dataResult.Exists() {
|
||||
return nil, fmt.Errorf("外层 data 字段不存在")
|
||||
}
|
||||
|
||||
// 解析 data 字符串为 JSON 对象
|
||||
parsedData := gjson.Parse(dataResult.String())
|
||||
xgbzxr := parsedData.Get("xgbzxr")
|
||||
if !xgbzxr.Exists() {
|
||||
return nil, fmt.Errorf("内层 xgbzxr 字段不存在")
|
||||
}
|
||||
return []byte(xgbzxr.Raw), nil
|
||||
}
|
||||
|
||||
// G22SC01 自然人司法模型
|
||||
func (a *ApiRequestService) ProcessG22SC01Request(params []byte) ([]byte, error) {
|
||||
name := gjson.GetBytes(params, "name")
|
||||
idCard := gjson.GetBytes(params, "id_card")
|
||||
|
||||
if !name.Exists() || !idCard.Exists() {
|
||||
return nil, errors.New("api请求, G22SC01, 获取相关参数失败")
|
||||
}
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"name": a.westDexService.Encrypt(name.String()),
|
||||
"idcard": a.westDexService.Encrypt(idCard.String()),
|
||||
"inquired_auth": a.westDexService.GetDateRange(),
|
||||
},
|
||||
}
|
||||
resp, callApiErr := a.westDexService.CallAPI("G22SC01", request)
|
||||
if callApiErr != nil {
|
||||
return nil, callApiErr
|
||||
}
|
||||
// 第一步:提取外层的 data 字段
|
||||
dataResult := gjson.GetBytes(resp, "data")
|
||||
if !dataResult.Exists() {
|
||||
return nil, fmt.Errorf("外层 data 字段不存在")
|
||||
}
|
||||
|
||||
parseResult, err := lzUtils.RecursiveParse(dataResult.Raw)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("递归反序列化")
|
||||
}
|
||||
marshal, err := sonic.Marshal(parseResult)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("序列化失败: %v", err)
|
||||
}
|
||||
return marshal, nil
|
||||
}
|
||||
|
||||
// Q03SC01 企业涉诉信息
|
||||
func (a *ApiRequestService) ProcessQ03SC01Request(params []byte) ([]byte, error) {
|
||||
entName := gjson.GetBytes(params, "ent_name")
|
||||
entCode := gjson.GetBytes(params, "ent_code")
|
||||
|
||||
if !entName.Exists() || !entCode.Exists() {
|
||||
return nil, errors.New("api请求, Q03SC01, 获取相关参数失败")
|
||||
}
|
||||
|
||||
request := map[string]interface{}{
|
||||
"data": map[string]interface{}{
|
||||
"uscc": a.westDexService.Encrypt(entCode.String()),
|
||||
"org_name": a.westDexService.Encrypt(entName.String()),
|
||||
"inquired_auth": a.westDexService.GetDateRange(),
|
||||
},
|
||||
}
|
||||
resp, callApiErr := a.westDexService.CallAPI("Q03SC01", request)
|
||||
if callApiErr != nil {
|
||||
return nil, callApiErr
|
||||
}
|
||||
// 第一步:提取外层的 data 字段
|
||||
dataResult := gjson.GetBytes(resp, "data")
|
||||
if !dataResult.Exists() {
|
||||
return nil, fmt.Errorf("外层 data 字段不存在")
|
||||
}
|
||||
|
||||
parseResult, err := lzUtils.RecursiveParse(dataResult.Raw)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("递归反序列化")
|
||||
}
|
||||
marshal, err := sonic.Marshal(parseResult)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("序列化失败: %v", err)
|
||||
}
|
||||
return marshal, nil
|
||||
}
|
||||
|
||||
@@ -204,6 +204,16 @@ type QueryServiceResp struct {
|
||||
Id string `json:"id"`
|
||||
}
|
||||
|
||||
type QuerySingleTestReq struct {
|
||||
Params map[string]interface{} `json:"params"`
|
||||
Api string `json:"api"`
|
||||
}
|
||||
|
||||
type QuerySingleTestResp struct {
|
||||
Data interface{} `json:"data"`
|
||||
Api string `json:"api"`
|
||||
}
|
||||
|
||||
type RegisterReq struct {
|
||||
Mobile string `json:"mobile" validate:"required,mobile"`
|
||||
Password string `json:"password" validate:"required,min=11,max=11,password"`
|
||||
|
||||
Reference in New Issue
Block a user