smart_report.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_report/models"
  5. "eta/eta_report/utils"
  6. "fmt"
  7. "strconv"
  8. "strings"
  9. )
  10. // SmartReportController 智能研报
  11. type SmartReportController struct {
  12. BaseCommonController
  13. }
  14. // Detail
  15. // @Title 报告详情
  16. // @Description 报告详情
  17. // @Param ReportCode query string true "报告唯一编码"
  18. // @Success 200 {object} models.SmartReportShareDetailResp
  19. // @router /share/detail [get]
  20. func (this *SmartReportController) Detail() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. if br.ErrMsg == "" {
  24. br.IsSendEmail = false
  25. }
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. reportCode := this.GetString("ReportCode")
  30. isReplace, _ := this.GetInt("IsReplace", 0)
  31. if reportCode == "" {
  32. br.Msg = "获取失败"
  33. br.ErrMsg = fmt.Sprintf("参数有误, ReportCode: %s", reportCode)
  34. return
  35. }
  36. resp := new(models.SmartReportShareDetailResp)
  37. reportOB := new(models.SmartReport)
  38. cond := ` AND report_code = ?`
  39. pars := make([]interface{}, 0)
  40. pars = append(pars, reportCode)
  41. item, e := reportOB.GetItemByCondition(cond, pars)
  42. if e != nil {
  43. if e.Error() == utils.ErrNoRow() {
  44. br.Msg = "报告不存在, 请刷新页面"
  45. return
  46. }
  47. br.Msg = "获取失败"
  48. br.ErrMsg = "获取报告失败, Err: " + e.Error()
  49. return
  50. }
  51. resp.Report = models.FormatSmartReport2Item(item)
  52. if resp.Report.HeadResourceId > 0 {
  53. headResource, err := models.GetResourceItemById(resp.Report.HeadResourceId)
  54. if err != nil && err.Error() != utils.ErrNoRow() {
  55. br.Msg = "操作失败"
  56. br.ErrMsg = "获取资源库版头失败, Err: " + err.Error()
  57. return
  58. }
  59. if headResource != nil && headResource.ResourceId > 0 {
  60. resp.Report.HeadImg = headResource.ImgUrl
  61. resp.Report.HeadStyle = headResource.Style
  62. }
  63. }
  64. if resp.Report.EndResourceId > 0 {
  65. endResource, err := models.GetResourceItemById(resp.Report.EndResourceId)
  66. if err != nil && err.Error() != utils.ErrNoRow() {
  67. br.Msg = "操作失败"
  68. br.ErrMsg = "获取资源库版尾失败, Err: " + err.Error()
  69. return
  70. }
  71. if endResource != nil && endResource.ResourceId > 0 {
  72. resp.Report.EndImg = endResource.ImgUrl
  73. resp.Report.EndStyle = endResource.Style
  74. }
  75. }
  76. // 免责声明
  77. conf, e := models.GetBusinessConf()
  78. if e != nil {
  79. br.Msg = "获取失败"
  80. br.ErrMsg = "获取免责声明失败, Err: " + e.Error()
  81. return
  82. }
  83. // (为了兼容内网客户)需要判断是否替换资源地址
  84. var urlReplace models.Report2ImgReplace
  85. if isReplace == 1 && conf[models.BusinessConfReport2ImgReplace] != "" {
  86. if e := json.Unmarshal([]byte(conf[models.BusinessConfReport2ImgReplace]), &urlReplace); e != nil {
  87. br.Msg = "获取失败"
  88. br.ErrMsg = fmt.Sprintf("获取报告替换配置失败, %v", e)
  89. return
  90. }
  91. }
  92. if conf[models.BusinessConfDisclaimer] != "" {
  93. resp.Disclaimer = conf[models.BusinessConfDisclaimer]
  94. }
  95. // 研报分享抬头
  96. if v, ok := conf[models.BusinessConfH5ShareName]; ok {
  97. resp.H5ShareName = v
  98. }
  99. if v, ok := conf[models.BusinessConfH5ReportShareImg]; ok {
  100. resp.H5ReportShareImg = v
  101. }
  102. // 替换地址
  103. if urlReplace.IsReplace {
  104. if urlReplace.OssUrlOrigin != "" {
  105. resp.H5ReportShareImg = strings.ReplaceAll(resp.H5ReportShareImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
  106. resp.Report.Content = strings.ReplaceAll(resp.Report.Content, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
  107. resp.Report.ContentSub = strings.ReplaceAll(resp.Report.ContentSub, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
  108. resp.Report.HeadImg = strings.ReplaceAll(resp.Report.HeadImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
  109. resp.Report.EndImg = strings.ReplaceAll(resp.Report.EndImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
  110. }
  111. if urlReplace.ChartUrlOrigin != "" {
  112. resp.Report.Content = strings.ReplaceAll(resp.Report.Content, urlReplace.ChartUrlOrigin, urlReplace.ChartUrlNew)
  113. resp.Report.ContentSub = strings.ReplaceAll(resp.Report.ContentSub, urlReplace.ChartUrlOrigin, urlReplace.ChartUrlNew)
  114. }
  115. }
  116. // 更新pv
  117. if e = models.UpdateSmartReportPv(item.SmartReportId); e != nil {
  118. br.Msg = "获取失败"
  119. br.ErrMsg = "更新报告pv失败, Err: " + e.Error()
  120. return
  121. }
  122. br.Ret = 200
  123. br.Success = true
  124. br.Msg = "获取成功"
  125. br.Data = resp
  126. }
  127. // Detail
  128. // @Title 微信分享详情
  129. // @Description 微信分享详情
  130. // @Param ReportCode query string true "报告唯一编码"
  131. // @Success 200 {object} models.SmartReportWechatShareDetailResp
  132. // @router /wechat_share/detail [get]
  133. func (this *SmartReportController) WechatShareDetail() {
  134. br := new(models.BaseResponse).Init()
  135. defer func() {
  136. if br.ErrMsg == "" {
  137. br.IsSendEmail = false
  138. }
  139. this.Data["json"] = br
  140. this.ServeJSON()
  141. }()
  142. reportCode := this.GetString("ReportCode")
  143. if reportCode == "" {
  144. br.Msg = "获取失败"
  145. br.ErrMsg = fmt.Sprintf("参数有误, ReportCode: %s", reportCode)
  146. return
  147. }
  148. resp := new(models.SmartReportWechatShareDetailResp)
  149. item, e := models.GetReportByCode(reportCode)
  150. if e != nil {
  151. if e.Error() == utils.ErrNoRow() {
  152. br.Msg = "报告不存在, 请刷新页面"
  153. return
  154. }
  155. br.Msg = "获取失败"
  156. br.ErrMsg = "获取报告失败, Err: " + e.Error()
  157. return
  158. }
  159. // 免责声明
  160. conf, e := models.GetBusinessConf()
  161. if e != nil {
  162. br.Msg = "获取失败"
  163. br.ErrMsg = "获取免责声明失败, Err: " + e.Error()
  164. return
  165. }
  166. date := strings.Replace(item.CreateTime, "-", "", -1)
  167. dateStr := date[4:9]
  168. var shareTitle string
  169. // 研报分享抬头
  170. if utils.BusinessCode == "E2023080700" || utils.BusinessCode == "E2023080900" || utils.BusinessCode == "E2023080901" {
  171. shareTitle = "【第" + strconv.Itoa(item.Stage) + "期|FICC】" + item.Title + "(" + dateStr + ")"
  172. } else {
  173. shareTitle = "【第" + strconv.Itoa(item.Stage) + "期】" + item.Title + "(" + dateStr + ")"
  174. }
  175. if v, ok := conf[models.BusinessConfH5ReportShareImg]; ok {
  176. resp.H5ReportShareImg = v
  177. }
  178. if v, ok := conf[models.BusinessConfH5ShareName]; ok {
  179. resp.H5ShareName = v
  180. }
  181. resp.H5ShareTitle = shareTitle
  182. br.Ret = 200
  183. br.Success = true
  184. br.Msg = "获取成功"
  185. br.Data = resp
  186. }
  187. // WechatShareOutsideReportDetail
  188. // @Title 微信分享外部报告详情
  189. // @Description 微信分享外部报告详情
  190. // @Param ReportCode query string true "报告唯一编码"
  191. // @Success 200 {object} models.SmartReportWechatShareDetailResp
  192. // @router /wechat_share/outside/report/detail [get]
  193. func (this *SmartReportController) WechatShareOutsideReportDetail() {
  194. br := new(models.BaseResponse).Init()
  195. defer func() {
  196. if br.ErrMsg == "" {
  197. br.IsSendEmail = false
  198. }
  199. this.Data["json"] = br
  200. this.ServeJSON()
  201. }()
  202. reportCode := this.GetString("ReportCode")
  203. if reportCode == "" {
  204. br.Msg = "获取失败"
  205. br.ErrMsg = fmt.Sprintf("参数有误, ReportCode: %s", reportCode)
  206. return
  207. }
  208. resp := new(models.SmartReportWechatShareDetailResp)
  209. item, e := models.GetOutsideReportByReportCode(reportCode)
  210. if e != nil {
  211. if e.Error() == utils.ErrNoRow() {
  212. br.Msg = "报告不存在, 请刷新页面"
  213. return
  214. }
  215. br.Msg = "获取失败"
  216. br.ErrMsg = "获取报告失败, Err: " + e.Error()
  217. return
  218. }
  219. // 免责声明
  220. conf, e := models.GetBusinessConf()
  221. if e != nil {
  222. br.Msg = "获取失败"
  223. br.ErrMsg = "获取免责声明失败, Err: " + e.Error()
  224. return
  225. }
  226. /*
  227. date := strings.Replace(item.CreateTime, "-", "", -1)
  228. dateStr := date[4:9]
  229. var shareTitle string
  230. // 研报分享抬头
  231. if utils.BusinessCode == "E2023080700" || utils.BusinessCode == "E2023080900" || utils.BusinessCode == "E2023080901" {
  232. shareTitle = "【第" + strconv.Itoa(item.Stage) + "期|FICC】" + item.Title + "(" + dateStr + ")"
  233. } else {
  234. shareTitle = "【第" + strconv.Itoa(item.Stage) + "期】" + item.Title + "(" + dateStr + ")"
  235. }*/
  236. if v, ok := conf[models.BusinessConfH5ReportShareImg]; ok {
  237. resp.H5ReportShareImg = v
  238. }
  239. if v, ok := conf[models.BusinessConfH5ShareName]; ok {
  240. resp.H5ShareName = v
  241. }
  242. resp.H5ShareTitle = item.Title
  243. br.Ret = 200
  244. br.Success = true
  245. br.Msg = "获取成功"
  246. br.Data = resp
  247. }