sms.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "hongze/hongze_robot/models"
  5. "hongze/hongze_robot/services"
  6. "hongze/hongze_robot/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. // 短信管理
  12. type SmsController struct {
  13. BaseCommonController
  14. }
  15. // @Title 短信转发接口
  16. // @Description 短信转发接口
  17. // @Param request body company.CompanyApplyApproveReq true "type json string"
  18. // @Success Ret=200 转发成功
  19. // @router /send [post]
  20. func (this *SmsController) SmsSend() {
  21. br := new(models.BaseResponse).Init()
  22. var err error
  23. defer func() {
  24. if err != nil {
  25. utils.FileLog.Info("send msg err: " + err.Error())
  26. }
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. reqBody := this.Ctx.Input.RequestBody
  31. utils.FileLog.Info("send body:" + string(reqBody))
  32. req := make([]*models.SmsReq, 0)
  33. err = json.Unmarshal(reqBody, &req)
  34. if err != nil {
  35. br.Msg = "参数解析异常!"
  36. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  37. return
  38. }
  39. addList := make([]*models.SmsRecord, 0)
  40. for _, v := range req {
  41. v.Address = strings.Trim(v.Address, " ")
  42. if v.Sign != utils.Sign {
  43. br.Msg = "签名错误"
  44. br.ErrMsg = "签名错误;get sign:" + v.Sign + ";check sign:" + utils.Sign
  45. return
  46. }
  47. unionCode := utils.MD5(v.Address + v.Body + v.Date)
  48. count, err := models.GetSmsRecordCount(unionCode)
  49. if err != nil && err.Error() != utils.ErrNoRow() {
  50. br.Msg = "失败,请联系技术"
  51. br.ErrMsg = "失败;Err:" + err.Error()
  52. return
  53. }
  54. //判断记录是否存在
  55. if count <= 0 {
  56. var tm time.Time
  57. if v.Date != "" {
  58. smsDateInt64, _ := strconv.ParseInt(v.Date, 10, 64)
  59. tm = time.Unix(smsDateInt64/1e3, 0)
  60. }
  61. record := new(models.SmsRecord)
  62. record.CreateTime = time.Now()
  63. record.ModifyTime = time.Now()
  64. if strings.Contains(v.Body, "测试") || strings.Contains(v.Body, "河南应急") || strings.Contains(v.Body, "公益短信") ||
  65. strings.Contains(v.Body, "河南省卫生健康委") || strings.Contains(v.Body, "账单提醒") || strings.Contains(v.Body, "花呗") ||
  66. strings.Contains(v.Body, "温馨提醒") || strings.Contains(v.Body, "河南") || strings.Contains(v.Body, "河南省人社厅") ||
  67. strings.Contains(v.Body, "河南省公安厅") || strings.Contains(v.Body, "河南省反诈中心") || strings.Contains(v.Body, "中共河南省委金融委员会办公室") {
  68. record.IsSend = 1
  69. } else {
  70. record.IsSend = 0
  71. }
  72. record.SmsDateTime = tm
  73. record.Mobile = v.Address
  74. record.SmsDate = v.Date
  75. record.Body = v.Body
  76. record.UnionCode = unionCode
  77. addList = append(addList, record)
  78. }
  79. }
  80. if len(addList) > 0 {
  81. _, err = models.AddSmsRecordMulti(addList)
  82. if err != nil {
  83. br.Msg = "失败,请联系技术"
  84. br.ErrMsg = "新增记录失败;Err:" + err.Error()
  85. return
  86. }
  87. time.Sleep(1 * time.Second)
  88. go services.SendSms()
  89. }
  90. br.Ret = 200
  91. br.Success = true
  92. br.Msg = "发送成功"
  93. }
  94. //func init() {
  95. // fmt.Println("start")
  96. // smsDate:=`1620290685894`
  97. // int64, err := strconv.ParseInt(smsDate, 10, 64)
  98. // fmt.Println(err)
  99. // tm:=time.Unix(int64/1e3,0)
  100. // fmt.Println(tm)
  101. // fmt.Println(tm.Format(utils.FormatDateTime))
  102. // fmt.Println("end")
  103. //}
  104. //func init() {
  105. // fmt.Println("start")
  106. // services.SendSms()
  107. // fmt.Println("end")
  108. // return
  109. //}