schema.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package models
  2. import (
  3. "time"
  4. "github.com/google/uuid"
  5. "gorm.io/datatypes"
  6. "gorm.io/gorm"
  7. )
  8. // IntegrationSource 接入源
  9. type IntegrationSource struct {
  10. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"ID"`
  11. Name string `gorm:"type:varchar(50)" json:"Name"`
  12. DriverType string `gorm:"type:varchar(20)" json:"DriverType"` // HA, MODBUS
  13. Status string `gorm:"type:varchar(20)" json:"Status"`
  14. Config datatypes.JSON `gorm:"type:jsonb" json:"Config"` // IP, Token
  15. DeviceCount int64 `gorm:"-" json:"DeviceCount"` // 关联设备数量
  16. }
  17. // Device 设备资产
  18. type Device struct {
  19. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
  20. SourceID uuid.UUID `gorm:"type:uuid"`
  21. ExternalID string `gorm:"type:varchar(100)"`
  22. Name string `gorm:"type:varchar(100)"`
  23. DeviceType string `gorm:"type:varchar(50)"` // ELECTRIC, WATER, GAS, INDUSTRIAL_ELECTRIC
  24. LocationID *uuid.UUID `gorm:"type:uuid"` // 关联空间
  25. AttributeMapping datatypes.JSON `gorm:"type:jsonb"` // 属性映射
  26. Status string `gorm:"type:varchar(20)"` // NORMAL, INACTIVE
  27. }
  28. // SysLocation 空间拓扑
  29. type SysLocation struct {
  30. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
  31. ParentID *uuid.UUID `gorm:"type:uuid"`
  32. Name string `gorm:"type:varchar(50)"`
  33. Type string `gorm:"type:varchar(20)"` // PARK, BUILDING, FLOOR, ROOM
  34. }
  35. // AlarmLog 告警记录
  36. type AlarmLog struct {
  37. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
  38. DeviceID uuid.UUID `gorm:"type:uuid"`
  39. Type string `gorm:"type:varchar(50)"`
  40. Content string `gorm:"type:text"`
  41. Status string `gorm:"type:varchar(20)"` // ACTIVE, ACKED, RESOLVED
  42. StartTime time.Time `gorm:"type:timestamp"`
  43. }
  44. // SysOperLog 操作日志
  45. type SysOperLog struct {
  46. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
  47. UserID uuid.UUID `gorm:"type:uuid"`
  48. Action string `gorm:"type:varchar(50)"` // TURN_ON, UPDATE_CONFIG
  49. Target string `gorm:"type:varchar(100)"`
  50. Result bool `gorm:"type:boolean"`
  51. Time time.Time `gorm:"type:timestamp"`
  52. }
  53. // InspectionLedger 巡检台账
  54. type InspectionLedger struct {
  55. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
  56. DeviceID uuid.UUID `gorm:"type:uuid"`
  57. InspectorID uuid.UUID `gorm:"type:uuid"`
  58. Status string `gorm:"type:varchar(20)"` // NORMAL, ABNORMAL
  59. CalibratedPower float64 `gorm:"type:numeric(10,2)"`
  60. CheckTime time.Time `gorm:"type:timestamp"`
  61. }
  62. // SysRole 角色
  63. type SysRole struct {
  64. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
  65. Name string `gorm:"type:varchar(50)"`
  66. RoleKey string `gorm:"type:varchar(50)"` // admin, common
  67. DataScope string `gorm:"type:varchar(20)"` // 1:ALL, 4:SELF
  68. MenuCheckStrictly bool `gorm:"default:true"`
  69. Status string `gorm:"type:varchar(1)"` // 0:Normal, 1:Disable
  70. }
  71. // SysUserRole 用户角色关联
  72. type SysUserRole struct {
  73. UserID uuid.UUID `gorm:"type:uuid;primary_key"`
  74. RoleID uuid.UUID `gorm:"type:uuid;primary_key"`
  75. }
  76. // SysConfig 系统配置
  77. type SysConfig struct {
  78. ConfigID int `gorm:"primary_key;autoIncrement"`
  79. ConfigKey string `gorm:"type:varchar(100);unique"`
  80. ConfigValue string `gorm:"type:text"`
  81. ConfigType string `gorm:"type:varchar(10)"` // Y/N
  82. Remark string `gorm:"type:varchar(500)"`
  83. }
  84. // User 用户
  85. type User struct {
  86. ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
  87. Username string `gorm:"type:varchar(50);unique"`
  88. Password string `gorm:"type:varchar(100)"` // In production, use hash
  89. Role string `gorm:"type:varchar(20)"` // ADMIN, USER (Deprecated, use SysUserRole)
  90. Name string `gorm:"type:varchar(50)"`
  91. Email *string `gorm:"type:varchar(100);unique"`
  92. PhoneNumber *string `gorm:"type:varchar(20);unique"`
  93. Status string `gorm:"type:varchar(1)"` // 0:Normal, 1:Disable
  94. CreatedAt time.Time `gorm:"autoCreateTime"`
  95. }
  96. func TableName(name string) func(tx *gorm.DB) *gorm.DB {
  97. return func(tx *gorm.DB) *gorm.DB {
  98. return tx.Table(name)
  99. }
  100. }