public_chart_classify.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "fmt"
  5. "time"
  6. )
  7. // ChartPublicClassify
  8. // @Description: 公共分类
  9. type ChartPublicClassify struct {
  10. ChartPublicClassifyId int `gorm:"primaryKey" `
  11. Source int `description:"分类来源: 1-图库; 2-商品价格曲线; 3-相关性图表; 6-拟合方程图表; 7-统计特征"`
  12. ChartPublicClassifyName string `description:"分类名称"`
  13. ParentId int `description:"父级id"`
  14. HasData int `description:"是否含有指标数据"`
  15. RootId int `description:"顶级id"`
  16. CreateTime time.Time `description:"创建时间"`
  17. ModifyTime time.Time `description:"修改时间"`
  18. SysUserId int `description:"创建人id"`
  19. SysUserRealName string `description:"创建人姓名"`
  20. Level int `description:"层级"`
  21. UniqueCode string `description:"唯一编码"`
  22. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  23. LastModifyUserId int `description:"最后修改人ID"`
  24. LastModifyUserRealName string `description:"最后修改人姓名"`
  25. ChartPublicClassifyNamePath string `description:"分类名称的完整路径,格式为:父级分类名称|当前分类名称"`
  26. ChartPublicClassifyIdPath string `description:"分类的完整路径,格式为:父级ID,当前ID"`
  27. }
  28. func (m ChartPublicClassify) ToChartClassifyItems() *ChartClassifyItems {
  29. return &ChartClassifyItems{
  30. ChartClassifyId: m.ChartPublicClassifyId,
  31. //ChartInfoId: 0,
  32. ChartClassifyName: m.ChartPublicClassifyName,
  33. ChartClassifyNameEn: m.ChartPublicClassifyName,
  34. ParentId: m.ParentId,
  35. Level: m.Level,
  36. Sort: m.Sort,
  37. UniqueCode: m.UniqueCode,
  38. Source: m.Source,
  39. //SourceName: "",
  40. SysUserId: m.SysUserId,
  41. SysUserRealName: m.SysUserRealName,
  42. //DateType: 0,
  43. //StartDate: "",
  44. //EndDate: "",
  45. //ChartType: 0,
  46. //Calendar: "",
  47. //SeasonStartDate: "",
  48. //SeasonEndDate: "",
  49. Children: nil,
  50. Button: ChartClassifyItemsButton{},
  51. IsJoinPermission: 0,
  52. HaveOperaAuth: false,
  53. ChartClassifyIdPath: m.ChartPublicClassifyIdPath,
  54. }
  55. }
  56. // Add
  57. // @Description: 添加分类
  58. // @author: Roc
  59. // @receiver m
  60. // @datetime 2024-12-04 17:00:18
  61. // @return err error
  62. func (m *ChartPublicClassify) Add() (err error) {
  63. err = global.DmSQL["data"].Create(m).Error
  64. return
  65. }
  66. // Update
  67. // @Description: 更新分类基础信息
  68. // @author: Roc
  69. // @receiver m
  70. // @datetime 2024-12-04 17:01:51
  71. // @param cols []string
  72. // @return err error
  73. func (m *ChartPublicClassify) Update(cols []string) (err error) {
  74. err = global.DmSQL["data"].Select(cols).Updates(m).Error
  75. return
  76. }
  77. // GetChartClassifyById
  78. // @Description: 根据id获取分类
  79. // @author: Roc
  80. // @receiver m
  81. // @datetime 2024-12-04 16:56:15
  82. // @param classifyId int
  83. // @return item *ChartPublicClassify
  84. // @return err error
  85. func (m ChartPublicClassify) GetChartClassifyById(classifyId int) (item *ChartPublicClassify, err error) {
  86. sql := `SELECT * FROM chart_public_classify WHERE chart_public_classify_id=? `
  87. err = global.DmSQL["data"].Raw(sql, classifyId).First(&item).Error
  88. return
  89. }
  90. // GetChartClassifyListByParentId
  91. // @Description: 根据父级id获取下级分类列表
  92. // @author: Roc
  93. // @receiver m
  94. // @datetime 2024-12-03 13:57:48
  95. // @param parentId int
  96. // @param source int8
  97. // @return items []*ChartPublicClassify
  98. // @return err error
  99. func (m ChartPublicClassify) GetChartClassifyListByParentId(parentId int, source int8) (items []*ChartPublicClassify, err error) {
  100. o := global.DmSQL["data"]
  101. sql := `SELECT * FROM chart_public_classify WHERE parent_id=? AND source = ? order by sort asc,chart_public_classify_id asc `
  102. err = o.Raw(sql, parentId, source).Find(&items).Error
  103. return
  104. }
  105. // GetChartClassifyItemsByParentId
  106. // @Description: 根据父级id获取下级分类列表(结构型的)
  107. // @author: Roc
  108. // @receiver m
  109. // @datetime 2024-12-03 13:56:18
  110. // @param parentId int
  111. // @param source int8
  112. // @return items []*ChartClassifyItems
  113. // @return err error
  114. func (m ChartPublicClassify) GetChartClassifyItemsByParentId(parentId int, source int8) (items []*ChartClassifyItems, err error) {
  115. list, err := m.GetChartClassifyListByParentId(parentId, source)
  116. if err != nil {
  117. return
  118. }
  119. for _, v := range list {
  120. items = append(items, v.ToChartClassifyItems())
  121. }
  122. return
  123. }
  124. // GetChartClassifyListByParentId
  125. // @Description: 根据父级id获取下级分类列表
  126. // @author: Roc
  127. // @receiver m
  128. // @datetime 2024-12-03 13:57:48
  129. // @param parentId int
  130. // @param source int8
  131. // @return items []*ChartPublicClassify
  132. // @return err error
  133. func (m ChartPublicClassify) GetChartClassifyListByType(source int8) (items []*ChartPublicClassify, err error) {
  134. o := global.DmSQL["data"]
  135. sql := `SELECT * FROM chart_public_classify WHERE source = ? order by sort asc,chart_public_classify_id asc `
  136. err = o.Raw(sql, source).Find(&items).Error
  137. return
  138. }
  139. // GetAllChartClassifyByType 根据类型获取分类列表
  140. func (m ChartPublicClassify) GetAllChartClassifyByType(source int8) (items []*ChartClassifyItems, err error) {
  141. list, err := m.GetChartClassifyListByType(int8(source))
  142. if err != nil {
  143. return
  144. }
  145. for _, v := range list {
  146. items = append(items, v.ToChartClassifyItems())
  147. }
  148. return
  149. }
  150. func (m ChartPublicClassify) GetChartClassifyCount(classifyName string, parentId int, source int) (count int, err error) {
  151. sql := `SELECT COUNT(1) AS count FROM chart_public_classify WHERE parent_id=? AND chart_public_classify_name=? AND source = ? `
  152. err = global.DmSQL["data"].Raw(sql, parentId, classifyName, source).Scan(&count).Error
  153. return
  154. }
  155. // UpdateChartClassifyNameAndNamePath
  156. // @Description: 更新分类信息
  157. // @author: Roc
  158. // @receiver m
  159. // @datetime 2024-12-05 09:27:33
  160. // @param cols []string
  161. // @param oldClassifyNamePath string
  162. // @param newClassifyNamePath string
  163. // @return err error
  164. func (m *ChartPublicClassify) UpdateChartClassifyNameAndNamePath(cols []string, oldClassifyNamePath, newClassifyNamePath string) (err error) {
  165. tx := global.DmSQL["data"].Begin()
  166. defer func() {
  167. if err != nil {
  168. _ = tx.Rollback()
  169. return
  170. }
  171. _ = tx.Commit()
  172. }()
  173. // 变更分类信息
  174. err = tx.Select(cols).Updates(m).Error
  175. if err != nil {
  176. return
  177. }
  178. // 更改子分类的完整的路径
  179. if oldClassifyNamePath != `` && newClassifyNamePath != `` {
  180. sql := `UPDATE chart_public_classify SET chart_public_classify_name_path = REPLACE(chart_public_classify_name_path,?,?) WHERE chart_public_classify_id_path LIKE ?`
  181. err = tx.Exec(sql, oldClassifyNamePath, newClassifyNamePath, fmt.Sprint(m.ChartPublicClassifyIdPath+`,%`)).Error
  182. if err != nil {
  183. return
  184. }
  185. }
  186. return
  187. }
  188. // GetChartClassifyMaxSort 获取分类下最大的排序数
  189. func (m ChartPublicClassify) GetChartClassifyMaxSort(parentId int, source int) (sort int, err error) {
  190. sql := `SELECT COALESCE(Max(sort), 0) AS sort FROM chart_public_classify WHERE parent_id=? AND source=? `
  191. err = global.DmSQL["data"].Raw(sql, parentId, source).Scan(&sort).Error
  192. return
  193. }
  194. // GetChartInfoCountByClassifyIdList
  195. // @Description: 根据公共分类id集合获取名下指标数量
  196. // @author: Roc
  197. // @receiver m
  198. // @datetime 2024-12-05 09:59:56
  199. // @param classifyIdList []int
  200. // @return count int
  201. // @return err error
  202. func (m ChartPublicClassify) GetChartInfoCountByClassifyIdList(classifyIdList []int) (count int, err error) {
  203. if len(classifyIdList) <= 0 {
  204. return
  205. }
  206. sql := `SELECT COUNT(1) total FROM chart_info WHERE chart_public_classify_id IN (?) `
  207. err = global.DmSQL["data"].Raw(sql, classifyIdList).Scan(&count).Error
  208. return
  209. }
  210. func (m *ChartPublicClassify) GetAllChildClassifyIdList() (items []int, err error) {
  211. sql := ` SELECT chart_public_classify_id FROM chart_public_classify WHERE chart_public_classify_id_path LIKE ? ORDER BY create_time DESC `
  212. err = global.DmSQL["data"].Raw(sql, fmt.Sprint(m.ChartPublicClassifyIdPath+`,%`)).Scan(&items).Error
  213. return
  214. }
  215. // BatchesDel
  216. // @Description: 根据分类id批量删除
  217. // @author: Roc
  218. // @receiver m
  219. // @datetime 2024-12-05 11:13:06
  220. // @param classifyIdList []int
  221. // @return err error
  222. func (m *ChartPublicClassify) BatchesDel(classifyIdList []int) (err error) {
  223. sql := ` DELETE FROM chart_public_classify WHERE chart_public_classify_id IN (?) `
  224. err = global.DmSQL["data"].Exec(sql, classifyIdList).Error
  225. return
  226. }
  227. // GetChartPublicClassifyByParentIdAndName 根据父级ID和名称获取分类
  228. func GetChartPublicClassifyByParentIdAndName(source, parentId int, classifyName string, classifyId int) (item *ChartClassify, err error) {
  229. o := global.DmSQL["data"]
  230. sql := `SELECT * FROM chart_public_classify WHERE source = ? AND parent_id = ? AND chart_public_classify_name = ? AND chart_public_classify_id <> ? LIMIT 1`
  231. err = o.Raw(sql, source, parentId, classifyName, classifyId).First(&item).Error
  232. return
  233. }