add queryRecheck
This commit is contained in:
66
app/user/cmd/api/internal/logic/query/queryrechecklogic.go
Normal file
66
app/user/cmd/api/internal/logic/query/queryrechecklogic.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package query
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"encoding/hex"
|
||||
|
||||
"qnc-server/app/user/cmd/api/internal/svc"
|
||||
"qnc-server/app/user/cmd/api/internal/types"
|
||||
"qnc-server/app/user/model"
|
||||
"qnc-server/common/xerr"
|
||||
"qnc-server/pkg/lzkit/crypto"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type QueryRecheckLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewQueryRecheckLogic(ctx context.Context, svcCtx *svc.ServiceContext) *QueryRecheckLogic {
|
||||
return &QueryRecheckLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *QueryRecheckLogic) QueryRecheck(req *types.QueryRecheckReq) (resp *types.QueryRecheckResp, err error) {
|
||||
query, err := l.svcCtx.QueryModel.FindOne(l.ctx, req.QueryId)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "补查, 获取query失败, %v", err)
|
||||
}
|
||||
secretKey := l.svcCtx.Config.Encrypt.SecretKey
|
||||
key, decodeErr := hex.DecodeString(secretKey)
|
||||
if decodeErr != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "补查, 获取密钥失败, %v", err)
|
||||
}
|
||||
decryptData, aesdecryptErr := crypto.AesDecrypt(query.QueryParams, key)
|
||||
if aesdecryptErr != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "补查, 解密参数失败: %+v", aesdecryptErr)
|
||||
}
|
||||
combinedResponse, err := l.svcCtx.ApiRequestService.ProcessRequests(decryptData, query.ProductId)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "补查, 处理请求失败: %v", err)
|
||||
}
|
||||
encryptData, aesEncryptErr := crypto.AesEncrypt(combinedResponse, key)
|
||||
if aesEncryptErr != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "补查, 加密响应信息失败: %v", aesEncryptErr)
|
||||
}
|
||||
query.QueryData = sql.NullString{
|
||||
String: encryptData,
|
||||
Valid: true,
|
||||
}
|
||||
query.QueryState = model.QueryStateSuccess
|
||||
updateErr := l.svcCtx.QueryModel.UpdateWithVersion(l.ctx, nil, query)
|
||||
if updateErr != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "补查, 保存响应数据失败: %v", updateErr)
|
||||
}
|
||||
return &types.QueryRecheckResp{
|
||||
Success: true,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user