dictdata.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package models
  2. import (
  3. "errors"
  4. orm "device-manage/common/global"
  5. "device-manage/tools"
  6. )
  7. type DictData struct {
  8. DictCode int `gorm:"primary_key;auto_increment;" json:"dictCode" example:"1"` //字典编码
  9. DictSort int `gorm:"" json:"dictSort"` //显示顺序
  10. DictLabel string `gorm:"size:128;" json:"dictLabel"` //数据标签
  11. DictValue string `gorm:"size:255;" json:"dictValue"` //数据键值
  12. DictType string `gorm:"size:64;" json:"dictType"` //字典类型
  13. CssClass string `gorm:"size:128;" json:"cssClass"` //
  14. ListClass string `gorm:"size:128;" json:"listClass"` //
  15. IsDefault string `gorm:"size:8;" json:"isDefault"` //
  16. Status string `gorm:"size:4;" json:"status"` //状态
  17. Default string `gorm:"size:8;" json:"default"` //
  18. CreateBy string `gorm:"size:64;" json:"createBy"` //
  19. UpdateBy string `gorm:"size:64;" json:"updateBy"` //
  20. Remark string `gorm:"size:255;" json:"remark"` //备注
  21. BaseModel
  22. Params string `gorm:"-" json:"params"`
  23. DataScope string `gorm:"-" json:"dataScope"`
  24. }
  25. func (DictData) TableName() string {
  26. return "sys_dict_data"
  27. }
  28. func (e *DictData) Create() (DictData, error) {
  29. var doc DictData
  30. var i int64
  31. if err := orm.Eloquent.Table(e.TableName()).
  32. Where("dict_type = ?", e.DictType).
  33. Where("dict_label=? or (dict_label=? and dict_value = ?)", e.DictLabel, e.DictLabel, e.DictValue).
  34. Count(&i).Error; err != nil {
  35. return doc, err
  36. }
  37. if i > 0 {
  38. return doc, errors.New("字典标签或者字典键值已经存在!")
  39. }
  40. result := orm.Eloquent.Table(e.TableName()).Create(&e)
  41. if result.Error != nil {
  42. err := result.Error
  43. return doc, err
  44. }
  45. doc = *e
  46. return doc, nil
  47. }
  48. func (e *DictData) GetByCode() (DictData, error) {
  49. var doc DictData
  50. table := orm.Eloquent.Table(e.TableName())
  51. if e.DictCode != 0 {
  52. table = table.Where("dict_code = ?", e.DictCode)
  53. }
  54. if e.DictLabel != "" {
  55. table = table.Where("dict_label = ?", e.DictLabel)
  56. }
  57. if e.DictType != "" {
  58. table = table.Where("dict_type = ?", e.DictType)
  59. }
  60. if err := table.First(&doc).Error; err != nil {
  61. return doc, err
  62. }
  63. return doc, nil
  64. }
  65. func (e *DictData) Get() ([]DictData, error) {
  66. var doc []DictData
  67. table := orm.Eloquent.Table(e.TableName())
  68. if e.DictCode != 0 {
  69. table = table.Where("dict_code = ?", e.DictCode)
  70. }
  71. if e.DictLabel != "" {
  72. table = table.Where("dict_label = ?", e.DictLabel)
  73. }
  74. if e.DictType != "" {
  75. table = table.Where("dict_type = ?", e.DictType)
  76. }
  77. if err := table.Order("dict_sort").Find(&doc).Error; err != nil {
  78. return doc, err
  79. }
  80. return doc, nil
  81. }
  82. func (e *DictData) GetPage(pageSize int, pageIndex int) ([]DictData, int, error) {
  83. var doc []DictData
  84. table := orm.Eloquent.Table(e.TableName())
  85. if e.DictCode != 0 {
  86. table = table.Where("dict_code = ?", e.DictCode)
  87. }
  88. if e.DictType != "" {
  89. table = table.Where("dict_type = ?", e.DictType)
  90. }
  91. if e.DictLabel != "" {
  92. table = table.Where("dict_label = ?", e.DictLabel)
  93. }
  94. if e.Status != "" {
  95. table = table.Where("status = ?", e.Status)
  96. }
  97. // 数据权限控制
  98. dataPermission := new(DataPermission)
  99. dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
  100. table, err := dataPermission.GetDataScope("sys_dict_data", table)
  101. if err != nil {
  102. return nil, 0, err
  103. }
  104. var count int64
  105. if err := table.Order("dict_sort").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
  106. return nil, 0, err
  107. }
  108. //table.Where("`deleted_at` IS NULL").Count(&count)
  109. return doc, int(count), nil
  110. }
  111. func (e *DictData) Update(id int) (update DictData, err error) {
  112. if err = orm.Eloquent.Table(e.TableName()).Where("dict_code = ?", id).First(&update).Error; err != nil {
  113. return
  114. }
  115. if e.DictLabel != "" && e.DictLabel != update.DictLabel {
  116. return update, errors.New("标签不允许修改!")
  117. }
  118. if e.DictValue != "" && e.DictValue != update.DictValue {
  119. return update, errors.New("键值不允许修改!")
  120. }
  121. //参数1:是要修改的数据
  122. //参数2:是修改的数据
  123. if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
  124. return
  125. }
  126. return
  127. }
  128. func (e *DictData) Delete(id int) (success bool, err error) {
  129. if err = orm.Eloquent.Table(e.TableName()).Where("dict_code = ?", id).Delete(&DictData{}).Error; err != nil {
  130. success = false
  131. return
  132. }
  133. success = true
  134. return
  135. }
  136. func (e *DictData) BatchDelete(id []int) (Result bool, err error) {
  137. if err = orm.Eloquent.Table(e.TableName()).Where("dict_code in (?)", id).Delete(&DictData{}).Error; err != nil {
  138. return
  139. }
  140. Result = true
  141. return
  142. }