[feat]网关子设备,直接上传,自动创建设备模型,无需手动创建

This commit is contained in:
PandaX
2023-10-17 11:14:18 +08:00
parent f26c5a2647
commit 55e399e5cb
23 changed files with 1457 additions and 74 deletions

View File

@@ -41,20 +41,25 @@ func (m *deviceModelImpl) Insert(data entity.Device) *entity.Device {
biz.IsTrue(list != nil && len(*list) == 0, "设备名称已经存在")
//2 创建认证TOKEN IOTHUB使用
token := GetDeviceToken(&data)
err := global.RedisDb.Set(data.Token, token.GetMarshal(), time.Hour*24*365)
biz.ErrIsNil(err, "设备缓存失败")
// 子网关不需要设置token
if data.DeviceType == global.GATEWAYS {
data.Token = ""
err := global.RedisDb.Set(data.Name, token.GetMarshal(), time.Hour*24*365)
biz.ErrIsNil(err, "设备缓存失败")
} else {
err := global.RedisDb.Set(data.Token, token.GetMarshal(), time.Hour*24*365)
biz.ErrIsNil(err, "设备缓存失败")
}
//3 添加设备
err = tx.Table(m.table).Create(&data).Error
err := tx.Table(m.table).Create(&data).Error
biz.ErrIsNil(err, "添加设备失败")
// 创建超级表 失败就
err = createDeviceTable(data.Pid, data.Name)
if err != nil {
tx.Rollback()
biz.ErrIsNil(err, "添加设备失败,设备表创建失败")
if data.Pid != "" {
err = createDeviceTable(data.Pid, data.Name)
if err != nil {
tx.Rollback()
biz.ErrIsNil(err, "添加设备失败,设备表创建失败")
}
}
tx.Commit()
return &data
@@ -152,6 +157,7 @@ func (m *deviceModelImpl) FindList(data entity.Device) *[]entity.DeviceRes {
return &list
}
// TODO 如果更改的是产品tdengine的设备表也要更改
func (m *deviceModelImpl) Update(data entity.Device) *entity.Device {
if data.DeviceType == global.GATEWAYS {
data.Token = ""

View File

@@ -12,6 +12,7 @@ type (
ProductModel interface {
Insert(data entity.Product) *entity.Product
FindOne(id string) *entity.ProductRes
FindDefault() *entity.Product
FindListPage(page, pageSize int, data entity.Product) (*[]entity.ProductRes, int64)
FindList(data entity.Product) *[]entity.ProductRes
Update(data entity.Product) *entity.Product
@@ -51,6 +52,14 @@ func (m *productModelImpl) FindOne(id string) *entity.ProductRes {
return resData
}
func (m *productModelImpl) FindDefault() *entity.Product {
resData := new(entity.Product)
err := global.Db.Table(m.table).Where("is_default = ?", "1").First(resData).Error
log.Println(err)
biz.ErrIsNil(err, "查询默认产品失败")
return resData
}
func (m *productModelImpl) FindListPage(page, pageSize int, data entity.Product) (*[]entity.ProductRes, int64) {
list := make([]entity.ProductRes, 0)
var total int64 = 0
@@ -77,7 +86,6 @@ func (m *productModelImpl) FindListPage(page, pageSize int, data entity.Product)
}
err := db.Count(&total).Error
err = db.Order("create_time").Preload("ProductCategory").Limit(pageSize).Offset(offset).Find(&list).Error
log.Println(err)
biz.ErrIsNil(err, "查询产品分页列表失败")
return &list, total
}
@@ -111,8 +119,7 @@ func (m *productModelImpl) FindList(data entity.Product) *[]entity.ProductRes {
func (m *productModelImpl) Update(data entity.Product) *entity.Product {
// go的一些默认值 int 0 bool false 保存失败需要先转成map
err := global.Db.Table(m.table).Where("id = ?", data.Id).Updates(data).Error
log.Println("update", err)
//biz.ErrIsNil(, "修改产品失败")
biz.ErrIsNil(err, "修改产品失败")
return &data
}

View File

@@ -2,7 +2,6 @@ package services
import (
"github.com/PandaXGO/PandaKit/biz"
"log"
"pandax/apps/device/entity"
"pandax/pkg/global"
)
@@ -117,7 +116,6 @@ func (m *otaModelImpl) Update(data entity.ProductOta) *entity.ProductOta {
return &data
}
func (m *otaModelImpl) updateLatest(id string, IsLatest bool) {
log.Println(id, IsLatest)
err := global.Db.Table(m.table).Where("id = ?", id).Update("is_latest", IsLatest).Error
global.Log.Error("更新失败", err)
}