|
|
@@ -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)
|
|
|
}
|