classify.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package report
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_yb/global"
  6. "hongze/hongze_yb/models/response"
  7. "hongze/hongze_yb/models/tables/chart_permission_search_key_word_mapping"
  8. "hongze/hongze_yb/models/tables/rddp/classify"
  9. "hongze/hongze_yb/models/tables/rddp/report"
  10. "hongze/hongze_yb/services/company"
  11. "hongze/hongze_yb/services/user"
  12. "hongze/hongze_yb/utils"
  13. "log"
  14. )
  15. // GetClassListByClassifyName 查询二级分类列表
  16. func GetClassListByClassifyName(user user.UserInfo, classifyName string) (list []*response.ClassifyListItem, err error) {
  17. var errMsg string
  18. defer func() {
  19. if err != nil {
  20. global.LOG.Critical(fmt.Sprintf("GetClassListByClassifyName: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
  21. }
  22. }()
  23. classifyInfo, err := classify.GetByClassifyName(classifyName)
  24. if err != nil {
  25. errMsg = err.Error()
  26. err = errors.New("分类查询出错")
  27. return
  28. }
  29. if classifyInfo.Id == 0 {
  30. err = errors.New("分类不存在")
  31. return
  32. }
  33. if classifyInfo.ParentId != 0 {
  34. err = errors.New("不允许查询二级分类")
  35. return
  36. }
  37. classifyList, err := classify.GetListByPid(classifyInfo.Id)
  38. if err != nil {
  39. errMsg = err.Error()
  40. err = errors.New("二级分类查询出错")
  41. return
  42. }
  43. //查询二级分类中最新的报告ID
  44. reportList, err := report.GetLatestReportsByClassifyNameFirst(classifyName)
  45. if err != nil && err != utils.ErrNoRow {
  46. errMsg = err.Error()
  47. err = errors.New("报告查询出错")
  48. return
  49. }
  50. reportMap := make(map[int]*report.Report)
  51. for _, v := range reportList {
  52. reportMap[v.ClassifyIdSecond] = v
  53. }
  54. for _, item := range classifyList {
  55. temp := new(response.ClassifyListItem)
  56. temp.ClassifySecondId = item.Id
  57. temp.ParentId = item.ParentId
  58. temp.AuthorDescript = item.AuthorDescript
  59. temp.ReportAuthor = item.ReportAuthor
  60. temp.HomeImgUrl = item.HomeImgUrl
  61. temp.ClassifySecondName = item.ClassifyName
  62. if _, ok := reportMap[item.Id]; ok {
  63. temp.Stage = reportMap[item.Id].Stage
  64. }
  65. if classifyName == "权益研报" {
  66. temp.ProductName = "权益"
  67. } else {
  68. temp.ProductName = "FICC"
  69. }
  70. list = append(list, temp)
  71. }
  72. return
  73. }
  74. func GetClassifyDetail(user user.UserInfo, classifySecondName string) (detail *response.ClassifyDetail, err error) {
  75. var errMsg string
  76. defer func() {
  77. if err != nil {
  78. global.LOG.Critical(fmt.Sprintf("GetClassifyDetail: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
  79. }
  80. }()
  81. classifyInfo, err := classify.GetByClassifyName(classifySecondName)
  82. if err != nil {
  83. errMsg = err.Error()
  84. err = errors.New("分类查询出错")
  85. return
  86. }
  87. if classifyInfo.Id == 0 {
  88. err = errors.New("分类不存在")
  89. return
  90. }
  91. if classifyInfo.ParentId == 0 {
  92. err = errors.New("只允许查询二级分类")
  93. return
  94. }
  95. //查询权限, 查询当前分类下的最新的报告,
  96. permissionIds, err := chart_permission_search_key_word_mapping.GetChartPermissionIdsByKeyWord(classifyInfo.ClassifyName)
  97. log.Println(permissionIds)
  98. if err != nil {
  99. errMsg = err.Error()
  100. err = errors.New("分类权限查询出错")
  101. return
  102. }
  103. authOk, permissionCheckInfo, err := company.GetCheckPermission(user.CompanyID, int(user.UserID), permissionIds)
  104. if err != nil && err != utils.ErrNoRow {
  105. errMsg = err.Error()
  106. err = errors.New("权限查询出错")
  107. return
  108. }
  109. detail = new(response.ClassifyDetail)
  110. detail.ClassifySecondId = classifyInfo.Id
  111. detail.ParentId = classifyInfo.ParentId
  112. detail.AuthorDescript = classifyInfo.AuthorDescript
  113. detail.ReportAuthor = classifyInfo.ReportAuthor
  114. detail.AvatarImgUrl = classifyInfo.AvatarImgUrl
  115. detail.ClassifySecondName = classifyInfo.ClassifyName
  116. detail.Abstract = classifyInfo.Abstract
  117. detail.Descript = classifyInfo.Descript
  118. detail.IsVip = classifyInfo.IsVip
  119. detail.PermissionCheck = &permissionCheckInfo
  120. detail.AuthOk = authOk
  121. return
  122. }
  123. // GetClassifyReportList 查询二级分类下的报告列表
  124. func GetClassifyReportList(user user.UserInfo, classifySecondName string, page, limit int) (list *response.ClassReportList, err error) {
  125. var errMsg string
  126. defer func() {
  127. if err != nil {
  128. global.LOG.Critical(fmt.Sprintf("GetClassifyDetail: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
  129. }
  130. }()
  131. classifyInfo, err := classify.GetByClassifyName(classifySecondName)
  132. if err != nil {
  133. errMsg = err.Error()
  134. err = errors.New("分类查询出错")
  135. return
  136. }
  137. if classifyInfo.Id == 0 {
  138. err = errors.New("分类不存在")
  139. return
  140. }
  141. if classifyInfo.ParentId == 0 {
  142. err = errors.New("只允许查询二级分类")
  143. return
  144. }
  145. //查询权限, 查询当前分类下的最新的报告,
  146. permissionIds, err := chart_permission_search_key_word_mapping.GetChartPermissionIdsByKeyWord(classifyInfo.ClassifyName)
  147. log.Println(permissionIds)
  148. if err != nil {
  149. errMsg = err.Error()
  150. err = errors.New("分类权限查询出错")
  151. return
  152. }
  153. authOk, permissionCheckInfo, err := company.GetCheckPermission(user.CompanyID, int(user.UserID), permissionIds)
  154. if err != nil && err != utils.ErrNoRow {
  155. errMsg = err.Error()
  156. err = errors.New("权限查询出错")
  157. return
  158. }
  159. //查询 report列表
  160. offset := (page - 1) * limit
  161. reportList, err := report.GetListByClassSecond(classifySecondName, offset, limit)
  162. if err != nil {
  163. errMsg = err.Error()
  164. err = errors.New("查询报告列表出错")
  165. return
  166. }
  167. var newList []*response.ClassReportListItem
  168. if len(reportList) > 0 {
  169. for _, reportInfo := range reportList {
  170. reportItem := new(response.ClassReportListItem)
  171. reportItem.ReportId = reportInfo.Id
  172. reportItem.Title = reportInfo.Title
  173. reportItem.PublishTime = reportInfo.PublishTime
  174. reportItem.ClassifyNameFirst = reportInfo.ClassifyNameFirst
  175. reportItem.ClassifyNameSecond = reportInfo.ClassifyNameSecond
  176. reportItem.Stage = reportInfo.Stage
  177. reportItem.Abstract = reportInfo.Abstract
  178. reportItem.Author = reportInfo.Author
  179. if authOk {
  180. reportItem.VideoUrl = reportInfo.VideoUrl
  181. }
  182. newList = append(newList, reportItem)
  183. }
  184. }
  185. list = new(response.ClassReportList)
  186. list.List = newList
  187. list.PermissionCheck = &permissionCheckInfo
  188. list.AuthOk = authOk
  189. return
  190. }