|
- 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
- }
|