base_from_clarksons_classify.go 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package data_manage
  2. import (
  3. "database/sql"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "time"
  7. "eta/eta_api/global"
  8. )
  9. // BaseFromClarksonsClassify 卓创红期原始数据分类表
  10. type BaseFromClarksonsClassify struct {
  11. BaseFromClassifyId int `gorm:"column:base_from_clarksons_classify_id;primaryKey"`
  12. ClassifyName string `description:"分类名称"`
  13. ParentId int `description:"父级id"`
  14. Level int `description:"层级"`
  15. Sort int `description:"排序字段"`
  16. ModifyTime time.Time `description:"修改时间"`
  17. CreateTime time.Time `description:"创建时间"`
  18. }
  19. type BaseFromClarksonsClassifyItem struct {
  20. BaseFromClassifyId int `gorm:"column:base_from_clarksons_classify_id;primaryKey"`
  21. ClassifyName string `description:"分类名称"`
  22. ParentId int `description:"父级id"`
  23. Level int `description:"层级"`
  24. Sort int `description:"排序字段"`
  25. UniqueCode string `description:"唯一code"`
  26. ModifyTime time.Time `description:"修改时间"`
  27. CreateTime time.Time `description:"创建时间"`
  28. ClassifyNameEn string `description:"英文分类名称"`
  29. Children []*BaseFromClarksonsClassifyItem `description:"子分类" gorm:"-"`
  30. }
  31. type BaseFromClarksonsClassifyMaxSort struct {
  32. BaseFromClassifyId int `description:"分类id"`
  33. MaxSort int `description:"最大排序"`
  34. }
  35. func (t *BaseFromClarksonsClassify) Add() (insertId int64, err error) {
  36. err = global.DbMap[utils.DbNameIndex].Create(t).Error
  37. return
  38. }
  39. func (t *BaseFromClarksonsClassify) Update(cols []string) (err error) {
  40. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(t).Error
  41. return
  42. }
  43. func BatchAddClarksonsClassify(items []*BaseFromClarksonsClassify) (err error) {
  44. err = global.DbMap[utils.DbNameIndex].CreateInBatches(items, len(items)).Error
  45. return
  46. }
  47. // 获取所有分类
  48. func GetClarksonsClassifyAll() (items []*BaseFromClarksonsClassifyItem, err error) {
  49. sql := ` SELECT * FROM base_from_clarksons_classify ORDER BY sort ASC, base_from_clarksons_classify_id ASC`
  50. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
  51. return
  52. }
  53. // GetChildClarksonsClassifyListById 获取子分类列表
  54. func GetChildClarksonsClassifyListById(classifyId int) (items []*BaseFromClarksonsClassifyItem, err error) {
  55. sql := ` SELECT * FROM base_from_clarksons_classify WHERE parent_id=? `
  56. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error
  57. return
  58. }
  59. // GetChildClarksonsClassifyIdsById 获取子分类的id集合
  60. func GetChildClarksonsClassifyIdsById(classifyId int) (items []int, err error) {
  61. sql := ` SELECT base_from_clarksons_classify_id FROM base_from_clarksons_classify WHERE parent_id=? `
  62. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error
  63. return
  64. }
  65. // GetChildClarksonsClassifyMaxSortById 获取子分类最大排序
  66. func GetChildClarksonsClassifyMaxSortById(classifyId int) (sort int, err error) {
  67. sqlStr := ` SELECT COALESCE(MAX(sort),0) AS sort FROM base_from_clarksons_classify WHERE parent_id=? `
  68. var totalNull sql.NullInt64
  69. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyId).Scan(&totalNull).Error
  70. if !totalNull.Valid {
  71. sort = 0
  72. } else {
  73. sort = int(totalNull.Int64)
  74. }
  75. return
  76. }
  77. // GetClarksonsClassifyCountById 获取分类数量
  78. func GetClarksonsClassifyCountById(classifyId int) (count int, err error) {
  79. sqlStr := ` SELECT COUNT(*) AS count FROM base_from_clarksons_classify WHERE base_from_clarksons_classify_id=? `
  80. var totalNull sql.NullInt64
  81. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyId).Scan(&totalNull).Error
  82. if !totalNull.Valid {
  83. count = 0
  84. } else {
  85. count = int(totalNull.Int64)
  86. }
  87. return
  88. }
  89. // GetClarksonsClassifyById 通过分类id获取分类
  90. func GetClarksonsClassifyById(classifyId int) (item *BaseFromClarksonsClassify, err error) {
  91. sql := ` SELECT * FROM base_from_clarksons_classify WHERE base_from_clarksons_classify_id=? `
  92. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).First(&item).Error
  93. return
  94. }
  95. // GetClarksonsChildClassifyById 通过分类id获取子分类
  96. func GetClarksonsChildClassifyIdsById(classifyId int) (items []int, err error) {
  97. sql := ` SELECT base_from_clarksons_classify_id FROM base_from_clarksons_classify WHERE parent_id=? `
  98. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error
  99. return
  100. }
  101. // GetClarksonsClassifyListByIds 通过分类id获取分类列表
  102. func GetClarksonsClassifyListByIds(classifyIds []int) (items []*BaseFromClarksonsClassify, err error) {
  103. if len(classifyIds) == 0 {
  104. return
  105. }
  106. sql := ` SELECT * FROM base_from_clarksons_classify WHERE base_from_clarksons_classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  107. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyIds).Find(&items).Error
  108. return
  109. }
  110. // GetClarksonsClassifyCountByName 通过分类名称获取分类
  111. func GetClarksonsClassifyCountByName(classifyName string) (count int, err error) {
  112. sqlStr := ` SELECT COUNT(*) AS count FROM base_from_clarksons_classify WHERE 1=1`
  113. sqlStr += ` AND classify_name=? `
  114. var totalNull sql.NullInt64
  115. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyName).Scan(&count).Error
  116. if !totalNull.Valid {
  117. count = 0
  118. } else {
  119. count = int(totalNull.Int64)
  120. }
  121. return
  122. }
  123. func GetBaseFromClarksonsClassifyEnCount(classifyNameEn string, parentId int) (count int, err error) {
  124. sqlStr := `SELECT COUNT(1) AS count FROM base_from_clarksons_classify WHERE classify_name_en=? AND parent_id=? `
  125. var totalNull sql.NullInt64
  126. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyNameEn, parentId).Scan(&totalNull).Error
  127. if !totalNull.Valid {
  128. count = 0
  129. } else {
  130. count = int(totalNull.Int64)
  131. }
  132. return
  133. }
  134. func GetBaseFromClarksonsClassifyCount(classifyName string, parentId int) (count int, err error) {
  135. sqlStr := `SELECT COUNT(1) AS count FROM base_from_clarksons_classify WHERE classify_name=? AND parent_id=? `
  136. var totalNull sql.NullInt64
  137. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyName, parentId).Scan(&count).Error
  138. if !totalNull.Valid {
  139. count = 0
  140. } else {
  141. count = int(totalNull.Int64)
  142. }
  143. return
  144. }
  145. func DeleteClarksonsClassifyById(classifyId int) (err error) {
  146. sql := ` DELETE FROM base_from_clarksons_classify WHERE base_from_clarksons_classify_id=? `
  147. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyId).Error
  148. return
  149. }
  150. // BatchDeleteClarksonsClassifyById 批量删除分类
  151. func BatchDeleteClarksonsClassifyById(classifyId []int) (err error) {
  152. if len(classifyId) == 0 {
  153. return
  154. }
  155. tx := global.DbMap[utils.DbNameIndex].Begin()
  156. defer func() {
  157. if err != nil {
  158. _ = tx.Rollback()
  159. } else {
  160. _ = tx.Commit()
  161. }
  162. }()
  163. sql := ` DELETE FROM base_from_clarksons_classify WHERE base_from_clarksons_classify_id IN (` + utils.GetOrmInReplace(len(classifyId)) + `) `
  164. err = tx.Exec(sql, classifyId).Error
  165. return
  166. }
  167. // DeleteClarksonsClassifyByClassifyId 根据分类id删除对应的指标分类
  168. func DeleteClarksonsClassifyByClassifyId(classifyIdList []int) (err error) {
  169. num := len(classifyIdList)
  170. if num <= 0 {
  171. return
  172. }
  173. //删除分类
  174. sql := `DELETE FROM base_from_clarksons_classify WHERE base_from_clarksons_classify_id IN (` + utils.GetOrmInReplace(num) + `) `
  175. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyIdList).Error
  176. return
  177. }
  178. // GetClarksonsIndexClassifyMinSort 获取最小不等于0的排序
  179. func GetClarksonsIndexClassifyMinSort(parentId int) (sort int, err error) {
  180. sqlStr := `SELECT MIN(sort) FROM base_from_clarksons_classify WHERE parent_id=? AND sort <> 0 `
  181. var totalNull sql.NullInt64
  182. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, parentId).Scan(&totalNull).Error
  183. if !totalNull.Valid {
  184. sort = 0
  185. } else {
  186. sort = int(totalNull.Int64)
  187. }
  188. return
  189. }
  190. // MoveUpClarksonsIndexClassifyBySort 往上移动
  191. func MoveUpClarksonsIndexClassifyBySort(parentId, nextSort, currentSort int) (err error) {
  192. sql := `update base_from_clarksons_classify set sort = sort + 1 where parent_id=? and sort >= ? and sort< ?`
  193. err = global.DbMap[utils.DbNameIndex].Exec(sql, parentId, nextSort, currentSort).Error
  194. return
  195. }
  196. // MoveDownClarksonsIndexClassifyBySort 往下移动
  197. func MoveDownClarksonsIndexClassifyBySort(parentId, prevSort, currentSort int) (err error) {
  198. sql := `update base_from_clarksons_classify set sort = sort - 1 where parent_id=? and sort <= ? and sort> ? `
  199. err = global.DbMap[utils.DbNameIndex].Exec(sql, parentId, prevSort, currentSort).Error
  200. return
  201. }
  202. // UpdateClarksonsClassifySortByParentId 根据父类id更新排序
  203. func UpdateClarksonsClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  204. sql := ` update base_from_clarksons_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  205. if classifyId > 0 {
  206. sql += ` or ( base_from_clarksons_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  207. }
  208. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId, nowSort).Error
  209. return
  210. }
  211. // GetFirstClarksonsClassifyByParentId 获取当前父级分类下的排序第一条的数据
  212. func GetFirstClarksonsClassifyByParentId(parentId int) (item *ChartClassify, err error) {
  213. sql := ` SELECT * FROM base_from_clarksons_classify WHERE parent_id=? order by sort asc,base_from_clarksons_classify_id asc limit 1`
  214. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId).First(&item).Error
  215. return
  216. }