304 lines
10 KiB
Go
304 lines
10 KiB
Go
|
package httpcall
|
|||
|
|
|||
|
//
|
|||
|
//import (
|
|||
|
// "context"
|
|||
|
// "encoding/json"
|
|||
|
// "errors"
|
|||
|
// "finclip-app-manager/infrastructure/config"
|
|||
|
// "net/http"
|
|||
|
//
|
|||
|
// "github.com/gin-gonic/gin"
|
|||
|
//)
|
|||
|
//
|
|||
|
//const (
|
|||
|
// Opcreate = "create"
|
|||
|
//)
|
|||
|
//
|
|||
|
//const (
|
|||
|
// ObjectTypeApp = "app"
|
|||
|
//)
|
|||
|
//
|
|||
|
//type Notification struct {
|
|||
|
// ObjectType string `json:"objectType"`
|
|||
|
// ObjectID string `json:"objectId"`
|
|||
|
// Operator string `json:"operator"`
|
|||
|
// Operation string `json:"operation"`
|
|||
|
// Timestamp int64 `json:"timestamp"`
|
|||
|
// CustomData map[string]interface{} `json:"customData"`
|
|||
|
//}
|
|||
|
//
|
|||
|
//type NotifyResponse struct {
|
|||
|
// Errcode string `json:"errcode"`
|
|||
|
// Error string `json:"error"`
|
|||
|
// Data map[string]interface{} `json:"data"`
|
|||
|
//}
|
|||
|
//
|
|||
|
//type DeveloperData struct {
|
|||
|
// AccountId string `json:"accountId" bson:"accountId"` //mysql改造使用
|
|||
|
// Type int `json:"type" bson:"type"` //类型,1:个人账号,2:企业账号(已经提交企业资料申请)
|
|||
|
// OrganTraceId string `json:"organTraceId" bson:"organTraceId"` //企业绑定id
|
|||
|
// Name string `json:"name" bson:"name"` //姓名
|
|||
|
// Email string `json:"email" bson:"email"` //邮箱
|
|||
|
// Account string `json:"account" bson:"account"` //账号
|
|||
|
// Status int `json:"status" bson:"status"` //1--正常 2--已冻结 3--已延期
|
|||
|
//}
|
|||
|
//
|
|||
|
//const (
|
|||
|
// ORGAN_ACCOUNT_TYPE_PERSON = 1
|
|||
|
// ORGAN_ACCOUNT_TYPE_BUSINESS = 2
|
|||
|
//)
|
|||
|
//
|
|||
|
//const (
|
|||
|
// ORGAN_STATUS_NORMAL = 1 //正常
|
|||
|
// ORGAN_STATUS_FREEZE = 2 //已冻结
|
|||
|
// ORGAN_STATUS_DELAY = 3 //已延期
|
|||
|
//)
|
|||
|
//
|
|||
|
//type GetDevelopResponse struct {
|
|||
|
// Data DeveloperData `json:"data"`
|
|||
|
//}
|
|||
|
//
|
|||
|
//type Provider struct {
|
|||
|
// ClientBase
|
|||
|
//}
|
|||
|
//
|
|||
|
//func NewProvider() *Provider {
|
|||
|
// return &Provider{
|
|||
|
// ClientBase: ClientBase{
|
|||
|
// Service: "Provider",
|
|||
|
// },
|
|||
|
// }
|
|||
|
//}
|
|||
|
//
|
|||
|
//func (p *Provider) GetGroupID(ctx context.Context, c *gin.Context, url string) (string, error) {
|
|||
|
// if url == "" {
|
|||
|
// log.Errorf("GetGroupID url empty!")
|
|||
|
// return "", errors.New(ErrEmptyURL)
|
|||
|
// }
|
|||
|
// p.Method = "GET"
|
|||
|
// p.URL = url
|
|||
|
// p.RequestHeader = make(map[string]string)
|
|||
|
// //zipkin上报
|
|||
|
// if c != nil {
|
|||
|
// spanId := c.Request.Header.Get("Zipkin-Span-Id")
|
|||
|
// value := c.GetString("zipkin_trace_span_id_" + spanId)
|
|||
|
// p.RequestHeader["Zipkin-Span-Context"] = value
|
|||
|
// }
|
|||
|
// log.Infof("GetGroupID url:%s", url)
|
|||
|
// err := p.Fetch(ctx)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("GetGroupID fetch err:%s", err.Error())
|
|||
|
// return "", err
|
|||
|
// } else if p.StatusCode != http.StatusOK {
|
|||
|
// log.Errorf("GetGroupID StatusCode err,body:%s", string(p.ResponseBody))
|
|||
|
// return "", errors.New(ErrHttpCode)
|
|||
|
// }
|
|||
|
// resp := GetGroupIDResponse{}
|
|||
|
// if err := json.Unmarshal(p.ResponseBody, &resp); err != nil {
|
|||
|
// log.Errorf("Failed to unmarshal response to GetGroupIDResponse: %v\n", err)
|
|||
|
// return "", err
|
|||
|
// }
|
|||
|
// return resp.Data.GroupID, nil
|
|||
|
//}
|
|||
|
//
|
|||
|
//func (p *Provider) GetGroupInfoByUserId(ctx context.Context, url string) (*GroupIDData, error) {
|
|||
|
// if url == "" {
|
|||
|
// log.Errorf(ErrEmptyURL)
|
|||
|
// return nil, errors.New(ErrEmptyURL)
|
|||
|
// }
|
|||
|
// p.Method = "GET"
|
|||
|
// p.URL = url
|
|||
|
// p.RequestHeader = make(map[string]string)
|
|||
|
// log.Infof("GetGroupInfoByUserId url:%s", url)
|
|||
|
// err := p.Fetch(ctx)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("GetGroupInfoByUserId fetch err:%s", err.Error())
|
|||
|
// return nil, err
|
|||
|
// } else if p.StatusCode != http.StatusOK {
|
|||
|
// log.Errorf("GetGroupInfoByUserId StatusCode err,body:%s", string(p.ResponseBody))
|
|||
|
// return nil, errors.New(ErrHttpCode)
|
|||
|
// }
|
|||
|
// resp := GetGroupIDResponse{}
|
|||
|
// if err := json.Unmarshal(p.ResponseBody, &resp); err != nil {
|
|||
|
// log.Errorf("Failed to unmarshal response to GetGroupIDResponse, error: %v\n", err)
|
|||
|
// return nil, err
|
|||
|
// }
|
|||
|
// return &resp.Data, nil
|
|||
|
//}
|
|||
|
//
|
|||
|
//func (p *Provider) Notify(ctx context.Context, c *gin.Context, n *Notification) (int, *NotifyResponse, error) {
|
|||
|
// resp := &NotifyResponse{}
|
|||
|
// url := config.Cfg.NotificationProviderURL
|
|||
|
// if url == "" {
|
|||
|
// log.Errorf("Notify url empty!")
|
|||
|
// return http.StatusInternalServerError, nil, errors.New(ErrEmptyURL)
|
|||
|
// }
|
|||
|
// log.Infof("Notify url:%s", url)
|
|||
|
// data, err := json.Marshal(n)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("Failed to marshal notification: %v\n", err)
|
|||
|
// return http.StatusInternalServerError, resp, errors.New(ErrSystemCall)
|
|||
|
// }
|
|||
|
// p.Method = "POST"
|
|||
|
// p.RequestBody = data
|
|||
|
// p.URL = url
|
|||
|
// p.RequestHeader = map[string]string{
|
|||
|
// "Accept": "application/json, text/plain, */*",
|
|||
|
// "Content-Type": "application/json",
|
|||
|
// "url-call": "internal",
|
|||
|
// }
|
|||
|
// //zipkin上报
|
|||
|
// {
|
|||
|
// spanId := c.Request.Header.Get("Zipkin-Span-Id")
|
|||
|
// value := c.GetString("zipkin_trace_span_id_" + spanId)
|
|||
|
// p.RequestHeader["Zipkin-Span-Context"] = value
|
|||
|
// }
|
|||
|
// err = p.Fetch(ctx)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("Notify fetch err:%s", err.Error())
|
|||
|
// return http.StatusInternalServerError, resp, err
|
|||
|
// } else if p.StatusCode != http.StatusOK {
|
|||
|
// log.Errorf("Notify StatusCode err,body:%s", string(p.ResponseBody))
|
|||
|
// if err := json.Unmarshal(p.ResponseBody, &resp); err != nil {
|
|||
|
// log.Errorf("Failed to unmarshal to NotifyResponse: %v", err)
|
|||
|
// return http.StatusInternalServerError, resp, err
|
|||
|
// }
|
|||
|
// return p.StatusCode, resp, errors.New(ErrHttpCode)
|
|||
|
// }
|
|||
|
// return http.StatusOK, resp, nil
|
|||
|
//}
|
|||
|
//
|
|||
|
//func (p *Provider) AddLimitInfo(ctx context.Context, c *gin.Context, n *AddLimitInfoReq) (int, *AddLimitInfoRsp, error) {
|
|||
|
// resp := &AddLimitInfoRsp{}
|
|||
|
// url := config.Cfg.AddLimitInfoURL
|
|||
|
// if url == "" {
|
|||
|
// log.Errorf("Notify url empty!")
|
|||
|
// return http.StatusInternalServerError, nil, errors.New(ErrEmptyURL)
|
|||
|
// }
|
|||
|
// data, err := json.Marshal(n)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("Failed to marshal notification: %v\n", err)
|
|||
|
// return http.StatusInternalServerError, resp, errors.New(ErrSystemCall)
|
|||
|
// }
|
|||
|
// p.Method = "POST"
|
|||
|
// p.RequestBody = data
|
|||
|
// p.URL = url
|
|||
|
// p.RequestHeader = map[string]string{
|
|||
|
// "Accept": "application/json, text/plain, */*",
|
|||
|
// "Content-Type": "application/json",
|
|||
|
// "url-call": "internal",
|
|||
|
// }
|
|||
|
// //zipkin上报
|
|||
|
// {
|
|||
|
// spanId := c.Request.Header.Get("Zipkin-Span-Id")
|
|||
|
// value := c.GetString("zipkin_trace_span_id_" + spanId)
|
|||
|
// p.RequestHeader["Zipkin-Span-Context"] = value
|
|||
|
// }
|
|||
|
// log.Infof("AddLimitInfo info:%+v,url:%s", n, url)
|
|||
|
// err = p.Fetch(ctx)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("AddLimitInfo fetch err:%s", err.Error())
|
|||
|
// return http.StatusInternalServerError, resp, err
|
|||
|
// } else if p.StatusCode != http.StatusOK {
|
|||
|
// log.Debugln("Notify StatusCode err,body:%s", string(p.ResponseBody))
|
|||
|
// if err := json.Unmarshal(p.ResponseBody, &resp); err != nil {
|
|||
|
// log.Errorf("Failed to unmarshal to NotifyResponse: %v\n", err)
|
|||
|
// return http.StatusInternalServerError, resp, err
|
|||
|
// }
|
|||
|
// return p.StatusCode, resp, errors.New(ErrHttpCode)
|
|||
|
// }
|
|||
|
// return http.StatusOK, resp, nil
|
|||
|
//}
|
|||
|
//
|
|||
|
//func (p *Provider) GetAccountInfo(ctx context.Context, c *gin.Context, url string, accountId string) (*AccountInfoData, error) {
|
|||
|
// if url == "" {
|
|||
|
// log.Errorf("GetAccountInfo url empty!")
|
|||
|
// return nil, errors.New(ErrEmptyURL)
|
|||
|
// }
|
|||
|
// p.Method = "GET"
|
|||
|
// p.URL = url
|
|||
|
// p.RequestHeader = make(map[string]string)
|
|||
|
// p.RequestHeader["X-Consumer-Custom-ID"] = accountId
|
|||
|
// p.RequestHeader["Content-Type"] = "application/json"
|
|||
|
// p.RequestHeader["url-call"] = "internal"
|
|||
|
// //zipkin上报
|
|||
|
// log.Infof("GetAccountInfo url:%s", url)
|
|||
|
// err := p.Fetch(ctx)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("GetAccountInfo fetch err:%s", err.Error())
|
|||
|
// //p.LogError(err)
|
|||
|
// return nil, err
|
|||
|
// } else if p.StatusCode != http.StatusOK {
|
|||
|
// log.Errorf("Notify StatusCode err,body:%s", string(p.ResponseBody))
|
|||
|
// //p.LogError(err)
|
|||
|
// return nil, errors.New(ErrHttpCode)
|
|||
|
// }
|
|||
|
// resp := GetAccountInfoResponse{}
|
|||
|
// if err := json.Unmarshal(p.ResponseBody, &resp); err != nil {
|
|||
|
// log.Errorf("Failed to unmarshal response to GetAccountInfoResponse, error: %v\n", err)
|
|||
|
// return nil, err
|
|||
|
// }
|
|||
|
// return &resp.Data, nil
|
|||
|
//}
|
|||
|
//
|
|||
|
//func (p *Provider) GetAdminAccountInfo(ctx context.Context, c *gin.Context, url string) (*AdminAccountInfo, error) {
|
|||
|
// if url == "" {
|
|||
|
// log.Errorf("GetAdminAccountInfo url empty!")
|
|||
|
// return nil, errors.New(ErrEmptyURL)
|
|||
|
// }
|
|||
|
// p.Method = "GET"
|
|||
|
// p.URL = url
|
|||
|
// p.RequestHeader = make(map[string]string)
|
|||
|
// //zipkin上报
|
|||
|
// {
|
|||
|
// spanId := c.Request.Header.Get("Zipkin-Span-Id")
|
|||
|
// value := c.GetString("zipkin_trace_span_id_" + spanId)
|
|||
|
// p.RequestHeader["Zipkin-Span-Context"] = value
|
|||
|
// }
|
|||
|
// err := p.Fetch(ctx)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("GetAdminAccountInfo fetch err:%s", err.Error())
|
|||
|
// return nil, err
|
|||
|
// } else if p.StatusCode != http.StatusOK {
|
|||
|
// log.Errorf("GetAdminAccountInfo StatusCode err,body:%s", string(p.ResponseBody))
|
|||
|
// return nil, errors.New(ErrHttpCode)
|
|||
|
// }
|
|||
|
// resp := GetAdminAccountInfoResponse{}
|
|||
|
// if err := json.Unmarshal(p.ResponseBody, &resp); err != nil {
|
|||
|
// log.Errorf("Failed to unmarshal response to GetAdminAccountInfo Response, error: %v\n", err)
|
|||
|
// return nil, err
|
|||
|
// }
|
|||
|
// return &resp.Data.Info, nil
|
|||
|
//}
|
|||
|
//
|
|||
|
//func (p *Provider) SearchAccountInfo(ctx context.Context, c *gin.Context, url string, account string) (*AccountInfoData, error) {
|
|||
|
// if url == "" {
|
|||
|
// log.Errorf("GetAccountInfo url empty!")
|
|||
|
// return nil, errors.New(ErrEmptyURL)
|
|||
|
// }
|
|||
|
// p.Method = "GET"
|
|||
|
// p.URL = url + "?account=" + account
|
|||
|
// p.RequestHeader = make(map[string]string)
|
|||
|
// p.RequestHeader["Content-Type"] = "application/json"
|
|||
|
// p.RequestHeader["url-call"] = "internal"
|
|||
|
// //zipkin上报
|
|||
|
// log.Infof("GetAccountInfo url:%s", url)
|
|||
|
// err := p.Fetch(ctx)
|
|||
|
// if err != nil {
|
|||
|
// log.Errorf("GetAccountInfo fetch err:%s", err.Error())
|
|||
|
// //p.LogError(err)
|
|||
|
// return nil, err
|
|||
|
// } else if p.StatusCode != http.StatusOK {
|
|||
|
// log.Errorf("Notify StatusCode err,body:%s", string(p.ResponseBody))
|
|||
|
// //p.LogError(err)
|
|||
|
// return nil, errors.New(ErrHttpCode)
|
|||
|
// }
|
|||
|
// resp := GetAccountInfoResponse{}
|
|||
|
// if err := json.Unmarshal(p.ResponseBody, &resp); err != nil {
|
|||
|
// log.Errorf("Failed to unmarshal response to GetAccountInfoResponse, error: %v\n", err)
|
|||
|
// return nil, err
|
|||
|
// }
|
|||
|
// return &resp.Data, nil
|
|||
|
//}
|