edb_classify.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package models
  2. import (
  3. "eta/eta_index_lib/utils"
  4. "github.com/beego/beego/v2/client/orm"
  5. "strconv"
  6. "time"
  7. )
  8. type EdbClassify struct {
  9. ClassifyId int `orm:"column(classify_id);pk"`
  10. ClassifyType uint8 `description:"分类类型,0:普通指标分类,1:预测指标分类"`
  11. ClassifyName string `description:"分类名称"`
  12. ParentId int `description:"父级id"`
  13. HasData int `description:"是否含有指标数据"`
  14. CreateTime time.Time `description:"创建时间"`
  15. ModifyTime time.Time `description:"修改时间"`
  16. SysUserId int `description:"创建人id"`
  17. SysUserRealName string `description:"创建人姓名"`
  18. Level int `description:"层级"`
  19. UniqueCode string `description:"唯一编码"`
  20. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  21. }
  22. func AddEdbClassify(item *EdbClassify) (lastId int64, err error) {
  23. o := orm.NewOrm()
  24. lastId, err = o.Insert(item)
  25. return
  26. }
  27. func GetEdbClassifyById(classifyId int) (item *EdbClassify, err error) {
  28. o := orm.NewOrm()
  29. sql := `SELECT * FROM edb_classify WHERE classify_id=? `
  30. err = o.Raw(sql, classifyId).QueryRow(&item)
  31. return
  32. }
  33. type EdbClassifySimplify struct {
  34. ClassifyId int `description:"分类id"`
  35. ClassifyName string `description:"分类名称"`
  36. ParentId int
  37. }
  38. // 递归获取所有目录
  39. func GetClassifyAllByClassifyId(classifyId int) (resultList []*EdbClassifySimplify, err error) {
  40. o := orm.NewOrm()
  41. for {
  42. sql := ` SELECT * FROM edb_classify AS a WHERE a.classify_id=? order by sort asc,classify_id asc`
  43. item := new(EdbClassifySimplify)
  44. err = o.Raw(sql, classifyId).QueryRow(&item)
  45. if err != nil {
  46. break
  47. }
  48. if item.ClassifyId > 0 {
  49. resultList = append(resultList, item)
  50. classifyId = item.ParentId
  51. } else {
  52. break
  53. }
  54. }
  55. return resultList, err
  56. }
  57. // 判断分类名称是否存在
  58. func GetEdbClassifyCount(classifyName string, parentId int, classifyType uint8) (item *EdbClassify, err error) {
  59. o := orm.NewOrm()
  60. sql := `SELECT * FROM edb_classify WHERE parent_id=? AND classify_name=? AND classify_type = ? `
  61. err = o.Raw(sql, parentId, classifyName, classifyType).QueryRow(&item)
  62. return
  63. }
  64. // GetEdbClassifyMaxSort 获取分类下最大的排序数
  65. func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (sort int, err error) {
  66. o := orm.NewOrm()
  67. sql := `SELECT Max(sort) AS sort FROM edb_classify WHERE parent_id=? AND classify_type=? `
  68. err = o.Raw(sql, parentId, classifyType).QueryRow(&sort)
  69. return
  70. }
  71. type AddEdbClassifyReq struct {
  72. ClassifyName string `description:"分类名称"`
  73. ParentId int `description:"父级id,第一级传0"`
  74. Level int `description:"层级,第一级传0,其余传上一级的层级"`
  75. ClassifyType uint8 `description:"分类类型,0:普通指标分类,1:预测指标分类"`
  76. }
  77. // AddEdbClassify 添加指标分类
  78. func SaveEdbClassify(classifyName string, parentId, level int, classifyType uint8, sysUserId, sysUserName string) (classifyInfo *EdbClassify, err error, errMsg string) {
  79. edbClassify, err := GetEdbClassifyCount(classifyName, parentId, classifyType)
  80. var isAdd bool
  81. if err != nil {
  82. if err.Error() == utils.ErrNoRow() {
  83. isAdd = true
  84. } else {
  85. errMsg = `判断名称是否已存在失败`
  86. return
  87. }
  88. }
  89. if edbClassify != nil && edbClassify.ClassifyId > 0 {
  90. classifyInfo = edbClassify
  91. return edbClassify, nil, ""
  92. } else {
  93. isAdd = true
  94. }
  95. if isAdd {
  96. sysUserIdInt, _ := strconv.Atoi(sysUserId)
  97. //获取该层级下最大的排序数
  98. maxSort, err := GetEdbClassifyMaxSort(parentId, classifyType)
  99. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  100. classifyInfo = &EdbClassify{
  101. //ClassifyId: 0,
  102. ClassifyType: classifyType,
  103. ClassifyName: classifyName,
  104. ParentId: parentId,
  105. HasData: 0,
  106. CreateTime: time.Now(),
  107. ModifyTime: time.Now(),
  108. SysUserId: sysUserIdInt,
  109. SysUserRealName: sysUserName,
  110. Level: level + 1,
  111. UniqueCode: utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
  112. Sort: maxSort,
  113. }
  114. classifyId, err := AddEdbClassify(classifyInfo)
  115. if err != nil {
  116. errMsg = "保存分类失败"
  117. }
  118. classifyInfo.ClassifyId = int(classifyId)
  119. }
  120. return
  121. }