ai_summary.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package ai_summary
  2. import (
  3. "errors"
  4. "eta/eta_api/models/ai_summary"
  5. "eta/eta_api/models/system"
  6. "eta/eta_api/utils"
  7. )
  8. // GetAiSummaryClassifyListForMe 获取我创建的纪要
  9. func GetAiSummaryClassifyListForMe(adminInfo system.Admin, resp *ai_summary.AiSummaryClassifyListResp, ai_summaryClassifyId int) (errMsg string, err error) {
  10. rootList, err := ai_summary.GetAiSummaryClassifyByParentId(ai_summaryClassifyId)
  11. if err != nil && err.Error() != utils.ErrNoRow() {
  12. errMsg = "获取失败"
  13. return
  14. }
  15. classifyAll, err := ai_summary.GetAiSummaryClassifyByParentId(ai_summaryClassifyId)
  16. if err != nil && err.Error() != utils.ErrNoRow() {
  17. errMsg = "获取失败"
  18. return
  19. }
  20. ai_summaryAll, err := ai_summary.GetAiSummaryInfoByAdminId(adminInfo.AdminId)
  21. if err != nil && err.Error() != utils.ErrNoRow() {
  22. errMsg = "获取失败"
  23. return
  24. }
  25. sandListMap := make(map[int][]*ai_summary.AiSummaryClassifyItems)
  26. for _, v := range ai_summaryAll {
  27. if _, ok := sandListMap[v.AiSummaryClassifyId]; !ok {
  28. list := make([]*ai_summary.AiSummaryClassifyItems, 0)
  29. list = append(list, v)
  30. sandListMap[v.AiSummaryClassifyId] = list
  31. } else {
  32. sandListMap[v.AiSummaryClassifyId] = append(sandListMap[v.AiSummaryClassifyId], v)
  33. }
  34. }
  35. nodeAll := make([]*ai_summary.AiSummaryClassifyItems, 0)
  36. for k := range rootList {
  37. rootNode := rootList[k]
  38. AiSummaryClassifyItemsMakeTree(&adminInfo, classifyAll, rootNode)
  39. nodeAll = append(nodeAll, rootNode)
  40. }
  41. newAll := AiSummaryItemsMakeTree(nodeAll, sandListMap, ai_summaryClassifyId)
  42. resp.AllNodes = newAll
  43. return
  44. }
  45. func aiSummaryClassifyHaveChild(allNode []*ai_summary.AiSummaryClassifyItems, node *ai_summary.AiSummaryClassifyItems) (childs []*ai_summary.AiSummaryClassifyItems, yes bool) {
  46. for _, v := range allNode {
  47. if v.ParentId == node.AiSummaryClassifyId {
  48. childs = append(childs, v)
  49. }
  50. }
  51. if len(childs) > 0 {
  52. yes = true
  53. }
  54. return
  55. }
  56. func AiSummaryClassifyItemsMakeTree(sysUser *system.Admin, allNode []*ai_summary.AiSummaryClassifyItems, node *ai_summary.AiSummaryClassifyItems) {
  57. childs, _ := aiSummaryClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回
  58. if len(childs) > 0 {
  59. node.Children = append(node.Children, childs[0:]...) //添加子节点
  60. for _, v := range childs { //查询子节点的子节点,并添加到子节点
  61. _, has := aiSummaryClassifyHaveChild(allNode, v)
  62. if has {
  63. AiSummaryClassifyItemsMakeTree(sysUser, allNode, v) //递归添加节点
  64. } else {
  65. childrenArr := make([]*ai_summary.AiSummaryClassifyItems, 0)
  66. v.Children = childrenArr
  67. }
  68. }
  69. } else {
  70. childrenArr := make([]*ai_summary.AiSummaryClassifyItems, 0)
  71. node.Children = childrenArr
  72. }
  73. }
  74. func AiSummaryItemsMakeTree(allNode []*ai_summary.AiSummaryClassifyItems, sandListMap map[int][]*ai_summary.AiSummaryClassifyItems, sandboxClassifyId int) (nodeAll []*ai_summary.AiSummaryClassifyItems) {
  75. for k := range allNode {
  76. if len(allNode[k].Children) > 0 {
  77. AiSummaryItemsMakeTree(allNode[k].Children, sandListMap, sandboxClassifyId)
  78. allNode = append(allNode, sandListMap[allNode[k].ParentId]...)
  79. nodeAll = allNode
  80. } else if k == len(allNode)-1 {
  81. allNode = append(allNode, sandListMap[allNode[k].ParentId]...)
  82. nodeAll = allNode
  83. }
  84. }
  85. if len(allNode) == 0 {
  86. nodeAll = append(nodeAll, sandListMap[sandboxClassifyId]...)
  87. }
  88. return
  89. }
  90. func AiSummaryClassifyItemsMakeTreeV2(sysUser *system.Admin, allNode []*ai_summary.AiSummaryClassifyItems, node *ai_summary.AiSummaryClassifyItems) {
  91. childs, _ := aiSummaryClassifyHaveChildV2(allNode, node) //判断节点是否有子节点并返回
  92. if len(childs) > 0 {
  93. node.Children = append(node.Children, childs[0:]...) //添加子节点
  94. for _, v := range childs { //查询子节点的子节点,并添加到子节点
  95. _, has := aiSummaryClassifyHaveChildV2(allNode, v)
  96. if has {
  97. AiSummaryClassifyItemsMakeTreeV2(sysUser, allNode, v) //递归添加节点
  98. } else {
  99. //childrenArr := make([]*ai_summary.AiSummaryClassifyItems, 0)
  100. //v.Children = childrenArr
  101. }
  102. }
  103. } else {
  104. //childrenArr := make([]*ai_summary.AiSummaryClassifyItems, 0)
  105. //node.Children = childrenArr
  106. }
  107. }
  108. func aiSummaryClassifyHaveChildV2(allNode []*ai_summary.AiSummaryClassifyItems, node *ai_summary.AiSummaryClassifyItems) (childs []*ai_summary.AiSummaryClassifyItems, yes bool) {
  109. for _, v := range allNode {
  110. if v.ParentId == node.AiSummaryClassifyId && node.AiSummaryId == 0 {
  111. childs = append(childs, v)
  112. }
  113. }
  114. if len(childs) > 0 {
  115. yes = true
  116. }
  117. return
  118. }
  119. // SharePrompt
  120. func SharePrompt(promptId int, adminId int) (err error) {
  121. //判断当前登录者是否有共享的权限
  122. prompt, err := ai_summary.GetAiPromptById(promptId)
  123. if err != nil {
  124. if err.Error() == utils.ErrNoRow() {
  125. err = errors.New("当前目录下的提示词不存在")
  126. return
  127. }
  128. err = errors.New("目录下的提示词查询出错:" + err.Error())
  129. return
  130. }
  131. if prompt.SysAdminId != adminId {
  132. err = errors.New("该提示词不是本人创建")
  133. return
  134. }
  135. //判断当前的共享状态
  136. if prompt.IsShare > 0 {
  137. prompt.IsShare = 0
  138. err = prompt.Update([]string{"IsShare"})
  139. if err != nil {
  140. err = errors.New(err.Error())
  141. return
  142. }
  143. } else {
  144. prompt.IsShare = 1
  145. err = prompt.Update([]string{"IsShare"})
  146. if err != nil {
  147. err = errors.New(err.Error())
  148. return
  149. }
  150. }
  151. return
  152. }