help_doc.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package controller
  2. import (
  3. "encoding/json"
  4. "github.com/gin-gonic/gin"
  5. "github.com/go-playground/validator/v10"
  6. "hongze/hz_eta_docs_api/controller/resp"
  7. "hongze/hz_eta_docs_api/global"
  8. "hongze/hz_eta_docs_api/models/crm"
  9. "hongze/hz_eta_docs_api/models/request"
  10. "hongze/hz_eta_docs_api/services"
  11. "html"
  12. )
  13. // HelpDocController 帮助文档
  14. type HelpDocController struct{}
  15. // ClassifyList
  16. // @Description 帮助文档分类列表
  17. // @Success 200 {string} string "获取成功"
  18. // @Router /help_doc/classify/list [get]
  19. func (a *HelpDocController) ClassifyList(c *gin.Context) {
  20. var req request.HelpDocClassifyListReq
  21. err := c.Bind(&req)
  22. if err != nil {
  23. errs, ok := err.(validator.ValidationErrors)
  24. if !ok {
  25. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  26. return
  27. }
  28. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  29. return
  30. }
  31. etaOb := new(crm.EtaBusiness)
  32. var pars []interface{}
  33. pars = append(pars, req.BusCode)
  34. etaBusiness, e := etaOb.GetItemByCondition("code_encrypt=?", pars, "")
  35. if e != nil {
  36. resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  37. return
  38. }
  39. nodeAll := make([]*crm.HelpDocClassifyItems, 0)
  40. if etaBusiness != nil{
  41. // 获取列表数据
  42. docOb := new(crm.HelpDocClassify)
  43. var pars []interface{}
  44. pars = append(pars, etaBusiness.EtaBusinessId)
  45. rootList, e := docOb.GetItemsByCondition("parent_id=0 AND FIND_IN_SET(?,visible_business_ids) > 0 ", pars, "sort asc,classify_id asc")
  46. if e != nil {
  47. resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  48. return
  49. }
  50. classifyAll, e := docOb.GetItemsByCondition("FIND_IN_SET(?,visible_business_ids) > 0", pars, "sort asc,classify_id asc")
  51. if e != nil {
  52. resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  53. return
  54. }
  55. classifies := make([]*crm.HelpDocClassifyItems, 0)
  56. for _, v := range classifyAll {
  57. child := make([]*crm.HelpDocClassifyItems, 0)
  58. item := crm.HelpDocClassifyItems{
  59. ClassifyId: v.ClassifyId,
  60. ClassifyName: v.ClassifyName,
  61. ParentId: v.ParentId,
  62. Level: v.Level,
  63. Sort: v.Sort,
  64. SysUserId: v.SysUserId,
  65. SysUserRealName: v.SysUserRealName,
  66. VisibleBusinessIds: v.VisibleBusinessIds,
  67. Children: child,
  68. }
  69. classifies = append(classifies, &item)
  70. }
  71. roots := make([]*crm.HelpDocClassifyItems, 0)
  72. for _, v := range rootList {
  73. child := make([]*crm.HelpDocClassifyItems, 0)
  74. item := crm.HelpDocClassifyItems{
  75. ClassifyId: v.ClassifyId,
  76. ClassifyName: v.ClassifyName,
  77. ParentId: v.ParentId,
  78. Level: v.Level,
  79. Sort: v.Sort,
  80. SysUserId: v.SysUserId,
  81. SysUserRealName: v.SysUserRealName,
  82. VisibleBusinessIds: v.VisibleBusinessIds,
  83. Children: child,
  84. }
  85. roots = append(roots, &item)
  86. }
  87. for k := range roots {
  88. rootNode := roots[k]
  89. services.HelpDocClassifyItemsMakeTree(classifies, rootNode)
  90. nodeAll = append(nodeAll, rootNode)
  91. }
  92. }
  93. resp.OkData("获取成功", nodeAll, c)
  94. }
  95. // Detail
  96. // @Description 文章详情
  97. // @Success 200 {string} string "获取成功"
  98. // @Router /help_doc/detail [get]
  99. func (a *HelpDocController) Detail(c *gin.Context) {
  100. var req request.HelpDocClassifyDetailReq
  101. err := c.Bind(&req)
  102. if err != nil {
  103. errs, ok := err.(validator.ValidationErrors)
  104. if !ok {
  105. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  106. return
  107. }
  108. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  109. return
  110. }
  111. // 获取列表数据
  112. docOb := new(crm.HelpDoc)
  113. var pars []interface{}
  114. pars = append(pars, req.ClassifyId)
  115. item, e := docOb.GetItemByCondition("classify_id=?", pars, "")
  116. if e != nil {
  117. resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  118. return
  119. }
  120. item.Content = html.UnescapeString(item.Content)
  121. var anchor []crm.AnchorList
  122. if item.Anchor != "" {
  123. err = json.Unmarshal([]byte(item.Anchor), &anchor)
  124. if err != nil {
  125. resp.FailMsg("解析失败", "解析锚点失败, Err: "+e.Error(), c)
  126. return
  127. }
  128. }
  129. var recommend []crm.RecommendList
  130. if item.Recommend != "" {
  131. err = json.Unmarshal([]byte(item.Recommend), &recommend)
  132. if err != nil {
  133. resp.FailMsg("解析失败", "解析推荐链接失败, Err: "+e.Error(), c)
  134. return
  135. }
  136. }
  137. respItem := crm.HelpDocResp{
  138. Id: item.Id,
  139. ClassifyId: item.ClassifyId,
  140. Title: item.Title,
  141. Author: item.Author,
  142. CreateTime: item.CreateTime,
  143. ModifyTime: item.ModifyTime,
  144. Status: item.Status,
  145. PublishTime: item.PublishTime,
  146. Content: item.Content,
  147. AdminId: item.AdminId,
  148. AdminRealName: item.AdminRealName,
  149. Anchor: anchor,
  150. Recommend: recommend,
  151. }
  152. resp.OkData("获取成功", respItem, c)
  153. }