english_report.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  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. if v, ok := conf[models.BusinessConfWatermarkChart]; ok {
  111. resp.WatermarkChart = v
  112. }
  113. if v, ok := conf[models.BusinessConfWatermarkReport]; ok {
  114. resp.WatermarkReport = v
  115. }
  116. resp.Hz = 1
  117. resp.Report = report
  118. br.Ret = 200
  119. br.Success = true
  120. br.Msg = "获取成功"
  121. br.Data = resp
  122. }
  123. // TrialEnglishReportDetail
  124. // @Title 英文研报-分享详情-ETA试用平台
  125. // @Description 英文研报-分享详情
  126. // @Param ReportCode query string true "报告唯一编码"
  127. // @Param ShareEmail query int false "推送的邮箱ID"
  128. // @Success 200 {object} models.ReportShareDetailResp
  129. // @router /trial/share/detail [get]
  130. func (this *EnglishReportShareController) TrialEnglishReportDetail() {
  131. br := new(models.BaseResponse).Init()
  132. defer func() {
  133. this.Data["json"] = br
  134. this.ServeJSON()
  135. }()
  136. reportCode := this.GetString("ReportCode")
  137. if reportCode == "" {
  138. br.Msg = "参数错误"
  139. br.ErrMsg = "参数错误,reportCode 为空"
  140. return
  141. }
  142. report, err := models.GetTrialEnglishReportByCode(reportCode)
  143. if err != nil {
  144. br.Msg = "该报告已删除"
  145. br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
  146. return
  147. }
  148. err = models.UpdateTrialEnglishReportCounts(reportCode)
  149. if err != nil {
  150. br.Msg = "更新失败"
  151. br.ErrMsg = "更新失败,Err:" + err.Error()
  152. return
  153. }
  154. report.ContentSub = html.UnescapeString(report.ContentSub)
  155. report.Content = html.UnescapeString(report.Content)
  156. // 记录邮箱
  157. shareEmail, _ := this.GetInt("ShareEmail", 0)
  158. if shareEmail != 0 {
  159. go func() {
  160. var errMsg error
  161. defer func() {
  162. if errMsg != nil {
  163. alarm_msg.SendAlarmMsg(utils.APPNAME+"更新英文报告邮箱PV失败, Err: "+errMsg.Error(), 2)
  164. }
  165. }()
  166. userEmail, e := models.GetTrialEnglishReportEmailById(shareEmail)
  167. if e != nil && e.Error() != utils.ErrNoRow() {
  168. errMsg = errors.New("获取客户邮箱信息失败, Err:" + e.Error())
  169. return
  170. }
  171. if userEmail == nil {
  172. return
  173. }
  174. // 更新报告邮箱pv(冗余)
  175. if e = models.UpdateTrialEnglishReportEmailCounts(reportCode); e != nil {
  176. errMsg = errors.New("更新报告邮箱PV失败, Err:" + e.Error())
  177. return
  178. }
  179. // 记录邮箱PV
  180. pv := &models.EnglishReportEmailPV{
  181. ReportId: report.Id,
  182. EmailId: userEmail.Id,
  183. CreateTime: time.Now().Local(),
  184. }
  185. if e = models.InsertTrialEnglishReportEmailPV(pv); e != nil {
  186. errMsg = errors.New("新增邮箱PV失败, Err: " + e.Error())
  187. return
  188. }
  189. // 更新阅读量
  190. if e = models.UpdateTrialEnglishReportEmailViewTotal(userEmail.Id); e != nil {
  191. errMsg = errors.New("更新英文联系人阅读量失败, Err: " + e.Error())
  192. return
  193. }
  194. if userEmail.CompanyId > 0 {
  195. if e = models.UpdateTrialEnglishCompanyViewTotal(userEmail.CompanyId); e != nil {
  196. errMsg = errors.New("更新英文客户阅读量, Err: " + e.Error())
  197. return
  198. }
  199. }
  200. }()
  201. }
  202. resp := new(models.EnglishReportShareDetailResp)
  203. // 免责声明
  204. conf, e := models.GetBusinessConf()
  205. if e != nil {
  206. br.Msg = "获取失败"
  207. br.ErrMsg = "获取免责声明失败, Err: " + e.Error()
  208. return
  209. }
  210. // 研报分享抬头
  211. if v, ok := conf[models.BusinessConfH5ShareEnName]; ok {
  212. resp.H5ShareEnName = v
  213. }
  214. if v, ok := conf[models.BusinessConfH5ReportShareImg]; ok {
  215. resp.H5ReportShareImg = v
  216. }
  217. if v, ok := conf[models.BusinessConfWatermarkChart]; ok {
  218. resp.WatermarkChart = v
  219. }
  220. if v, ok := conf[models.BusinessConfWatermarkReport]; ok {
  221. resp.WatermarkReport = v
  222. }
  223. resp.Hz = 1
  224. resp.Report = report
  225. br.Ret = 200
  226. br.Success = true
  227. br.Msg = "获取成功"
  228. br.Data = resp
  229. }