package sms_serve import ( "encoding/json" "fmt" "time" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway" ) //公共短信服务模块 type HttplibSmsServe struct { service_gateway.BaseServiceGateway baseUrL string } func NewHttplibHttplibSmsServe() *HttplibSmsServe { return &HttplibSmsServe{ BaseServiceGateway: service_gateway.BaseServiceGateway{ ConnectTimeout: 100 * time.Second, ReadWriteTimeout: 30 * time.Second, }, baseUrL: constant.SMS_SERVE_HOST, } } //SendSms 公共短信验证码服务 发送验证码 func (smsServe HttplibSmsServe) SendSms(phone string) error { url := smsServe.baseUrL + "/service/sendSms" method := "post" req := smsServe.CreateRequest(url, method) param := map[string]string{ "phone": phone, } log.Logger.Debug("向公共短信验证码服务请求数据:短信验证码接口。", map[string]interface{}{ "api": method + ":" + url, "param": param, }) req, err := req.JSONBody(param) if err != nil { return fmt.Errorf("请求公共短信验证码服务失败:%w", err) } byteResult, err := req.Bytes() if err != nil { return fmt.Errorf("获取公共短信验证码服务失败:%w", err) } log.Logger.Debug("获取公共短信验证码服务请求数据", map[string]interface{}{ "result": string(byteResult), }) var result service_gateway.GatewayResponse err = json.Unmarshal(byteResult, &result) if err != nil { return fmt.Errorf("解析更新组织:%w", err) } if result.Code != 0 { return fmt.Errorf(result.Msg) } return nil } //SendSms 公共短信验证码服务 发送验证码 func (smsServe HttplibSmsServe) SendNoticeSms(phone string, tplId int, tplValues map[string]interface{}) error { url := smsServe.baseUrL + "/service/sendNoticeSms" method := "post" req := smsServe.CreateRequest(url, method) param := map[string]interface{}{ "phone": phone, "tplId": tplId, "tplValues": tplValues, } log.Logger.Debug("向公共短信验证码服务请求数据:短信验证码接口。", map[string]interface{}{ "api": method + ":" + url, "param": param, }) req, err := req.JSONBody(param) if err != nil { return fmt.Errorf("请求公共短信验证码服务失败:%w", err) } byteResult, err := req.Bytes() if err != nil { return fmt.Errorf("获取公共短信验证码服务失败:%w", err) } log.Logger.Debug("获取公共短信验证码服务请求数据", map[string]interface{}{ "result": string(byteResult), }) var result service_gateway.GatewayResponse err = json.Unmarshal(byteResult, &result) if err != nil { return fmt.Errorf("解析更新组织:%w", err) } if result.Code != 0 { return fmt.Errorf(result.Msg) } return nil } //CheckSmsCode 公共短信验证码服务 校验验证码 func (smsServe HttplibSmsServe) CheckSmsCode(phone string, code string) error { if code == constant.SMSCODE_ALL_POWER { return nil } url := smsServe.baseUrL + "/service/checkSmsCode" method := "post" req := smsServe.CreateRequest(url, method) param := map[string]string{ "phone": phone, "code": code, } log.Logger.Debug("向公共短信验证码服务请求数据:短信验证码接口。", map[string]interface{}{ "api": method + ":" + url, "param": param, }) req, err := req.JSONBody(param) if err != nil { return fmt.Errorf("请求公共短信验证码服务失败:%w", err) } byteResult, err := req.Bytes() if err != nil { return fmt.Errorf("获取公共短信验证码服务失败:%w", err) } log.Logger.Debug("获取公共短信验证码服务请求数据", map[string]interface{}{ "result": string(byteResult), }) var result service_gateway.GatewayResponse err = json.Unmarshal(byteResult, &result) if err != nil { return fmt.Errorf("解析更新组织:%w", err) } if result.Code != 0 { return fmt.Errorf(result.Msg) } return nil }