|
- package sms
-
- import (
- "applet/app/comm/db"
- "applet/app/comm/svc"
- "applet/app/comm/utils"
- "applet/app/comm/utils/cache"
- "applet/app/comm/utils/logx"
- "applet/app/lib/zhimeng"
- "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/aliyun"
- "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/sms"
- "errors"
- "fmt"
- "github.com/tidwall/gjson"
-
- "github.com/gin-gonic/gin"
- )
-
- // NewZhimengSMS is 智盟的短信服务
- func NewZhimengSMS(c *gin.Context) *zhimeng.SDK {
- sms := new(zhimeng.SDK)
- key := svc.SysCfgGet(c, "third_zm_sms_key")
- secret := svc.SysCfgGet(c, "third_zm_sms_secret")
- if key == "" || secret == "" {
- _ = logx.Warn("短信服务配置错误")
- }
- sms.Init("send_msg", key, secret)
- return sms
- }
- func GetSmsConfig(c *gin.Context, zone string, postData map[string]interface{}, types string) error {
- m := db.SysCfgGet(c, "third_app_push_set")
- if c.GetString("app_type") == "o2o" {
- m = db.SysCfgGet(c, "biz_third_app_push_set")
- }
- key := gjson.Get(m, "mobAppKey").String()
- postData["is_mob"] = "1"
- postData["type"] = "mob"
- postData["sms_type"] = "putong"
- smsPlatform := GetSmsPlatform(c)
- if smsPlatform == "ljioe" {
- postData["is_mob"] = "0"
- postData["type"] = ""
- }
- if zone == "" {
- zone = "86"
- }
- if zone != "86" { //国际短信
- postData["is_sales"] = "2"
- postData["sms_type"] = "international"
- }
- postData["templateCode"] = GetTplId(c, zone, postData["templateCode"].(string))
- postData["zone"] = zone
- if key != "" {
- postData["smsmsg_key"] = key
- }
- smsSendType := svc.SysCfgGet(c, "sms_send_type")
- aliPaySmsSendType := svc.SysCfgGet(c, "alipay_sms_send_type")
- if c.GetString("app_type") != "" && c.GetString("app_type") != "daogou" {
- smsSendType = svc.SysCfgGet(c, "o2o_sms_send_type")
- }
- if types == "bind_alipay" || types == "unbind_alipay" {
- smsSendType = aliPaySmsSendType
- }
- if smsSendType == "1" || smsSendType == "2" {
- captcha := utils.CreateCaptcha()
- if svc.SysCfgGet(c, "sms_send_code") != "" {
- captcha = svc.SysCfgGet(c, "sms_send_code")
- }
- cache.SetEx("sms:"+c.GetString("mid")+":"+postData["mobile"].(string), captcha, 300)
- c.Set("tip", "您的验证码为 "+captcha)
- return errors.New("您的验证码为 " + captcha)
- }
- if c.GetString("sms_type") == "2" { //阿里
- captcha := utils.CreateCaptcha()
- data := AliyunSmsBase(c)
- //发送短信
- fmt.Println(captcha)
- err := aliyun.AliyunSendSmsOwn(data["aliyun_sms_id"], data["aliyun_sms_secret"], postData["mobile"].(string), data["aliyun_sms_sign_name"], data["aliyun_sms_code"], "{\"code\":\""+captcha+"\"}")
- if err != nil {
- return errors.New("发送失败")
- }
- cache.SetEx("sms:"+c.GetString("mid")+":"+postData["mobile"].(string), captcha, 300)
- return nil
- }
- if c.GetString("sms_type") == "1" { //新的
- postData["uid"] = c.GetString("mid")
- err := sms.SmsSend(db.Db, postData)
- if err != nil {
- return err
- }
- return nil
- }
- fmt.Println("===短信", postData, c.ClientIP())
- sdk, err := NewZhimengSMS(c).SelectFunction("msg_doing").WithSMSArgs(postData).Result()
- if err != nil {
- msg := gjson.Get(err.Error(), "msg").String()
- if msg == "" {
- msg = err.Error()
- }
- fmt.Println("===短信", err)
- errs := errors.New(msg)
- return errs
- }
- rmap := sdk.ToInterface().(map[string]interface{})
- fmt.Println("===短信", rmap)
-
- if rmap["status"] == "" {
- return err
- }
- return nil
- }
- func GetSmsPlatform(c *gin.Context) string {
- var smsPlatform = "mob"
- return smsPlatform
- }
- func GetTplId(c *gin.Context, zone, types string) string {
- // 校验短信验证码
- tplId := ""
- if zone != "86" {
- tplId = svc.SysCfgGet(c, "mob_sms_sdk_international_template_id")
- } else {
- tplId = svc.SysCfgGet(c, "mob_sms_sdk_template_id")
- }
- if c.GetString("app_type") == "o2o" {
- tplId = db.SysCfgGet(c, "biz_mob_sms_sdk_template_id")
- }
- normal := gjson.Get(tplId, types).String()
- if normal == "" {
- normal = gjson.Get(tplId, "normal").String()
- }
- return normal
- }
- func AliyunSmsBase(c *gin.Context) map[string]string {
- data := db.SysCfgFind(c, "aliyun_sms_id", "aliyun_sms_secret", "aliyun_sms_code", "aliyun_sms_sign_name")
- return data
- }
|