infoBoardService.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package service
  2. import (
  3. "fmt"
  4. "iot_manager_service/app/device/dao"
  5. "iot_manager_service/app/device/model"
  6. "iot_manager_service/app/system/service"
  7. "iot_manager_service/util"
  8. "time"
  9. )
  10. var InfoBoardService = new(infoBoardService)
  11. type infoBoardService struct{}
  12. func (s *infoBoardService) Get(id int) (*model.InfoBoardDetail, *util.Errors) {
  13. // 创建查询实例
  14. device := &dao.InfoBoard{
  15. ID: id,
  16. }
  17. err := device.GetDevice()
  18. if err != nil {
  19. return nil, util.FailResponse(err.Error(), nil)
  20. }
  21. endTime, state := util.GetDeviceState(device.Sn)
  22. return &model.InfoBoardDetail{InfoBoard: *device,
  23. RunState: state,
  24. NetworkState: state,
  25. EndLineTime: endTime,
  26. }, nil
  27. }
  28. func (s *infoBoardService) CreateOrUpdate(userId int64, tenantId int, req dao.InfoBoard) *util.Errors {
  29. // 创建查询实例
  30. device := req
  31. device.TenantId = tenantId
  32. device.UpdateUser = userId
  33. device.UpdateTime = time.Now()
  34. if req.ID == 0 {
  35. device.CreateTime = time.Now()
  36. device.CreateUser = userId
  37. if device.IsExistedBySN() {
  38. fmt.Printf("Create GetDeviceID err \n")
  39. return util.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
  40. }
  41. if err := device.Create(); err != nil {
  42. fmt.Printf("Create err = %s \n", err.Error())
  43. return util.FailResponse(err.Error(), nil)
  44. }
  45. service.OperationHisService.Save(userId, tenantId, util.OperationCreate, util.ModuleTypeDevice,
  46. util.DeviceTypeInfoBoard, util.GetDeviceObject(device.ID, device.InfoName), util.OperationSuccess)
  47. return util.SuccessResponse(util.Succeeded, nil)
  48. }
  49. if device.IsExistedByNameAndCode() {
  50. return util.ParamsInvalidResponse("编码不能重复,请重新填写!", nil)
  51. }
  52. if err := device.Update(); err != nil {
  53. fmt.Printf("Update err = %s \n", err.Error())
  54. return util.FailResponse(err.Error(), nil)
  55. }
  56. service.OperationHisService.Save(userId, tenantId, util.OperationUpdate, util.ModuleTypeDevice,
  57. util.DeviceTypeInfoBoard, util.GetDeviceObject(device.ID, device.InfoName), util.OperationSuccess)
  58. return util.SuccessResponse(util.Succeeded, nil)
  59. }
  60. func (s *infoBoardService) List(searchValue string, current, size int) ([]model.InfoBoardDetail, *util.Errors) {
  61. device := dao.InfoBoard{}
  62. if searchValue != "" {
  63. device.Sn = searchValue
  64. device.InfoName = searchValue
  65. }
  66. offset := (current - 1) * size
  67. limit := size
  68. devices, err := device.GetDevices(offset, limit)
  69. if err != nil {
  70. return nil, util.FailResponse(err.Error(), nil)
  71. }
  72. var details []model.InfoBoardDetail
  73. for _, d := range devices {
  74. endTime, state := util.GetDeviceState(d.Sn)
  75. details = append(details, model.InfoBoardDetail{
  76. InfoBoard: d,
  77. RunState: state,
  78. NetworkState: state,
  79. EndLineTime: endTime,
  80. })
  81. }
  82. return details, nil
  83. }
  84. func (s *infoBoardService) Remove(userId int64, tenantId int, id int) *util.Errors {
  85. // 创建查询实例
  86. device := &dao.InfoBoard{
  87. ID: id,
  88. IsDeleted: 1,
  89. UpdateUser: userId,
  90. UpdateTime: time.Now(),
  91. }
  92. err := device.Delete()
  93. if err != nil {
  94. return util.FailResponse(err.Error(), nil)
  95. }
  96. service.OperationHisService.Save(userId, tenantId, util.OperationRemove, util.ModuleTypeDevice,
  97. util.DeviceTypeInfoBoard, util.GetDeviceObject(device.ID, device.InfoName), util.OperationSuccess)
  98. return nil
  99. }
  100. func (s *infoBoardService) GetByGateway(id int) []dao.InfoBoard {
  101. // 创建查询实例
  102. device := &dao.InfoBoard{
  103. GatewayId: id,
  104. }
  105. return device.GetDevicesByGateway()
  106. }
  107. func (s *infoBoardService) GetByLampPole(id int) []dao.InfoBoard {
  108. // 创建查询实例
  109. device := &dao.InfoBoard{
  110. LampPoleId: id,
  111. }
  112. return device.GetDevicesByLampPole()
  113. }