event.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package app
  2. import (
  3. "fmt"
  4. "github.com/sirupsen/logrus"
  5. "lcfns/global"
  6. "lcfns/model/app"
  7. "lcfns/model/app/request"
  8. "lcfns/model/app/response"
  9. )
  10. var picService = PictureService{}
  11. type EventService struct {
  12. }
  13. func (EventService) List(req request.Event) (events []response.Event, err error) {
  14. //SELECT id,event_type,event_code,start_time,handle_time
  15. //FROM `event` WHERE mac_address IN (SELECT c.mac_address FROM gateway g JOIN camera c ON g.id = c.gid WHERE g.uid = 1);
  16. fmt.Printf("参数:%+v\n", req)
  17. //查找用户所有摄像头的mac_address:
  18. //SELECT c.mac_address FROM gateway g JOIN camera c ON g.id = c.gid WHERE g.uid = ?
  19. var macs []string
  20. sub := global.Db.Select("c.mac_address").
  21. Table("gateway g JOIN camera c ON g.id = c.gid").
  22. Where("g.uid = ?", req.UId).
  23. Find(&macs)
  24. //查询事件
  25. db := global.Db.Select("e.id,e.event_type,e.event_code,e.start_time,e.handle_time,g.gateway_name").
  26. Table("event e JOIN camera c ON e.mac_address = c.mac_address JOIN gateway g ON c.gid = g.id")
  27. if req.EventType > 0 && req.EventType <= 4 { //todo 未生效
  28. db.Where("e.event_type = ?", eMap[req.EventType])
  29. }
  30. if req.IsHandled != nil && *req.IsHandled {
  31. db.Where("NOT ISNULL(e.handle_time)")
  32. }
  33. if req.CreatedAt != "" {
  34. db.Where("e.start_time > ?", req.CreatedAt)
  35. }
  36. if req.GatewayName != "" {
  37. db.Where("g.gateway_name LIKE ?", "%"+req.GatewayName+"%")
  38. }
  39. err = db.Where("e.mac_address IN (?)", sub).
  40. Offset((req.Page - 1) * req.PageSize).
  41. Limit(req.PageSize).
  42. Find(&events).Debug().Error
  43. if err != nil {
  44. logrus.Error(err)
  45. return nil, err
  46. }
  47. for i, v := range events {
  48. events[i].EventType = sMap[v.EventType]
  49. events[i].PictureUrl = "http:192.168.110.69:8889/picture/get?picode=" + v.EventCode
  50. }
  51. return events, err
  52. }
  53. func (EventService) Create(event app.Event) error {
  54. return global.Db.Omit("handle_time").Create(&event).Debug().Error
  55. }
  56. func (EventService) Save(event *app.Event, pic *app.Picture, picData *app.PictureData) {
  57. err := global.Db.Omit("handle_time").Create(event).Error
  58. if err != nil {
  59. logrus.Error("事件保存失败", err)
  60. return
  61. }
  62. pic.EventId = event.ID
  63. picService.SaveEventPicture(pic, picData)
  64. }
  65. // 事件类型
  66. var eMap = map[uint]string{
  67. 1: "shelteralarm",
  68. 2: "regionEntrance",
  69. 3: "fielddetection",
  70. 4: "linedetection",
  71. }
  72. var sMap = map[string]string{
  73. "shelteralarm": "遮盖报警",
  74. "regionEntrance": "进入区域",
  75. "fielddetection": "区域入侵",
  76. "linedetection": "越界侦测",
  77. }