作者 yangfu

mod修改

@@ -11,4 +11,5 @@ ENV GO111MODULE on @@ -11,4 +11,5 @@ ENV GO111MODULE on
11 ENV GOPROXY https://goproxy.cn,direct 11 ENV GOPROXY https://goproxy.cn,direct
12 RUN ["go","mod","tidy"] 12 RUN ["go","mod","tidy"]
13 RUN ["go","build"] 13 RUN ["go","build"]
  14 +EXPOSE 8080
14 ENTRYPOINT ["./partner"] 15 ENTRYPOINT ["./partner"]
  1 +package svr
  2 +
  3 +import (
  4 + "encoding/json"
  5 + "fmt"
  6 + "github.com/astaxie/beego/httplib"
  7 + "strconv"
  8 + "strings"
  9 + "time"
  10 +)
  11 +
  12 +type httplibBaseServiceGateway struct {
  13 + baseURL string
  14 + connectTimeout time.Duration
  15 + readWriteTimeout time.Duration
  16 +}
  17 +
  18 +func (serviceGateway *httplibBaseServiceGateway) createRequest(url string, method string) *httplib.BeegoHTTPRequest {
  19 + var request *httplib.BeegoHTTPRequest
  20 + switch method {
  21 + case "get":
  22 + request = httplib.Get(url)
  23 + break
  24 + case "post":
  25 + request = httplib.Post(url)
  26 + break
  27 + case "put":
  28 + request = httplib.Put(url)
  29 + break
  30 + case "delete":
  31 + request = httplib.Delete(url)
  32 + break
  33 + case "head":
  34 + request = httplib.Head(url)
  35 + break
  36 + default:
  37 + request = httplib.Get(url)
  38 + }
  39 + return request.SetTimeout(serviceGateway.connectTimeout, serviceGateway.readWriteTimeout)
  40 +}
  41 +
  42 +func (serviceGateway *httplibBaseServiceGateway) responseHandle(response map[string]interface{}) (map[string]interface{}, error) {
  43 + data := make(map[string]interface{})
  44 + var err error
  45 + if code, ok := response["code"]; ok {
  46 + code := code.(float64)
  47 + if code == 0 {
  48 + data = response["data"].(map[string]interface{})
  49 + } else {
  50 + msg := response["msg"].(string)
  51 + data = response
  52 + err = fmt.Errorf(strings.Join([]string{strconv.FormatFloat(code, 'f', -1, 64), msg}, " "))
  53 + }
  54 + } else {
  55 + jsonBytes, marshalErr := json.Marshal(response)
  56 + if marshalErr != nil {
  57 + err = marshalErr
  58 + }
  59 + err = fmt.Errorf("无法解析的网关服务数据返回格式:%s", string(jsonBytes))
  60 + }
  61 + return data, err
  62 +}
  1 +package svr
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/constant"
  5 + "strings"
  6 + "time"
  7 +)
  8 +
  9 +type HttplibMmmSmsApiServiceGateway struct {
  10 + httplibBaseServiceGateway
  11 +}
  12 +
  13 +func (serviceGateway *HttplibMmmSmsApiServiceGateway) SendSms(phone string) (map[string]interface{}, error) {
  14 + url := strings.Join([]string{serviceGateway.baseURL, "service", "sendSms"}, "/")
  15 + request := serviceGateway.createRequest(url, "post")
  16 + options := make(map[string]interface{})
  17 + options["phone"] = strings.TrimSpace(phone)
  18 + request.JSONBody(options)
  19 + response := make(map[string]interface{})
  20 + request.ToJSON(&response)
  21 + data, err := serviceGateway.responseHandle(response)
  22 + return data, err
  23 +}
  24 +
  25 +func (serviceGateway *HttplibMmmSmsApiServiceGateway) CheckSmsCode(phone string, code string) (map[string]interface{}, error) {
  26 + url := strings.Join([]string{serviceGateway.baseURL, "service", "checkSmsCode"}, "/")
  27 + request := serviceGateway.createRequest(url, "post")
  28 + options := make(map[string]interface{})
  29 + options["phone"] = phone
  30 + options["code"] = code
  31 + request.JSONBody(options)
  32 + response := make(map[string]interface{})
  33 + request.ToJSON(&response)
  34 + data, err := serviceGateway.responseHandle(response)
  35 + return data, err
  36 +}
  37 +
  38 +func NewHttplibMmmSmsApiServiceGateway() *HttplibMmmSmsApiServiceGateway {
  39 + return &HttplibMmmSmsApiServiceGateway{
  40 + httplibBaseServiceGateway: httplibBaseServiceGateway{
  41 + baseURL: constant.MMM_SMS_SERVICE_HOST,
  42 + connectTimeout: 100 * time.Second,
  43 + readWriteTimeout: 30 * time.Second,
  44 + },
  45 + }
  46 +}