filedir.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package models
  2. import (
  3. orm "device-manage/common/global"
  4. "device-manage/tools"
  5. )
  6. type SysFileDir struct {
  7. Id int `json:"id"`
  8. Label string `json:"label" gorm:"type:varchar(255);"` // 名称
  9. PId int `json:"pId" gorm:"type:int(11);"` // 父id
  10. Sort int `json:"sort" gorm:""` //排序
  11. Path string `json:"path" gorm:"size:255;"` //
  12. CreateBy string `json:"createBy" gorm:"type:varchar(128);"` // 创建人
  13. UpdateBy string `json:"updateBy" gorm:"type:varchar(128);"` // 编辑人
  14. Children []SysFileDir `json:"children" gorm:"-"`
  15. DataScope string `json:"dataScope" gorm:"-"`
  16. Params string `json:"params" gorm:"-"`
  17. BaseModel
  18. }
  19. func (SysFileDir) TableName() string {
  20. return "sys_file_dir"
  21. }
  22. // 创建SysFileDir
  23. func (e *SysFileDir) Create() (SysFileDir, error) {
  24. var doc SysFileDir
  25. result := orm.Eloquent.Table(e.TableName()).Create(&e)
  26. if result.Error != nil {
  27. err := result.Error
  28. return doc, err
  29. }
  30. path := "/" + tools.IntToString(e.Id)
  31. if int(e.PId) != 0 {
  32. var deptP SysFileDir
  33. orm.Eloquent.Table(e.TableName()).Where("id = ?", e.PId).First(&deptP)
  34. path = deptP.Path + path
  35. } else {
  36. path = "/0" + path
  37. }
  38. var mp = map[string]string{}
  39. mp["path"] = path
  40. if err := orm.Eloquent.Table(e.TableName()).Where("id = ?", e.Id).Updates(mp).Error; err != nil {
  41. err := result.Error
  42. return doc, err
  43. }
  44. doc = *e
  45. doc.Path = path
  46. return doc, nil
  47. }
  48. // 获取SysFileDir
  49. func (e *SysFileDir) Get() (SysFileDir, error) {
  50. var doc SysFileDir
  51. table := orm.Eloquent.Table(e.TableName())
  52. if e.Id != 0 {
  53. table = table.Where("id = ?", e.Id)
  54. }
  55. if err := table.First(&doc).Error; err != nil {
  56. return doc, err
  57. }
  58. return doc, nil
  59. }
  60. // 获取SysFileDir带分页
  61. func (e *SysFileDir) GetPage() ([]SysFileDir, int, error) {
  62. var doc []SysFileDir
  63. table := orm.Eloquent.Table(e.TableName())
  64. // 数据权限控制(如果不需要数据权限请将此处去掉)
  65. //dataPermission := new(DataPermission)
  66. //dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
  67. //table, err := dataPermission.GetDataScope(e.TableName(), table)
  68. //if err != nil {
  69. // return nil, 0, err
  70. //}
  71. var count int64
  72. if err := table.Find(&doc).Error; err != nil {
  73. return nil, 0, err
  74. }
  75. table.Where("`deleted_at` IS NULL").Count(&count)
  76. return doc, int(count), nil
  77. }
  78. // 更新SysFileDir
  79. func (e *SysFileDir) Update(id int) (update SysFileDir, err error) {
  80. if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).First(&update).Error; err != nil {
  81. return
  82. }
  83. path := "/" + tools.IntToString(e.Id)
  84. if int(e.Id) != 0 {
  85. var deptP SysFileDir
  86. orm.Eloquent.Table(e.TableName()).Where("id = ?", e.Id).First(&deptP)
  87. path = deptP.Path + path
  88. } else {
  89. path = "/0" + path
  90. }
  91. e.Path = path
  92. //if e.Path != "" && e.Path != update.Path {
  93. // return update, errors.New("上级不允许修改!")
  94. //}
  95. //参数1:是要修改的数据
  96. //参数2:是修改的数据
  97. if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
  98. return
  99. }
  100. return
  101. }
  102. // 删除SysFileDir
  103. func (e *SysFileDir) Delete(id int) (success bool, err error) {
  104. if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).Delete(&SysFileDir{}).Error; err != nil {
  105. success = false
  106. return
  107. }
  108. success = true
  109. return
  110. }
  111. //批量删除
  112. func (e *SysFileDir) BatchDelete(id []int) (Result bool, err error) {
  113. if err = orm.Eloquent.Table(e.TableName()).Where("id in (?)", id).Delete(&SysFileDir{}).Error; err != nil {
  114. return
  115. }
  116. Result = true
  117. return
  118. }
  119. func (e *SysFileDir) SetSysFileDir() ([]SysFileDir, error) {
  120. list, _, err := e.GetPage()
  121. m := make([]SysFileDir, 0)
  122. for i := 0; i < len(list); i++ {
  123. if list[i].PId != 0 {
  124. continue
  125. }
  126. info := SysFileDirDigui(&list, list[i])
  127. m = append(m, info)
  128. }
  129. return m, err
  130. }
  131. func SysFileDirDigui(deptlist *[]SysFileDir, menu SysFileDir) SysFileDir {
  132. list := *deptlist
  133. min := make([]SysFileDir, 0)
  134. for j := 0; j < len(list); j++ {
  135. if menu.Id != list[j].PId {
  136. continue
  137. }
  138. mi := SysFileDir{}
  139. mi.Id = list[j].Id
  140. mi.PId = list[j].PId
  141. mi.Label = list[j].Label
  142. mi.Sort = list[j].Sort
  143. mi.CreatedAt = list[j].CreatedAt
  144. mi.UpdatedAt = list[j].UpdatedAt
  145. mi.Children = []SysFileDir{}
  146. ms := SysFileDirDigui(deptlist, mi)
  147. min = append(min, ms)
  148. }
  149. menu.Children = min
  150. return menu
  151. }