english_report_email_log.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package models
  2. import (
  3. "eta/eta_api/utils"
  4. "github.com/beego/beego/v2/client/orm"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "time"
  7. )
  8. const (
  9. EnglishReportEmailLogSourceAli = 1 // 来源-阿里云
  10. EnglishReportEmailLogSourceTencent = 2 // 来源-腾讯云
  11. EnglishReportEmailLogStatusIng = -1 // 推送状态-已发送
  12. EnglishReportEmailLogStatusFail = 0 // 推送状态-发送失败
  13. EnglishReportEmailLogStatusSuccess = 1 // 推送状态-发送成功
  14. )
  15. // EnglishReportEmailLog 英文研报-邮件推送记录
  16. type EnglishReportEmailLog struct {
  17. Id int `orm:"column(id);pk;auto" description:"邮箱ID"`
  18. ReportId int `description:"报告ID或者线上路演ID"`
  19. ReportType int `description:"类型:0英文研报,1英文线上路演"`
  20. EmailId int `description:"邮箱ID"`
  21. Email string `description:"邮箱地址"`
  22. SendData string `description:"请求信息"`
  23. Result string `description:"响应信息"`
  24. SendStatus int `description:"发送状态:-1-已发送(一个中间状态,重新推送时可能会产生这种状态);0-发送失败;1-发送成功"`
  25. CreateTime time.Time `description:"请求时间"`
  26. Source int `description:"服务商:1-阿里云;2-腾讯云"`
  27. IsDeleted int `description:"是否已删除: 0-正常; 1-已删除"`
  28. CallbackData string `description:"回调信息"`
  29. ErrMsg string `description:"错误信息(Result/CallbackData里面的取起来麻烦=_=!)"`
  30. }
  31. func (item *EnglishReportEmailLog) TableName() string {
  32. return "english_report_email_log"
  33. }
  34. func (item *EnglishReportEmailLog) Create() (err error) {
  35. o := orm.NewOrmUsingDB("rddp")
  36. _, err = o.Insert(item)
  37. return
  38. }
  39. func (item *EnglishReportEmailLog) Update(cols []string) (err error) {
  40. o := orm.NewOrmUsingDB("rddp")
  41. _, err = o.Update(item, cols...)
  42. return
  43. }
  44. func (item *EnglishReportEmailLog) InsertMulti(items []*EnglishReportEmailLog) (err error) {
  45. o := orm.NewOrmUsingDB("rddp")
  46. _, err = o.InsertMulti(len(items), items)
  47. return
  48. }
  49. // GetEnglishReportEmailLogList 获取日志列表
  50. func GetEnglishReportEmailLogList(condition string, pars []interface{}) (list []*EnglishReportEmailLog, err error) {
  51. o := orm.NewOrmUsingDB("rddp")
  52. sql := `SELECT * FROM english_report_email_log WHERE is_deleted = 0 `
  53. if condition != `` {
  54. sql += condition
  55. }
  56. _, err = o.Raw(sql, pars).QueryRows(&list)
  57. return
  58. }
  59. // EnglishReportEmailLogPageListResp 英文研报-邮件推送记录分页列表响应体
  60. type EnglishReportEmailLogPageListResp struct {
  61. List []*EnglishReportEmailLogPageList `description:"列表数据"`
  62. Paging *paging.PagingItem `description:"分页数据"`
  63. }
  64. // EnglishReportEmailLogPageList 英文研报-邮件推送记录分页列表
  65. type EnglishReportEmailLogPageList struct {
  66. SendId int `description:"推送ID"`
  67. ReportId int `description:"报告ID"`
  68. EmailId int `description:"邮箱ID"`
  69. Email string `description:"邮箱地址"`
  70. ResultMsg string `description:"结果详情"`
  71. SendStatus int `description:"发送状态:-1-已发送;0-发送失败;1-发送成功"`
  72. Source int `description:"服务商:1-阿里云;2-腾讯云"`
  73. CreateTime string `description:"创建时间"`
  74. }
  75. // GetEnglishReportEmailLogPageList 获取日志列表-分页
  76. func GetEnglishReportEmailLogPageList(condition string, pars []interface{}, order string, startSize, pageSize int) (total int, list []*EnglishReportEmailLog, err error) {
  77. o := orm.NewOrmUsingDB("rddp")
  78. sql := `SELECT * FROM english_report_email_log WHERE is_deleted = 0 `
  79. sql += condition
  80. if order != "" {
  81. sql += order
  82. } else {
  83. sql += ` ORDER BY send_status ASC, create_time DESC`
  84. }
  85. totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
  86. if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
  87. return
  88. }
  89. sql += ` LIMIT ?,?`
  90. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  91. return
  92. }
  93. // GetEnglishReportEmailLogById 主键获取日志
  94. func GetEnglishReportEmailLogById(id int) (item *EnglishReportEmailLog, err error) {
  95. o := orm.NewOrmUsingDB("rddp")
  96. sql := `SELECT * FROM english_report_email_log WHERE is_deleted = 0 AND id = ? LIMIT 1`
  97. err = o.Raw(sql, id).QueryRow(&item)
  98. return
  99. }
  100. // DeleteEnglishReportEmailLogByIds IDs删除日志
  101. func DeleteEnglishReportEmailLogByIds(logIds []int) (err error) {
  102. o := orm.NewOrmUsingDB("rddp")
  103. sql := `UPDATE english_report_email_log SET is_deleted = 1 WHERE id IN (` + utils.GetOrmInReplace(len(logIds)) + `)`
  104. _, err = o.Raw(sql, logIds).Exec()
  105. return
  106. }
  107. // EnglishReportEmailLogFail 群发消息日志失败列表
  108. type EnglishReportEmailLogFail struct {
  109. HasFail int `description:"是否有失败记录: 0-无; 1-有"`
  110. ReportId int `description:"报告ID"`
  111. }
  112. // GetEnglishReportEmailLogFailList 获取群发消息日志失败列表
  113. func GetEnglishReportEmailLogFailList(reportType int) (list []*EnglishReportEmailLogFail, err error) {
  114. o := orm.NewOrmUsingDB("rddp")
  115. sql := `SELECT 1 AS has_fail, report_id FROM english_report_email_log WHERE report_type=? and is_deleted = 0 AND send_status = 0 GROUP BY report_id`
  116. _, err = o.Raw(sql, reportType).QueryRows(&list)
  117. return
  118. }
  119. // GetEnglishReportEmailLog 获取邮件推送日志
  120. func GetEnglishReportEmailLog(condition string, pars []interface{}) (item *EnglishReportEmailLog, err error) {
  121. o := orm.NewOrmUsingDB("rddp")
  122. sql := `SELECT * FROM english_report_email_log WHERE 1 = 1 `
  123. sql += condition
  124. sql += ` ORDER BY id DESC LIMIT 1`
  125. err = o.Raw(sql, pars).QueryRow(&item)
  126. return
  127. }
  128. // GetHasFailEmailLogReportIds 获取存在邮件推送失败记录的英文报告IDs
  129. func GetHasFailEmailLogReportIds() (reportIds []int, err error) {
  130. o := orm.NewOrmUsingDB("rddp")
  131. sql := `SELECT DISTINCT report_id FROM english_report_email_log WHERE is_deleted = 0 AND send_status = 0`
  132. _, err = o.Raw(sql).QueryRows(&reportIds)
  133. return
  134. }
  135. // GetSuccessEmailLogReportIds 获取邮件推送记录均为成功的英文报告IDs
  136. func GetSuccessEmailLogReportIds() (reportIds []int, err error) {
  137. o := orm.NewOrmUsingDB("rddp")
  138. sql := `SELECT DISTINCT report_id FROM english_report_email_log WHERE is_deleted = 0 AND (send_status != 0 AND send_status != -1)`
  139. _, err = o.Raw(sql).QueryRows(&reportIds)
  140. return
  141. }