package service import ( "apsClient/conf" "apsClient/constvar" "apsClient/model" "apsClient/model/response" "apsClient/pkg/logx" "errors" "github.com/jinzhu/gorm" "os" "strings" ) func GetDeviceIDList() (deviceIds []string, err error) { devices, err := model.NewDeviceSearch().SetDeviceMac(conf.Conf.System.DeviceId).FindNotTotal() if err == gorm.ErrRecordNotFound { return nil, nil } if err != nil { return nil, err } deviceIds = make([]string, 0, len(devices)) for _, device := range devices { deviceIds = append(deviceIds, device.DeviceID) } return deviceIds, nil } func GetDeviceList() (deviceList []*response.Device, err error) { devices, err := model.NewDeviceSearch().SetDeviceMac(conf.Conf.System.DeviceId).FindNotTotal() if err == gorm.ErrRecordNotFound { return nil, nil } if err != nil { return nil, err } deviceList = make([]*response.Device, 0, len(devices)) for _, device := range devices { deviceList = append(deviceList, &response.Device{ DeviceID: device.DeviceID, DeviceName: device.DeviceName, NeedSetProcessParams: device.NeedSetProcessParams, }) } return deviceList, nil } func InitCurrentDeviceID(ServerID string) (err error) { currentDeviceID := ReadDeviceIDFromFile() if currentDeviceID != "" { conf.Conf.CurrentDeviceID = currentDeviceID return } deviceList, err := GetDeviceIDList() if err != nil { return err } if len(deviceList) > 0 { conf.Conf.CurrentDeviceID = deviceList[0] } else if conf.Conf.System.DeviceId != "" { conf.Conf.CurrentDeviceID = conf.Conf.System.DeviceId } else { conf.Conf.CurrentDeviceID = ServerID } SetDeviceIDToFile(conf.Conf.CurrentDeviceID) return nil } const deviceIDFile = "currentDeviceID.txt" func SetDeviceIDToFile(deviceID string) { err := os.WriteFile(deviceIDFile, []byte(deviceID), 0644) if err != nil { logx.Errorf("无法写入设备ID到文件: %v\n", err) } else { logx.Infof("设备ID已写入文件") } } func ReadDeviceIDFromFile() string { data, err := os.ReadFile(deviceIDFile) if err != nil { logx.Errorf("无法读取设备ID文件: %v\n", err) return "" } deviceId := string(data) deviceId = strings.TrimSpace(deviceId) deviceId = strings.Trim(deviceId, "\n") return deviceId } func UpdateDevice(deviceId string, needSetProcessParams bool) (err error) { device, err := model.NewDeviceSearch().SetDeviceId(deviceId).First() if err == gorm.ErrRecordNotFound { return errors.New("设备不存在") } device.NeedSetProcessParams = needSetProcessParams return model.NewDeviceSearch().SetID(device.ID).UpdateByMap(map[string]interface{}{"need_set_process_params": needSetProcessParams}) } func GetCurrentDevice() (device *model.Device, err error) { if conf.Conf.CurrentDeviceID == "" { return nil, errors.New("当前设备ID不存在,请检查") } device, err = model.NewDeviceSearch().SetDeviceId(conf.Conf.CurrentDeviceID).First() if err == gorm.ErrRecordNotFound { return nil, errors.New("设备不存在") } return device, nil } // ReportsSystemDeviceToCloud 创建同步设备id记录 func ReportsSystemDeviceToCloud(systemDeviceID string) { err := model.NewReportsToCloudSearch(nil).Create(&model.ReportsToCloud{ ReportType: constvar.ReportTypeSystemDeviceID, Content: systemDeviceID, }) if err != nil { logx.Errorf("ReportsSystemDeviceToCloud create record error:%v", err) } }