ai_summary_classify.go 17 KB

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