package hdl import ( implement2 "applet/app/db/implement" "applet/app/e" "applet/app/lib/validate" "applet/app/md" "applet/app/svc" "applet/app/utils" "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/sms" zhios_third_party_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/utils" db "code.fnuoos.com/zhimeng/model.git/src" "code.fnuoos.com/zhimeng/model.git/src/implement" implement3 "code.fnuoos.com/zhimeng/model.git/src/super/implement" "code.fnuoos.com/zhimeng/model.git/src/super/model" "fmt" "github.com/gin-gonic/gin" "github.com/tidwall/gjson" "time" ) // Sms // @Summary 短信发送 // @Tags 短信 // @Description 短信-短信发送 // @param Authorization header string false "验证参数Bearer和token空格拼接" // @Accept json // @Produce json // @Param args body md.SmsReq true "请求参数" // @Success 200 {string} "success" // @Failure 400 {object} md.Response "具体错误" // @Router /api/sms [POST] func Sms(c *gin.Context) { var args md.SmsReq err := c.ShouldBindJSON(&args) if err != nil { err = validate.HandleValidateErr(err) err1 := err.(e.E) e.OutErr(c, err1.Code, err1.Error()) return } if args.Type == "fast_login" { NewAdminDb := implement.NewMediumDb(svc.MasterDb(c)) admin, _ := NewAdminDb.GetMediumByUsername(args.Phone) if admin == nil { e.OutErr(c, 400, e.NewErr(400, "账号未注册")) return } } if args.Type == "update_password" { admin, _ := svc.CheckUser(c) if admin == nil { e.OutErr(c, 400, e.NewErr(400, "账号未注册")) return } args.Phone = admin.Username } NewSysCfgDb := implement2.NewSysCfgDb(svc.MasterDb(c), c.GetString("mid")) key := NewSysCfgDb.SysCfgGetWithDb("mob_app_key") if key == "" { e.OutErr(c, 400, e.NewErr(400, "appkey不存在")) return } count := SmsNumGetSmsNum(c.GetString("mid")) if count-1 < 0 { e.OutErr(c, 400, e.NewErr(400, "短信数量不足")) return } where := map[string]interface{}{ "appkey": key, "zone": "86", "phone": args.Phone, } templateCode := NewSysCfgDb.SysCfgGetWithDb("sms_code") if templateCode != "" { where["templateCode"] = templateCode } send, err := sms.SmsMobApiSend(where) if err != nil { e.OutErr(c, 400, err.Error()) return } status := gjson.Get(send, "status").Int() msg := gjson.Get(send, "error").String() if status == 471 { e.OutErr(c, 400, e.NewErr(400, "发送的ip不在白名单中")) return } if status == 406 { e.OutErr(c, 400, e.NewErr(400, "appkey不存在")) return } if status != 200 { e.OutErr(c, 400, e.NewErr(400, msg)) return } //存入记录 ext := map[string]interface{}{ "send": send, "post": where, } var record = model.SmsRecord{ OrdId: "", Uid: utils.StrToInt(c.GetString("mid")), Amount: "1", CostPrice: "", Balance: zhios_third_party_utils.IntToStr(count - 1), PayWay: 0, State: 1, Memo: "发送短信", CreateAt: time.Now(), UpdateAt: time.Now(), TradeNo: "", Type: 1, OrdType: "buy", Fee: "", Ext: zhios_third_party_utils.SerializeStr(ext), Phone: args.Phone, } db.Db.InsertOne(&record) sql := `UPDATE sms_num_list set num=num-%d WHERE uid=%s ;` sql = fmt.Sprintf(sql, 1, c.GetString("mid")) fmt.Println(sql) nativeString, err := db.QueryNativeString(db.Db, sql) fmt.Println(nativeString) fmt.Println(err) e.OutSuc(c, "success", nil) return } func SmsNumGetSmsNum(uid interface{}) int { NewSmsNumListDb := implement3.NewSmsNumListDb(db.Db) numData := NewSmsNumListDb.GetSmsNum(uid) num := 0 if numData != nil { num = numData.Num } if num < 0 { num = 0 } return num }