package db
|
|
import (
|
"basic.com/valib/logger.git"
|
"encoding/base64"
|
"sdkCompare/util"
|
"strconv"
|
)
|
|
type DbPersons struct {
|
BaseEntity
|
TableId string `gorm:"column:table_id"`
|
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() (total int64, err error) {
|
sql := "select id from person where is_delete = 0 and table_id = 'system'"
|
|
err = db.Raw(sql).Count(&total).Error
|
|
return
|
}
|
|
func (dbp *DbPersons) GetPersonsCacheBase(from int, size int) (arr []*FeatureCacheBase, err error) {
|
var persons []DbPersons
|
sql := "select id, table_id, face_feature, community_id from person where is_delete = 0 and table_id = '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
|
}
|
|
for _, p := range persons {
|
if p.FaceFeature != "" {
|
byteFeat, err := base64.StdEncoding.DecodeString(p.FaceFeature)
|
if err != nil {
|
logger.Errorf("Person %s feature is invalid", p.ID)
|
continue
|
}
|
|
arr = append(arr, &FeatureCacheBase{
|
Id: p.ID,
|
TableId: p.TableId,
|
AreaId: p.CommunityID,
|
FaceFeature: util.ByteSlice2float32Slice(byteFeat),
|
})
|
} else {
|
logger.Warnf("Person %s feature is empty", p.ID)
|
}
|
}
|
|
return
|
}
|
|
func (dbp *DbPersons) GetPersonsById(id string) (info *FeatureCacheBase, err error) {
|
var p DbPersons
|
|
err = db.Table("person").
|
Select("id", "table_id", "face_feature", "community_id").
|
First(&p, "id = ?", id).Error
|
if err != nil {
|
return nil, err
|
}
|
|
if p.FaceFeature != "" {
|
byteFeat, err := base64.StdEncoding.DecodeString(p.FaceFeature)
|
if err != nil {
|
return nil, err
|
}
|
info = &FeatureCacheBase{
|
Id: p.ID,
|
TableId: p.TableId,
|
AreaId: p.CommunityID,
|
FaceFeature: util.ByteSlice2float32Slice(byteFeat),
|
}
|
}
|
|
return
|
}
|