fix 车辆维保记录
This commit is contained in:
@@ -5,12 +5,13 @@ import (
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/hibiken/asynq"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"qnc-server/app/user/cmd/api/internal/svc"
|
||||
"qnc-server/app/user/model"
|
||||
"qnc-server/pkg/lzkit/crypto"
|
||||
"qnc-server/pkg/lzkit/lzUtils"
|
||||
|
||||
"github.com/hibiken/asynq"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type PaySuccessNotifyUserHandler struct {
|
||||
@@ -53,46 +54,55 @@ func (l *PaySuccessNotifyUserHandler) ProcessTask(ctx context.Context, t *asynq.
|
||||
logx.Errorf("处理任务失败,原因: %v", findQueryErr)
|
||||
return asynq.SkipRetry
|
||||
}
|
||||
if query.QueryState != "pending" {
|
||||
if query.QueryState != model.QueryStatePending {
|
||||
err = fmt.Errorf("查询已处理: %d", query.Id)
|
||||
logx.Errorf("处理任务失败,原因: %v", err)
|
||||
return asynq.SkipRetry
|
||||
}
|
||||
|
||||
query.QueryState = model.QueryStateProcessing
|
||||
updateQueryErr := l.svcCtx.QueryModel.UpdateWithVersion(ctx, nil, query)
|
||||
if updateQueryErr != nil {
|
||||
handleErrorErr := fmt.Errorf("更新查询状态失败,订单ID: %d, 错误: %v", order.Id, updateQueryErr)
|
||||
return l.handleError(ctx, handleErrorErr, order, query)
|
||||
}
|
||||
|
||||
secretKey := l.svcCtx.Config.Encrypt.SecretKey
|
||||
key, decodeErr := hex.DecodeString(secretKey)
|
||||
if decodeErr != nil {
|
||||
err = fmt.Errorf("获取AES密钥失败: %v", decodeErr)
|
||||
return l.handleError(ctx, err, order, query)
|
||||
handleErrorErr := fmt.Errorf("获取AES密钥失败: %v", decodeErr)
|
||||
return l.handleError(ctx, handleErrorErr, order, query)
|
||||
}
|
||||
|
||||
decryptData, aesdecryptErr := crypto.AesDecrypt(query.QueryParams, key)
|
||||
if aesdecryptErr != nil {
|
||||
aesdecryptErr = fmt.Errorf("解密响应信息失败: %v", aesdecryptErr)
|
||||
return l.handleError(ctx, aesdecryptErr, order, query)
|
||||
handleErrorErr := fmt.Errorf("解密响应信息失败: %v", aesdecryptErr)
|
||||
return l.handleError(ctx, handleErrorErr, order, query)
|
||||
}
|
||||
|
||||
combinedResponse, err := l.svcCtx.ApiRequestService.ProcessRequests(decryptData, product.Id)
|
||||
combinedResponse, err := l.svcCtx.ApiRequestService.ProcessRequests(ctx, decryptData, product.Id)
|
||||
if err != nil {
|
||||
return l.handleError(ctx, err, order, query)
|
||||
handleErrorErr := fmt.Errorf("处理请求失败: %v", err)
|
||||
return l.handleError(ctx, handleErrorErr, order, query)
|
||||
}
|
||||
// 加密返回响应
|
||||
encryptData, aesEncryptErr := crypto.AesEncrypt(combinedResponse, key)
|
||||
if aesEncryptErr != nil {
|
||||
err = fmt.Errorf("加密响应信息失败: %v", aesEncryptErr)
|
||||
return l.handleError(ctx, aesEncryptErr, order, query)
|
||||
handleErrorErr := fmt.Errorf("加密响应信息失败: %v", aesEncryptErr)
|
||||
return l.handleError(ctx, handleErrorErr, order, query)
|
||||
}
|
||||
query.QueryData = lzUtils.StringToNullString(encryptData)
|
||||
updateErr := l.svcCtx.QueryModel.UpdateWithVersion(ctx, nil, query)
|
||||
if updateErr != nil {
|
||||
err = fmt.Errorf("保存响应数据失败: %v", updateErr)
|
||||
return l.handleError(ctx, updateErr, order, query)
|
||||
handleErrorErr := fmt.Errorf("保存响应数据失败: %v", updateErr)
|
||||
return l.handleError(ctx, handleErrorErr, order, query)
|
||||
}
|
||||
|
||||
query.QueryState = "success"
|
||||
updateQueryErr := l.svcCtx.QueryModel.UpdateWithVersion(ctx, nil, query)
|
||||
query.QueryState = model.QueryStateSuccess
|
||||
updateQueryErr = l.svcCtx.QueryModel.UpdateWithVersion(ctx, nil, query)
|
||||
if updateQueryErr != nil {
|
||||
updateQueryErr = fmt.Errorf("修改查询状态失败: %v", updateQueryErr)
|
||||
return l.handleError(ctx, updateQueryErr, order, query)
|
||||
handleErrorErr := fmt.Errorf("修改查询状态失败: %v", updateQueryErr)
|
||||
return l.handleError(ctx, handleErrorErr, order, query)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -102,9 +112,9 @@ func (l *PaySuccessNotifyUserHandler) ProcessTask(ctx context.Context, t *asynq.
|
||||
func (l *PaySuccessNotifyUserHandler) handleError(ctx context.Context, err error, order *model.Order, query *model.Query) error {
|
||||
logx.Errorf("处理任务失败,原因: %v", err)
|
||||
|
||||
if order.Status == "paid" && query.QueryState == "pending" {
|
||||
if order.Status == "paid" && query.QueryState == model.QueryStatePending {
|
||||
// 更新查询状态为失败
|
||||
query.QueryState = "failed"
|
||||
query.QueryState = model.QueryStateFailed
|
||||
updateQueryErr := l.svcCtx.QueryModel.UpdateWithVersion(ctx, nil, query)
|
||||
if updateQueryErr != nil {
|
||||
logx.Errorf("更新查询状态失败,订单ID: %d, 错误: %v", order.Id, updateQueryErr)
|
||||
|
||||
Reference in New Issue
Block a user