sms.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package models
  2. import (
  3. "github.com/jinzhu/gorm"
  4. "time"
  5. )
  6. type SendSmsReq struct {
  7. Mobile string `json:"mobile"`
  8. Content string `json:"content"`
  9. }
  10. type ValidSms struct {
  11. SmsId int64 `json:"sms_id"`
  12. Mobile string `json:"mobile"`
  13. ValidCode string `json:"valid_code"`
  14. SmsType int `json:"sms_type"`
  15. CreateAt int64 `json:"create_at"`
  16. }
  17. type SmsUser struct {
  18. isDelete int64 `json:"is_delete"`
  19. MobilePhone string `json:"mobile_phone"`
  20. CreateAt int64 `json:"create_at"`
  21. }
  22. type RemindSms struct {
  23. ID int64 `gorm:"column:id"`
  24. Mobile string
  25. SmsType int
  26. Content string
  27. IpAddr string
  28. }
  29. /// 定义腾讯短信模板结构
  30. type Tel struct {
  31. Mobile string `json:"mobile"` // 手机号码
  32. NationCode string `json:"nationcode"` // 国家码
  33. }
  34. type SmsTempl struct {
  35. Ext string `json:"ext"` // 用户的 session 内容,腾讯 server 回包中会原样返回,可选字段,不需要就填空
  36. Extend string `json:"extend"` // 短信码号扩展号,格式为纯数字串,其他格式无效
  37. Params []string `json:"params"` // 模板参数,若模板没有参数,请提供为空数组
  38. Sig string `json:"sig"` // App凭证,sig字段根据公式sha256(appkey=$appkey&random=$random&time=$time&mobile=$mobile)生成
  39. Sign string `json:"sign"` // 短信签名,如果使用默认签名,该字段可缺省
  40. Tel Tel `json:"tel"` // 电话号码
  41. Time int64 `json:"time"` // 请求发起时间,UNIX 时间戳(单位:秒),如果和系统时间相差超过10分钟则会返回失败
  42. TplID int64 `json:"tpl_id"` // 模板ID,在控制台审核通过的模板ID
  43. }
  44. /// 定义腾讯云短信响应内容
  45. type SmsTemplResp struct {
  46. Result int `json:"result"` // 0表示成功 非0表示失败
  47. ErrMsg string `json:"errmsg"` // 错误消息,result 非0时的具体错误信息
  48. SID string `json:"sid"` // 本次发送标识id,标识一次短信下发记录
  49. }
  50. /**
  51. [数据库操作]插入短信验证码数据
  52. */
  53. func (sms *ValidSms) Save(db *gorm.DB) error {
  54. sql := `INSERT INTO lzyd_sms_valid(mobile_phone, valid_code, sms_type, create_at) VALUES (?,?,?,?)`
  55. err := db.Exec(sql, sms.Mobile, sms.ValidCode, sms.SmsType, time.Now().Unix()).Error
  56. return err
  57. }
  58. func (sms *RemindSms) Save(db *gorm.DB) error {
  59. sql := "INSERT INTO sms_remind_info(mobile, sms_type, content, ip_addr) VALUES(?,?,?,?)"
  60. err := db.Exec(sql, sms.Mobile, sms.SmsType, sms.Content, sms.IpAddr).Error
  61. return err
  62. }