ai_predict_model_classify.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. package data_manage
  2. import (
  3. sql2 "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "strings"
  8. "time"
  9. )
  10. // AiPredictModelClassify 同花顺高频数据-分类
  11. type AiPredictModelClassify struct {
  12. AiPredictModelClassifyId int `gorm:"primaryKey;column:ai_predict_model_classify_id;"`
  13. UniqueCode string `description:"唯一编码"`
  14. ClassifyName string `description:"分类名称"`
  15. ClassifyNameEn string `description:"英文分类名称"`
  16. ParentId int `description:"父级ID"`
  17. Level int `description:"层级"`
  18. LevelPath string `description:"层级路径"`
  19. Sort int `description:"排序"`
  20. RootId int `description:"顶级分类ID"`
  21. SysUserId int `description:"创建人ID"`
  22. SysUserRealName string `description:"创建人姓名"`
  23. CreateTime time.Time `description:"创建时间"`
  24. ModifyTime time.Time `description:"修改时间"`
  25. }
  26. func (m *AiPredictModelClassify) TableName() string {
  27. return "ai_predict_model_classify"
  28. }
  29. type AiPredictModelClassifyCols struct {
  30. PrimaryId string
  31. UniqueCode string
  32. ClassifyName string
  33. ClassifyNameEn string
  34. ParentId string
  35. Level string
  36. LevelPath string
  37. Sort string
  38. RootId string
  39. SysUserId string
  40. SysUserRealName string
  41. CreateTime string
  42. ModifyTime string
  43. }
  44. func (m *AiPredictModelClassify) Cols() AiPredictModelClassifyCols {
  45. return AiPredictModelClassifyCols{
  46. PrimaryId: "ai_predict_model_classify_id",
  47. UniqueCode: "unique_code",
  48. ClassifyName: "classify_name",
  49. ClassifyNameEn: "classify_name_en",
  50. ParentId: "parent_id",
  51. Level: "level",
  52. LevelPath: "level_path",
  53. Sort: "sort",
  54. RootId: "root_id",
  55. SysUserId: "sys_user_id",
  56. SysUserRealName: "sys_user_real_name",
  57. CreateTime: "create_time",
  58. ModifyTime: "modify_time",
  59. }
  60. }
  61. func (m *AiPredictModelClassify) Create() (err error) {
  62. err = global.DbMap[utils.DbNameIndex].Create(m).Error
  63. return
  64. }
  65. func (m *AiPredictModelClassify) CreateMulti(items []*AiPredictModelClassify) (err error) {
  66. if len(items) == 0 {
  67. return
  68. }
  69. err = global.DbMap[utils.DbNameIndex].CreateInBatches(items, utils.MultiAddNum).Error
  70. return
  71. }
  72. func (m *AiPredictModelClassify) Update(cols []string) (err error) {
  73. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
  74. return
  75. }
  76. func (m *AiPredictModelClassify) Remove() (err error) {
  77. o := global.DbMap[utils.DbNameIndex]
  78. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  79. err = o.Exec(sql, m.AiPredictModelClassifyId).Error
  80. return
  81. }
  82. func (m *AiPredictModelClassify) MultiRemove(ids []int) (err error) {
  83. if len(ids) == 0 {
  84. return
  85. }
  86. o := global.DbMap[utils.DbNameIndex]
  87. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  88. err = o.Exec(sql, ids).Error
  89. return
  90. }
  91. func (m *AiPredictModelClassify) RemoveByCondition(condition string, pars []interface{}) (err error) {
  92. if condition == "" {
  93. return
  94. }
  95. o := global.DbMap[utils.DbNameIndex]
  96. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
  97. err = o.Exec(sql, pars...).Error
  98. return
  99. }
  100. func (m *AiPredictModelClassify) GetItemById(id int) (item *AiPredictModelClassify, err error) {
  101. o := global.DbMap[utils.DbNameIndex]
  102. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  103. err = o.Raw(sql, id).First(&item).Error
  104. return
  105. }
  106. func (m *AiPredictModelClassify) GetItemsByIds(ids []string) (items []*AiPredictModelClassify, err error) {
  107. o := global.DbMap[utils.DbNameIndex]
  108. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  109. err = o.Raw(sql, ids).Find(&items).Error
  110. return
  111. }
  112. func (m *AiPredictModelClassify) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *AiPredictModelClassify, err error) {
  113. o := global.DbMap[utils.DbNameIndex]
  114. order := ``
  115. if orderRule != "" {
  116. order = ` ORDER BY ` + orderRule
  117. }
  118. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  119. err = o.Raw(sql, pars...).First(&item).Error
  120. return
  121. }
  122. func (m *AiPredictModelClassify) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  123. o := global.DbMap[utils.DbNameIndex]
  124. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  125. err = o.Raw(sql, pars...).Scan(&count).Error
  126. return
  127. }
  128. func (m *AiPredictModelClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AiPredictModelClassify, err error) {
  129. o := global.DbMap[utils.DbNameIndex]
  130. fields := strings.Join(fieldArr, ",")
  131. if len(fieldArr) == 0 {
  132. fields = `*`
  133. }
  134. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  135. if orderRule != "" {
  136. order = ` ORDER BY ` + orderRule
  137. }
  138. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  139. err = o.Raw(sql, pars...).Find(&items).Error
  140. return
  141. }
  142. func (m *AiPredictModelClassify) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*AiPredictModelClassify, err error) {
  143. o := global.DbMap[utils.DbNameIndex]
  144. fields := strings.Join(fieldArr, ",")
  145. if len(fieldArr) == 0 {
  146. fields = `*`
  147. }
  148. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  149. if orderRule != "" {
  150. order = ` ORDER BY ` + orderRule
  151. }
  152. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  153. pars = append(pars, startSize, pageSize)
  154. err = o.Exec(sql, pars...).Find(&items).Error
  155. return
  156. }
  157. // AiPredictModelClassifyItem 同花顺高频数据信息
  158. type AiPredictModelClassifyItem struct {
  159. ClassifyId int `description:"分类ID"`
  160. ClassifyName string `description:"分类名称"`
  161. ClassifyNameEn string `description:"英文分类名称"`
  162. ParentId int `description:"父级ID"`
  163. Level int `description:"层级"`
  164. Sort int `description:"排序"`
  165. LevelPath string `description:"层级路径"`
  166. UniqueCode string `description:"唯一编码"`
  167. Children []*AiPredictModelClassifyItem `description:"子分类"`
  168. }
  169. func (m *AiPredictModelClassify) Format2Item() (item *AiPredictModelClassifyItem) {
  170. item = new(AiPredictModelClassifyItem)
  171. item.ClassifyId = m.AiPredictModelClassifyId
  172. item.ClassifyName = m.ClassifyName
  173. item.ClassifyNameEn = m.ClassifyNameEn
  174. item.ParentId = m.ParentId
  175. item.Level = m.Level
  176. item.Sort = m.Sort
  177. item.LevelPath = m.LevelPath
  178. item.UniqueCode = m.UniqueCode
  179. item.Children = make([]*AiPredictModelClassifyItem, 0)
  180. return
  181. }
  182. type AiPredictModelClassifyAddReq struct {
  183. ClassifyName string `description:"分类名称"`
  184. ParentId int `description:"父级ID, 第一级传0"`
  185. Level int `description:"层级, 第一级传0, 其余传上一级的层级"`
  186. }
  187. type AiPredictModelClassifyEditReq struct {
  188. ClassifyId int `description:"分类ID"`
  189. ClassifyName string `description:"分类名称"`
  190. }
  191. func (m *AiPredictModelClassify) GetSortMax(parentId int) (sort int, err error) {
  192. var sortNull sql2.NullInt64
  193. sql := fmt.Sprintf(`SELECT MAX(%s) FROM %s WHERE %s = ?`, m.Cols().Sort, m.TableName(), m.Cols().ParentId)
  194. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId).Scan(&sortNull).Error
  195. if err == nil && sortNull.Valid {
  196. sort = int(sortNull.Int64)
  197. }
  198. return
  199. }
  200. type AiPredictModelClassifyRemoveReq struct {
  201. ClassifyId int `description:"分类ID"`
  202. IndexId int `description:"标的ID"`
  203. }
  204. type AiPredictModelClassifyListResp struct {
  205. AllNodes []*AiPredictModelClassifyListItem `description:"分类节点"`
  206. }
  207. type AiPredictModelClassifyListItem struct {
  208. NodeType int `description:"节点类型: 0-分类; 1-指标"`
  209. NodeName string `description:"节点名称"`
  210. ClassifyId int `description:"分类ID"`
  211. ClassifyName string `description:"分类名称"`
  212. IndexId int `description:"指标ID"`
  213. IndexCode string `description:"指标编码"`
  214. IndexName string `description:"指标名称"`
  215. ParentId int `description:"父级ID"`
  216. Level int `description:"层级"`
  217. Sort int `description:"排序"`
  218. UniqueCode string `description:"唯一编码, 指标为IndexCode"`
  219. Children []*AiPredictModelClassifyListItem `description:"子分类"`
  220. }
  221. // 模型框架下的目录列表
  222. type AiPredictModelClassifyFrameworkListResp struct {
  223. AllNodes []*AiPredictModelClassifyFrameworkListItem `description:"分类节点"`
  224. }
  225. type AiPredictModelClassifyFrameworkListItem struct {
  226. NodeType int `description:"节点类型: 0-分类; 1-模型框架"`
  227. NodeName string `description:"节点名称"`
  228. ClassifyId int `description:"分类ID"`
  229. ClassifyName string `description:"分类名称"`
  230. ClassifyNameEn string `description:"英文分类名称"`
  231. AiPredictModelFrameworkId int `description:"模型框架ID"`
  232. FrameworkImg string `description:"框架图片"`
  233. ParentId int `description:"父级ID"`
  234. Level int `description:"层级"`
  235. Sort int `description:"排序"`
  236. UniqueCode string `description:"唯一编码, 指标为IndexCode"`
  237. Children []*AiPredictModelClassifyFrameworkListItem `description:"子分类"`
  238. }
  239. type AiPredictModelClassifyMoveReq struct {
  240. ClassifyId int `description:"分类ID"`
  241. ParentClassifyId int `description:"父级分类ID"`
  242. PrevClassifyId int `description:"上一个兄弟节点分类ID"`
  243. NextClassifyId int `description:"下一个兄弟节点分类ID"`
  244. ItemId int `description:"指标ID, 如果指标ID有值,则移动对象为指标,否则认为移动对象为分类"`
  245. PrevItemId int `description:"上一个指标ID"`
  246. NextItemId int `description:"下一个指标ID"`
  247. }
  248. func GetAiPredictModelClassifyById(classifyId int) (item *AiPredictModelClassify, err error) {
  249. o := global.DbMap[utils.DbNameIndex]
  250. sql := `SELECT * FROM ai_predict_model_classify WHERE ai_predict_model_classify_id = ?`
  251. err = o.Raw(sql, classifyId).First(&item).Error
  252. return
  253. }
  254. func GetAiPredictModelClassifyByRootIdLevel(rootId int, orderStr string) (items []*AiPredictModelClassify, err error) {
  255. o := global.DbMap[utils.DbNameIndex]
  256. sql := ` SELECT * FROM ai_predict_model_classify WHERE root_id = ? `
  257. if orderStr != "" {
  258. sql += orderStr
  259. } else {
  260. sql += ` order by level desc, sort asc, ai_predict_model_classify_id asc`
  261. }
  262. err = o.Raw(sql, rootId).Find(&items).Error
  263. return
  264. }
  265. // UpdateAiPredictModelClassifySortByParentId 根据父类id更新排序
  266. func UpdateAiPredictModelClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  267. o := global.DbMap[utils.DbNameIndex]
  268. sql := ` update ai_predict_model_classify set sort = ` + updateSort + ` WHERE parent_id = ? AND sort > ? `
  269. if classifyId > 0 {
  270. sql += ` or ( ai_predict_model_classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  271. }
  272. err = o.Exec(sql, parentId, nowSort).Error
  273. return
  274. }
  275. // GetFirstAiPredictModelClassifyByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
  276. func GetFirstAiPredictModelClassifyByParentId(parentId int) (item *AiPredictModelClassify, err error) {
  277. o := global.DbMap[utils.DbNameIndex]
  278. sql := ` SELECT * FROM ai_predict_model_classify WHERE parent_id = ? order by sort asc,ai_predict_model_classify_id asc limit 1`
  279. err = o.Raw(sql, parentId).First(&item).Error
  280. return
  281. }
  282. func UpdateAiPredictModelClassifyChildByParentClassifyId(classifyIds []int, rootId int, levelStep int) (err error) {
  283. o := global.DbMap[utils.DbNameIndex]
  284. var pars []interface{}
  285. pars = append(pars, rootId, levelStep)
  286. pars = append(pars, classifyIds)
  287. // 更新相关联的二级分类的parentId,和classify_name_second
  288. sql := `UPDATE ai_predict_model_classify SET root_id = ?, level = level+? where ai_predict_model_classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  289. err = o.Exec(sql, pars...).Error
  290. if err != nil {
  291. return
  292. }
  293. return
  294. }
  295. // GetAiPredictModelIndexCountByClassifyId 获取目录下(包含子目录)的指标数量
  296. func GetAiPredictModelIndexCountByClassifyId(classifyId int) (count int, err error) {
  297. o := global.DbMap[utils.DbNameIndex]
  298. var pars []interface{}
  299. var sql string
  300. if utils.DbDriverName == utils.DbDriverByDm {
  301. sql = `WITH RECURSIVE ai_predict_model_classify_cte (ai_predict_model_classify_id, parent_id) AS (
  302. SELECT ai_predict_model_classify_id, parent_id
  303. FROM ai_predict_model_classify
  304. WHERE parent_id = ?
  305. UNION ALL
  306. SELECT c.ai_predict_model_classify_id, c.parent_id
  307. FROM ai_predict_model_classify c
  308. INNER JOIN ai_predict_model_classify_cte ct ON c.parent_id = ct.ai_predict_model_classify_id
  309. )
  310. SELECT COUNT(1) AS count
  311. FROM ai_predict_model_index a
  312. WHERE a.classify_id IN (
  313. SELECT ai_predict_model_classify_id
  314. FROM ai_predict_model_classify_cte
  315. UNION
  316. SELECT ai_predict_model_classify_id
  317. FROM ai_predict_model_classify
  318. WHERE ai_predict_model_classify_id = ?
  319. )`
  320. pars = append(pars, classifyId, classifyId, classifyId)
  321. }else{
  322. sql = `SELECT COUNT(1) AS count FROM ai_predict_model_index AS a
  323. WHERE a.classify_id IN(
  324. SELECT t.ai_predict_model_classify_id FROM
  325. (
  326. SELECT rd.*
  327. FROM (SELECT * FROM ai_predict_model_classify WHERE parent_id IS NOT NULL) rd,
  328. (SELECT @pid := ?) pd
  329. WHERE FIND_IN_SET(parent_id, @pid) > 0
  330. AND @pid := CONCAT(@pid, ',', ai_predict_model_classify_id)
  331. UNION SELECT * FROM ai_predict_model_classify WHERE ai_predict_model_classify_id = @pid
  332. )AS t
  333. )`
  334. pars = append(pars, classifyId)
  335. }
  336. err = o.Raw(sql, pars...).Scan(&count).Error
  337. return
  338. }
  339. func GetAiPredictModelIndexCountByClassifyIds(classifyIds []int) (count int, err error) {
  340. o := global.DbMap[utils.DbNameIndex]
  341. sql := `SELECT COUNT(1) AS count FROM ai_predict_model_index WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  342. err = o.Raw(sql, classifyIds).Scan(&count).Error
  343. return
  344. }
  345. // GetAiPredictModelClassifyCountByClassifyId 获取目录下子目录数量
  346. func GetAiPredictModelClassifyCountByClassifyId(chartClassifyId int) (count int, err error) {
  347. o := global.DbMap[utils.DbNameIndex]
  348. var pars []interface{}
  349. var sql string
  350. if utils.DbDriverName == utils.DbDriverByDm {
  351. sql = `WITH RECURSIVE ai_predict_model_classify_cte (ai_predict_model_classify_id, parent_id) AS (
  352. SELECT ai_predict_model_classify_id, parent_id
  353. FROM ai_predict_model_classify
  354. WHERE parent_id = ?
  355. UNION ALL
  356. SELECT c.ai_predict_model_classify_id, c.parent_id
  357. FROM ai_predict_model_classify c
  358. INNER JOIN ai_predict_model_classify_cte ct ON c.parent_id = ct.ai_predict_model_classify_id
  359. )
  360. SELECT COUNT(1) AS count
  361. FROM (
  362. SELECT ai_predict_model_classify_id
  363. FROM ai_predict_model_classify_cte
  364. UNION
  365. SELECT ai_predict_model_classify_id
  366. FROM ai_predict_model_classify
  367. WHERE ai_predict_model_classify_id = ?
  368. ) AS t
  369. WHERE t.ai_predict_model_classify_id <> ?`
  370. pars = append(pars, chartClassifyId, chartClassifyId, chartClassifyId)
  371. }else{
  372. sql = `SELECT COUNT(1) AS count FROM (
  373. SELECT rd.*
  374. FROM (SELECT * FROM ai_predict_model_classify WHERE parent_id IS NOT NULL) rd,
  375. (SELECT @pid := ?) pd
  376. WHERE FIND_IN_SET(parent_id, @pid) > 0
  377. AND @pid := CONCAT(@pid, ',', ai_predict_model_classify_id)
  378. UNION SELECT * FROM ai_predict_model_classify WHERE ai_predict_model_classify_id = @pid
  379. )AS t
  380. WHERE t.ai_predict_model_classify_id <> ?`
  381. pars = append(pars, chartClassifyId, chartClassifyId)
  382. }
  383. err = o.Raw(sql, pars...).Scan(&count).Error
  384. return
  385. }
  386. // RemoveAiPredictModelClassify 删除分类及子分类
  387. func RemoveAiPredictModelClassify(classifyId int) (err error) {
  388. o := global.DbMap[utils.DbNameIndex]
  389. var pars []interface{}
  390. var sql string
  391. if utils.DbDriverName == utils.DbDriverByDm {
  392. sql = `WITH RECURSIVE ai_predict_model_classify_cte (ai_predict_model_classify_id, parent_id) AS (
  393. SELECT ai_predict_model_classify_id, parent_id
  394. FROM ai_predict_model_classify
  395. WHERE parent_id = ?
  396. UNION ALL
  397. SELECT c.ai_predict_model_classify_id, c.parent_id
  398. FROM ai_predict_model_classify c
  399. INNER JOIN ai_predict_model_classify_cte ct ON c.parent_id = ct.ai_predict_model_classify_id
  400. )
  401. DELETE FROM ai_predict_model_classify
  402. WHERE ai_predict_model_classify_id IN (
  403. SELECT ai_predict_model_classify_id
  404. FROM ai_predict_model_classify_cte
  405. UNION
  406. SELECT ai_predict_model_classify_id
  407. FROM ai_predict_model_classify
  408. WHERE ai_predict_model_classify_id = ?
  409. )`
  410. pars = append(pars, classifyId, classifyId)
  411. }else{
  412. sql = `DELETE FROM ai_predict_model_classify
  413. WHERE ai_predict_model_classify_id IN(
  414. SELECT t.ai_predict_model_classify_id FROM
  415. (
  416. SELECT rd.*
  417. FROM (SELECT * FROM ai_predict_model_classify WHERE parent_id IS NOT NULL) rd,
  418. (SELECT @pid := ?) pd
  419. WHERE FIND_IN_SET(parent_id, @pid) > 0
  420. AND @pid := CONCAT(@pid, ',', ai_predict_model_classify_id)
  421. UNION SELECT * FROM ai_predict_model_classify WHERE ai_predict_model_classify_id = @pid
  422. )AS t
  423. )`
  424. pars = append(pars, classifyId)
  425. }
  426. err = o.Exec(sql, pars...).Error
  427. return
  428. }
  429. // GetAiPredictClassifyByParentIdAndName 根据父级ID和名称获取分类
  430. func GetAiPredictClassifyByParentIdAndName(parentId int, classifyName string, classifyId int) (item *AiPredictModelClassify, err error) {
  431. //o := orm.NewOrmUsingDB("data")
  432. sql := `SELECT * FROM ai_predict_model_classify WHERE parent_id = ? AND classify_name = ? AND ai_predict_model_classify_id <> ? LIMIT 1`
  433. //err = o.Raw(sql, parentId, classifyName, classifyId).QueryRow(&item)
  434. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId, classifyName, classifyId).First(&item).Error
  435. return
  436. }
  437. // 根据level_path获取子分类
  438. func GetAiPredictModelClassifyChildIdsByLevelPath(levelPath string) (items []int, err error) {
  439. o := global.DbMap[utils.DbNameIndex]
  440. sql := `SELECT ai_predict_model_classify_id FROM ai_predict_model_classify WHERE level_path LIKE ?`
  441. err = o.Raw(sql, levelPath+"%").Scan(&items).Error
  442. return
  443. }
  444. // RemoveAiPredictModelClassifyByClassifyIds 根据分类ID删除分类和子分类
  445. func RemoveAiPredictModelClassifyByClassifyIds(classifyIds []int) (err error) {
  446. o := global.DbMap[utils.DbNameIndex]
  447. sql := `DELETE FROM ai_predict_model_classify WHERE ai_predict_model_classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  448. err = o.Exec(sql, classifyIds).Error
  449. return
  450. }
  451. // AiPredictModelClassifyTreeResp 分类树形结构响应
  452. type AiPredictModelClassifyTreeResp struct {
  453. List []*AiPredictModelClassifyTreeItem `description:"分类列表"`
  454. }
  455. // AiPredictModelClassifyTreeItem 分类树形结构节点
  456. type AiPredictModelClassifyTreeItem struct {
  457. ClassifyId int `description:"分类ID"`
  458. ClassifyName string `description:"分类名称"`
  459. ParentId int `description:"父级ID"`
  460. Level int `description:"层级"`
  461. Sort int `description:"排序"`
  462. UniqueCode string `description:"唯一编码"`
  463. Children []*AiPredictModelClassifyTreeItem `description:"子分类"`
  464. }