TaskUid.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package Task
  2. import (
  3. "ColdVerify_server/logs"
  4. "time"
  5. "github.com/beego/beego/v2/adapter/orm"
  6. )
  7. // TaskUid 用于保存已经导出的任务唯一标识,避免重复生成
  8. type TaskUid struct {
  9. Id int `orm:"column(ID);size(11);auto;pk"`
  10. Uid string `orm:"column(T_uid);size(64);unique"`
  11. ExportBatch string `orm:"size(64);null"` // 批次标识,便于追踪
  12. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"`
  13. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`
  14. }
  15. func (t *TaskUid) TableName() string {
  16. return "task_uid"
  17. }
  18. func init() {
  19. orm.RegisterModel(new(TaskUid))
  20. }
  21. // TaskUidExists 判断唯一标识是否已经生成/导出过
  22. func TaskUidExists(uid string) bool {
  23. o := orm.NewOrm()
  24. return o.QueryTable(new(TaskUid)).Filter("T_uid", uid).Exist()
  25. }
  26. // SaveTaskUids 批量写入导出的唯一标识
  27. func SaveTaskUids(uids []string, batch string) error {
  28. if len(uids) == 0 {
  29. return nil
  30. }
  31. o := orm.NewOrm()
  32. records := make([]TaskUid, 0, len(uids))
  33. for _, uid := range uids {
  34. records = append(records, TaskUid{
  35. Uid: uid,
  36. ExportBatch: batch,
  37. })
  38. }
  39. if _, err := o.InsertMulti(len(records), records); err != nil {
  40. logs.Error("SaveTaskUids InsertMulti error:", err)
  41. return err
  42. }
  43. return nil
  44. }