【fix】子设备上报方式修复

This commit is contained in:
XM-GO
2023-09-28 10:38:02 +08:00
parent 0dc58c0d18
commit 0b568d16e1
13 changed files with 378 additions and 64 deletions

View File

@@ -13,6 +13,7 @@ type (
DeviceModel interface {
Insert(data entity.Device) *entity.Device
FindOneByToken(token string) (*entity.Device, error)
FindOneByName(name string) (*entity.Device, error)
FindOne(id string) *entity.DeviceRes
FindListPage(page, pageSize int, data entity.Device) (*[]entity.DeviceRes, int64)
FindList(data entity.Device) *[]entity.DeviceRes
@@ -39,11 +40,11 @@ func (m *deviceModelImpl) Insert(data entity.Device) *entity.Device {
list := m.FindList(entity.Device{Name: data.Name})
biz.IsTrue(list != nil && len(*list) == 0, "设备名称已经存在")
//2 创建认证TOKEN IOTHUB使用
etoken, err := GetDeviceToken(&data)
_, err := GetDeviceToken(&data)
biz.ErrIsNil(err, "设备缓存失败")
// 子网关不需要设置token
if data.DeviceType != global.GATEWAYS {
data.Token = etoken.Token
if data.DeviceType == global.GATEWAYS {
data.Token = ""
}
//3 添加设备
err = tx.Table(m.table).Create(&data).Error
@@ -66,6 +67,13 @@ func (m *deviceModelImpl) FindOne(id string) *entity.DeviceRes {
return resData
}
func (m *deviceModelImpl) FindOneByName(token string) (*entity.Device, error) {
resData := new(entity.Device)
db := global.Db.Table(m.table).Where("name = ?", token)
err := db.First(resData).Error
return resData, err
}
func (m *deviceModelImpl) FindOneByToken(token string) (*entity.Device, error) {
resData := new(entity.Device)
db := global.Db.Table(m.table).Where("token = ?", token)
@@ -205,11 +213,9 @@ func GetDeviceToken(data *entity.Device) (*tool.DeviceAuth, error) {
etoken.CreatedAt = now.Unix()
etoken.ExpiredAt = now.Add(time.Hour * 24 * 365).Unix()
if data.Token == "" {
etoken.Token = etoken.MD5ID()
} else {
etoken.Token = data.Token
data.Token = etoken.MD5ID()
}
err := etoken.CreateDeviceToken(etoken.Token)
err := etoken.CreateDeviceToken(data.Token)
return etoken, err
}