package mediaCenter import ( "github.com/fatih/structs" "reflect" "strings" ) // MediaCenterService 媒资库相关服务调用 type MediaCenterService struct { url string proId string secret string } type Config struct { Url string ProId string Secret string } func NewMediaCenterService(c Config) *MediaCenterService { return &MediaCenterService{ url: c.Url, proId: c.ProId, secret: c.Secret, } } func (m *MediaCenterService) getParams(p interface{}) (params map[string]interface{}) { req := structs.New(p) fields := req.Fields() params = make(map[string]interface{}) for _, field := range fields { jsonTag := field.Tag("json") tagList := strings.Split(jsonTag, ",") key := field.Name() omitempty := "" if len(tagList) > 0 { key = tagList[0] } if len(tagList) > 1 { omitempty = tagList[1] } kind := reflect.TypeOf(field.Value()).Kind() // 如果是0值忽略或者空指针,不需要传 if field.IsZero() && (kind == reflect.Ptr || omitempty == "omitempty") { continue } if kind == reflect.Ptr { // 通过指针取值 params[key] = reflect.ValueOf(field.Value()).Elem().Interface() } else { params[key] = field.Value() } } params["pro_id"] = m.proId params["sign"] = m.sign() return } // TODO 暂时不需要加密 func (m *MediaCenterService) sign() string { return "" }