package dao import ( "time" ) type IntelligentLightGroupRelation struct { IntelligentLight LightStrategy LampPoleGroup } type IntelligentLight struct { ID int `gorm:"primary key" json:"id"` //编号 LightID int `gorm:"type:int" json:"lightID"` //照明策略id RelationType int `gorm:"type:int" json:"relationType"` //关联类型1=灯控,2=灯杆分组 Rid int `gorm:"type:int" json:"rid"` //关联外键ID 根据type类型关联至其表 CreateTime time.Time `gorm:"type:timestamp" json:"createTime"` //新增时间 CreateUser string `gorm:"type:varchar(60)" json:"createUser"` //新增记录操作用户ID UpdateTime time.Time `gorm:"type:timestamp" json:"updateTime"` //修改时间 UpdateUser string `gorm:"type:varchar(60)" json:"updateUser"` //修改用户 IsDeleted int `gorm:"type:int;default 0" json:"isDeleted"` //是否删除 0=未删除,1=删除 TenantID string `gorm:"type:varchar(12)" json:"tenantID"` //租户id } func (IntelligentLight) TableName() string { return "t_strategy_intelligent_light" } func (c *IntelligentLight) BatchGet(ids []int) ([]IntelligentLight, error) { var intelligentLights []IntelligentLight err := Db.Debug().Model(&c).Where("light_id in ? and is_deleted = 0", ids).Find(&intelligentLights).Error return intelligentLights, err } func (c *IntelligentLight) GetByRidAndType() ([]IntelligentLight, error) { var intelligentLights []IntelligentLight db := Db.Debug().Model(&c).Where("relation_type = ? and is_deleted = 0 and tenant_id = ?", c.RelationType, c.TenantID) if c.Rid > 0 { db = db.Where("rid = ?", c.Rid) } err := db.Find(&intelligentLights).Error return intelligentLights, err } func (c *IntelligentLight) GetByType() ([]IntelligentLightGroupRelation, error) { var groupRelations []IntelligentLightGroupRelation selectStr := "lig.*,gro.id,gro.pole_group_name,b.light_name,b.light_sn,b.start_time,b.end_time,b.is_all_year,b.is_automatic_renewal" whereStr := "lig.is_deleted = 0 and relation_type = 2 and lig.tenant_id = ? and gro.is_deleted = 0" whereValue := []interface{}{c.TenantID} if c.Rid > 0 { whereStr += " and lig.rid = ?" whereValue = append(whereValue, c.Rid) } err := Db.Debug().Table("t_strategy_intelligent_light lig").Select(selectStr). Joins("left join t_dev_lamp_pole_group gro ON lig.rid = gro.id"). Joins("left join t_strategy_light b ON b.id = lig.light_id"). Where(whereStr, whereValue...).Order("lig.create_time desc").Scan(&groupRelations).Error return groupRelations, err }