ai_summary_classify.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. package ai_summary
  2. import (
  3. "eta_gn/eta_api/global"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "time"
  7. )
  8. type AiSummaryClassify struct {
  9. AiSummaryClassifyId int `gorm:"primaryKey;column:ai_summary_classify_id;type:int(11);not null"`
  10. ClassifyName string `gorm:"column:classify_name;type:varchar(255);not null;default:''"` // 分类名称
  11. ParentId int `gorm:"column:parent_id;type:int(11);not null;default:0"` // 父级id
  12. CreateTime time.Time `gorm:"column:create_time;type:datetime"` // 创建时间
  13. ModifyTime time.Time `gorm:"column:modify_time;type:datetime"` // 修改时间
  14. SysUserId int `gorm:"index:idx_sys_user_id;column:sys_user_id;type:int(11)"` // 创建人id
  15. SysUserRealName string `gorm:"column:sys_user_real_name;type:varchar(50)"` // 创建人姓名
  16. Level int `gorm:"column:level;type:int(11);default:0"` // 层级
  17. Sort int `gorm:"column:sort;type:int(9) unsigned;default:10"` // 排序字段,越小越靠前,默认值:10
  18. RootId int `gorm:"column:root_id;type:int(11);not null;default:0"` // 顶级ID
  19. HasData int `gorm:"column:has_data;type:tinyint(4);default:0"` // 是否存在指标数据:1有,2:无
  20. }
  21. func AddAiSummaryClassify(item *AiSummaryClassify) (lastId int64, err error) {
  22. //o := orm.NewOrm()
  23. //lastId, err = o.Insert(item)
  24. err = global.DEFAULT_DmSQL.Create(item).Error
  25. lastId = int64(item.AiSummaryClassifyId)
  26. return
  27. }
  28. type AiSummaryClassifyItems struct {
  29. AiSummaryClassifyId int `gorm:"primaryKey;column:ai_summary_classify_id;type:int(11);not null"`
  30. ClassifyName string `gorm:"column:classify_name;type:varchar(255);not null;default:''"` // 分类名称
  31. ParentId int `gorm:"column:parent_id;type:int(11);not null;default:0"` // 父级id
  32. CreateTime time.Time `gorm:"column:create_time;type:datetime"` // 创建时间
  33. ModifyTime time.Time `gorm:"column:modify_time;type:datetime"` // 修改时间
  34. SysUserId int `gorm:"index:idx_sys_user_id;column:sys_user_id;type:int(11)"` // 创建人id
  35. SysUserRealName string `gorm:"column:sys_user_real_name;type:varchar(50)"` // 创建人姓名
  36. Level int `gorm:"column:level;type:int(11);default:0"` // 层级
  37. Sort int `gorm:"column:sort;type:int(9) unsigned;default:10"` // 排序字段,越小越靠前,默认值:10
  38. RootId int `gorm:"column:root_id;type:int(11);not null;default:0"` // 顶级ID
  39. HasData int `gorm:"column:has_data;type:tinyint(4);default:0"` // 是否存在指标数据:1有,2:无
  40. AiSummaryId int `description:"纪要id" gorm:"ai_summary_id"`
  41. UniqueCode string `description:"唯一编码" gorm:"-"`
  42. Children []*AiSummaryClassifyItems `gorm:"-"`
  43. }
  44. type AiSummaryClassifyListResp struct {
  45. AllNodes []*AiSummaryClassifyItems
  46. }
  47. // GetAiSummaryClassifyByParentId
  48. func GetAiSummaryClassifyByParentId(parentId int) (items []*AiSummaryClassifyItems, err error) {
  49. //o := orm.NewOrm()
  50. //sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc`
  51. //_, err = o.Raw(sql, parentId).QueryRows(&items)
  52. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc`
  53. err = global.DEFAULT_DmSQL.Raw(sql, parentId).Find(&items).Error
  54. return
  55. }
  56. // GetAiSummaryInfoByAdminId 获取所有我创建的纪要,用于分类展示
  57. func GetAiSummaryInfoByAdminId(adminId int) (items []*AiSummaryClassifyItems, err error) {
  58. // o := orm.NewOrm()
  59. // sql := ` SELECT
  60. // a.*,
  61. // b.ai_summary_classify_id,
  62. // b.classify_name
  63. //FROM
  64. // ai_summary AS a
  65. // JOIN ai_summary_classify AS b ON a.classify_id = b.ai_summary_classify_id
  66. //WHERE
  67. // a.sys_user_id = ?
  68. //ORDER BY
  69. // a.sort ASC,
  70. // a.create_time ASC `
  71. // _, err = o.Raw(sql, adminId).QueryRows(&items)
  72. sql := ` SELECT
  73. a.*,
  74. b.ai_summary_classify_id,
  75. b.classify_name
  76. FROM
  77. ai_summary AS a
  78. JOIN ai_summary_classify AS b ON a.classify_id = b.ai_summary_classify_id
  79. WHERE
  80. a.sys_user_id = ?
  81. ORDER BY
  82. a.sort ASC,
  83. a.create_time ASC `
  84. err = global.DEFAULT_DmSQL.Raw(sql, adminId).Find(&items).Error
  85. return
  86. }
  87. // GetAiSummaryClassifyAndInfoByParentId
  88. func GetAiSummaryClassifyAndInfoByParentId(parentId int) (items []*AiSummaryClassifyItems, err error) {
  89. //o := orm.NewOrm()
  90. // sql := ` SELECT
  91. // 0 AS ai_summary_id,
  92. // ai_summary_classify_id,
  93. // classify_name,
  94. // parent_id,
  95. // create_time,
  96. // modify_time,
  97. // sys_user_id,
  98. // sys_user_real_name AS sys_user_real_name,
  99. // sort,
  100. // level
  101. //FROM
  102. // ai_summary_classify
  103. //WHERE
  104. // parent_id = ? UNION ALL
  105. //SELECT
  106. // ai_summary_id,
  107. // classify_id as ai_summary_classify_id,
  108. // title AS classify_name,
  109. // 0 AS parent_id,
  110. // create_time,
  111. // modify_time,
  112. // sys_user_id,
  113. // sys_user_real_name,
  114. // sort,
  115. // 0 AS level
  116. //FROM
  117. // ai_summary
  118. //WHERE
  119. // classify_id = ?
  120. //ORDER BY
  121. // sort ASC,
  122. // ai_summary_classify_id ASC`
  123. // _, err = o.Raw(sql, parentId, parentId).QueryRows(&items)
  124. sql := ` SELECT
  125. 0 AS ai_summary_id,
  126. ai_summary_classify_id,
  127. classify_name,
  128. parent_id,
  129. create_time,
  130. modify_time,
  131. sys_user_id,
  132. sys_user_real_name AS sys_user_real_name,
  133. sort,
  134. level
  135. FROM
  136. ai_summary_classify
  137. WHERE
  138. parent_id = ? UNION ALL
  139. SELECT
  140. ai_summary_id,
  141. classify_id as ai_summary_classify_id,
  142. title AS classify_name,
  143. 0 AS parent_id,
  144. create_time,
  145. modify_time,
  146. sys_user_id,
  147. sys_user_real_name,
  148. sort,
  149. 0 AS level
  150. FROM
  151. ai_summary
  152. WHERE
  153. classify_id = ?
  154. ORDER BY
  155. sort ASC,
  156. ai_summary_classify_id ASC`
  157. err = global.DEFAULT_DmSQL.Raw(sql, parentId, parentId).Find(&items).Error
  158. return
  159. }
  160. type AddAiSummaryClassifyReq struct {
  161. ClassifyName string `description:"分类名称"`
  162. ParentId int `description:"父级id,第一级传0"`
  163. Level int `description:"层级,第一级传0,其余传上一级的层级"`
  164. }
  165. func GetAiSummaryClassifyCount(classifyName string, parentId int) (count int, err error) {
  166. //o := orm.NewOrm()
  167. //sql := `SELECT COUNT(1) AS count FROM ai_summary_classify WHERE parent_id=? AND classify_name=? `
  168. //err = o.Raw(sql, parentId, classifyName).QueryRow(&count)
  169. sql := `SELECT COUNT(1) AS count FROM ai_summary_classify WHERE parent_id=? AND classify_name=? `
  170. err = global.DEFAULT_DmSQL.Raw(sql, parentId, classifyName).Scan(&count).Error
  171. return
  172. }
  173. // GetAiSummaryClassifyMaxSort 获取ai纪要下最大的排序数
  174. func GetAiSummaryClassifyMaxSort(parentId int) (sort int, err error) {
  175. //o := orm.NewOrm()
  176. //sql := `SELECT Max(sort) AS sort FROM ai_summary_classify WHERE parent_id=? `
  177. //err = o.Raw(sql, parentId).QueryRow(&sort)
  178. sql := `SELECT Max(sort) AS sort FROM ai_summary_classify WHERE parent_id=? `
  179. err = global.DEFAULT_DmSQL.Raw(sql, parentId).Scan(&sort).Error
  180. return
  181. }
  182. type EditAiSummaryClassifyReq struct {
  183. ClassifyName string `description:"分类名称"`
  184. AiSummaryClassifyId int `description:"分类id"`
  185. }
  186. func EditSandboxClassify(classifyId int, classifyName string) (err error) {
  187. //o := orm.NewOrm()
  188. //sql := `UPDATE ai_summary_classify SET classify_name=?, modify_time=NOW() WHERE ai_summary_classify_id=? `
  189. //_, err = o.Raw(sql, classifyName, classifyId).Exec()
  190. sql := `UPDATE ai_summary_classify SET classify_name=?, modify_time=NOW() WHERE ai_summary_classify_id=? `
  191. err = global.DEFAULT_DmSQL.Exec(sql, classifyName, classifyId).Error
  192. return
  193. }
  194. type AiSummaryClassifyDeleteCheckReq struct {
  195. AiSummaryClassifyId int `description:"分类id"`
  196. }
  197. func GetAiSummaryInfoCountByClassifyId(classifyId int) (count int, err error) {
  198. //o := orm.NewOrm()
  199. //sql := ` SELECT COUNT(1) AS count FROM ai_summary AS a
  200. // WHERE a.classify_id IN(
  201. // SELECT t.ai_summary_classify_id FROM
  202. // (
  203. // SELECT rd.*
  204. // FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  205. // (SELECT @pid := ?) pd
  206. // WHERE FIND_IN_SET(parent_id, @pid) > 0
  207. // AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  208. // UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  209. // )AS t
  210. // ) `
  211. //err = o.Raw(sql, classifyId).QueryRow(&count)
  212. sql := ` SELECT COUNT(1) AS count FROM ai_summary AS a
  213. WHERE a.classify_id IN(
  214. SELECT t.ai_summary_classify_id FROM
  215. (
  216. SELECT rd.*
  217. FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  218. (SELECT @pid := ?) pd
  219. WHERE FIND_IN_SET(parent_id, @pid) > 0
  220. AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  221. UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  222. )AS t
  223. ) `
  224. err = global.DEFAULT_DmSQL.Raw(sql, classifyId).Scan(&count).Error
  225. return
  226. }
  227. type DeleteAiSummaryClassifyReq struct {
  228. AiSummaryClassifyId int `description:"分类id"`
  229. AiSummaryId int `description:"纪要id"`
  230. }
  231. func DeleteAiSummaryClassify(classifyId int) (err error) {
  232. //o := orm.NewOrm()
  233. //sql := ` DELETE FROM ai_summary_classify
  234. // WHERE ai_summary_classify_id IN(
  235. // SELECT t.ai_summary_classify_id FROM
  236. // (
  237. // SELECT rd.*
  238. // FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  239. // (SELECT @pid := ?) pd
  240. // WHERE FIND_IN_SET(parent_id, @pid) > 0
  241. // AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  242. // UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  243. // )AS t
  244. // ) `
  245. //_, err = o.Raw(sql, classifyId).Exec()
  246. sql := ` DELETE FROM ai_summary_classify
  247. WHERE ai_summary_classify_id IN(
  248. SELECT t.ai_summary_classify_id FROM
  249. (
  250. SELECT rd.*
  251. FROM (SELECT * FROM ai_summary_classify WHERE parent_id IS NOT NULL) rd,
  252. (SELECT @pid := ?) pd
  253. WHERE FIND_IN_SET(parent_id, @pid) > 0
  254. AND @pid := CONCAT(@pid, ',', ai_summary_classify_id)
  255. UNION SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id = @pid
  256. )AS t
  257. ) `
  258. err = global.DEFAULT_DmSQL.Exec(sql, classifyId).Error
  259. return
  260. }
  261. // MoveAiSummaryClassifyReq 移动纪要分类请求参数
  262. type MoveAiSummaryClassifyReq struct {
  263. AiSummaryClassifyId int `description:"分类id"`
  264. AiSummaryId int `description:"纪要ID"`
  265. ParentClassifyId int `description:"父级分类id 移动纪要时为目标分类id"`
  266. PrevId int `description:"上一个兄弟节点分类id"`
  267. NextId int `description:"下一个兄弟节点分类id"`
  268. PrevType int `description:"上一个兄弟节点类型 1分类 2纪要 "`
  269. NextType int `description:"上一个兄弟节点类型 1分类 2纪要 "`
  270. }
  271. func GetAiSummaryClassifyById(classifyId int) (item *AiSummaryClassify, err error) {
  272. //o := orm.NewOrm()
  273. //sql := `SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  274. //err = o.Raw(sql, classifyId).QueryRow(&item)
  275. sql := `SELECT * FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  276. err = global.DEFAULT_DmSQL.Raw(sql, classifyId).First(&item).Error
  277. return
  278. }
  279. func GetAiSummaryClassifyCountById(classifyId int) (count int, err error) {
  280. //o := orm.NewOrm()
  281. //sql := `SELECT count(1) AS count FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  282. //err = o.Raw(sql, classifyId).QueryRow(&count)
  283. sql := `SELECT count(1) AS count FROM ai_summary_classify WHERE ai_summary_classify_id=? `
  284. err = global.DEFAULT_DmSQL.Raw(sql, classifyId).Scan(&count).Error
  285. return
  286. }
  287. // Update 更新沙盘分类基础信息
  288. func (aiSummaryClassify *AiSummaryClassify) Update(cols []string) (err error) {
  289. //o := orm.NewOrm()
  290. //_, err = o.Update(aiSummaryClassify, cols...)
  291. err = global.DEFAULT_DmSQL.Select(cols).Updates(aiSummaryClassify).Error
  292. return
  293. }
  294. // GetFirstAiSummaryClassifyByParentId 获取当前父级沙盘分类下的排序第一条的数据
  295. func GetFirstAiSummaryClassifyByParentId(parentId int) (item *AiSummaryClassify, err error) {
  296. //o := orm.NewOrm()
  297. //sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc limit 1`
  298. //err = o.Raw(sql, parentId).QueryRow(&item)
  299. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id=? order by sort asc,ai_summary_classify_id asc limit 1`
  300. err = global.DEFAULT_DmSQL.Raw(sql, parentId).First(&item).Error
  301. return
  302. }
  303. // UpdateAiSummaryClassifySortByParentId 根据沙盘父类id更新排序
  304. func UpdateAiSummaryClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  305. //o := orm.NewOrm()
  306. //sql := ` update ai_summary_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  307. //if classifyId > 0 {
  308. // sql += ` or ( ai_summary_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  309. //}
  310. //_, err = o.Raw(sql, parentId, nowSort).Exec()
  311. sql := ` update ai_summary_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  312. if classifyId > 0 {
  313. sql += ` or ( ai_summary_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  314. }
  315. err = global.DEFAULT_DmSQL.Exec(sql, parentId, nowSort).Error
  316. return
  317. }
  318. // 获取所有子级分类id
  319. //func GetAiSummaryClassifySubcategories(classifyId int) (Ids string, err error) {
  320. // o := orm.NewOrm()
  321. // sql := `SELECT GROUP_CONCAT(ai_summary_classify_id) AS ids
  322. //FROM (
  323. //SELECT @pv := ? AS ai_summary_classify_id
  324. //UNION ALL
  325. //SELECT sc.ai_summary_classify_id
  326. //FROM ai_summary_classify sc
  327. //JOIN (SELECT @pv := ?) initial
  328. //WHERE sc.parent_id = @pv
  329. //) subcategories; `
  330. // err = o.Raw(sql, classifyId, classifyId).QueryRow(&Ids)
  331. // return
  332. //}
  333. func GetAiSummaryClassify(aiSummaryClassify int) (aiSummaryClassifyIds string, err error) {
  334. // o := orm.NewOrm()
  335. // sql := `SELECT GROUP_CONCAT(t.ai_summary_classify_id) AS ai_summary_classify_id FROM (
  336. // SELECT a.ai_summary_classify_id FROM ai_summary_classify AS a
  337. // WHERE a.ai_summary_classify_id=?
  338. // UNION ALL
  339. // SELECT a.ai_summary_classify_id FROM ai_summary_classify AS a
  340. // WHERE a.parent_id=? UNION ALL
  341. // SELECT
  342. // ai_summary_classify_id
  343. // FROM
  344. // ai_summary_classify
  345. //WHERE
  346. // parent_id IN ( SELECT ai_summary_classify_id FROM ai_summary_classify WHERE parent_id = ? )
  347. // )AS t`
  348. // err = o.Raw(sql, aiSummaryClassify, aiSummaryClassify, aiSummaryClassify).QueryRow(&aiSummaryClassifyIds)
  349. sql := `SELECT GROUP_CONCAT(t.ai_summary_classify_id) AS ai_summary_classify_id FROM (
  350. SELECT a.ai_summary_classify_id FROM ai_summary_classify AS a
  351. WHERE a.ai_summary_classify_id=?
  352. UNION ALL
  353. SELECT a.ai_summary_classify_id FROM ai_summary_classify AS a
  354. WHERE a.parent_id=? UNION ALL
  355. SELECT
  356. ai_summary_classify_id
  357. FROM
  358. ai_summary_classify
  359. WHERE
  360. parent_id IN ( SELECT ai_summary_classify_id FROM ai_summary_classify WHERE parent_id = ? )
  361. )AS t`
  362. err = global.DEFAULT_DmSQL.Raw(sql, aiSummaryClassify, aiSummaryClassify, aiSummaryClassify).Scan(&aiSummaryClassifyIds).Error
  363. return
  364. }
  365. func GetAiSummaryAllParentByClassifyId(aiSummaryClassifyId int) (ids string, err error) {
  366. // o := orm.NewOrm()
  367. // sql := `SELECT
  368. // GROUP_CONCAT(DISTINCT m.ai_summary_classify_id ORDER BY m.level) AS ids
  369. //FROM
  370. // (
  371. // SELECT
  372. // @id AS _id,(
  373. // SELECT
  374. // @id := parent_id
  375. // FROM
  376. // ai_summary_classify
  377. // WHERE
  378. // ai_summary_classify_id = _id
  379. // )
  380. // FROM
  381. // (
  382. // SELECT
  383. // @id :=(
  384. // SELECT
  385. // parent_id
  386. // FROM
  387. // ai_summary_classify
  388. // WHERE
  389. // ai_summary_classify_id = ?
  390. // )) vm,
  391. // ai_summary_classify m
  392. // WHERE
  393. // @id IS NOT NULL
  394. // ) vm
  395. // INNER JOIN ai_summary_classify m
  396. //WHERE
  397. // ai_summary_classify_id = vm._id `
  398. // err = o.Raw(sql, aiSummaryClassifyId).QueryRow(&ids)
  399. sql := `SELECT
  400. GROUP_CONCAT(DISTINCT m.ai_summary_classify_id ORDER BY m.level) AS ids
  401. FROM
  402. (
  403. SELECT
  404. @id AS _id,(
  405. SELECT
  406. @id := parent_id
  407. FROM
  408. ai_summary_classify
  409. WHERE
  410. ai_summary_classify_id = _id
  411. )
  412. FROM
  413. (
  414. SELECT
  415. @id :=(
  416. SELECT
  417. parent_id
  418. FROM
  419. ai_summary_classify
  420. WHERE
  421. ai_summary_classify_id = ?
  422. )) vm,
  423. ai_summary_classify m
  424. WHERE
  425. @id IS NOT NULL
  426. ) vm
  427. INNER JOIN ai_summary_classify m
  428. WHERE
  429. ai_summary_classify_id = vm._id `
  430. err = global.DEFAULT_DmSQL.Raw(sql, aiSummaryClassifyId).Scan(&ids).Error
  431. return
  432. }
  433. type AiSummaryListResp struct {
  434. Paging *paging.PagingItem
  435. List []*AiSummaryItems
  436. }
  437. // GetAiSummaryClassifyAll
  438. func GetAiSummaryClassifyAll() (items []*AiSummaryClassifyItems, err error) {
  439. //o := orm.NewOrm()
  440. //sql := ` SELECT * FROM ai_summary_classify WHERE parent_id<>0 order by sort asc,ai_summary_classify_id asc`
  441. //_, err = o.Raw(sql).QueryRows(&items)
  442. sql := ` SELECT * FROM ai_summary_classify WHERE parent_id<>0 order by sort asc,ai_summary_classify_id asc`
  443. err = global.DEFAULT_DmSQL.Raw(sql).Find(&items).Error
  444. return
  445. }