ai_summary_classify.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. package ai_summary
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "time"
  6. )
  7. type AiSummaryClassify struct {
  8. AiSummaryClassifyId int `orm:"column(ai_summary_classify_id);pk"` // ai纪要分类id
  9. ClassifyName string // 分类名称
  10. ParentId int // 父级id
  11. CreateTime time.Time // 创建时间
  12. ModifyTime time.Time // 修改时间
  13. SysUserId int // 创建人id,使用指针表示可为空
  14. SysUserRealName string // 创建人姓名
  15. Level int // 层级
  16. Sort int // 排序字段,越小越靠前,默认值:10
  17. RootId int // 顶级ID
  18. HasData int `description:"是否含有指标数据"`
  19. }
  20. func AddAiSummaryClassify(item *AiSummaryClassify) (lastId int64, err error) {
  21. o := orm.NewOrm()
  22. lastId, err = o.Insert(item)
  23. return
  24. }
  25. type AiSummaryClassifyItems struct {
  26. AiSummaryClassifyId int
  27. ClassifyName string `description:"分类名称"`
  28. ParentId int `description:"父级id"`
  29. HasData int `description:"是否含有指标数据"`
  30. CreateTime time.Time `description:"创建时间"`
  31. ModifyTime time.Time `description:"修改时间"`
  32. SysUserId int `description:"创建人id"`
  33. SysUserRealName string `description:"创建人姓名"`
  34. Level int `description:"层级"`
  35. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  36. AiSummaryId int `description:"纪要id"`
  37. Children []*AiSummaryClassifyItems
  38. }
  39. type AiSummaryClassifyListResp struct {
  40. AllNodes []*AiSummaryClassifyItems
  41. }
  42. // GetAiSummaryClassifyByParentId
  43. func GetAiSummaryClassifyByParentId(parentId int) (items []*AiSummaryClassifyItems, err error) {
  44. o := orm.NewOrm()
  45. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc`
  46. _, err = o.Raw(sql, parentId).QueryRows(&items)
  47. return
  48. }
  49. // GetAiSummaryInfoByAdminId 获取所有我创建的纪要,用于分类展示
  50. func GetAiSummaryInfoByAdminId(adminId int) (items []*AiSummaryClassifyItems, err error) {
  51. o := orm.NewOrm()
  52. sql := ` SELECT ai_summary_id,ai_summary_classify_id,name AS classify_name,
  53. sys_user_id,sys_user_real_name
  54. FROM ai_summary where sys_user_id = ? ORDER BY sort asc,create_time ASC `
  55. _, err = o.Raw(sql, adminId).QueryRows(&items)
  56. return
  57. }
  58. // GetAiSummaryClassifyAndInfoByParentId
  59. func GetAiSummaryClassifyAndInfoByParentId(parentId int) (items []*AiSummaryClassifyItems, err error) {
  60. o := orm.NewOrm()
  61. sql := ` SELECT
  62. 0 AS ai_summary_id,
  63. ai_summary_classify_id,
  64. classify_name,
  65. parent_id,
  66. create_time,
  67. modify_time,
  68. sys_user_id,
  69. sys_user_real_name AS sys_user_real_name,
  70. sort,
  71. level
  72. FROM
  73. ai_summary_classify
  74. WHERE
  75. parent_id = ? UNION ALL
  76. SELECT
  77. ai_summary_id,
  78. classify_id as ai_summary_classify_id,
  79. '' AS classify_name,
  80. 0 AS parent_id,
  81. create_time,
  82. modify_time,
  83. sys_user_id,
  84. sys_user_real_name,
  85. sort,
  86. 0 AS level
  87. FROM
  88. ai_summary
  89. WHERE
  90. classify_id = ?
  91. ORDER BY
  92. sort ASC,
  93. ai_summary_classify_id ASC`
  94. _, err = o.Raw(sql, parentId, parentId).QueryRows(&items)
  95. return
  96. }
  97. type AddAiSummaryClassifyReq struct {
  98. ClassifyName string `description:"分类名称"`
  99. ParentId int `description:"父级id,第一级传0"`
  100. Level int `description:"层级,第一级传0,其余传上一级的层级"`
  101. }
  102. func GetAiSummaryClassifyCount(classifyName string, parentId int) (count int, err error) {
  103. o := orm.NewOrm()
  104. sql := `SELECT COUNT(1) AS count FROM ai_summary_classify WHERE parent_id=? AND classify_name=? `
  105. err = o.Raw(sql, parentId, classifyName).QueryRow(&count)
  106. return
  107. }
  108. // GetAiSummaryClassifyMaxSort 获取ai纪要下最大的排序数
  109. func GetAiSummaryClassifyMaxSort(parentId int) (sort int, err error) {
  110. o := orm.NewOrm()
  111. sql := `SELECT Max(sort) AS sort FROM ai_summary_classify WHERE parent_id=? `
  112. err = o.Raw(sql, parentId).QueryRow(&sort)
  113. return
  114. }
  115. type EditAiSummaryClassifyReq struct {
  116. ClassifyName string `description:"分类名称"`
  117. AiSummaryClassifyId int `description:"分类id"`
  118. }
  119. func EditSandboxClassify(classifyId int, classifyName string) (err error) {
  120. o := orm.NewOrm()
  121. sql := `UPDATE ai_summary_classify SET classify_name=?, modify_time=NOW() WHERE ai_summary_classify_id=? `
  122. _, err = o.Raw(sql, classifyName, classifyId).Exec()
  123. return
  124. }
  125. type AiSummaryClassifyDeleteCheckReq struct {
  126. AiSummaryClassifyId int `description:"分类id"`
  127. }
  128. func GetAiSummaryInfoCountByClassifyId(classifyId int) (count int, err error) {
  129. o := orm.NewOrm()
  130. sql := ` SELECT COUNT(1) AS count FROM ai_summary AS a
  131. WHERE a.classify_id IN(
  132. SELECT t.ai_summary_classify_id FROM
  133. (
  134. SELECT rd.*
  135. FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  136. (SELECT @pid := ?) pd
  137. WHERE FIND_IN_SET(parent_id, @pid) > 0
  138. AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  139. UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  140. )AS t
  141. ) `
  142. err = o.Raw(sql, classifyId).QueryRow(&count)
  143. return
  144. }
  145. type DeleteAiSummaryClassifyReq struct {
  146. AiSummaryClassifyId int `description:"分类id"`
  147. AiSummaryId int `description:"纪要id"`
  148. }
  149. func DeleteAiSummaryClassify(classifyId int) (err error) {
  150. o := orm.NewOrm()
  151. sql := ` DELETE FROM ai_summary_classify
  152. WHERE ai_summary_classify_id IN(
  153. SELECT t.ai_summary_classify_id FROM
  154. (
  155. SELECT rd.*
  156. FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  157. (SELECT @pid := ?) pd
  158. WHERE FIND_IN_SET(parent_id, @pid) > 0
  159. AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  160. UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  161. )AS t
  162. ) `
  163. _, err = o.Raw(sql, classifyId).Exec()
  164. return
  165. }
  166. // MoveAiSummaryClassifyReq 移动纪要分类请求参数
  167. type MoveAiSummaryClassifyReq struct {
  168. AiSummaryClassifyId int `description:"分类id"`
  169. AiSummaryId int `description:"纪要ID"`
  170. ParentClassifyId int `description:"父级分类id 移动沙盘时为目标分类id"`
  171. PrevId int `description:"上一个兄弟节点分类id"`
  172. NextId int `description:"下一个兄弟节点分类id"`
  173. PrevType int `description:"上一个兄弟节点类型 1分类 2纪要 "`
  174. NextType int `description:"上一个兄弟节点类型 1分类 2纪要 "`
  175. }
  176. func GetAiSummaryClassifyById(classifyId int) (item *AiSummaryClassify, err error) {
  177. o := orm.NewOrm()
  178. sql := `SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  179. err = o.Raw(sql, classifyId).QueryRow(&item)
  180. return
  181. }
  182. func GetAiSummaryClassifyCountById(classifyId int) (count int, err error) {
  183. o := orm.NewOrm()
  184. sql := `SELECT count(1) AS count FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  185. err = o.Raw(sql, classifyId).QueryRow(&count)
  186. return
  187. }
  188. // Update 更新沙盘分类基础信息
  189. func (aiSummaryClassify *AiSummaryClassify) Update(cols []string) (err error) {
  190. o := orm.NewOrm()
  191. _, err = o.Update(aiSummaryClassify, cols...)
  192. return
  193. }
  194. // GetFirstAiSummaryClassifyByParentId 获取当前父级沙盘分类下的排序第一条的数据
  195. func GetFirstAiSummaryClassifyByParentId(parentId int) (item *AiSummaryClassify, err error) {
  196. o := orm.NewOrm()
  197. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc limit 1`
  198. err = o.Raw(sql, parentId).QueryRow(&item)
  199. return
  200. }
  201. // UpdateSandboxClassifySortByParentId 根据沙盘父类id更新排序
  202. func UpdateAiSummaryClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  203. o := orm.NewOrm()
  204. sql := ` update ai_summary_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  205. if classifyId > 0 {
  206. sql += ` or ( ai_summary_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  207. }
  208. _, err = o.Raw(sql, parentId, nowSort).Exec()
  209. return
  210. }
  211. // 获取所有子级分类id
  212. func GetAiSummaryClassifySubcategories(classifyId int) (Ids string, err error) {
  213. o := orm.NewOrm()
  214. sql := `SELECT GROUP_CONCAT(ai_summary_classify_id) AS ids
  215. FROM (
  216. SELECT @pv := ? AS ai_summary_classify_id
  217. UNION ALL
  218. SELECT sc.ai_summary_classify_id
  219. FROM ai_summary_classify sc
  220. JOIN (SELECT @pv := ?) initial
  221. WHERE sc.parent_id = @pv
  222. ) subcategories; `
  223. err = o.Raw(sql, classifyId, classifyId).QueryRow(&Ids)
  224. return
  225. }