zhangzengfei
2024-09-26 1e180d22fdb13399e9caf31da97a1b5554123102
db/person.go
@@ -9,48 +9,26 @@
type DbPersons struct {
   BaseEntity
   TableId            string   `gorm:"column:tableId" json:"tableId" example:"库表id"`
   FaceFeature        string   `gorm:"column:faceFeature" json:"faceFeature" example:"人脸特征值(车主特征)"`
   PersonPicUrl       string   `gorm:"column:personPicUrl" json:"personPicUrl" example:"图片路径,(车主照片)"`
   PersonName         string   `gorm:"column:personName" json:"personName" example:"人员姓名,(车主姓名)"`
   Age                string   `gorm:"column:age" json:"age"  example:"年龄"`
   Sex                string   `gorm:"column:sex" json:"sex" example:"性别 男 女(车主性别)"`
   IdCard             string   `gorm:"column:idCard" json:"idCard" example:"身份证(车主身份证)"`
   PhoneNum           string   `gorm:"column:phoneNum" json:"phoneNum" example:"手机号码"`
   MonitorLevel       string   `gorm:"column:monitorLevel" json:"monitorLevel" example:"等级"`
   PicDesc            string   `gorm:"column:picDesc" json:"picDesc" example:"照片标识"`
   Reserved           string   `gorm:"column:reserved" json:"reserved" example:"其他"`
   FromServerId       string   `gorm:"column:fromServerId" json:"fromServerId,omitempty" example:"入库serverId"`
   ResidentialArea    string   `gorm:"column:residential_area;type:varchar(255)" json:"residentialArea" example:"小区"`
   Community          string   `gorm:"column:community;type:varchar(255)" json:"community" example:"社区"`
   LastAppearanceTime int64    `gorm:"column:last_appearance_time;type:int;not null;default:0" json:"lastAppearanceTime" example:"123456789"`
   SnapshotCount      int      `gorm:"column:snapshot_count;type:varchar(255)" json:"snapshotCount" example:"10" comment:"抓拍次数"`
   DaysAppeared       int      `gorm:"column:days_appeared;type:int(11);not null;default:0" json:"daysAppeared" example:"5" comment:"出现天数"`
   Location           string   `gorm:"column:location;type:varchar(255)" json:"location" example:"建档地点" comment:"建档地点"`
   LastLocation       string   `gorm:"column:last_location;type:varchar(255)" json:"lastLocation" example:"最后出现地点" comment:"最后出现地点"`
   FaceAngleYaw       int      `gorm:"column:face_angle_yaw;type:int(11)" json:"faceAngleYaw" example:"15" comment:"人脸角度偏航角"`
   FaceAngleRoll      int      `gorm:"column:face_angle_roll;type:int(11)" json:"faceAngleRoll" example:"16" comment:"人脸角度滚转角"`
   FaceAnglePitch     int      `gorm:"column:face_angle_pitch;type:int(11)" json:"faceAnglePitch" example:"15" comment:"人脸角度俯仰角"`
   PersonalStatusName string   `gorm:"column:personal_status;type:varchar(31);comment:AI标签" json:"-"` //AI标签
   PersonalStatus     string   `gorm:"-" json:"personalStatus"`                                       //AI标签对应名称
   Labels             []string `gorm:"-" json:"labels"`                                               //手动添加的标签对应名称
   AreaID             string   `json:"areaID" gorm:"index;column:communityID;type:varchar(299);"`     //常驻小区 domain unit ID
   OrgID              string   `json:"orgID" gorm:"index;column:org_id;type:varchar(299);"`           //常驻派出所 domain unit ID
   TableId     string `gorm:"column:tableId"`
   FaceFeature string `gorm:"column:face_feature"`
   CommunityID string `gorm:"column:community_id"` // 常住小区 domain unit ID
   OrgID       string `gorm:"column:org_id"`       // 常住派出所 domain unit ID
   OrgName     string `gorm:"column:community"`
}
func (dbp *DbPersons) GetPersonTotal(tableId string) (total int64, err error) {
   sql := "select count(1) as total from dbtablepersons where isDelete=0 and tableId in (select id from dbtables where isDelete=0)"
   if tableId != "" {
      sql += " and tableId='" + tableId + "'"
   }
func (dbp *DbPersons) GetPersonTotal() (total int64, err error) {
   sql := "select id from person where is_delete = 0 and tableId = 'system'"
   err = db.Raw(sql).Count(&total).Error
   return
}
func (dbp *DbPersons) GetPersonsCompareCacheBase(from int, size int) (arr []*FeatureCacheBase, err error) {
func (dbp *DbPersons) GetPersonsCacheBase(from int, size int) (arr []*FeatureCacheBase, err error) {
   var persons []DbPersons
   sql := "select id, tableId, faceFeature, communityID, enable from dbtablepersons where isDelete=0 and tableId in (select id from dbtables where isDelete=0)"
   sql := "select id, tableId, face_feature, community_id from person where is_delete = 0 and tableId = 'system'"
   sql += " order by id asc limit " + strconv.Itoa(from) + "," + strconv.Itoa(size)
   err = db.Raw(sql).Find(&persons).Error
   if err != nil {
      return nil, err
@@ -60,28 +38,30 @@
      if p.FaceFeature != "" {
         byteFeat, err := base64.StdEncoding.DecodeString(p.FaceFeature)
         if err != nil {
            logger.Errorf("Person %s feature is invalid", p.Id)
            logger.Errorf("Person %s feature is invalid", p.ID)
            continue
         }
         arr = append(arr, &FeatureCacheBase{
            Id:          p.Id,
            Id:          p.ID,
            TableId:     p.TableId,
            AreaId:      p.AreaID,
            AreaId:      p.CommunityID,
            FaceFeature: util.ByteSlice2float32Slice(byteFeat),
            Enable:      int32(p.Enable),
         })
      } else {
         logger.Errorf("Person %s feature is empty %s", p.Id)
         logger.Warnf("Person %s feature is empty %s", p.ID)
      }
   }
   return
}
func (dbp *DbPersons) GetPersonsCompareCacheById(id string) (info *FeatureCacheBase, err error) {
   sql := "select id, tableId, faceFeature, communityID, enable from dbtablepersons where id = \"" + id + "\""
func (dbp *DbPersons) GetPersonsById(id string) (info *FeatureCacheBase, err error) {
   var p DbPersons
   err = db.Raw(sql).First(&p).Error
   err = db.Table("person").
      Select("id", "tableId", "face_feature", "community_id").
      First(&p, "id = ?", id).Error
   if err != nil {
      return nil, err
   }
@@ -92,12 +72,12 @@
         return nil, err
      }
      info = &FeatureCacheBase{
         Id:          p.Id,
         Id:          p.ID,
         TableId:     p.TableId,
         AreaId:      p.AreaID,
         AreaId:      p.CommunityID,
         FaceFeature: util.ByteSlice2float32Slice(byteFeat),
         Enable:      int32(p.Enable),
      }
   }
   return
}