package service
|
|
import (
|
"basic.com/pubsub/protomsg.git"
|
"errors"
|
"github.com/satori/go.uuid"
|
"strconv"
|
"vamicro/compTable-service/models"
|
"vamicro/compTable-service/vo"
|
"vamicro/config"
|
)
|
|
type DbTablePersonService struct {
|
}
|
|
func (sv DbTablePersonService) Add(dbp models.Dbtablepersons) (bool, error) {
|
//车牌号不能重复
|
var dt models.Dbtables
|
rows, _ := dt.SelectById(dbp.TableId)
|
if rows == 0 {
|
return false, errors.New("所属底库已不存在")
|
}
|
if dt.TableType == "car" {
|
var tmp models.Dbtablepersons
|
i, _ := tmp.SelectByCarNo(dbp.TableId, dbp.CarNo)
|
if i > 0 {
|
return false, errors.New("车牌号不允许重复")
|
}
|
}
|
return dbp.Add()
|
}
|
|
func (sv DbTablePersonService) Update(dbp models.Dbtablepersons) (bool, error) {
|
//车牌号不能重复
|
var dt models.Dbtables
|
rows, _ := dt.SelectById(dbp.TableId)
|
if rows == 0 {
|
return false, errors.New("所属底库已不存在")
|
}
|
if dt.TableType == "car" {
|
var tmp models.Dbtablepersons
|
i, _ := tmp.SelectByCarNo(dbp.TableId, dbp.CarNo)
|
if i > 0 && tmp.Id != dbp.Id {
|
return false, errors.New("车牌号不允许重复")
|
}
|
}
|
return dbp.Update()
|
}
|
|
func (sv DbTablePersonService) DeleteById(id string) (bool, error) {
|
var dbp models.Dbtablepersons
|
return dbp.DeleteById(id)
|
}
|
|
func (sv DbTablePersonService) UpdateFace(arg *vo.FaceUpdateVo) (bool, error) {
|
var dbp models.Dbtablepersons
|
return dbp.UpdateFace(arg.Id, arg.FaceFeature, arg.PersonPicUrl)
|
}
|
|
func (sv DbTablePersonService) SelectById(id string) (dbp models.Dbtablepersons, err error) {
|
var dbpE models.Dbtablepersons
|
rows, err := dbpE.SelectById(id)
|
if rows > 0 && err == nil {
|
return dbpE, nil
|
}
|
return dbp, errors.New("dbtableperson not found")
|
}
|
|
func (sv DbTablePersonService) FindByPersonIds(ids []string) (arr []models.Dbtablepersons, err error) {
|
var dbp models.Dbtablepersons
|
return dbp.FindByPersonIds(ids)
|
}
|
|
func (sv DbTablePersonService) DeleteByPersonIds(ids []string) (b bool, err error) {
|
n := len(ids)
|
k := 0
|
for _, id := range ids {
|
b, _ := sv.DeleteById(id)
|
if b {
|
k++
|
}
|
}
|
if n == k {
|
return true, nil
|
} else {
|
return false, errors.New("delete persons err")
|
}
|
//return dbp.DeleteByPersonIds(ids)
|
}
|
|
func (sv DbTablePersonService) DeletePersonsByTbId(tableId string) (bool, error) {
|
var dbp models.Dbtablepersons
|
return dbp.DeletePersonsByTbId(tableId)
|
}
|
|
func (sv DbTablePersonService) FindPersons(tableId string, orderName string, orderType string, contentValue string, from int, size int) ([]models.Dbtablepersons, error) {
|
var dbp models.Dbtablepersons
|
return dbp.FindPersons(tableId, orderName, orderType, contentValue, from, size)
|
}
|
|
func (sv DbTablePersonService) GetPersonTotal(tableId string) (total int64, err error) {
|
var dbp models.Dbtablepersons
|
return dbp.GetPersonTotal(tableId)
|
}
|
|
func (sv DbTablePersonService) GetPersonsCompareCacheBase(from int, size int) (arr []vo.FeatureCacheBase, err error) {
|
var persons []models.Dbtablepersons
|
sql := "select id,faceFeature,tableId,enable,carNo from dbtablepersons where isDelete=0 and tableId in (select id from dbtables where isDelete=0)"
|
sql += " order by id asc limit " + strconv.Itoa(from) + "," + strconv.Itoa(size)
|
err = models.GetDB().Raw(sql).Find(&persons).Error
|
if err != nil {
|
return nil, err
|
}
|
for _, p := range persons {
|
if p.FaceFeature != "" {
|
arr = append(arr, vo.FeatureCacheBase{
|
Id: p.Id,
|
TableId: p.TableId,
|
FaceFeature: p.FaceFeature,
|
Enable: int32(p.Enable),
|
|
CarNo: p.CarNo,
|
})
|
}
|
}
|
return
|
}
|
|
func (sv DbTablePersonService) JoinDbTable(tableIds []string, faceFeature string, pic string) bool {
|
var flag = false
|
for _, tableId := range tableIds {
|
var dbp = new(models.Dbtablepersons)
|
dbp.Id = uuid.NewV4().String()
|
dbp.TableId = tableId
|
dbp.FaceFeature = faceFeature
|
dbp.PersonPicUrl = pic
|
dbp.Enable = 1
|
dbp.PriInsert()
|
dbp.FromServerId = config.Server.AnalyServerId //入库位置
|
b, _ := dbp.Add()
|
if b {
|
flag = true
|
}
|
}
|
return flag
|
}
|
|
func (sv DbTablePersonService) Move(personId string, tableIds []string) bool {
|
if len(tableIds) != 1 {
|
return false
|
}
|
tableId := tableIds[0]
|
|
var dtTmp models.Dbtables
|
var dbpTmp models.Dbtablepersons
|
r0, _ := dbpTmp.SelectById(personId)
|
r1, _ := dtTmp.SelectById(tableId)
|
|
if r0 > 0 && r1 > 0 {
|
if dbpTmp.TableId == tableId { //本库移动不做操作
|
return true
|
}
|
var oldDt models.Dbtables
|
r2, _ := oldDt.SelectById(dbpTmp.TableId)
|
if r2 > 0 {
|
//移动到其他底库
|
dbpTmp.TableId = tableId
|
if b, _ := dbpTmp.Update(); b {
|
go models.SyncSdkCompareCache(oldDt.AnalyServerId, protomsg.EsCacheChanged_T_DbTablePerson, oldDt.Id, personId, "", protomsg.DbAction_Delete, 0, "")
|
return true
|
}
|
}
|
|
}
|
return false
|
}
|
|
func (sv DbTablePersonService) Copy(personId string, tableIds []string) bool {
|
var dbpTmp models.Dbtablepersons
|
r, _ := dbpTmp.SelectById(personId)
|
if r > 0 {
|
for _, tableId := range tableIds {
|
dbpTmp.Id = uuid.NewV4().String()
|
dbpTmp.TableId = tableId
|
dbpTmp.Add()
|
}
|
return true
|
}
|
return false
|
}
|
|
func (sv DbTablePersonService) MultiUploadCardNo(tableId string, carNos []string) bool {
|
var dbpTmp models.Dbtablepersons
|
b := false
|
for _, no := range carNos {
|
rows, err := dbpTmp.SelectByCarNo(tableId, no)
|
if err == nil && rows == 0 {
|
if dbpTmp.InsertCarNo(tableId, no) {
|
b = true
|
}
|
}
|
}
|
|
return b
|
}
|