ai_summary_classify.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. package ai_summary
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "time"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. )
  9. type AiSummaryClassify struct {
  10. AiSummaryClassifyId int `orm:"column(ai_summary_classify_id);pk" gorm:"primaryKey"` // ai纪要分类id
  11. ClassifyName string // 分类名称
  12. ParentId int // 父级id
  13. CreateTime time.Time // 创建时间
  14. ModifyTime time.Time // 修改时间
  15. SysUserId int // 创建人id,使用指针表示可为空
  16. SysUserRealName string // 创建人姓名
  17. Level int // 层级
  18. Sort int // 排序字段,越小越靠前,默认值:10
  19. RootId int // 顶级ID
  20. HasData int `description:"是否含有指标数据"`
  21. }
  22. func AddAiSummaryClassify(item *AiSummaryClassify) (lastId int64, err error) {
  23. o := global.DbMap[utils.DbNameMaster]
  24. err = o.Create(item).Error
  25. if err != nil {
  26. return
  27. }
  28. lastId = int64(item.AiSummaryClassifyId)
  29. return
  30. }
  31. type AiSummaryClassifyItems struct {
  32. AiSummaryClassifyId int
  33. Title string `description:"标题" json:"-"`
  34. ClassifyName string `description:"分类名称"`
  35. ParentId int `description:"父级id"`
  36. HasData int `description:"是否含有指标数据"`
  37. CreateTime time.Time `description:"创建时间"`
  38. ModifyTime time.Time `description:"修改时间"`
  39. SysUserId int `description:"创建人id"`
  40. SysUserRealName string `description:"创建人姓名"`
  41. Level int `description:"层级"`
  42. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  43. AiSummaryId int `description:"纪要id"`
  44. UniqueCode string `description:"唯一编码"`
  45. Children []*AiSummaryClassifyItems `gorm:"-"`
  46. }
  47. type AiSummaryClassifyListResp struct {
  48. AllNodes []*AiSummaryClassifyItems
  49. }
  50. // GetAiSummaryClassifyByParentId
  51. func GetAiSummaryClassifyByParentId(parentId int) (items []*AiSummaryClassifyItems, err error) {
  52. o := global.DbMap[utils.DbNameMaster]
  53. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc`
  54. err = o.Raw(sql, parentId).Find(&items).Error
  55. return
  56. }
  57. // GetAiSummaryInfoByAdminId 获取所有我创建的纪要,用于分类展示
  58. func GetAiSummaryInfoByAdminId(adminId int) (items []*AiSummaryClassifyItems, err error) {
  59. o := global.DbMap[utils.DbNameMaster]
  60. sql := ` SELECT
  61. a.*,
  62. b.ai_summary_classify_id,
  63. b.classify_name
  64. FROM
  65. ai_summary AS a
  66. JOIN ai_summary_classify AS b ON a.classify_id = b.ai_summary_classify_id
  67. WHERE
  68. a.sys_user_id = ?
  69. ORDER BY
  70. a.sort ASC,
  71. a.create_time ASC `
  72. err = o.Raw(sql, adminId).Find(&items).Error
  73. return
  74. }
  75. // GetAiSummaryClassifyAndInfoByParentId
  76. func GetAiSummaryClassifyAndInfoByParentId(parentId int) (items []*AiSummaryClassifyItems, err error) {
  77. o := global.DbMap[utils.DbNameMaster]
  78. sql := ` SELECT
  79. 0 AS ai_summary_id,
  80. ai_summary_classify_id,
  81. classify_name,
  82. parent_id,
  83. create_time,
  84. modify_time,
  85. sys_user_id,
  86. sys_user_real_name AS sys_user_real_name,
  87. sort,
  88. level
  89. FROM
  90. ai_summary_classify
  91. WHERE
  92. parent_id = ? UNION ALL
  93. SELECT
  94. ai_summary_id,
  95. classify_id as ai_summary_classify_id,
  96. title AS classify_name,
  97. 0 AS parent_id,
  98. create_time,
  99. modify_time,
  100. sys_user_id,
  101. sys_user_real_name,
  102. sort,
  103. 0 AS level
  104. FROM
  105. ai_summary
  106. WHERE
  107. classify_id = ?
  108. ORDER BY
  109. sort ASC,
  110. ai_summary_classify_id ASC`
  111. err = o.Raw(sql, parentId, parentId).Find(&items).Error
  112. return
  113. }
  114. type AddAiSummaryClassifyReq struct {
  115. ClassifyName string `description:"分类名称"`
  116. ParentId int `description:"父级id,第一级传0"`
  117. Level int `description:"层级,第一级传0,其余传上一级的层级"`
  118. }
  119. func GetAiSummaryClassifyCount(classifyName string, parentId int) (count int, err error) {
  120. o := global.DbMap[utils.DbNameMaster]
  121. sql := `SELECT COUNT(1) AS count FROM ai_summary_classify WHERE parent_id=? AND classify_name=? `
  122. err = o.Raw(sql, parentId, classifyName).Scan(&count).Error
  123. return
  124. }
  125. // GetAiSummaryClassifyMaxSort 获取ai纪要下最大的排序数
  126. func GetAiSummaryClassifyMaxSort(parentId int) (sort int, err error) {
  127. o := global.DbMap[utils.DbNameMaster]
  128. sql := `SELECT Max(sort) AS sort FROM ai_summary_classify WHERE parent_id=? `
  129. err = o.Raw(sql, parentId).Scan(&sort).Error
  130. return
  131. }
  132. type EditAiSummaryClassifyReq struct {
  133. ClassifyName string `description:"分类名称"`
  134. AiSummaryClassifyId int `description:"分类id"`
  135. }
  136. func EditSandboxClassify(classifyId int, classifyName string) (err error) {
  137. o := global.DbMap[utils.DbNameMaster]
  138. sql := `UPDATE ai_summary_classify SET classify_name=?, modify_time=NOW() WHERE ai_summary_classify_id=? `
  139. err = o.Exec(sql, classifyName, classifyId).Error
  140. return
  141. }
  142. type AiSummaryClassifyDeleteCheckReq struct {
  143. AiSummaryClassifyId int `description:"分类id"`
  144. }
  145. func GetAiSummaryInfoCountByClassifyId(classifyId int) (count int, err error) {
  146. o := global.DbMap[utils.DbNameMaster]
  147. sql := ` SELECT COUNT(1) AS count FROM ai_summary AS a
  148. WHERE a.classify_id IN(
  149. SELECT t.ai_summary_classify_id FROM
  150. (
  151. SELECT rd.*
  152. FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  153. (SELECT @pid := ?) pd
  154. WHERE FIND_IN_SET(parent_id, @pid) > 0
  155. AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  156. UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  157. )AS t
  158. ) `
  159. err = o.Raw(sql, classifyId).Scan(&count).Error
  160. return
  161. }
  162. type DeleteAiSummaryClassifyReq struct {
  163. AiSummaryClassifyId int `description:"分类id"`
  164. AiSummaryId int `description:"纪要id"`
  165. }
  166. func DeleteAiSummaryClassify(classifyId int) (err error) {
  167. o := global.DbMap[utils.DbNameMaster]
  168. sql := ` DELETE FROM ai_summary_classify
  169. WHERE ai_summary_classify_id IN(
  170. SELECT t.ai_summary_classify_id FROM
  171. (
  172. SELECT rd.*
  173. FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  174. (SELECT @pid := ?) pd
  175. WHERE FIND_IN_SET(parent_id, @pid) > 0
  176. AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  177. UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  178. )AS t
  179. ) `
  180. err = o.Exec(sql, classifyId).Error
  181. return
  182. }
  183. // MoveAiSummaryClassifyReq 移动纪要分类请求参数
  184. type MoveAiSummaryClassifyReq struct {
  185. AiSummaryClassifyId int `description:"分类id"`
  186. AiSummaryId int `description:"纪要ID"`
  187. ParentClassifyId int `description:"父级分类id 移动纪要时为目标分类id"`
  188. PrevId int `description:"上一个兄弟节点分类id"`
  189. NextId int `description:"下一个兄弟节点分类id"`
  190. PrevType int `description:"上一个兄弟节点类型 1分类 2纪要 "`
  191. NextType int `description:"上一个兄弟节点类型 1分类 2纪要 "`
  192. }
  193. func GetAiSummaryClassifyById(classifyId int) (item *AiSummaryClassify, err error) {
  194. o := global.DbMap[utils.DbNameMaster]
  195. sql := `SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  196. err = o.Raw(sql, classifyId).First(&item).Error
  197. return
  198. }
  199. func GetAiSummaryClassifyCountById(classifyId int) (count int, err error) {
  200. o := global.DbMap[utils.DbNameMaster]
  201. sql := `SELECT count(1) AS count FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  202. err = o.Raw(sql, classifyId).Scan(&count).Error
  203. return
  204. }
  205. // Update 更新沙盘分类基础信息
  206. func (aiSummaryClassify *AiSummaryClassify) Update(cols []string) (err error) {
  207. o := global.DbMap[utils.DbNameMaster]
  208. err = o.Select(cols).Updates(aiSummaryClassify).Error
  209. return
  210. }
  211. // GetFirstAiSummaryClassifyByParentId 获取当前父级沙盘分类下的排序第一条的数据
  212. func GetFirstAiSummaryClassifyByParentId(parentId int) (item *AiSummaryClassify, err error) {
  213. o := global.DbMap[utils.DbNameMaster]
  214. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc limit 1`
  215. err = o.Raw(sql, parentId).First(&item).Error
  216. return
  217. }
  218. // UpdateSandboxClassifySortByParentId 根据沙盘父类id更新排序
  219. func UpdateAiSummaryClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  220. o := global.DbMap[utils.DbNameMaster]
  221. sql := ` update ai_summary_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  222. if classifyId > 0 {
  223. sql += ` or ( ai_summary_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  224. }
  225. err = o.Exec(sql, parentId, nowSort).Error
  226. return
  227. }
  228. // 获取所有子级分类id
  229. func GetAiSummaryClassifySubcategories(classifyId int) (Ids string, err error) {
  230. o := global.DbMap[utils.DbNameMaster]
  231. sql := `SELECT GROUP_CONCAT(ai_summary_classify_id) AS ids
  232. FROM (
  233. SELECT @pv := ? AS ai_summary_classify_id
  234. UNION ALL
  235. SELECT sc.ai_summary_classify_id
  236. FROM ai_summary_classify sc
  237. JOIN (SELECT @pv := ?) initial
  238. WHERE sc.parent_id = @pv
  239. ) subcategories; `
  240. err = o.Raw(sql, classifyId, classifyId).Scan(&Ids).Error
  241. return
  242. }
  243. func GetAiSummaryClassify(aiSummaryClassify int) (aiSummaryClassifyIds string, err error) {
  244. o := global.DbMap[utils.DbNameMaster]
  245. sql := `SELECT GROUP_CONCAT(t.ai_summary_classify_id) AS ai_summary_classify_id FROM (
  246. SELECT a.ai_summary_classify_id FROM ai_summary_classify AS a
  247. WHERE a.ai_summary_classify_id=?
  248. UNION ALL
  249. SELECT a.ai_summary_classify_id FROM ai_summary_classify AS a
  250. WHERE a.parent_id=? UNION ALL
  251. SELECT
  252. ai_summary_classify_id
  253. FROM
  254. ai_summary_classify
  255. WHERE
  256. parent_id IN ( SELECT ai_summary_classify_id FROM ai_summary_classify WHERE parent_id = ? )
  257. )AS t`
  258. err = o.Raw(sql, aiSummaryClassify, aiSummaryClassify, aiSummaryClassify).Scan(&aiSummaryClassifyIds).Error
  259. return
  260. }
  261. func GetAiSummaryAllParentByClassifyId(aiSummaryClassifyId int) (ids string, err error) {
  262. o := global.DbMap[utils.DbNameMaster]
  263. sql := `SELECT
  264. GROUP_CONCAT(DISTINCT m.ai_summary_classify_id ORDER BY m.level) AS ids
  265. FROM
  266. (
  267. SELECT
  268. @id AS _id,(
  269. SELECT
  270. @id := parent_id
  271. FROM
  272. ai_summary_classify
  273. WHERE
  274. ai_summary_classify_id = _id
  275. )
  276. FROM
  277. (
  278. SELECT
  279. @id :=(
  280. SELECT
  281. parent_id
  282. FROM
  283. ai_summary_classify
  284. WHERE
  285. ai_summary_classify_id = ?
  286. )) vm,
  287. ai_summary_classify m
  288. WHERE
  289. @id IS NOT NULL
  290. ) vm
  291. INNER JOIN ai_summary_classify m
  292. WHERE
  293. ai_summary_classify_id = vm._id `
  294. err = o.Raw(sql, aiSummaryClassifyId).Scan(&ids).Error
  295. return
  296. }
  297. type AiSummaryListResp struct {
  298. Paging *paging.PagingItem
  299. List []*AiSummaryItems
  300. }
  301. // GetAiSummaryClassifyAll
  302. func GetAiSummaryClassifyAll() (items []*AiSummaryClassifyItems, err error) {
  303. o := global.DbMap[utils.DbNameMaster]
  304. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id<>0 order by sort asc,ai_summary_classify_id asc`
  305. err = o.Raw(sql).Find(&items).Error
  306. return
  307. }
  308. func GetAiSummaryClassifyAllIncludeParent() (items []*AiSummaryClassifyItems, err error) {
  309. o := global.DbMap[utils.DbNameMaster]
  310. sql := ` SELECT * FROM ai_summary_classify order by sort asc,ai_summary_classify_id asc`
  311. err = o.Raw(sql).Find(&items).Error
  312. return
  313. }