lock_device_task.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package service
  2. import (
  3. "encoding/json"
  4. "lims_adapter/common"
  5. model "lims_adapter/model/access"
  6. "github.com/gogf/gf/frame/g"
  7. "github.com/gogf/gf/os/glog"
  8. "github.com/gogf/gf/os/gtime"
  9. )
  10. func SendLockTaskPersonUpdate(tenant string, personid int, del, add []model.DeviceLockRelate) error {
  11. topic := g.Cfg().GetString("nsq.nsqLockDeviceTask")
  12. if topic == "" {
  13. return nil
  14. }
  15. user := User{}
  16. err := g.DB(tenant).Model("base_user").Where("Id = ?", personid).Struct(&user)
  17. if err != nil {
  18. return err
  19. }
  20. for _, l := range mergeDeviceLockRelate(add, del) {
  21. err := SendLockTask(DeviceTask{
  22. Tenant: tenant,
  23. DeviceTask: model.DeviceTask{
  24. TaskType: 0,
  25. DeviceId: l.DeviceId,
  26. EquipmentName: "",
  27. PersonId: user.Id,
  28. PersonName: user.Realname,
  29. TaskSequence: 0,
  30. CreatedAt: gtime.Now(),
  31. UpdatedAt: gtime.Now(),
  32. },
  33. })
  34. if err != nil {
  35. return err
  36. }
  37. }
  38. for _, l := range add {
  39. // 人员注册
  40. err = SendLockTask(DeviceTask{
  41. Tenant: tenant,
  42. DeviceTask: model.DeviceTask{
  43. TaskType: 1,
  44. DeviceId: l.DeviceId,
  45. PersonId: user.Id,
  46. PersonName: user.Realname,
  47. TaskSequence: 1,
  48. IdCard: "",
  49. CreatedAt: gtime.Now(),
  50. UpdatedAt: gtime.Now(),
  51. },
  52. })
  53. if err != nil {
  54. return err
  55. }
  56. // 照片注册
  57. err = SendLockTask(DeviceTask{
  58. Tenant: tenant,
  59. DeviceTask: model.DeviceTask{
  60. TaskType: 2,
  61. DeviceId: l.DeviceId,
  62. EquipmentName: "",
  63. PersonId: user.Id,
  64. PersonName: user.Realname,
  65. IdCard: "",
  66. Url: user.Photo,
  67. TaskSequence: 2,
  68. CreatedAt: gtime.Now(),
  69. UpdatedAt: gtime.Now(),
  70. },
  71. })
  72. if err != nil {
  73. return err
  74. }
  75. }
  76. return nil
  77. }
  78. func SendLockTask(task DeviceTask) error {
  79. topic := g.Cfg().GetString("nsq.nsqLockDeviceTask")
  80. if topic == "" {
  81. return nil
  82. }
  83. msg, err := json.Marshal(task)
  84. if err != nil {
  85. glog.Error("lock_device_task SendLockTask json marshal err:", err.Error())
  86. return err
  87. }
  88. err = common.NsqProducer.Publish(topic, msg)
  89. if err != nil {
  90. glog.Error("发送通路设备锁更新消息失败,err:", err.Error())
  91. }
  92. glog.Info("发送通路设备锁更新消息, 内容为:", string(msg))
  93. return nil
  94. }
  95. func mergeDeviceLockRelate(s ...[]model.DeviceLockRelate) []model.DeviceLockRelate {
  96. ret := []model.DeviceLockRelate{}
  97. exist := map[string]bool{}
  98. for _, i := range s {
  99. for _, l := range i {
  100. if !exist[l.DeviceId] {
  101. ret = append(ret, l)
  102. }
  103. }
  104. }
  105. return ret
  106. }
  107. type DeviceTask struct {
  108. Tenant string `json:"tenant"`
  109. model.DeviceTask
  110. }
  111. type User struct {
  112. Id int `orm:"Id,primary" json:"id"`
  113. Uuid string `orm:"Uuid" json:"uuid"`
  114. AccCode string `orm:"AccCode" json:"acc_code"`
  115. Code string `orm:"Code" json:"code"`
  116. UserName string `orm:"UserName" json:"user_name"`
  117. Realname string `orm:"Realname" json:"realname"`
  118. Photo string `orm:"Photo" json:"photo"`
  119. }