english_report.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package controllers
  2. import (
  3. "errors"
  4. "hongze/hongze_api/models"
  5. "hongze/hongze_api/services/alarm_msg"
  6. "hongze/hongze_api/utils"
  7. "html"
  8. "time"
  9. )
  10. // EnglishReportShareController 报告分享
  11. type EnglishReportShareController struct {
  12. BaseCommonController
  13. }
  14. // EnglishReportDetail
  15. // @Title 英文研报-分享详情
  16. // @Description 英文研报-分享详情
  17. // @Param ReportCode query string true "报告唯一编码"
  18. // @Param ShareEmail query int false "推送的邮箱ID"
  19. // @Success 200 {object} models.ReportShareDetailResp
  20. // @router /share/detail [get]
  21. func (this *EnglishReportShareController) EnglishReportDetail() {
  22. br := new(models.BaseResponse).Init()
  23. defer func() {
  24. this.Data["json"] = br
  25. this.ServeJSON()
  26. }()
  27. reportCode := this.GetString("ReportCode")
  28. if reportCode == "" {
  29. br.Msg = "参数错误"
  30. br.ErrMsg = "参数错误,reportCode 为空"
  31. return
  32. }
  33. report, err := models.GetEnglishReportByCode(reportCode)
  34. if err != nil {
  35. br.Msg = "该报告已删除"
  36. br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
  37. return
  38. }
  39. err = models.UpdateEnglishReportCounts(reportCode)
  40. if err != nil {
  41. br.Msg = "更新失败"
  42. br.ErrMsg = "更新失败,Err:" + err.Error()
  43. return
  44. }
  45. report.ContentSub = html.UnescapeString(report.ContentSub)
  46. report.Content = html.UnescapeString(report.Content)
  47. // 记录邮箱
  48. shareEmail, _ := this.GetInt("ShareEmail", 0)
  49. if shareEmail != 0 {
  50. go func() {
  51. var errMsg error
  52. defer func() {
  53. if errMsg != nil {
  54. alarm_msg.SendAlarmMsg(utils.APPNAME+"更新英文报告邮箱PV失败, Err: "+errMsg.Error(), 2)
  55. }
  56. }()
  57. userEmail, e := models.GetEnglishReportEmailById(shareEmail)
  58. if e != nil && e.Error() != utils.ErrNoRow() {
  59. errMsg = errors.New("获取客户邮箱信息失败, Err:" + e.Error())
  60. return
  61. }
  62. if userEmail == nil {
  63. return
  64. }
  65. // 更新报告邮箱pv(冗余)
  66. if e = models.UpdateEnglishReportEmailCounts(reportCode); e != nil {
  67. errMsg = errors.New("更新报告邮箱PV失败, Err:" + e.Error())
  68. return
  69. }
  70. // 记录邮箱PV
  71. pv := &models.EnglishReportEmailPV{
  72. ReportId: report.Id,
  73. EmailId: userEmail.Id,
  74. CreateTime: time.Now().Local(),
  75. }
  76. if e = pv.Create(); e != nil {
  77. errMsg = errors.New("新增邮箱PV失败, Err: " + e.Error())
  78. return
  79. }
  80. // 更新阅读量
  81. if e = models.UpdateEnglishReportEmailViewTotal(userEmail.Id); e != nil {
  82. errMsg = errors.New("更新英文联系人阅读量失败, Err: " + e.Error())
  83. return
  84. }
  85. if userEmail.CompanyId > 0 {
  86. if e = models.UpdateEnglishCompanyViewTotal(userEmail.CompanyId); e != nil {
  87. errMsg = errors.New("更新英文客户阅读量, Err: " + e.Error())
  88. return
  89. }
  90. }
  91. }()
  92. }
  93. resp := new(models.EnglishReportShareDetailResp)
  94. resp.Report = report
  95. br.Ret = 200
  96. br.Success = true
  97. br.Msg = "获取成功"
  98. br.Data = resp
  99. }
  100. // TrialEnglishReportDetail
  101. // @Title 英文研报-分享详情-ETA试用平台
  102. // @Description 英文研报-分享详情
  103. // @Param ReportCode query string true "报告唯一编码"
  104. // @Param ShareEmail query int false "推送的邮箱ID"
  105. // @Success 200 {object} models.ReportShareDetailResp
  106. // @router /trial/share/detail [get]
  107. func (this *EnglishReportShareController) TrialEnglishReportDetail() {
  108. br := new(models.BaseResponse).Init()
  109. defer func() {
  110. this.Data["json"] = br
  111. this.ServeJSON()
  112. }()
  113. reportCode := this.GetString("ReportCode")
  114. if reportCode == "" {
  115. br.Msg = "参数错误"
  116. br.ErrMsg = "参数错误,reportCode 为空"
  117. return
  118. }
  119. report, err := models.GetTrialEnglishReportByCode(reportCode)
  120. if err != nil {
  121. br.Msg = "该报告已删除"
  122. br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
  123. return
  124. }
  125. err = models.UpdateTrialEnglishReportCounts(reportCode)
  126. if err != nil {
  127. br.Msg = "更新失败"
  128. br.ErrMsg = "更新失败,Err:" + err.Error()
  129. return
  130. }
  131. report.ContentSub = html.UnescapeString(report.ContentSub)
  132. report.Content = html.UnescapeString(report.Content)
  133. // 记录邮箱
  134. shareEmail, _ := this.GetInt("ShareEmail", 0)
  135. if shareEmail != 0 {
  136. go func() {
  137. var errMsg error
  138. defer func() {
  139. if errMsg != nil {
  140. alarm_msg.SendAlarmMsg(utils.APPNAME+"更新英文报告邮箱PV失败, Err: "+errMsg.Error(), 2)
  141. }
  142. }()
  143. userEmail, e := models.GetTrialEnglishReportEmailById(shareEmail)
  144. if e != nil && e.Error() != utils.ErrNoRow() {
  145. errMsg = errors.New("获取客户邮箱信息失败, Err:" + e.Error())
  146. return
  147. }
  148. if userEmail == nil {
  149. return
  150. }
  151. // 更新报告邮箱pv(冗余)
  152. if e = models.UpdateTrialEnglishReportEmailCounts(reportCode); e != nil {
  153. errMsg = errors.New("更新报告邮箱PV失败, Err:" + e.Error())
  154. return
  155. }
  156. // 记录邮箱PV
  157. pv := &models.EnglishReportEmailPV{
  158. ReportId: report.Id,
  159. EmailId: userEmail.Id,
  160. CreateTime: time.Now().Local(),
  161. }
  162. if e = models.InsertTrialEnglishReportEmailPV(pv); e != nil {
  163. errMsg = errors.New("新增邮箱PV失败, Err: " + e.Error())
  164. return
  165. }
  166. // 更新阅读量
  167. if e = models.UpdateTrialEnglishReportEmailViewTotal(userEmail.Id); e != nil {
  168. errMsg = errors.New("更新英文联系人阅读量失败, Err: " + e.Error())
  169. return
  170. }
  171. if userEmail.CompanyId > 0 {
  172. if e = models.UpdateTrialEnglishCompanyViewTotal(userEmail.CompanyId); e != nil {
  173. errMsg = errors.New("更新英文客户阅读量, Err: " + e.Error())
  174. return
  175. }
  176. }
  177. }()
  178. }
  179. resp := new(models.EnglishReportShareDetailResp)
  180. resp.Report = report
  181. br.Ret = 200
  182. br.Success = true
  183. br.Msg = "获取成功"
  184. br.Data = resp
  185. }