systables.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package tools
  2. import (
  3. "strings"
  4. "device-manage/app/admin/models"
  5. orm "device-manage/common/global"
  6. )
  7. type SysTables struct {
  8. TableId int `gorm:"primary_key;auto_increment" json:"tableId"` //表编码
  9. TBName string `gorm:"column:table_name;size:255;" json:"tableName"` //表名称
  10. TableComment string `gorm:"size:255;" json:"tableComment"` //表备注
  11. ClassName string `gorm:"size:255;" json:"className"` //类名
  12. TplCategory string `gorm:"size:255;" json:"tplCategory"` //
  13. PackageName string `gorm:"size:255;" json:"packageName"` //包名
  14. ModuleName string `gorm:"size:255;" json:"moduleName"` //模块名
  15. BusinessName string `gorm:"size:255;" json:"businessName"` //
  16. FunctionName string `gorm:"size:255;" json:"functionName"` //功能名称
  17. FunctionAuthor string `gorm:"size:255;" json:"functionAuthor"` //功能作者
  18. PkColumn string `gorm:"size:255;" json:"pkColumn"`
  19. PkGoField string `gorm:"size:255;" json:"pkGoField"`
  20. PkJsonField string `gorm:"size:255;" json:"pkJsonField"`
  21. Options string `gorm:"size:255;" json:"options"`
  22. TreeCode string `gorm:"size:255;" json:"treeCode"`
  23. TreeParentCode string `gorm:"size:255;" json:"treeParentCode"`
  24. TreeName string `gorm:"size:255;" json:"treeName"`
  25. Tree bool `gorm:"size:1;" json:"tree"`
  26. Crud bool `gorm:"size:1;" json:"crud"`
  27. Remark string `gorm:"size:255;" json:"remark"`
  28. IsDataScope int `gorm:"size:1;" json:"isDataScope"`
  29. IsActions int `gorm:"size:1;" json:"isActions"`
  30. IsAuth int `gorm:"size:1;" json:"isAuth"`
  31. IsLogicalDelete string `gorm:"size:1;" json:"isLogicalDelete"`
  32. LogicalDelete bool `gorm:"size:1;" json:"logicalDelete"`
  33. LogicalDeleteColumn string `gorm:"size:128;" json:"logicalDeleteColumn"`
  34. CreateBy string `gorm:"size:128;" json:"createBy"`
  35. UpdateBy string `gorm:"size:128;" json:"updateBy"`
  36. DataScope string `gorm:"-" json:"dataScope"`
  37. Params Params `gorm:"-" json:"params"`
  38. Columns []SysColumns `gorm:"-" json:"columns"`
  39. models.BaseModel
  40. }
  41. func (SysTables) TableName() string {
  42. return "sys_tables"
  43. }
  44. type Params struct {
  45. TreeCode string `gorm:"-" json:"treeCode"`
  46. TreeParentCode string `gorm:"-" json:"treeParentCode"`
  47. TreeName string `gorm:"-" json:"treeName"`
  48. }
  49. func (e *SysTables) GetPage(pageSize int, pageIndex int) ([]SysTables, int, error) {
  50. var doc []SysTables
  51. table := orm.Eloquent.Table("sys_tables")
  52. if e.TBName != "" {
  53. table = table.Where("table_name = ?", e.TBName)
  54. }
  55. if e.TableComment != "" {
  56. table = table.Where("table_comment = ?", e.TableComment)
  57. }
  58. var count int64
  59. if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
  60. return nil, 0, err
  61. }
  62. //table.Where("`deleted_at` IS NULL").Count(&count)
  63. return doc, int(count), nil
  64. }
  65. func (e *SysTables) Get() (SysTables, error) {
  66. var doc SysTables
  67. var err error
  68. table := orm.Eloquent.Table("sys_tables")
  69. if e.TBName != "" {
  70. table = table.Where("table_name = ?", e.TBName)
  71. }
  72. if e.TableId != 0 {
  73. table = table.Where("table_id = ?", e.TableId)
  74. }
  75. if e.TableComment != "" {
  76. table = table.Where("table_comment = ?", e.TableComment)
  77. }
  78. if err := table.First(&doc).Error; err != nil {
  79. return doc, err
  80. }
  81. var col SysColumns
  82. col.TableId = doc.TableId
  83. if doc.Columns, err = col.GetList(); err != nil {
  84. return doc, err
  85. }
  86. return doc, nil
  87. }
  88. func (e *SysTables) GetTree() ([]SysTables, error) {
  89. var doc []SysTables
  90. var err error
  91. table := orm.Eloquent.Table("sys_tables")
  92. if e.TBName != "" {
  93. table = table.Where("table_name = ?", e.TBName)
  94. }
  95. if e.TableId != 0 {
  96. table = table.Where("table_id = ?", e.TableId)
  97. }
  98. if e.TableComment != "" {
  99. table = table.Where("table_comment = ?", e.TableComment)
  100. }
  101. if err := table.Find(&doc).Error; err != nil {
  102. return doc, err
  103. }
  104. for i := 0; i < len(doc); i++ {
  105. var col SysColumns
  106. //col.FkCol = append(col.FkCol, SysColumns{ColumnId: 0, ColumnName: "请选择"})
  107. col.TableId = doc[i].TableId
  108. if doc[i].Columns, err = col.GetList(); err != nil {
  109. return doc, err
  110. }
  111. }
  112. return doc, nil
  113. }
  114. func (e *SysTables) Create() (SysTables, error) {
  115. var doc SysTables
  116. result := orm.Eloquent.Table("sys_tables").Create(&e)
  117. if result.Error != nil {
  118. err := result.Error
  119. return doc, err
  120. }
  121. doc = *e
  122. for i := 0; i < len(e.Columns); i++ {
  123. e.Columns[i].TableId = doc.TableId
  124. e.Columns[i].Create()
  125. }
  126. return doc, nil
  127. }
  128. func (e *SysTables) Update() (update SysTables, err error) {
  129. //if err = orm.Eloquent.Table("sys_tables").First(&update, e.TableId).Error; err != nil {
  130. // return
  131. //}
  132. //参数1:是要修改的数据
  133. //参数2:是修改的数据
  134. if err = orm.Eloquent.Table("sys_tables").Where("table_id = ?", e.TableId).Updates(&e).Error; err != nil {
  135. return
  136. }
  137. tableNames := make([]string, 0)
  138. for i := range e.Columns {
  139. if e.Columns[i].FkTableName != "" {
  140. tableNames = append(tableNames, e.Columns[i].FkTableName)
  141. }
  142. }
  143. tables := make([]SysTables, 0)
  144. tableMap := make(map[string]*SysTables)
  145. if len(tableNames) > 0 {
  146. if err = orm.Eloquent.Table("sys_tables").Where("table_name in (?)", tableNames).Find(&tables).Error; err != nil {
  147. return
  148. }
  149. for i := range tables {
  150. tableMap[tables[i].TBName] = &tables[i]
  151. }
  152. }
  153. for i := 0; i < len(e.Columns); i++ {
  154. if e.Columns[i].FkTableName != "" {
  155. t, ok := tableMap[e.Columns[i].FkTableName]
  156. if ok {
  157. e.Columns[i].FkTableNameClass = t.ClassName
  158. e.Columns[i].FkTableNamePackage = t.ModuleName
  159. } else {
  160. tableNameList := strings.Split(e.Columns[i].FkTableName, "_")
  161. e.Columns[i].FkTableNameClass = ""
  162. e.Columns[i].FkTableNamePackage = ""
  163. for a := 0; a < len(tableNameList); a++ {
  164. strStart := string([]byte(tableNameList[a])[:1])
  165. strEnd := string([]byte(tableNameList[a])[1:])
  166. e.Columns[i].FkTableNameClass += strings.ToUpper(strStart) + strEnd
  167. e.Columns[i].FkTableNamePackage += strings.ToLower(strStart) + strings.ToLower(strEnd)
  168. }
  169. }
  170. }
  171. _, _ = e.Columns[i].Update()
  172. }
  173. return
  174. }
  175. func (e *SysTables) Delete() (success bool, err error) {
  176. tx := orm.Eloquent.Begin()
  177. defer func() {
  178. if err != nil {
  179. tx.Rollback()
  180. } else {
  181. tx.Commit()
  182. }
  183. }()
  184. if err = tx.Table("sys_tables").Delete(SysTables{}, "table_id = ?", e.TableId).Error; err != nil {
  185. success = false
  186. return
  187. }
  188. if err = tx.Table("sys_columns").Delete(SysColumns{}, "table_id = ?", e.TableId).Error; err != nil {
  189. success = false
  190. return
  191. }
  192. success = true
  193. return
  194. }
  195. func (e *SysTables) BatchDelete(id []int) (Result bool, err error) {
  196. if err = orm.Eloquent.Unscoped().Table(e.TableName()).Where(" table_id in (?)", id).Delete(&SysColumns{}).Error; err != nil {
  197. return
  198. }
  199. Result = true
  200. return
  201. }