Quellcode durchsuchen

灯控策略 新增接口

terry vor 3 Jahren
Ursprung
Commit
766018c44e

+ 2 - 2
app/device/dao/LightStrategyDao.go

@@ -10,8 +10,8 @@ type LightStrategy struct {
 	LightName          string    `gorm:"type:varchar(64)" json:"lightName"`            //策略名称
 	LightControlType   int       `gorm:"type:int" json:"lightControlType"`             //灯控类型 设置 1=485,2=nb-iot
 	OptoSensorID       int       `gorm:"type:int" json:"optoSensorID"`                 //光传感器ID
-	StartTime          string    `gorm:"type:date" json:"startTime"`                   //策略期限开始时间
-	EndTime            string    `gorm:"type:date" json:"endTime"`                     //策略期限结束时间
+	StartTime          string    `gorm:"type:varchar(60)" json:"startTime"`            //策略期限开始时间
+	EndTime            string    `gorm:"type:varchar(60)" json:"endTime"`              //策略期限结束时间
 	IsAllYear          int       `gorm:"type:int;default 1" json:"isAllYear"`          //全年设置2=是,1=否
 	IsAutomaticRenewal int       `gorm:"type:int;default 1" json:"isAutomaticRenewal"` //自动续期设置 2=是,1=否
 	CreateTime         time.Time `gorm:"type:datetime" json:"createTime"`              //新增时间

+ 4 - 0
app/device/dao/lightConditionDao.go

@@ -29,3 +29,7 @@ func (c *LightCondition) BatchGet(ids []int) ([]LightCondition, error) {
 	err := Db.Model(&c).Where("id in ?", ids).Find(&conditions).Error
 	return conditions, err
 }
+
+func (c *LightCondition) Save(conditions []LightCondition) error {
+	return Db.Model(&c).Save(&conditions).Error
+}

+ 12 - 4
app/device/dao/timeConditionDao.go

@@ -4,9 +4,9 @@ import "time"
 
 type TimeCondition struct {
 	ID         int       `gorm:"primary key" json:"id"`               //编号
-	LightId    int       `gorm:"type: int" json:"lightId"`            //照明策略id
-	StartTime  string    `gorm:"type:time" json:"startTime"`          //开始时间
-	EndTime    string    `gorm:"type:time" json:"endTime"`            //结束时间
+	LightId    int       `gorm:"type:int;default 0" json:"lightId"`   //照明策略id
+	StartTime  string    `gorm:"type:varchar(60)" json:"startTime"`   //开始时间
+	EndTime    string    `gorm:"type:varchar(60)" json:"endTime"`     //结束时间
 	Luminance  int       `gorm:"type:int " json:"luminance"`          //开灯亮度
 	Remark     string    `gorm:"type:varchar(255)" json:"remark"`     //备注
 	CreateTime time.Time `gorm:"type:datetime" json:"createTime"`     //新增时间
@@ -33,7 +33,7 @@ func (c *TimeCondition) BatchGet(ids []int) ([]TimeCondition, error) {
 
 func (c *TimeCondition) GetByLightId() ([]TimeCondition, error) {
 	var conditions []TimeCondition
-	err := Db.Debug().Model(&c).Where("light_id = ? and is_deleted = 0", c.LightId).Find(&conditions).Error
+	err := Db.Model(&c).Where("light_id = ? and is_deleted = 0", c.LightId).Find(&conditions).Error
 	return conditions, err
 }
 
@@ -42,3 +42,11 @@ func (c *TimeCondition) GetAll() ([]TimeCondition, error) {
 	err := Db.Model(&c).Find(&conditions).Error
 	return conditions, err
 }
+
+func (c *TimeCondition) Save() error {
+	return Db.Debug().Model(&c).Save(&c).Error
+}
+
+func (c *TimeCondition) Update() error {
+	return Db.Debug().Model(&c).Update(&c).Error
+}

+ 5 - 0
app/device/model/LightStrategy.go

@@ -28,3 +28,8 @@ type ReqLightStrategyRemove struct {
 	SN   int    `json:"sn"`   //sn
 	Name string `json:"name"` //名称
 }
+
+const (
+	TimeConditionNull    = "请将时间区间填写完整!"
+	TimeConditionInvalid = "时间区间开始时间不能大于结束时间,请重新调整!"
+)

+ 2 - 1
app/device/model/intelligentLighting.go

@@ -11,7 +11,8 @@ const (
 	RelationTypeLight         = 1 //关联类型 灯控
 	RelationTypeLampPoleGroup = 2 //关联类型 灯杆分组
 
-	IsYear = 2 //全年设置2=是,1=否
+	IsYear   = 2 //全年设置2=是,1=否
+	Sunshine = 2 //日出日落 设置 2=开启,1=不开启
 )
 
 type RspIntelligentLightDetail struct {

+ 32 - 30
app/device/service/LightStrategyService.go

@@ -41,11 +41,13 @@ func (s *lightStrategyService) Get(id int) (*model.LightStrategyDetail, *util.Er
 func (s *lightStrategyService) CreateOrUpdate(req *model.LightStrategyDetail) *util.Errors {
 	// 创建查询实例
 	strategy := req
+	fmt.Printf("CreateOrUpdate strategy = %+v \n", strategy)
 	if strategy.TenantID == "" {
 		strategy.TenantID = "000000" // todo: 使用登录态
 	}
 	strategy.UpdateUser = "TODO" // todo: 使用登录态
 	strategy.UpdateTime = time.Now()
+
 	if len(strategy.LightConditionList) == 0 {
 		for i := 0; i < len(strategy.LightConditionDetailList); i++ {
 			var detail = strategy.LightConditionDetailList[i]
@@ -83,18 +85,6 @@ func (s *lightStrategyService) CreateOrUpdate(req *model.LightStrategyDetail) *u
 			fmt.Printf("Create GetstrategyID err \n")
 			return util.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
 		}
-		//todo 不能先存
-		if err := strategy.Create(); err != nil {
-			fmt.Printf("Create err = %s \n", err.Error())
-			return util.FailResponse(err.Error(), nil)
-		}
-		return util.SuccessResponse(util.Succeeded, nil)
-	}
-
-	//todo 不能先存
-	if err := strategy.Update(); err != nil {
-		fmt.Printf("Update err = %s \n", err.Error())
-		return util.FailResponse(err.Error(), nil)
 	}
 
 	//用于比较光照度重叠
@@ -137,21 +127,19 @@ func (s *lightStrategyService) CreateOrUpdate(req *model.LightStrategyDetail) *u
 	}
 
 	// 时间策略参数校验
+	var timeList []dao.TimeCondition
 	for _, timeCondition := range strategy.TimeConditionList {
 		if timeCondition.Sunshine == 0 {
 			timeCondition.Sunshine = 1
 		}
 		if timeCondition.Sunshine == 1 && (timeCondition.StartTime == "" && timeCondition.EndTime == "") {
-			//todo 请将时间区间填写完整!
-			return nil
+			return util.FailResponse(model.TimeConditionNull, nil)
 		}
 		if (timeCondition.StartTime == "" && timeCondition.EndTime != "") || (timeCondition.
 			StartTime != "" && timeCondition.EndTime == "") {
-			//todo 请将时间区间填写完整!
-			return nil
+			return util.FailResponse(model.TimeConditionNull, nil)
 		} else if timeCondition.EndTime != "" && timeCondition.StartTime >= timeCondition.EndTime {
-			//todo 时间区间开始时间不能大于结束时间,请重新调整!
-			return nil
+			return util.FailResponse(model.TimeConditionInvalid, nil)
 		}
 		if timeCondition.ID == 0 {
 			timeCondition.CreateUser = "TODO" //todo 登录态
@@ -161,18 +149,32 @@ func (s *lightStrategyService) CreateOrUpdate(req *model.LightStrategyDetail) *u
 			timeCondition.UpdateTime = time.Now()
 		}
 		timeCondition.LightId = req.ID
-	}
-
-	//todo create or update
-	strategyDao := &dao.LightStrategy{}
-	if strategy.ID == 0 {
-		strategyDao.Create()
-	} else {
-		strategyDao.Update()
-	}
-
-	TimeConditionService.Save(strategy.TimeConditionList)
-	LightConditionService.Save(strategy.LightConditionList)
+		if timeCondition.ID == 0 {
+			timeCondition.CreateUser = "TODO" //todo 登录态
+			timeCondition.CreateTime = time.Now()
+		}
+		timeCondition.UpdateUser = "TODO" //todo 登录态
+		timeCondition.UpdateTime = time.Now()
+
+		timeList = append(timeList, timeCondition)
+	}
+
+	//存数据库
+	//if strategy.ID == 0 {
+	//    if err := strategy.Create(); err != nil {
+	//        fmt.Printf("Create err = %s \n", err.Error())
+	//        return util.FailResponse(err.Error(), nil)
+	//    }
+	//} else {
+	//    if err := strategy.Update(); err != nil {
+	//        fmt.Printf("Update err = %s \n", err.Error())
+	//        return util.FailResponse(err.Error(), nil)
+	//    }
+	//}
+	fmt.Printf("timeList = %+v \n", timeList)
+	//存策略条件
+	_ = TimeConditionService.Save(timeList)
+	//_ = LightConditionService.Save(strategy.LightConditionList)
 
 	//todo 调用设备云端的新增或修改
 

+ 3 - 2
app/device/service/lightConditionService.go

@@ -57,6 +57,7 @@ func (s *lightConditionService) Remove(id int) *util.Errors {
 	return nil
 }
 
-func (s *lightConditionService) Save([]dao.LightCondition) error {
-	return nil
+func (s *lightConditionService) Save(conditions []dao.LightCondition) error {
+	condition := &dao.LightCondition{}
+	return condition.Save(conditions)
 }

+ 8 - 1
app/device/service/timeConditionService.go

@@ -23,7 +23,14 @@ func (s *timeConditionService) Get(id int) (*dao.TimeCondition, *util.Errors) {
 	return condition, nil
 }
 
-func (s *timeConditionService) Save([]dao.TimeCondition) error {
+func (s *timeConditionService) Save(conditions []dao.TimeCondition) error {
+	for _, condition := range conditions {
+		if condition.ID == 0 {
+			condition.Save()
+		} else {
+			condition.Update()
+		}
+	}
 	return nil
 }