carinfo.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package app
  2. import (
  3. "fmt"
  4. "lc-fangdaosha/global"
  5. "lc-fangdaosha/model/app"
  6. "time"
  7. )
  8. type CarInfoService struct {
  9. }
  10. // Save 保存到数据库
  11. func (carInfoService *CarInfoService) Save(car []*app.CarInfo) {
  12. // 插入数据
  13. err := global.Db.Create(car)
  14. if err != nil {
  15. fmt.Println("插入数据失败:", err)
  16. return
  17. }
  18. }
  19. // ProcessPlateNumber 处理车牌号
  20. func (carInfoService *CarInfoService) ProcessPlateNumber(plateNumber string) {
  21. var cars []*app.CarInfo //定义切片用于存储app.CarInfo类型的指针
  22. for i, car := range cars {
  23. if car.PlateNumber == plateNumber { //检查当前车辆的车牌号是否与给定的plateNumber相等
  24. currentTime := time.Now() //获取当前时间,并将其赋值给变量currentTime
  25. if currentTime.Sub(car.Time).Minutes() > 1 { //检查当前时间与车辆信息的最后更新时间之间的差值是否大于1分钟
  26. car.Count++
  27. car.Time = currentTime //更新车辆信息的最后更新时间为当前时间
  28. }
  29. cars[i] = car //将更新后的车辆信息重新赋值给cars切片中对应的位置
  30. return
  31. }
  32. }
  33. //创建一个新的app.CarInfo类型的实例,并设置其车牌号、计数器和最后更新时间为当前时间
  34. newCar := &app.CarInfo{
  35. PlateNumber: plateNumber,
  36. Count: 1,
  37. Time: time.Now(),
  38. }
  39. cars = append(cars, newCar) //将新创建的车辆信息添加到cars切片的末尾
  40. // 保存到数据库
  41. carInfoService.Save(cars)
  42. //// 获取当前时间
  43. //now := time.Now()
  44. //// 判断同一辆车在一分钟内是否已出现
  45. //plateNumberMap := make(map[string]*app.CarInfo)
  46. //if plateNumberMap[plateNumber] != nil && now.Sub(plateNumberMap[plateNumber].Time) < time.Minute {
  47. // return
  48. //}
  49. //
  50. //// 更新车牌号出现时间和次数
  51. //plateNumberMap[plateNumber] = &app.CarInfo{
  52. // Time: now,
  53. // Count: 1,
  54. // PlateNumber: plateNumber,
  55. //}
  56. }