浏览代码

Merge branch 'feature/dongwu_sms' into debug

xyxie 16 小时之前
父节点
当前提交
d3e9ff5764
共有 1 个文件被更改,包括 35 次插入14 次删除
  1. 35 14
      services/dongwu_sms.go

+ 35 - 14
services/dongwu_sms.go

@@ -53,15 +53,22 @@ func (cli *DongWuSms) SendUserLoginCode(req UserLoginSmsCodeReq) (result UserLog
 		return
 	}
 	if apiResp.Status == "success" {
-		if apiResp.Result.Result == "0" {
-			result.Success = true
-			result.Message = apiResp.Result.Desc
-		}else{
-			result.Success = false
-			result.Message = fmt.Sprintf("发送失败, 错误码: %d, 错误信息: %s", apiResp.Result.Result, apiResp.Result.Desc)
+		if apiResp.Result != "" {
+			var resultDetail DongWuSmsResultDetail
+			if e := json.Unmarshal([]byte(apiResp.Result), &resultDetail); e != nil {
+				err = fmt.Errorf("parse result detail err: %s", e.Error())
+				return
+			}
+			if resultDetail.Result == "0" {
+				result.Success = true
+				result.Message = resultDetail.Desc
+			} else {
+				result.Success = false
+				result.Message = fmt.Sprintf("发送失败, 错误码: %s, 错误信息: %s", resultDetail.Result, resultDetail.Desc)
+			}
 		}
 		return
-	}else{
+	} else {
 		result.Success = false
 		result.Message = apiResp.Message
 	}
@@ -83,13 +90,15 @@ type DongWuSmsApiParams struct {
 type DongWuSmsApiResult struct {
 	Status    string    `json:"status"`
 	Message string `json:"message"`
-	SmsType string `json:"smsType"` //短信平台类型,仅当status=”success”时不为空,“ssdj”代表三三得九平台,“dh3t”代表大汉三通平台
-	Result    struct {
-		Msgid string `json:"msgid"`
-		Result string `json:"result"`
-		Desc string `json:"desc"`
-		FailPhones string `json:"failPhones"`
-	} `json:"result"`
+	SmsType string `json:"smsType"` //短信平台类型,仅当status="success"时不为空,"ssdj"代表三三得九平台,"dh3t"代表大汉三通平台
+	Result    string    `json:"result"`
+}
+
+type DongWuSmsResultDetail struct {
+	Msgid string `json:"msgid"`
+	Result string `json:"result"`
+	Desc string `json:"desc"`
+	FailPhones string `json:"failPhones"`
 }
 
 func (cli *DongWuSms) sendUserLoginCode(mobile, apiURL, appKey, content string) (apiResp *DongWuSmsApiResult, err error) {
@@ -132,5 +141,17 @@ func (cli *DongWuSms) sendUserLoginCode(mobile, apiURL, appKey, content string)
 		err = fmt.Errorf("parse response err: %s", e.Error())
 		return
 	}
+	// Parse the result string if status is success
+	if apiResp.Status == "success" && apiResp.Result != "" {
+		var resultDetail DongWuSmsResultDetail
+		if e := json.Unmarshal([]byte(apiResp.Result), &resultDetail); e != nil {
+			err = fmt.Errorf("parse result detail err: %s", e.Error())
+			return
+		}
+		// Update the response handling in SendUserLoginCode
+		if resultDetail.Result == "0" {
+			return
+		}
+	}
 	return
 }