| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package models
- import (
- "time"
- "github.com/google/uuid"
- "gorm.io/datatypes"
- "gorm.io/gorm"
- )
- // IntegrationSource 接入源
- type IntegrationSource struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"ID"`
- Name string `gorm:"type:varchar(50)" json:"Name"`
- DriverType string `gorm:"type:varchar(20)" json:"DriverType"` // HA, MODBUS
- Status string `gorm:"type:varchar(20)" json:"Status"`
- Config datatypes.JSON `gorm:"type:jsonb" json:"Config"` // IP, Token
- DeviceCount int64 `gorm:"-" json:"DeviceCount"` // 关联设备数量
- }
- // Device 设备资产
- type Device struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
- SourceID uuid.UUID `gorm:"type:uuid"`
- ExternalID string `gorm:"type:varchar(100)"`
- Name string `gorm:"type:varchar(100)"`
- DeviceType string `gorm:"type:varchar(50)"` // ELECTRIC, WATER, GAS, INDUSTRIAL_ELECTRIC
- LocationID *uuid.UUID `gorm:"type:uuid"` // 关联空间
- AttributeMapping datatypes.JSON `gorm:"type:jsonb"` // 属性映射
- Status string `gorm:"type:varchar(20)"` // NORMAL, INACTIVE
- }
- // SysLocation 空间拓扑
- type SysLocation struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
- ParentID *uuid.UUID `gorm:"type:uuid"`
- Name string `gorm:"type:varchar(50)"`
- Type string `gorm:"type:varchar(20)"` // PARK, BUILDING, FLOOR, ROOM
- }
- // AlarmLog 告警记录
- type AlarmLog struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
- DeviceID uuid.UUID `gorm:"type:uuid"`
- Type string `gorm:"type:varchar(50)"`
- Content string `gorm:"type:text"`
- Status string `gorm:"type:varchar(20)"` // ACTIVE, ACKED, RESOLVED
- StartTime time.Time `gorm:"type:timestamp"`
- }
- // SysOperLog 操作日志
- type SysOperLog struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
- UserID uuid.UUID `gorm:"type:uuid"`
- Action string `gorm:"type:varchar(50)"` // TURN_ON, UPDATE_CONFIG
- Target string `gorm:"type:varchar(100)"`
- Result bool `gorm:"type:boolean"`
- Time time.Time `gorm:"type:timestamp"`
- }
- // InspectionLedger 巡检台账
- type InspectionLedger struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
- DeviceID uuid.UUID `gorm:"type:uuid"`
- InspectorID uuid.UUID `gorm:"type:uuid"`
- Status string `gorm:"type:varchar(20)"` // NORMAL, ABNORMAL
- CalibratedPower float64 `gorm:"type:numeric(10,2)"`
- CheckTime time.Time `gorm:"type:timestamp"`
- }
- // SysRole 角色
- type SysRole struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
- Name string `gorm:"type:varchar(50)"`
- RoleKey string `gorm:"type:varchar(50)"` // admin, common
- DataScope string `gorm:"type:varchar(20)"` // 1:ALL, 4:SELF
- MenuCheckStrictly bool `gorm:"default:true"`
- Status string `gorm:"type:varchar(1)"` // 0:Normal, 1:Disable
- }
- // SysUserRole 用户角色关联
- type SysUserRole struct {
- UserID uuid.UUID `gorm:"type:uuid;primary_key"`
- RoleID uuid.UUID `gorm:"type:uuid;primary_key"`
- }
- // SysConfig 系统配置
- type SysConfig struct {
- ConfigID int `gorm:"primary_key;autoIncrement"`
- ConfigKey string `gorm:"type:varchar(100);unique"`
- ConfigValue string `gorm:"type:text"`
- ConfigType string `gorm:"type:varchar(10)"` // Y/N
- Remark string `gorm:"type:varchar(500)"`
- }
- // User 用户
- type User struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
- Username string `gorm:"type:varchar(50);unique"`
- Password string `gorm:"type:varchar(100)"` // In production, use hash
- Role string `gorm:"type:varchar(20)"` // ADMIN, USER (Deprecated, use SysUserRole)
- Name string `gorm:"type:varchar(50)"`
- Email *string `gorm:"type:varchar(100);unique"`
- PhoneNumber *string `gorm:"type:varchar(20);unique"`
- Status string `gorm:"type:varchar(1)"` // 0:Normal, 1:Disable
- CreatedAt time.Time `gorm:"autoCreateTime"`
- }
- // AlarmRuleBinding 告警规则绑定关系
- type AlarmRuleBinding struct {
- RuleID uuid.UUID `gorm:"type:uuid;primary_key"`
- TargetID uuid.UUID `gorm:"type:uuid;primary_key"` // DeviceID or LocationID
- TargetType string `gorm:"type:varchar(20)"` // "DEVICE" or "SPACE"
- }
- // AlarmRule 告警规则配置
- type AlarmRule struct {
- ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
- Name string `gorm:"type:varchar(100)" json:"name"`
-
- // Legacy fields for compatibility with existing DB schema
- TargetType string `gorm:"type:varchar(20)" json:"-"`
- TargetID uuid.UUID `gorm:"type:uuid" json:"-"`
- Metric string `gorm:"type:varchar(50)" json:"metric"` // voltage, current, power...
- Operator string `gorm:"type:varchar(10)" json:"operator"` // >, <, >=, <=, =
- Threshold float64 `gorm:"type:numeric(10,2)" json:"threshold"`
- Duration int `gorm:"default:0" json:"duration"` // 持续时间(秒)
- SilencePeriod int `gorm:"default:300" json:"silence_period"` // 静默周期(秒)
- Priority string `gorm:"type:varchar(20)" json:"priority"` // CRITICAL, WARNING, INFO
- Message string `gorm:"type:varchar(255)" json:"message"`
- Enabled bool `gorm:"default:true" json:"enabled"`
- CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
-
- // Virtual field for API handling
- Bindings []AlarmRuleBinding `gorm:"foreignKey:RuleID" json:"bindings,omitempty"`
- }
- func TableName(name string) func(tx *gorm.DB) *gorm.DB {
- return func(tx *gorm.DB) *gorm.DB {
- return tx.Table(name)
- }
- }
|