zhou.xiaoning 1 ano atrás
pai
commit
7f79b75d29

+ 24 - 28
services/asign/api.go

@@ -31,8 +31,30 @@ import (
 func APIPost[T_REQ APIReqData, T_RSP APIRspData](req APIReq[T_REQ], apiPort APIURL) (rsp *APIRsp[T_RSP], err error) {
 	apiUrl := config.SerCfg.AsignCfg.Url + string(apiPort)
 
+	// 排序key
+	// var b []byte
+	var sortedData string
+	if len(req.Datas) == 0 {
+		sortedData = SortMapByKey(structs.Map(req.Data))
+	} else {
+		sortedData := "["
+		for i, item := range req.Datas {
+			if i > 0 {
+				sortedData += ","
+			}
+			sortedData += SortMapByKey(structs.Map(item))
+		}
+		sortedData += "]"
+	}
+	logger.GetLogger().Debugf("sortedData: %s", sortedData)
+	if err != nil {
+		logger.GetLogger().Errorf("处理入参排序失败:" + err.Error())
+		return
+	}
+
+	// 调用接口
 	var rspBody []byte
-	rspBody, err = httpPost(apiUrl, req.Data)
+	rspBody, err = httpPost(apiUrl, sortedData)
 	if err != nil {
 		return
 	}
@@ -48,39 +70,13 @@ func APIPost[T_REQ APIReqData, T_RSP APIRspData](req APIReq[T_REQ], apiPort APIU
 	return
 }
 
-func httpPost(apiUrl string, bizData ...interface{}) (rspBody []byte, err error) {
-	logger.GetLogger().Debugf("bizData: %v", bizData)
-	logger.GetLogger().Debugf("len(bizData): %d", len(bizData))
-
+func httpPost(apiUrl string, sortedData string) (rspBody []byte, err error) {
 	appId := config.SerCfg.AsignCfg.AppId
 	privateKey := fmt.Sprintf("-----BEGIN PRIVATE KEY-----\n%s\n-----END PRIVATE KEY-----", config.SerCfg.AsignCfg.PrivateKey)
 
 	// fuck asign dev.
 	timestamp := strconv.Itoa(int(time.Now().UnixMilli() + 10000*60))
 
-	// 排序key
-	// var b []byte
-	var sortedData string
-	if len(bizData) == 1 {
-		// b, err = encoder.Encode(bizData[0], encoder.SortMapKeys)
-		sortedData = SortMapByKey(structs.Map(bizData[0]))
-	} else {
-		// b, err = encoder.Encode(bizData, encoder.SortMapKeys)
-		sortedData := "["
-		for i, item := range bizData {
-			if i > 0 {
-				sortedData += ","
-			}
-			sortedData += SortMapByKey(structs.Map(item))
-		}
-		sortedData += "]"
-	}
-	logger.GetLogger().Debugf("sortedData: %s", sortedData)
-	if err != nil {
-		logger.GetLogger().Errorf("处理入参排序失败:" + err.Error())
-		return
-	}
-	// sortedData := string(b)
 	// 签名
 	signature, err := getSignature(sortedData, appId, timestamp, privateKey)
 	if err != nil {

+ 2 - 1
services/asign/apiModels.go

@@ -20,7 +20,8 @@ type APIReqData interface {
 }
 
 type APIReq[T APIReqData] struct {
-	Data T // 请求数据
+	Data  T   // 请求数据
+	Datas []T // 请求数据,切片类型
 }
 
 type APIRspData interface {

+ 2 - 5
services/asign/servcies.go

@@ -623,11 +623,8 @@ func CreateContract(req CreateContractReq) (rsp CreateContractRsp, err error) {
 	if len(receiverFillStrategyList) > 0 {
 		appAddSignerReq2.ReceiverFillStrategyList = receiverFillStrategyList
 	}
-	// apiAddSignerReq := new(APIReq[[]APIAddSignerReq])
-	// apiAddSignerReq.Data = []APIAddSignerReq{appAddSignerReq1, appAddSignerReq2}
-	logger.GetLogger().Debugf("appAddSignerReq1: %v \nappAddSignerReq2: %v", appAddSignerReq1, appAddSignerReq2)
-	apiAddSignerReq := APIReq[[]APIAddSignerReq]{Data: []APIAddSignerReq{appAddSignerReq1, appAddSignerReq2}}
-	apiAddSignerRsp, err := APIPost[[]APIAddSignerReq, APIAddSignerRsp](apiAddSignerReq, APIURL_AddSigner)
+	apiAddSignerReq := APIReq[APIAddSignerReq]{Datas: []APIAddSignerReq{appAddSignerReq1, appAddSignerReq2}}
+	apiAddSignerRsp, err := APIPost[APIAddSignerReq, APIAddSignerRsp](apiAddSignerReq, APIURL_AddSigner)
 	if err != nil {
 		return
 	}

+ 0 - 90
services/asign/test/main.go

@@ -1,94 +1,4 @@
 package main
 
-import (
-	"fmt"
-	"mtp2_if/utils"
-	"reflect"
-	"sort"
-
-	"github.com/fatih/structs"
-)
-
-type aPIAAA struct {
-	Account         string   `json:"account" binding:"required"`            // 用户唯一识别码(请转入UserID)
-	SerialNo        string   `json:"serialNo"`                              // 实名认证流水号
-	Name            *string  `json:"name" structs:",omitempty"`             // 用户姓名
-	IdCard          string   `json:"idCard"  structs:",omitempty"`          // 个人身份证、台胞证、港澳通行证等证件号
-	IdCardType      *int     `json:"idCardType" structs:",omitempty"`       // 证件类型 1:居民身份证 2:台湾居民来往内地通行证 3:港澳居民往来内地通行证 10:武装警察身份证 11:军人身份证 15:警察(警官)证 21:外国人永久居留证 23:护照
-	Mobile          string   `json:"mobile"  structs:",omitempty"`          // 手机号码
-	SignPwd         string   `json:"signPwd"  structs:",omitempty"`         // 签约密码(MTP2登录密码加密方式),如果为空将随机生成签约密码(当签约方式为“签约密码签约”时会使用到,可通过重置接口修改)
-	IsSignPwdNotice *float64 `json:"isSignPwdNotice"  structs:",omitempty"` // 是否将签约密码以短信形式通知用户 0:不通知(默认) 1:通知
-	IsNotice        *bool    `json:"isNotice"  structs:",omitempty"`        // 用户发起合同或需要签署时是否进行短信通知 0:否(默认) 1:是
-}
-
 func main() {
-	req := &aPIAAA{
-		Account: "1111",
-	}
-	req.SerialNo = "2222"
-	req.Name = utils.SetPointValue("")
-	req.IdCardType = utils.SetPointValue(1)
-	req.IsSignPwdNotice = utils.SetPointValue(5.01)
-	reqMap := structs.Map(req)
-
-	aaa := sortMapByKey(reqMap)
-
-	fmt.Println(aaa)
-}
-
-func sortMapByKey(data map[string]interface{}) (sortedData string) {
-	keys := make([]string, 0, len(data))
-	for k := range data {
-		keys = append(keys, k)
-	}
-	sort.Strings(keys)
-	for i, k := range keys {
-		if i > 0 {
-			sortedData += ","
-		}
-
-		// 判断是否指针
-		v := reflect.ValueOf(data[k])
-		if v.Kind() == reflect.Ptr {
-			switch data[k].(type) {
-			case *string:
-				sortedData += fmt.Sprintf(`"%s":"%s"`, k, *(data[k].(*string)))
-			case *map[string]interface{}:
-				sortedData += fmt.Sprintf(`"%s":%s`, k, sortMapByKey(*(data[k].(*map[string]interface{}))))
-			case *[]interface{}:
-				list := data[k].([]interface{})
-				sortedData += fmt.Sprintf(`"%s":[`, k)
-				for j, item := range list {
-					if j > 0 {
-						sortedData += ","
-					}
-					sortedData += sortMapByKey(item.(map[string]interface{}))
-				}
-				sortedData += "]"
-			default:
-				sortedData += fmt.Sprintf(`"%s":%v`, k, reflect.ValueOf(data[k]).Elem())
-			}
-		} else {
-			switch data[k].(type) {
-			case string:
-				sortedData += fmt.Sprintf(`"%s":"%s"`, k, data[k].(string))
-			case map[string]interface{}:
-				sortedData += fmt.Sprintf(`"%s":%s`, k, sortMapByKey(data[k].(map[string]interface{})))
-			case []interface{}:
-				list := data[k].([]interface{})
-				sortedData += fmt.Sprintf(`"%s":[`, k)
-				for j, item := range list {
-					if j > 0 {
-						sortedData += ","
-					}
-					sortedData += sortMapByKey(item.(map[string]interface{}))
-				}
-				sortedData += "]"
-			default:
-				sortedData += fmt.Sprintf(`"%s":%v`, k, data[k])
-			}
-		}
-	}
-
-	return fmt.Sprintf("{%s}", sortedData)
 }