Compare commits

...
3 Commits
Author SHA1 Message Date
maguodong 7777630306 修改商户附件字段名称
- 将 FileData 结构体中的 AttField 字段重命名为 AttFileId
- 保持 AttType 字段不变
- 更新相关注释说明文件编号的含义
2025-10-16 16:46:07 +08:00
maguodong de64d7b076 优化JSON日志输出格式
- 将reqJson的日志输出格式从%+v改为%v
- 使用string()方法确保JSON数据以字符串形式输出
- 避免复杂结构体的冗余字段展示
2025-10-16 16:08:31 +08:00
maguodong 02cab5fbde refactor(common):优化JSON清理和签名生成逻辑
- 移除多余的json.Marshal调用,直接传递结构体给签名函数
- 修改CleanJSON函数返回类型从string改为[]byte
- 更新日志输出格式,使用%+v显示完整结构体内容
- 简化请求数据处理流程,提高代码可读性
- 修复潜在的JSON序列化性能问题
2025-10-16 16:05:06 +08:00
3 changed files with 9 additions and 15 deletions
+3 -9
View File
@@ -8,7 +8,6 @@ import (
"crypto/sha256" "crypto/sha256"
"crypto/x509" "crypto/x509"
"encoding/base64" "encoding/base64"
"encoding/json"
"encoding/pem" "encoding/pem"
"fmt" "fmt"
ran "math/rand" ran "math/rand"
@@ -101,14 +100,9 @@ func (c *Client[T]) DoRequest(url string, reqData interface{}) (*T, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("清理JSON空值失败: %v", err) return nil, fmt.Errorf("清理JSON空值失败: %v", err)
} }
g.Log().Infof(c.ctx, "清理后的json: %s", reqJson) g.Log().Infof(c.ctx, "清理后的json: %v", string(reqJson))
// 序列化为JSON
jsonData, err := json.Marshal(reqJson)
if err != nil {
return nil, fmt.Errorf("序列化请求数据失败: %v", err)
}
auth, err := c.generateSign(jsonData) auth, err := c.generateSign(reqJson)
if err != nil { if err != nil {
return nil, fmt.Errorf("生成签名失败: %v", err) return nil, fmt.Errorf("生成签名失败: %v", err)
} }
@@ -119,5 +113,5 @@ func (c *Client[T]) DoRequest(url string, reqData interface{}) (*T, error) {
} }
// 设置其他必要的请求头 // 设置其他必要的请求头
return utils.NewClient[T](jsonData, url, header).Post(c.ctx) return utils.NewClient[T](reqJson, url, header).Post(c.ctx)
} }
+4 -4
View File
@@ -6,12 +6,12 @@ import (
) )
// CleanJSON 清理JSON字符串中的空值和0值字段 // CleanJSON 清理JSON字符串中的空值和0值字段
func CleanJSON(jsonStr string) (string, error) { func CleanJSON(jsonStr string) ([]byte, error) {
var data interface{} var data interface{}
// 解析JSON字符串 // 解析JSON字符串
if err := json.Unmarshal([]byte(jsonStr), &data); err != nil { if err := json.Unmarshal([]byte(jsonStr), &data); err != nil {
return "", err return nil, err
} }
// 递归清理数据 // 递归清理数据
@@ -20,10 +20,10 @@ func CleanJSON(jsonStr string) (string, error) {
// 转换回JSON字符串 // 转换回JSON字符串
result, err := json.Marshal(cleaned) result, err := json.Marshal(cleaned)
if err != nil { if err != nil {
return "", err return nil, err
} }
return string(result), nil return result, nil
} }
// cleanData 递归清理map或slice中的空值和0值 // cleanData 递归清理map或slice中的空值和0值
+2 -2
View File
@@ -81,8 +81,8 @@ type FeeData struct {
// FileData 附件集合结构体 // FileData 附件集合结构体
type FileData struct { type FileData struct {
AttField string `json:"attField"` // 文件编号/附件上传后返回的编号,必填 AttFileId string `json:"attFileId"` // 文件编号/附件上传后返回的编号,必填
AttType string `json:"attType"` // 附件类型,必填 AttType string `json:"attType"` // 附件类型,必填
} }
// MerchantApplyResponse 商户进件响应结构体 // MerchantApplyResponse 商户进件响应结构体