english_report.go 6.3 KB

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