help_doc.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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, "sort asc,classify_id asc")
  35. //if e != nil {
  36. // resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  37. // return
  38. //}
  39. // 获取列表数据
  40. docOb := new(crm.HelpDocClassify)
  41. rootList, e := docOb.GetItemsByCondition("parent_id=0", make([]interface{}, 0), "sort asc,classify_id asc")
  42. if e != nil {
  43. resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  44. return
  45. }
  46. classifyAll, e := docOb.GetItemsByCondition("", make([]interface{}, 0), "sort asc,classify_id asc")
  47. if e != nil {
  48. resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  49. return
  50. }
  51. classifies := make([]*crm.HelpDocClassifyItems, 0)
  52. for _, v := range classifyAll {
  53. child := make([]*crm.HelpDocClassifyItems, 0)
  54. item := crm.HelpDocClassifyItems{
  55. ClassifyId: v.ClassifyId,
  56. ClassifyName: v.ClassifyName,
  57. ParentId: v.ParentId,
  58. Level: v.Level,
  59. Sort: v.Sort,
  60. SysUserId: v.SysUserId,
  61. SysUserRealName: v.SysUserRealName,
  62. VisibleBusinessIds: v.VisibleBusinessIds,
  63. Children: child,
  64. }
  65. classifies = append(classifies, &item)
  66. }
  67. roots := make([]*crm.HelpDocClassifyItems, 0)
  68. for _, v := range rootList {
  69. child := make([]*crm.HelpDocClassifyItems, 0)
  70. item := crm.HelpDocClassifyItems{
  71. ClassifyId: v.ClassifyId,
  72. ClassifyName: v.ClassifyName,
  73. ParentId: v.ParentId,
  74. Level: v.Level,
  75. Sort: v.Sort,
  76. SysUserId: v.SysUserId,
  77. SysUserRealName: v.SysUserRealName,
  78. VisibleBusinessIds: v.VisibleBusinessIds,
  79. Children: child,
  80. }
  81. roots = append(roots, &item)
  82. }
  83. nodeAll := make([]*crm.HelpDocClassifyItems, 0)
  84. for k := range roots {
  85. rootNode := roots[k]
  86. services.HelpDocClassifyItemsMakeTree(classifies, rootNode)
  87. nodeAll = append(nodeAll, rootNode)
  88. }
  89. resp.OkData("获取成功", nodeAll, c)
  90. }
  91. // Detail
  92. // @Description 文章详情
  93. // @Success 200 {string} string "获取成功"
  94. // @Router /help_doc/detail [get]
  95. func (a *HelpDocController) Detail(c *gin.Context) {
  96. var req request.HelpDocClassifyDetailReq
  97. err := c.Bind(&req)
  98. if err != nil {
  99. errs, ok := err.(validator.ValidationErrors)
  100. if !ok {
  101. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  102. return
  103. }
  104. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  105. return
  106. }
  107. // 获取列表数据
  108. docOb := new(crm.HelpDoc)
  109. var pars []interface{}
  110. pars = append(pars, req.ClassifyId)
  111. item, e := docOb.GetItemByCondition("classify_id=?", pars, "")
  112. if e != nil {
  113. resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
  114. return
  115. }
  116. item.Content = html.UnescapeString(item.Content)
  117. var anchor []crm.AnchorList
  118. if item.Anchor != "" {
  119. err = json.Unmarshal([]byte(item.Anchor), &anchor)
  120. if err != nil {
  121. resp.FailMsg("解析失败", "解析锚点失败, Err: "+e.Error(), c)
  122. return
  123. }
  124. }
  125. var recommend []crm.RecommendList
  126. if item.Recommend != "" {
  127. err = json.Unmarshal([]byte(item.Recommend), &recommend)
  128. if err != nil {
  129. resp.FailMsg("解析失败", "解析推荐链接失败, Err: "+e.Error(), c)
  130. return
  131. }
  132. }
  133. respItem := crm.HelpDocResp{
  134. Id: item.Id,
  135. ClassifyId: item.ClassifyId,
  136. Title: item.Title,
  137. Author: item.Author,
  138. CreateTime: item.CreateTime,
  139. ModifyTime: item.ModifyTime,
  140. Status: item.Status,
  141. PublishTime: item.PublishTime,
  142. Content: item.Content,
  143. AdminId: item.AdminId,
  144. AdminRealName: item.AdminRealName,
  145. Anchor: anchor,
  146. Recommend: recommend,
  147. }
  148. resp.OkData("获取成功", respItem, c)
  149. }