device.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package device
  2. import (
  3. errors "confrontation-training/err"
  4. "confrontation-training/global"
  5. "confrontation-training/http"
  6. deviceModel "confrontation-training/models/gateway"
  7. "encoding/json"
  8. "fmt"
  9. "gorm.io/gorm"
  10. "io/ioutil"
  11. netHttp "net/http"
  12. )
  13. type DeviceService struct {
  14. }
  15. func (d *DeviceService) FindDeviceByMac(mac string) (deviceModel.DeviceInfo, int64) {
  16. info := deviceModel.DeviceInfo{}
  17. count := global.Db.Where(" mac = ?", mac).First(&info).RowsAffected
  18. return info, count
  19. }
  20. func (d *DeviceService) FindDeviceByType(deviceType string) ([]deviceModel.DeviceInfo, int64) {
  21. var deviceList = make([]deviceModel.DeviceInfo, 0)
  22. count := global.Db.Where("type = ?", deviceType).Find(&deviceList).RowsAffected
  23. return deviceList, count
  24. }
  25. func (d *DeviceService) CreateDevice(param deviceModel.DeviceAddParam) *gorm.DB {
  26. addParam := deviceModel.DeviceInfo{
  27. Type: param.Type,
  28. Mac: param.Mac,
  29. }
  30. return global.Db.Create(&addParam)
  31. }
  32. func (d *DeviceService) RemoveDevice(mac string) int64 {
  33. deviceInfo, count := d.FindDeviceByMac(mac)
  34. if count > 0 {
  35. count = global.Db.Delete(&deviceModel.DeviceInfo{}, deviceInfo.ID).RowsAffected
  36. }
  37. return count
  38. }
  39. func (d *DeviceService) DeviceConnectedList(url string) (map[string]interface{}, error) {
  40. httpResponse := http.GetReq(url)
  41. var result map[string]interface{}
  42. if httpResponse.StatusCode != 200 {
  43. fmt.Printf("%s:%s", errors.StartTransFailed, httpResponse.Body)
  44. return result, nil
  45. } else {
  46. body, err := ioutil.ReadAll(httpResponse.Body)
  47. if err == nil {
  48. err = json.Unmarshal(body, &result)
  49. return result, err
  50. }
  51. return result, err
  52. }
  53. }
  54. func (d *DeviceService) DisconnectDevice(url string) *netHttp.Response {
  55. return http.DeleteReq(url)
  56. }